From e7904e314039fa6460c4f4efd67ce11eb949d74b Mon Sep 17 00:00:00 2001 From: jellejurre Date: Sat, 19 Jul 2025 01:03:02 +0200 Subject: [PATCH] Initial Commit --- AssetOrganizer.meta | 8 + AssetOrganizer/Editor.meta | 8 + AssetOrganizer/Editor/AssetOrganizer.cs | 662 +++++++ AssetOrganizer/Editor/AssetOrganizer.cs.meta | 11 + ....dreadscripts.assetorganizer.Editor.asmdef | 15 + ...dscripts.assetorganizer.Editor.asmdef.meta | 7 + AssetOrganizer/LICENSE | 21 + AssetOrganizer/LICENSE.meta | 7 + AssetOrganizer/README.md | 22 + AssetOrganizer/README.md.meta | 7 + AssetOrganizer/package.json | 17 + AssetOrganizer/package.json.meta | 7 + AutoBounds.meta | 8 + AutoBounds/Editor.meta | 8 + AutoBounds/Editor/AutoBounds.cs | 92 + AutoBounds/Editor/AutoBounds.cs.meta | 11 + AutoBounds/Editor/AutoBoundsEditor.asmdef | 15 + .../Editor/AutoBoundsEditor.asmdef.meta | 7 + AutoBounds/How to use.txt | 26 + AutoBounds/How to use.txt.meta | 7 + AutoBounds/LICENSE | 21 + AutoBounds/LICENSE.meta | 7 + AutoBounds/README.md | 23 + AutoBounds/README.md.meta | 7 + AutoBounds/_media.meta | 8 + AutoBounds/_media/After.png | Bin 0 -> 91451 bytes AutoBounds/_media/After.png.meta | 127 ++ AutoBounds/_media/Before.png | Bin 0 -> 103999 bytes AutoBounds/_media/Before.png.meta | 127 ++ AutoBounds/package.json | 23 + AutoBounds/package.json.meta | 7 + Better-Unity.meta | 8 + Better-Unity/.gitignore | 2 + Better-Unity/Editor/BetterUnityEditor.asmdef | 15 + Better-Unity/Editor/CopyCutPaste.cs | 86 + Better-Unity/Editor/CopyGUID.cs | 13 + Better-Unity/Editor/CreateTxt.cs | 36 + Better-Unity/Editor/GOCopyPath.cs | 29 + Better-Unity/Editor/TransformEditor.cs | 134 ++ Better-Unity/LICENSE | 21 + Better-Unity/README.md | 37 + Better-Unity/package.json | 23 + CameraUtility.meta | 8 + CameraUtility/Editor.meta | 8 + CameraUtility/Editor/CameraUtility.cs | 52 + CameraUtility/Editor/CameraUtility.cs.meta | 11 + ...m.dreadscripts.camerautility.Editor.asmdef | 15 + ...adscripts.camerautility.Editor.asmdef.meta | 7 + CameraUtility/LICENSE | 21 + CameraUtility/LICENSE.meta | 7 + CameraUtility/README.md | 16 + CameraUtility/README.md.meta | 7 + CameraUtility/package.json | 17 + CameraUtility/package.json.meta | 7 + CopyCutPaste.meta | 8 + CopyCutPaste/Editor.meta | 8 + CopyCutPaste/Editor/CopyCutPaste.cs | 84 + CopyCutPaste/Editor/CopyCutPaste.cs.meta | 11 + ...om.dreadscripts.copycutpaste.Editor.asmdef | 15 + ...eadscripts.copycutpaste.Editor.asmdef.meta | 7 + CopyCutPaste/LICENSE | 21 + CopyCutPaste/LICENSE.meta | 7 + CopyCutPaste/README.md | 7 + CopyCutPaste/README.md.meta | 7 + CopyCutPaste/package.json | 17 + CopyCutPaste/package.json.meta | 7 + LimbControl.meta | 8 + LimbControl/CHANGELOG.md | 30 + LimbControl/CHANGELOG.md.meta | 7 + .../com.dreadscripts.limbcontrol.md | 34 + LimbControl/Editor.meta | 8 + LimbControl/Editor/LimbControl.cs | 938 ++++++++++ LimbControl/Editor/LimbControl.cs.meta | 11 + ...com.dreadscripts.limbcontrol.Editor.asmdef | 15 + ...readscripts.limbcontrol.Editor.asmdef.meta | 7 + LimbControl/LICENSE.md | 21 + LimbControl/LICENSE.md.meta | 7 + LimbControl/README.md | 14 + LimbControl/README.md.meta | 7 + LimbControl/Resources.meta | 8 + LimbControl/Resources/Animations.meta | 8 + .../Animations/LC_BaseLocomotion.controller | 410 ++++ .../LC_BaseLocomotion.controller.meta | 8 + .../Animations/LC_BaseSitting.controller | 793 ++++++++ .../Animations/LC_BaseSitting.controller.meta | 8 + .../Resources/Animations/LC_EmptyClip.anim | 53 + .../Animations/LC_EmptyClip.anim.meta | 8 + .../Animations/LC_NormalBlendTree.blendtree | 89 + .../LC_NormalBlendTree.blendtree.meta | 8 + LimbControl/Resources/Animations/Normal.meta | 8 + .../Animations/Normal/LC_NormalDown.anim | 683 +++++++ .../Animations/Normal/LC_NormalDown.anim.meta | 8 + .../Animations/Normal/LC_NormalDownLeft.anim | 818 ++++++++ .../Normal/LC_NormalDownLeft.anim.meta | 8 + .../Animations/Normal/LC_NormalDownRight.anim | 818 ++++++++ .../Normal/LC_NormalDownRight.anim.meta | 8 + .../Animations/Normal/LC_NormalLeft.anim | 773 ++++++++ .../Animations/Normal/LC_NormalLeft.anim.meta | 8 + .../Animations/Normal/LC_NormalRight.anim | 773 ++++++++ .../Normal/LC_NormalRight.anim.meta | 8 + .../Animations/Normal/LC_NormalStill.anim | 593 ++++++ .../Normal/LC_NormalStill.anim.meta | 8 + .../Animations/Normal/LC_NormalUp.anim | 773 ++++++++ .../Animations/Normal/LC_NormalUp.anim.meta | 8 + .../Animations/Normal/LC_NormalUpLeft.anim | 953 ++++++++++ .../Normal/LC_NormalUpLeft.anim.meta | 8 + .../Animations/Normal/LC_NormalUpRight.anim | 953 ++++++++++ .../Normal/LC_NormalUpRight.anim.meta | 8 + LimbControl/Resources/Icons.meta | 8 + LimbControl/Resources/Icons/LC_HandWaving.png | Bin 0 -> 21737 bytes .../Resources/Icons/LC_HandWaving.png.meta | 121 ++ LimbControl/Resources/Icons/LC_RnR.png | Bin 0 -> 12979 bytes LimbControl/Resources/Icons/LC_RnR.png.meta | 121 ++ LimbControl/Resources/Icons/LC_ToggleOff.png | Bin 0 -> 9660 bytes .../Resources/Icons/LC_ToggleOff.png.meta | 121 ++ LimbControl/Resources/Icons/LC_ToggleOn.png | Bin 0 -> 14207 bytes .../Resources/Icons/LC_ToggleOn.png.meta | 121 ++ .../Resources/LC_LimbControlMenu.asset | 45 + .../Resources/LC_LimbControlMenu.asset.meta | 8 + .../Resources/LC_TrackingMainMenu.asset | 75 + .../Resources/LC_TrackingMainMenu.asset.meta | 8 + LimbControl/Resources/SubMenus.meta | 8 + .../Resources/SubMenus/LC_Head Tracking.asset | 35 + .../SubMenus/LC_Head Tracking.asset.meta | 8 + .../Resources/SubMenus/LC_Hip Tracking.asset | 35 + .../SubMenus/LC_Hip Tracking.asset.meta | 8 + .../SubMenus/LC_Left Foot Tracking.asset | 35 + .../SubMenus/LC_Left Foot Tracking.asset.meta | 8 + .../SubMenus/LC_Left Hand Tracking.asset | 35 + .../SubMenus/LC_Left Hand Tracking.asset.meta | 8 + .../SubMenus/LC_Right Foot Tracking.asset | 35 + .../LC_Right Foot Tracking.asset.meta | 8 + .../SubMenus/LC_Right Hand Tracking.asset | 35 + .../LC_Right Hand Tracking.asset.meta | 8 + LimbControl/package.json | 31 + LimbControl/package.json.meta | 7 + Metal-Pipe.meta | 8 + Metal-Pipe/CHANGELOG.md | 2 + Metal-Pipe/CHANGELOG.md.meta | 7 + Metal-Pipe/Editor.meta | 8 + Metal-Pipe/Editor/MetalPipe.cs | 175 ++ Metal-Pipe/Editor/MetalPipe.cs.meta | 11 + .../com.dreadscripts.metalpipe.Editor.asmdef | 13 + ....dreadscripts.metalpipe.Editor.asmdef.meta | 7 + Metal-Pipe/LICENSE.md | 18 + Metal-Pipe/LICENSE.md.meta | 7 + Metal-Pipe/Resources.meta | 8 + Metal-Pipe/Resources/MP_Protagonist.png | Bin 0 -> 51042 bytes Metal-Pipe/Resources/MP_Protagonist.png.meta | 116 ++ Metal-Pipe/Resources/MP_Sooth (LOUD).mp3 | Bin 0 -> 54480 bytes Metal-Pipe/Resources/MP_Sooth (LOUD).mp3.meta | 22 + Metal-Pipe/package.json | 21 + Metal-Pipe/package.json.meta | 7 + NoAutoGame.meta | 8 + NoAutoGame/Editor.meta | 8 + NoAutoGame/Editor/NoAutoGame.cs | 151 ++ NoAutoGame/Editor/NoAutoGame.cs.meta | 11 + .../com.dreadscripts.noautogame.Editor.asmdef | 15 + ...dreadscripts.noautogame.Editor.asmdef.meta | 7 + NoAutoGame/LICENSE | 21 + NoAutoGame/LICENSE.meta | 7 + NoAutoGame/README.md | 12 + NoAutoGame/README.md.meta | 7 + NoAutoGame/package.json | 17 + NoAutoGame/package.json.meta | 7 + PackageProcessor.meta | 8 + PackageProcessor/Editor.meta | 8 + .../Editor/ExportPostProcessor.cs | 405 ++++ .../Editor/ExportPostProcessor.cs.meta | 11 + .../Editor/ImportPostProcessor.cs | 67 + .../Editor/ImportPostProcessor.cs.meta | 11 + .../Editor/PackageProcessorData.cs | 55 + .../Editor/PackageProcessorData.cs.meta | 11 + .../Editor/PackageProcessorWindow.cs | 248 +++ .../Editor/PackageProcessorWindow.cs.meta | 11 + ...m.dreadrith.packageprocessor.Editor.asmdef | 15 + ...adrith.packageprocessor.Editor.asmdef.meta | 7 + PackageProcessor/LICENSE | 21 + PackageProcessor/LICENSE.meta | 7 + PackageProcessor/README.md | 37 + PackageProcessor/README.md.meta | 7 + PackageProcessor/package.json | 17 + PackageProcessor/package.json.meta | 7 + PhysBone-Converter.meta | 8 + PhysBone-Converter/Editor.meta | 8 + .../Editor/PhysBoneConverter.cs | 368 ++++ .../Editor/PhysBoneConverter.cs.meta | 11 + PhysBone-Converter/Instructions.txt | 20 + PhysBone-Converter/Instructions.txt.meta | 7 + PhysBone-Converter/LICENSE.md | 2 + PhysBone-Converter/LICENSE.md.meta | 7 + PhysBone-Converter/README.md | 32 + PhysBone-Converter/README.md.meta | 7 + PhysBone-Converter/package.json | 23 + PhysBone-Converter/package.json.meta | 7 + QuickToggle.meta | 8 + QuickToggle/CHANGELOG.md | 17 + QuickToggle/CHANGELOG.md.meta | 7 + QuickToggle/Editor.meta | 8 + QuickToggle/Editor/QuickToggle.cs | 1113 +++++++++++ QuickToggle/Editor/QuickToggle.cs.meta | 11 + ...readscripts.tool.quicktoggle.Editor.asmdef | 15 + ...cripts.tool.quicktoggle.Editor.asmdef.meta | 7 + QuickToggle/LICENSE | 21 + QuickToggle/LICENSE.meta | 7 + QuickToggle/README.md | 41 + QuickToggle/README.md.meta | 7 + QuickToggle/package.json | 17 + QuickToggle/package.json.meta | 7 + ReplaceMotion.meta | 8 + ReplaceMotion/Editor.meta | 8 + ReplaceMotion/Editor/ReplaceMotion.cs | 384 ++++ ReplaceMotion/Editor/ReplaceMotion.cs.meta | 11 + ...m.dreadscripts.replacemotion.Editor.asmdef | 15 + ...adscripts.replacemotion.Editor.asmdef.meta | 7 + ReplaceMotion/LICENSE | 21 + ReplaceMotion/LICENSE.meta | 7 + ReplaceMotion/README.md | 20 + ReplaceMotion/README.md.meta | 7 + ReplaceMotion/package.json | 17 + ReplaceMotion/package.json.meta | 7 + ResetHumanoid.meta | 8 + ResetHumanoid/Editor.meta | 8 + ResetHumanoid/Editor/ResetHumanoid.cs | 121 ++ ResetHumanoid/Editor/ResetHumanoid.cs.meta | 11 + ...m.dreadscripts.resethumanoid.Editor.asmdef | 15 + ...adscripts.resethumanoid.Editor.asmdef.meta | 7 + ResetHumanoid/LICENSE | 21 + ResetHumanoid/LICENSE.meta | 7 + ResetHumanoid/README.md | 15 + ResetHumanoid/README.md.meta | 7 + ResetHumanoid/package.json | 17 + ResetHumanoid/package.json.meta | 7 + SelectionHelper.meta | 8 + SelectionHelper/Editor.meta | 8 + SelectionHelper/Editor/SaveSelection.cs | 76 + SelectionHelper/Editor/SaveSelection.cs.meta | 11 + SelectionHelper/Editor/SceneObjectSelector.cs | 294 +++ .../Editor/SceneObjectSelector.cs.meta | 11 + SelectionHelper/Editor/SelectionHelper.cs | 91 + .../Editor/SelectionHelper.cs.meta | 11 + ...dreadscripts.selectionhelper.Editor.asmdef | 15 + ...scripts.selectionhelper.Editor.asmdef.meta | 7 + SelectionHelper/LICENSE.md | 21 + SelectionHelper/LICENSE.md.meta | 7 + SelectionHelper/README.md | 22 + SelectionHelper/README.md.meta | 7 + SelectionHelper/package.json | 25 + SelectionHelper/package.json.meta | 7 + Text2Texture.meta | 8 + Text2Texture/Editor.meta | 8 + Text2Texture/Editor/TextToTexture.cs | 596 ++++++ Text2Texture/Editor/TextToTexture.cs.meta | 11 + ...om.dreadscripts.text2texture.Editor.asmdef | 18 + ...eadscripts.text2texture.Editor.asmdef.meta | 7 + Text2Texture/LICENSE | 21 + Text2Texture/LICENSE.meta | 7 + Text2Texture/README.md | 26 + Text2Texture/README.md.meta | 7 + Text2Texture/Resources.meta | 8 + .../Resources/TTT_CanvasTemplate.prefab | 310 +++ .../Resources/TTT_CanvasTemplate.prefab.meta | 7 + .../Resources/TTT_DancingScript Font.ttf | Bin 0 -> 130480 bytes .../Resources/TTT_DancingScript Font.ttf.meta | 22 + .../Resources/TTT_DancingScript TMP.asset | 1656 +++++++++++++++++ .../TTT_DancingScript TMP.asset.meta | 8 + Text2Texture/package.json | 17 + Text2Texture/package.json.meta | 7 + TextureUtility.meta | 8 + TextureUtility/Editor.meta | 8 + TextureUtility/Editor/ChannelTexture.cs | 163 ++ TextureUtility/Editor/ChannelTexture.cs.meta | 11 + TextureUtility/Editor/TextureAutoPacker.cs | 373 ++++ .../Editor/TextureAutoPacker.cs.meta | 11 + .../Editor/TextureAutoPackerData.cs | 18 + .../Editor/TextureAutoPackerData.cs.meta | 11 + .../Editor/TextureAutoPackerModule.cs | 69 + .../Editor/TextureAutoPackerModule.cs.meta | 11 + TextureUtility/Editor/TextureUtility.cs | 1110 +++++++++++ TextureUtility/Editor/TextureUtility.cs.meta | 11 + ....dreadscripts.textureutility.Editor.asmdef | 15 + ...dscripts.textureutility.Editor.asmdef.meta | 7 + TextureUtility/LICENSE | 21 + TextureUtility/LICENSE.meta | 7 + TextureUtility/README.md | 17 + TextureUtility/README.md.meta | 7 + .../Texture Auto-Packer Instructions.txt | 37 + .../Texture Auto-Packer Instructions.txt.meta | 7 + .../Texture Utility Instructions.txt | 58 + .../Texture Utility Instructions.txt.meta | 7 + TextureUtility/package.json | 17 + TextureUtility/package.json.meta | 7 + VRCProcessor.meta | 8 + VRCProcessor/Editor.meta | 8 + VRCProcessor/Editor/VRCProcessor.cs | 85 + VRCProcessor/Editor/VRCProcessor.cs.meta | 11 + ...om.dreadscripts.vrcprocessor.Editor.asmdef | 15 + ...eadscripts.vrcprocessor.Editor.asmdef.meta | 7 + VRCProcessor/LICENSE | 21 + VRCProcessor/LICENSE.meta | 7 + VRCProcessor/README.md | 12 + VRCProcessor/README.md.meta | 7 + VRCProcessor/package.json | 17 + VRCProcessor/package.json.meta | 7 + 304 files changed, 22521 insertions(+) create mode 100644 AssetOrganizer.meta create mode 100644 AssetOrganizer/Editor.meta create mode 100644 AssetOrganizer/Editor/AssetOrganizer.cs create mode 100644 AssetOrganizer/Editor/AssetOrganizer.cs.meta create mode 100644 AssetOrganizer/Editor/com.dreadscripts.assetorganizer.Editor.asmdef create mode 100644 AssetOrganizer/Editor/com.dreadscripts.assetorganizer.Editor.asmdef.meta create mode 100644 AssetOrganizer/LICENSE create mode 100644 AssetOrganizer/LICENSE.meta create mode 100644 AssetOrganizer/README.md create mode 100644 AssetOrganizer/README.md.meta create mode 100644 AssetOrganizer/package.json create mode 100644 AssetOrganizer/package.json.meta create mode 100644 AutoBounds.meta create mode 100644 AutoBounds/Editor.meta create mode 100644 AutoBounds/Editor/AutoBounds.cs create mode 100644 AutoBounds/Editor/AutoBounds.cs.meta create mode 100644 AutoBounds/Editor/AutoBoundsEditor.asmdef create mode 100644 AutoBounds/Editor/AutoBoundsEditor.asmdef.meta create mode 100644 AutoBounds/How to use.txt create mode 100644 AutoBounds/How to use.txt.meta create mode 100644 AutoBounds/LICENSE create mode 100644 AutoBounds/LICENSE.meta create mode 100644 AutoBounds/README.md create mode 100644 AutoBounds/README.md.meta create mode 100644 AutoBounds/_media.meta create mode 100644 AutoBounds/_media/After.png create mode 100644 AutoBounds/_media/After.png.meta create mode 100644 AutoBounds/_media/Before.png create mode 100644 AutoBounds/_media/Before.png.meta create mode 100644 AutoBounds/package.json create mode 100644 AutoBounds/package.json.meta create mode 100644 Better-Unity.meta create mode 100644 Better-Unity/.gitignore create mode 100644 Better-Unity/Editor/BetterUnityEditor.asmdef create mode 100644 Better-Unity/Editor/CopyCutPaste.cs create mode 100644 Better-Unity/Editor/CopyGUID.cs create mode 100644 Better-Unity/Editor/CreateTxt.cs create mode 100644 Better-Unity/Editor/GOCopyPath.cs create mode 100644 Better-Unity/Editor/TransformEditor.cs create mode 100644 Better-Unity/LICENSE create mode 100644 Better-Unity/README.md create mode 100644 Better-Unity/package.json create mode 100644 CameraUtility.meta create mode 100644 CameraUtility/Editor.meta create mode 100644 CameraUtility/Editor/CameraUtility.cs create mode 100644 CameraUtility/Editor/CameraUtility.cs.meta create mode 100644 CameraUtility/Editor/com.dreadscripts.camerautility.Editor.asmdef create mode 100644 CameraUtility/Editor/com.dreadscripts.camerautility.Editor.asmdef.meta create mode 100644 CameraUtility/LICENSE create mode 100644 CameraUtility/LICENSE.meta create mode 100644 CameraUtility/README.md create mode 100644 CameraUtility/README.md.meta create mode 100644 CameraUtility/package.json create mode 100644 CameraUtility/package.json.meta create mode 100644 CopyCutPaste.meta create mode 100644 CopyCutPaste/Editor.meta create mode 100644 CopyCutPaste/Editor/CopyCutPaste.cs create mode 100644 CopyCutPaste/Editor/CopyCutPaste.cs.meta create mode 100644 CopyCutPaste/Editor/com.dreadscripts.copycutpaste.Editor.asmdef create mode 100644 CopyCutPaste/Editor/com.dreadscripts.copycutpaste.Editor.asmdef.meta create mode 100644 CopyCutPaste/LICENSE create mode 100644 CopyCutPaste/LICENSE.meta create mode 100644 CopyCutPaste/README.md create mode 100644 CopyCutPaste/README.md.meta create mode 100644 CopyCutPaste/package.json create mode 100644 CopyCutPaste/package.json.meta create mode 100644 LimbControl.meta create mode 100644 LimbControl/CHANGELOG.md create mode 100644 LimbControl/CHANGELOG.md.meta create mode 100644 LimbControl/Documentation~/com.dreadscripts.limbcontrol.md create mode 100644 LimbControl/Editor.meta create mode 100644 LimbControl/Editor/LimbControl.cs create mode 100644 LimbControl/Editor/LimbControl.cs.meta create mode 100644 LimbControl/Editor/com.dreadscripts.limbcontrol.Editor.asmdef create mode 100644 LimbControl/Editor/com.dreadscripts.limbcontrol.Editor.asmdef.meta create mode 100644 LimbControl/LICENSE.md create mode 100644 LimbControl/LICENSE.md.meta create mode 100644 LimbControl/README.md create mode 100644 LimbControl/README.md.meta create mode 100644 LimbControl/Resources.meta create mode 100644 LimbControl/Resources/Animations.meta create mode 100644 LimbControl/Resources/Animations/LC_BaseLocomotion.controller create mode 100644 LimbControl/Resources/Animations/LC_BaseLocomotion.controller.meta create mode 100644 LimbControl/Resources/Animations/LC_BaseSitting.controller create mode 100644 LimbControl/Resources/Animations/LC_BaseSitting.controller.meta create mode 100644 LimbControl/Resources/Animations/LC_EmptyClip.anim create mode 100644 LimbControl/Resources/Animations/LC_EmptyClip.anim.meta create mode 100644 LimbControl/Resources/Animations/LC_NormalBlendTree.blendtree create mode 100644 LimbControl/Resources/Animations/LC_NormalBlendTree.blendtree.meta create mode 100644 LimbControl/Resources/Animations/Normal.meta create mode 100644 LimbControl/Resources/Animations/Normal/LC_NormalDown.anim create mode 100644 LimbControl/Resources/Animations/Normal/LC_NormalDown.anim.meta create mode 100644 LimbControl/Resources/Animations/Normal/LC_NormalDownLeft.anim create mode 100644 LimbControl/Resources/Animations/Normal/LC_NormalDownLeft.anim.meta create mode 100644 LimbControl/Resources/Animations/Normal/LC_NormalDownRight.anim create mode 100644 LimbControl/Resources/Animations/Normal/LC_NormalDownRight.anim.meta create mode 100644 LimbControl/Resources/Animations/Normal/LC_NormalLeft.anim create mode 100644 LimbControl/Resources/Animations/Normal/LC_NormalLeft.anim.meta create mode 100644 LimbControl/Resources/Animations/Normal/LC_NormalRight.anim create mode 100644 LimbControl/Resources/Animations/Normal/LC_NormalRight.anim.meta create mode 100644 LimbControl/Resources/Animations/Normal/LC_NormalStill.anim create mode 100644 LimbControl/Resources/Animations/Normal/LC_NormalStill.anim.meta create mode 100644 LimbControl/Resources/Animations/Normal/LC_NormalUp.anim create mode 100644 LimbControl/Resources/Animations/Normal/LC_NormalUp.anim.meta create mode 100644 LimbControl/Resources/Animations/Normal/LC_NormalUpLeft.anim create mode 100644 LimbControl/Resources/Animations/Normal/LC_NormalUpLeft.anim.meta create mode 100644 LimbControl/Resources/Animations/Normal/LC_NormalUpRight.anim create mode 100644 LimbControl/Resources/Animations/Normal/LC_NormalUpRight.anim.meta create mode 100644 LimbControl/Resources/Icons.meta create mode 100644 LimbControl/Resources/Icons/LC_HandWaving.png create mode 100644 LimbControl/Resources/Icons/LC_HandWaving.png.meta create mode 100644 LimbControl/Resources/Icons/LC_RnR.png create mode 100644 LimbControl/Resources/Icons/LC_RnR.png.meta create mode 100644 LimbControl/Resources/Icons/LC_ToggleOff.png create mode 100644 LimbControl/Resources/Icons/LC_ToggleOff.png.meta create mode 100644 LimbControl/Resources/Icons/LC_ToggleOn.png create mode 100644 LimbControl/Resources/Icons/LC_ToggleOn.png.meta create mode 100644 LimbControl/Resources/LC_LimbControlMenu.asset create mode 100644 LimbControl/Resources/LC_LimbControlMenu.asset.meta create mode 100644 LimbControl/Resources/LC_TrackingMainMenu.asset create mode 100644 LimbControl/Resources/LC_TrackingMainMenu.asset.meta create mode 100644 LimbControl/Resources/SubMenus.meta create mode 100644 LimbControl/Resources/SubMenus/LC_Head Tracking.asset create mode 100644 LimbControl/Resources/SubMenus/LC_Head Tracking.asset.meta create mode 100644 LimbControl/Resources/SubMenus/LC_Hip Tracking.asset create mode 100644 LimbControl/Resources/SubMenus/LC_Hip Tracking.asset.meta create mode 100644 LimbControl/Resources/SubMenus/LC_Left Foot Tracking.asset create mode 100644 LimbControl/Resources/SubMenus/LC_Left Foot Tracking.asset.meta create mode 100644 LimbControl/Resources/SubMenus/LC_Left Hand Tracking.asset create mode 100644 LimbControl/Resources/SubMenus/LC_Left Hand Tracking.asset.meta create mode 100644 LimbControl/Resources/SubMenus/LC_Right Foot Tracking.asset create mode 100644 LimbControl/Resources/SubMenus/LC_Right Foot Tracking.asset.meta create mode 100644 LimbControl/Resources/SubMenus/LC_Right Hand Tracking.asset create mode 100644 LimbControl/Resources/SubMenus/LC_Right Hand Tracking.asset.meta create mode 100644 LimbControl/package.json create mode 100644 LimbControl/package.json.meta create mode 100644 Metal-Pipe.meta create mode 100644 Metal-Pipe/CHANGELOG.md create mode 100644 Metal-Pipe/CHANGELOG.md.meta create mode 100644 Metal-Pipe/Editor.meta create mode 100644 Metal-Pipe/Editor/MetalPipe.cs create mode 100644 Metal-Pipe/Editor/MetalPipe.cs.meta create mode 100644 Metal-Pipe/Editor/com.dreadscripts.metalpipe.Editor.asmdef create mode 100644 Metal-Pipe/Editor/com.dreadscripts.metalpipe.Editor.asmdef.meta create mode 100644 Metal-Pipe/LICENSE.md create mode 100644 Metal-Pipe/LICENSE.md.meta create mode 100644 Metal-Pipe/Resources.meta create mode 100644 Metal-Pipe/Resources/MP_Protagonist.png create mode 100644 Metal-Pipe/Resources/MP_Protagonist.png.meta create mode 100644 Metal-Pipe/Resources/MP_Sooth (LOUD).mp3 create mode 100644 Metal-Pipe/Resources/MP_Sooth (LOUD).mp3.meta create mode 100644 Metal-Pipe/package.json create mode 100644 Metal-Pipe/package.json.meta create mode 100644 NoAutoGame.meta create mode 100644 NoAutoGame/Editor.meta create mode 100644 NoAutoGame/Editor/NoAutoGame.cs create mode 100644 NoAutoGame/Editor/NoAutoGame.cs.meta create mode 100644 NoAutoGame/Editor/com.dreadscripts.noautogame.Editor.asmdef create mode 100644 NoAutoGame/Editor/com.dreadscripts.noautogame.Editor.asmdef.meta create mode 100644 NoAutoGame/LICENSE create mode 100644 NoAutoGame/LICENSE.meta create mode 100644 NoAutoGame/README.md create mode 100644 NoAutoGame/README.md.meta create mode 100644 NoAutoGame/package.json create mode 100644 NoAutoGame/package.json.meta create mode 100644 PackageProcessor.meta create mode 100644 PackageProcessor/Editor.meta create mode 100644 PackageProcessor/Editor/ExportPostProcessor.cs create mode 100644 PackageProcessor/Editor/ExportPostProcessor.cs.meta create mode 100644 PackageProcessor/Editor/ImportPostProcessor.cs create mode 100644 PackageProcessor/Editor/ImportPostProcessor.cs.meta create mode 100644 PackageProcessor/Editor/PackageProcessorData.cs create mode 100644 PackageProcessor/Editor/PackageProcessorData.cs.meta create mode 100644 PackageProcessor/Editor/PackageProcessorWindow.cs create mode 100644 PackageProcessor/Editor/PackageProcessorWindow.cs.meta create mode 100644 PackageProcessor/Editor/com.dreadrith.packageprocessor.Editor.asmdef create mode 100644 PackageProcessor/Editor/com.dreadrith.packageprocessor.Editor.asmdef.meta create mode 100644 PackageProcessor/LICENSE create mode 100644 PackageProcessor/LICENSE.meta create mode 100644 PackageProcessor/README.md create mode 100644 PackageProcessor/README.md.meta create mode 100644 PackageProcessor/package.json create mode 100644 PackageProcessor/package.json.meta create mode 100644 PhysBone-Converter.meta create mode 100644 PhysBone-Converter/Editor.meta create mode 100644 PhysBone-Converter/Editor/PhysBoneConverter.cs create mode 100644 PhysBone-Converter/Editor/PhysBoneConverter.cs.meta create mode 100644 PhysBone-Converter/Instructions.txt create mode 100644 PhysBone-Converter/Instructions.txt.meta create mode 100644 PhysBone-Converter/LICENSE.md create mode 100644 PhysBone-Converter/LICENSE.md.meta create mode 100644 PhysBone-Converter/README.md create mode 100644 PhysBone-Converter/README.md.meta create mode 100644 PhysBone-Converter/package.json create mode 100644 PhysBone-Converter/package.json.meta create mode 100644 QuickToggle.meta create mode 100644 QuickToggle/CHANGELOG.md create mode 100644 QuickToggle/CHANGELOG.md.meta create mode 100644 QuickToggle/Editor.meta create mode 100644 QuickToggle/Editor/QuickToggle.cs create mode 100644 QuickToggle/Editor/QuickToggle.cs.meta create mode 100644 QuickToggle/Editor/com.dreadscripts.tool.quicktoggle.Editor.asmdef create mode 100644 QuickToggle/Editor/com.dreadscripts.tool.quicktoggle.Editor.asmdef.meta create mode 100644 QuickToggle/LICENSE create mode 100644 QuickToggle/LICENSE.meta create mode 100644 QuickToggle/README.md create mode 100644 QuickToggle/README.md.meta create mode 100644 QuickToggle/package.json create mode 100644 QuickToggle/package.json.meta create mode 100644 ReplaceMotion.meta create mode 100644 ReplaceMotion/Editor.meta create mode 100644 ReplaceMotion/Editor/ReplaceMotion.cs create mode 100644 ReplaceMotion/Editor/ReplaceMotion.cs.meta create mode 100644 ReplaceMotion/Editor/com.dreadscripts.replacemotion.Editor.asmdef create mode 100644 ReplaceMotion/Editor/com.dreadscripts.replacemotion.Editor.asmdef.meta create mode 100644 ReplaceMotion/LICENSE create mode 100644 ReplaceMotion/LICENSE.meta create mode 100644 ReplaceMotion/README.md create mode 100644 ReplaceMotion/README.md.meta create mode 100644 ReplaceMotion/package.json create mode 100644 ReplaceMotion/package.json.meta create mode 100644 ResetHumanoid.meta create mode 100644 ResetHumanoid/Editor.meta create mode 100644 ResetHumanoid/Editor/ResetHumanoid.cs create mode 100644 ResetHumanoid/Editor/ResetHumanoid.cs.meta create mode 100644 ResetHumanoid/Editor/com.dreadscripts.resethumanoid.Editor.asmdef create mode 100644 ResetHumanoid/Editor/com.dreadscripts.resethumanoid.Editor.asmdef.meta create mode 100644 ResetHumanoid/LICENSE create mode 100644 ResetHumanoid/LICENSE.meta create mode 100644 ResetHumanoid/README.md create mode 100644 ResetHumanoid/README.md.meta create mode 100644 ResetHumanoid/package.json create mode 100644 ResetHumanoid/package.json.meta create mode 100644 SelectionHelper.meta create mode 100644 SelectionHelper/Editor.meta create mode 100644 SelectionHelper/Editor/SaveSelection.cs create mode 100644 SelectionHelper/Editor/SaveSelection.cs.meta create mode 100644 SelectionHelper/Editor/SceneObjectSelector.cs create mode 100644 SelectionHelper/Editor/SceneObjectSelector.cs.meta create mode 100644 SelectionHelper/Editor/SelectionHelper.cs create mode 100644 SelectionHelper/Editor/SelectionHelper.cs.meta create mode 100644 SelectionHelper/Editor/com.dreadscripts.selectionhelper.Editor.asmdef create mode 100644 SelectionHelper/Editor/com.dreadscripts.selectionhelper.Editor.asmdef.meta create mode 100644 SelectionHelper/LICENSE.md create mode 100644 SelectionHelper/LICENSE.md.meta create mode 100644 SelectionHelper/README.md create mode 100644 SelectionHelper/README.md.meta create mode 100644 SelectionHelper/package.json create mode 100644 SelectionHelper/package.json.meta create mode 100644 Text2Texture.meta create mode 100644 Text2Texture/Editor.meta create mode 100644 Text2Texture/Editor/TextToTexture.cs create mode 100644 Text2Texture/Editor/TextToTexture.cs.meta create mode 100644 Text2Texture/Editor/com.dreadscripts.text2texture.Editor.asmdef create mode 100644 Text2Texture/Editor/com.dreadscripts.text2texture.Editor.asmdef.meta create mode 100644 Text2Texture/LICENSE create mode 100644 Text2Texture/LICENSE.meta create mode 100644 Text2Texture/README.md create mode 100644 Text2Texture/README.md.meta create mode 100644 Text2Texture/Resources.meta create mode 100644 Text2Texture/Resources/TTT_CanvasTemplate.prefab create mode 100644 Text2Texture/Resources/TTT_CanvasTemplate.prefab.meta create mode 100644 Text2Texture/Resources/TTT_DancingScript Font.ttf create mode 100644 Text2Texture/Resources/TTT_DancingScript Font.ttf.meta create mode 100644 Text2Texture/Resources/TTT_DancingScript TMP.asset create mode 100644 Text2Texture/Resources/TTT_DancingScript TMP.asset.meta create mode 100644 Text2Texture/package.json create mode 100644 Text2Texture/package.json.meta create mode 100644 TextureUtility.meta create mode 100644 TextureUtility/Editor.meta create mode 100644 TextureUtility/Editor/ChannelTexture.cs create mode 100644 TextureUtility/Editor/ChannelTexture.cs.meta create mode 100644 TextureUtility/Editor/TextureAutoPacker.cs create mode 100644 TextureUtility/Editor/TextureAutoPacker.cs.meta create mode 100644 TextureUtility/Editor/TextureAutoPackerData.cs create mode 100644 TextureUtility/Editor/TextureAutoPackerData.cs.meta create mode 100644 TextureUtility/Editor/TextureAutoPackerModule.cs create mode 100644 TextureUtility/Editor/TextureAutoPackerModule.cs.meta create mode 100644 TextureUtility/Editor/TextureUtility.cs create mode 100644 TextureUtility/Editor/TextureUtility.cs.meta create mode 100644 TextureUtility/Editor/com.dreadscripts.textureutility.Editor.asmdef create mode 100644 TextureUtility/Editor/com.dreadscripts.textureutility.Editor.asmdef.meta create mode 100644 TextureUtility/LICENSE create mode 100644 TextureUtility/LICENSE.meta create mode 100644 TextureUtility/README.md create mode 100644 TextureUtility/README.md.meta create mode 100644 TextureUtility/Texture Auto-Packer Instructions.txt create mode 100644 TextureUtility/Texture Auto-Packer Instructions.txt.meta create mode 100644 TextureUtility/Texture Utility Instructions.txt create mode 100644 TextureUtility/Texture Utility Instructions.txt.meta create mode 100644 TextureUtility/package.json create mode 100644 TextureUtility/package.json.meta create mode 100644 VRCProcessor.meta create mode 100644 VRCProcessor/Editor.meta create mode 100644 VRCProcessor/Editor/VRCProcessor.cs create mode 100644 VRCProcessor/Editor/VRCProcessor.cs.meta create mode 100644 VRCProcessor/Editor/com.dreadscripts.vrcprocessor.Editor.asmdef create mode 100644 VRCProcessor/Editor/com.dreadscripts.vrcprocessor.Editor.asmdef.meta create mode 100644 VRCProcessor/LICENSE create mode 100644 VRCProcessor/LICENSE.meta create mode 100644 VRCProcessor/README.md create mode 100644 VRCProcessor/README.md.meta create mode 100644 VRCProcessor/package.json create mode 100644 VRCProcessor/package.json.meta diff --git a/AssetOrganizer.meta b/AssetOrganizer.meta new file mode 100644 index 0000000..52c3214 --- /dev/null +++ b/AssetOrganizer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c8eea97a2d91b3b4f829627b70886682 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AssetOrganizer/Editor.meta b/AssetOrganizer/Editor.meta new file mode 100644 index 0000000..551ef16 --- /dev/null +++ b/AssetOrganizer/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7698f40b260788141b158264be2f08e9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AssetOrganizer/Editor/AssetOrganizer.cs b/AssetOrganizer/Editor/AssetOrganizer.cs new file mode 100644 index 0000000..4188c5a --- /dev/null +++ b/AssetOrganizer/Editor/AssetOrganizer.cs @@ -0,0 +1,662 @@ +using System; +using System.Collections; +using UnityEngine; +using UnityEditor; +using UnityEditor.Presets; +using UnityEditor.Animations; +using System.IO; +using System.Linq; +using System.Collections.Generic; +using Object = UnityEngine.Object; + +namespace DreadScripts.AssetOrganizer +{ + public class AssetOrganizer : EditorWindow + { + #region Declarations + #region Constants + + private const string PrefsKey = "AvatarAssetOrganizerSettings"; + private static readonly OrganizeType[] organizeTypes = + { + new OrganizeType(0, "Animation", typeof(AnimationClip), typeof(BlendTree)), + new OrganizeType(1, "Controller", typeof(AnimatorController), typeof(AnimatorOverrideController)), + new OrganizeType(2, "Texture", typeof(Texture)), + new OrganizeType(3, "Material", typeof(Material)), + new OrganizeType(4, "Model", new string[] {".fbx",".obj", ".dae", ".3ds", ".dxf"}, typeof(Mesh)), + new OrganizeType(5, "Prefab", new string[] {".prefab"}, typeof(GameObject)), + new OrganizeType(6, "Audio", typeof(AudioClip)), + new OrganizeType(7, "Mask", typeof(AvatarMask)), + new OrganizeType(8, "Scene", typeof(SceneAsset)), + new OrganizeType(9, "Preset", typeof(Preset)), + new OrganizeType(10, "VRC", "VRC.SDK3.Avatars.ScriptableObjects.VRCExpressionParameters","VRC.SDK3.Avatars.ScriptableObjects.VRCExpressionsMenu"), + new OrganizeType(11, "Shader", typeof(Shader)), + new OrganizeType(12, "Script", new string[] {".dll"}, typeof(MonoScript)), + new OrganizeType(13, "Other", typeof(ScriptableObject)) + }; + private static readonly string[] mainTabs = {"Organizer", "Options"}; + private static readonly string[] optionTabs = {"Folders", "Types"}; + + + private enum OrganizeAction + { + Skip, + Move + //Removed till an intuitive way for user friendly GUID replacement option is implemented + //Copy + } + + private enum SortOptions + { + AlphabeticalPath, + AlphabeticalAsset, + AssetType + } + #endregion + #region Automated Variables + private static int mainToolbarIndex; + private static int optionsToolbarIndex; + private static DependencyAsset[] assets; + private static List createdFolders = new List(); + private Vector2 scrollview; + #endregion + #region Input + private static Object mainAsset; + private static string destinationPath; + + [SerializeField] private List specialFolders; + [SerializeField] private OrganizeAction[] typeActions; + [SerializeField] private SortOptions sortByOption; + [SerializeField] private bool deleteEmptyFolders = true; + #endregion + #endregion + + #region Methods + #region Main Methods + private void OnGUI() + { + scrollview = EditorGUILayout.BeginScrollView(scrollview); + mainToolbarIndex = GUILayout.Toolbar(mainToolbarIndex, mainTabs); + + switch (mainToolbarIndex) + { + case 0: + DrawOrganizerTab(); + break; + case 1: + DrawOptionsTab(); + break; + } + + DrawSeparator(); + Credit(); + EditorGUILayout.EndScrollView(); + } + private void GetDependencyAssets() + { + destinationPath = AssetDatabase.GetAssetPath(mainAsset); + bool isFolder = AssetDatabase.IsValidFolder(destinationPath); + string[] assetsPath = isFolder ? GetAssetPathsInFolder(destinationPath).ToArray() : AssetDatabase.GetDependencies(destinationPath); + assets = assetsPath.Select(p => new DependencyAsset(p)).ToArray(); + + if (!isFolder) destinationPath = destinationPath.Replace('\\', '/').Substring(0, destinationPath.LastIndexOf('/')); + + foreach (var a in assets) + { + string[] subFolders = a.path.Split('/'); + + bool setByFolder = false; + foreach (var f in specialFolders) + { + if (!f.active) continue; + if (subFolders.All(s => s != f.name)) continue; + + a.action = f.action; + setByFolder = true; + break; + + } + + if (setByFolder) continue; + + if (!TrySetAction(a)) + a.associatedType = organizeTypes.Last(); + } + + switch (sortByOption) + { + case SortOptions.AlphabeticalPath: + assets = assets.OrderBy(a => a.path).ToArray(); + break; + case SortOptions.AlphabeticalAsset: + assets = assets.OrderBy(a => a.asset.name).ToArray(); + break; + case SortOptions.AssetType: + assets = assets.OrderBy(a => a.type.Name).ToArray(); + break; + } + + } + private void OrganizeAssets() + { + CheckFolders(); + List affectedFolders = new List(); + try + { + AssetDatabase.StartAssetEditing(); + int count = assets.Length; + float progressPerAsset = 1f / count; + for (var i = 0; i < count; i++) + { + EditorUtility.DisplayProgressBar("Organizing", $"Organizing Assets ({i+1}/{count})", (i + 1) * progressPerAsset); + var a = assets[i]; + string newPath = AssetDatabase.GenerateUniqueAssetPath($"{destinationPath}/{a.associatedType.name}/{Path.GetFileName(a.path)}"); + switch (a.action) + { + default: case OrganizeAction.Skip: continue; + case OrganizeAction.Move: + AssetDatabase.MoveAsset(a.path, newPath); + affectedFolders.Add(Path.GetDirectoryName(a.path)); + break; + /*case OrganizeAction.Copy: + AssetDatabase.CopyAsset(a.path, newPath); + break;*/ + } + } + } + finally + { + EditorUtility.ClearProgressBar(); + AssetDatabase.StopAssetEditing(); + } + + try + { + AssetDatabase.StartAssetEditing(); + + foreach (var folderPath in createdFolders.Concat(affectedFolders).Distinct().Where(DirectoryIsEmpty)) + AssetDatabase.DeleteAsset(folderPath); + } + finally { AssetDatabase.StopAssetEditing(); } + + EditorGUIUtility.PingObject(AssetDatabase.LoadMainAssetAtPath(destinationPath)); + + assets = null; + destinationPath = null; + } + #endregion + #region GUI Methods + + private void DrawOrganizerTab() + { + GUIStyle boxStyle = GUI.skin.GetStyle("box"); + + using (new GUILayout.HorizontalScope()) + { + EditorGUI.BeginChangeCheck(); + mainAsset = EditorGUILayout.ObjectField("Main Asset", mainAsset, typeof(Object), false); + if (EditorGUI.EndChangeCheck()) + { + if (mainAsset) + { + destinationPath = AssetDatabase.GetAssetPath(mainAsset); + if (!AssetDatabase.IsValidFolder(destinationPath)) destinationPath = Path.GetDirectoryName(destinationPath).Replace('\\', '/'); + } + assets = null; + } + + using (new EditorGUI.DisabledScope(!mainAsset)) + if (GUILayout.Button("Get Assets", GUILayout.Width(80))) + GetDependencyAssets(); + } + + destinationPath = AssetFolderPath(destinationPath, "Destination Folder"); + + + if (assets != null) + { + DrawSeparator(4, 20); + + var h = EditorGUIUtility.singleLineHeight; + var squareOptions = new GUILayoutOption[] { GUILayout.Width(h), GUILayout.Height(h) }; + foreach (var a in assets) + { + using (new GUILayout.HorizontalScope(boxStyle)) + { + GUILayout.Label(a.icon, squareOptions); + if (GUILayout.Button($"| {a.path}", GUI.skin.label)) + EditorGUIUtility.PingObject(a.asset); + + a.action = (OrganizeAction)EditorGUILayout.EnumPopup(a.action, GUILayout.Width(60)); + } + + } + + if (GUILayout.Button("Organize Assets")) + OrganizeAssets(); + + } + } + + private void DrawOptionsTab() + { + optionsToolbarIndex = GUILayout.Toolbar(optionsToolbarIndex, optionTabs); + switch (optionsToolbarIndex) + { + case 0: + DrawFolderOptions(); + break; + case 1: + DrawTypeOptions(); + break; + } + + DrawSeparator(); + using (new GUILayout.HorizontalScope("helpbox")) + { + deleteEmptyFolders = EditorGUILayout.Toggle(new GUIContent("Delete Empty Folders", "After moving assets, delete source folders if they're empty"), deleteEmptyFolders); + sortByOption = (SortOptions)EditorGUILayout.EnumPopup("Sort Search By", sortByOption); + } + } + + private void DrawFolderOptions() + { + for (var i = 0; i < specialFolders.Count; i++) + { + var f = specialFolders[i]; + using (new GUILayout.HorizontalScope("helpbox")) + { + using (new BGColoredScope(Color.green, Color.grey, f.active)) + f.active = GUILayout.Toggle(f.active, f.active ? "Enabled" : "Disabled", GUI.skin.button, GUILayout.Width(100), GUILayout.Height(18)); + using (new EditorGUI.DisabledScope(!f.active)) + { + f.name = GUILayout.TextField(f.name); + f.action = (OrganizeAction) EditorGUILayout.EnumPopup(f.action, GUILayout.Width(60)); + if (GUILayout.Button("X", GUILayout.Width(18), GUILayout.Height(18))) + specialFolders.RemoveAt(i); + } + } + } + + if (GUILayout.Button("Add")) + specialFolders.Add(new CustomFolder()); + } + + private void DrawTypeOptions() + { + using (new GUILayout.HorizontalScope()) + { + void DrawTypeGUI(OrganizeType t) + { + var icon = GUIContent.none; + if (t.associatedTypes.Length > 0) + icon = new GUIContent(AssetPreview.GetMiniTypeThumbnail(t.associatedTypes[0])); + + using (new GUILayout.HorizontalScope()) + { + GUILayout.Label(icon, GUILayout.Height(18), GUILayout.Width(18)); + GUILayout.Label($"| {t.name}"); + if (TryGetTypeAction(t, out _)) + typeActions[t.actionIndex] = (OrganizeAction)EditorGUILayout.EnumPopup(typeActions[t.actionIndex], GUILayout.Width(60)); + } + } + + using (new GUILayout.VerticalScope("helpbox")) + { + for (int i = 0; i < organizeTypes.Length; i+=2) + DrawTypeGUI(organizeTypes[i]); + } + using (new GUILayout.VerticalScope("helpbox")) + { + for (int i = 1; i < organizeTypes.Length; i += 2) + DrawTypeGUI(organizeTypes[i]); + } + } + } + + private static string AssetFolderPath(string variable, string title) + { + using (new GUILayout.HorizontalScope()) + { + EditorGUILayout.TextField(title, variable); + + if (GUILayout.Button("...", GUILayout.Width(30))) + { + var dummyPath = EditorUtility.OpenFolderPanel(title, AssetDatabase.IsValidFolder(variable) ? variable : "Assets", string.Empty); + if (string.IsNullOrEmpty(dummyPath)) + return variable; + string newPath = FileUtil.GetProjectRelativePath(dummyPath); + + if (!newPath.StartsWith("Assets")) + { + Debug.LogWarning("New Path must be a folder within Assets!"); + return variable; + } + + variable = newPath; + } + } + + return variable; + } + + private static void DrawSeparator(int thickness = 2, int padding = 10) + { + Rect r = EditorGUILayout.GetControlRect(GUILayout.Height(thickness + padding)); + r.height = thickness; + r.y += padding / 2f; + r.x -= 2; + r.width += 6; + ColorUtility.TryParseHtmlString(EditorGUIUtility.isProSkin ? "#595959" : "#858585", out Color lineColor); + EditorGUI.DrawRect(r, lineColor); + } + #endregion + + #region Sub-Main Methods + + [MenuItem("DreadTools/Asset Organizer", false, 36)] + private static void ShowWindow() => GetWindow(false, "Asset Organizer", true); + private bool TrySetAction(DependencyAsset a) + { + for (int i = 0; i < organizeTypes.Length; i++) + { + if (!organizeTypes[i].IsAppliedTo(a)) continue; + + if (TryGetTypeAction(organizeTypes[i], out var action)) + { + a.action = action; + a.associatedType = organizeTypes[i]; + return true; + } + + } + + return false; + } + + private bool TryGetTypeAction(OrganizeType type, out OrganizeAction action) + { + bool hasDoubleTried = false; + TryAgain: + try + { + action = typeActions[type.actionIndex]; + return true; + } + catch (Exception) + { + if (hasDoubleTried) throw; + + OrganizeAction[] newArray = new OrganizeAction[organizeTypes.Length]; + for (int j = 0; j < newArray.Length; j++) + { + try { newArray[j] = typeActions[j]; } + catch { newArray[j] = OrganizeAction.Skip; } + } + + Debug.LogWarning("Type Actions re-initialized due to a loading/serialization."); + typeActions = newArray; + hasDoubleTried = true; + goto TryAgain; + } + } + + private static void CheckFolders() + { + if (!destinationPath.StartsWith("Assets/")) + destinationPath = "Assets/" + destinationPath; + ReadyPath(destinationPath); + + createdFolders.Clear(); + + void CheckFolder(string name) + { + string path = $"{destinationPath}/{name}"; + if (ReadyPath(path)) createdFolders.Add(path); + } + + try + { + AssetDatabase.StartAssetEditing(); + for (int i = 0; i < organizeTypes.Length; i++) + CheckFolder(organizeTypes[i].name); + } + finally { AssetDatabase.StopAssetEditing(); } + } + public static void DeleteIfEmptyFolder(string folderPath) + { + if (!AssetDatabase.IsValidFolder(folderPath)) + folderPath = Path.GetDirectoryName(folderPath); + while (DirectoryIsEmpty(folderPath) && folderPath != "Assets") + { + var parentDirectory = Path.GetDirectoryName(folderPath); + FileUtil.DeleteFileOrDirectory(folderPath); + FileUtil.DeleteFileOrDirectory(folderPath + ".meta"); + folderPath = parentDirectory; + } + } + public static bool DirectoryIsEmpty(string path) => !Directory.EnumerateFileSystemEntries(path).Any(); + #endregion + #region Automated Methods + private void OnEnable() + { + string data = EditorPrefs.GetString(PrefsKey, JsonUtility.ToJson(this, false)); + JsonUtility.FromJsonOverwrite(data, this); + if (!EditorPrefs.HasKey(PrefsKey)) + { + //Default Folder based actions. Based on usual VRC assets. + specialFolders = new List + { + new CustomFolder("VRCSDK"), + new CustomFolder("_PoiyomiShaders"), + new CustomFolder("VRLabs"), + new CustomFolder("PumkinsAvatarTools"), + new CustomFolder("DreadScripts"), + new CustomFolder("Packages"), + new CustomFolder("Plugins"), + new CustomFolder("Editor") + }; + + //Default Type based Actions + typeActions = new OrganizeAction[] + { + OrganizeAction.Move, + OrganizeAction.Move, + OrganizeAction.Move, + OrganizeAction.Move, + OrganizeAction.Move, + OrganizeAction.Move, + OrganizeAction.Move, + OrganizeAction.Move, + OrganizeAction.Move, + OrganizeAction.Skip, + OrganizeAction.Move, + OrganizeAction.Skip, + OrganizeAction.Skip, + OrganizeAction.Skip, + }; + } + + createdFolders = new List(); + } + + private void OnDisable() + { + string data = JsonUtility.ToJson(this, false); + EditorPrefs.SetString(PrefsKey, data); + } + #endregion + #region Helper Methods + private static void Credit() + { + using (new GUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + if (GUILayout.Button("Made By Dreadrith#3238", "boldlabel")) + Application.OpenURL("https://linktr.ee/Dreadrith"); + } + } + + private static bool ReadyPath(string folderPath) + { + if (Directory.Exists(folderPath)) return false; + + Directory.CreateDirectory(folderPath); + AssetDatabase.ImportAsset(folderPath); + return true; + } + public static List GetAssetPathsInFolder(string path, bool deep = true) + { + string[] fileEntries = Directory.GetFiles(path); + string[] subDirectories = deep ? AssetDatabase.GetSubFolders(path) : null; + + List list = + (from fileName in fileEntries + where !fileName.EndsWith(".meta") + select fileName.Replace('\\', '/')).ToList(); + + + if (deep) + foreach (var sd in subDirectories) + list.AddRange(GetAssetPathsInFolder(sd)); + + + return list; + } + #endregion + #endregion + + #region Classes & Structs + + [System.Serializable] + private class CustomFolder + { + public string name; + public bool active = true; + public OrganizeAction action; + public CustomFolder(){} + public CustomFolder(string newName, OrganizeAction action = OrganizeAction.Skip) + { + name = newName; + this.action = action; + } + } + + + private class DependencyAsset + { + public readonly Object asset; + public readonly string path; + public readonly Type type; + public readonly GUIContent icon; + public OrganizeAction action; + public OrganizeType associatedType; + + public DependencyAsset(string path) + { + this.path = path; + asset = AssetDatabase.LoadAssetAtPath(path); + action = OrganizeAction.Skip; + type = asset.GetType(); + icon = new GUIContent(AssetPreview.GetMiniTypeThumbnail(type), type.Name); + } + } + private readonly struct OrganizeType + { + public readonly int actionIndex; + public readonly string name; + public readonly Type[] associatedTypes; + private readonly string[] associatedExtensions; + + public OrganizeType(int actionIndex, string name) + { + this.actionIndex = actionIndex; + this.name = name; + this.associatedTypes = Array.Empty(); + this.associatedExtensions = Array.Empty(); + } + public OrganizeType(int actionIndex, string name, params string[] associatedTypes) + { + this.actionIndex = actionIndex; + this.name = name; + this.associatedTypes = new Type[associatedTypes.Length]; + for (int i = 0; i < associatedTypes.Length; i++) + this.associatedTypes[i] = System.Type.GetType(associatedTypes[i]); + + this.associatedExtensions = Array.Empty(); + } + + public OrganizeType(int actionIndex, string name, params Type[] associatedTypes) + { + this.actionIndex = actionIndex; + this.name = name; + + this.associatedTypes = associatedTypes; + this.associatedExtensions = Array.Empty(); + } + + public OrganizeType(int actionIndex, string name, string[] associatedExtensions, params string[] associatedTypes) + { + this.actionIndex = actionIndex; + this.name = name; + + this.associatedTypes = new Type[associatedTypes.Length]; + for (int i = 0; i < associatedTypes.Length; i++) + this.associatedTypes[i] = System.Type.GetType(associatedTypes[i]); + + this.associatedExtensions = associatedExtensions; + } + + public OrganizeType(int actionIndex, string name, string[] associatedExtensions, params Type[] associatedTypes) + { + this.actionIndex = actionIndex; + this.name = name; + + int count = associatedTypes.Length; + this.associatedTypes = associatedTypes; + this.associatedExtensions = associatedExtensions; + } + + public bool IsAppliedTo(DependencyAsset a) + { + bool applies = a.type != null && + (associatedTypes.Any(t => t != null && (a.type == t || a.type.IsSubclassOf(t))) + || associatedExtensions.Any(e => !string.IsNullOrWhiteSpace(e) && a.path.EndsWith(e))); + + return applies; + } + + } + + private class BGColoredScope : System.IDisposable + { + private readonly Color ogColor; + public BGColoredScope(Color setColor) + { + ogColor = GUI.backgroundColor; + GUI.backgroundColor = setColor; + } + public BGColoredScope(Color setColor, bool isActive) + { + ogColor = GUI.backgroundColor; + GUI.backgroundColor = isActive ? setColor : ogColor; + } + public BGColoredScope(Color active, Color inactive, bool isActive) + { + ogColor = GUI.backgroundColor; + GUI.backgroundColor = isActive ? active : inactive; + } + + public BGColoredScope(int selectedIndex, params Color[] colors) + { + ogColor = GUI.backgroundColor; + GUI.backgroundColor = colors[selectedIndex]; + } + public void Dispose() + { + GUI.backgroundColor = ogColor; + } + } + #endregion + } +} diff --git a/AssetOrganizer/Editor/AssetOrganizer.cs.meta b/AssetOrganizer/Editor/AssetOrganizer.cs.meta new file mode 100644 index 0000000..0abbeb1 --- /dev/null +++ b/AssetOrganizer/Editor/AssetOrganizer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c3350e00f0c1769488b502a2a4f77a48 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AssetOrganizer/Editor/com.dreadscripts.assetorganizer.Editor.asmdef b/AssetOrganizer/Editor/com.dreadscripts.assetorganizer.Editor.asmdef new file mode 100644 index 0000000..bbeaea2 --- /dev/null +++ b/AssetOrganizer/Editor/com.dreadscripts.assetorganizer.Editor.asmdef @@ -0,0 +1,15 @@ +{ + "name": "com.dreadscripts.assetorganizer.Editor", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/AssetOrganizer/Editor/com.dreadscripts.assetorganizer.Editor.asmdef.meta b/AssetOrganizer/Editor/com.dreadscripts.assetorganizer.Editor.asmdef.meta new file mode 100644 index 0000000..ff96ea1 --- /dev/null +++ b/AssetOrganizer/Editor/com.dreadscripts.assetorganizer.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ffecb479d42e80945a3b21adb02b71e4 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AssetOrganizer/LICENSE b/AssetOrganizer/LICENSE new file mode 100644 index 0000000..545aeca --- /dev/null +++ b/AssetOrganizer/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Dreadrith + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/AssetOrganizer/LICENSE.meta b/AssetOrganizer/LICENSE.meta new file mode 100644 index 0000000..7575f84 --- /dev/null +++ b/AssetOrganizer/LICENSE.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9587cb3598e7645408cf231bd10e0beb +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AssetOrganizer/README.md b/AssetOrganizer/README.md new file mode 100644 index 0000000..c587a0b --- /dev/null +++ b/AssetOrganizer/README.md @@ -0,0 +1,22 @@ +# Asset Organizer +Reorganizes Prefab, Scene or Folder's dependency assets into their own sorted folders + +### [Download From Here](https://vpm.dreadscripts.com/) + +## Features +- Organize assets in your project based on their types or custom folders. +- Define custom folder actions for specific asset types. +- Choose from various sorting options to manage your assets effectively. +- Delete empty folders automatically after organizing assets. + +## How to Use +1. Open the Unity Editor. +2. Navigate to `DreadTools > Asset Organizer` in the top menu. +3. Choose the "Organizer" tab to organize assets based on their types or custom folders. +4. Use the "Options" tab to configure folder actions, type actions, and sorting options. +5. Click "Get Assets" to select a main asset and gather its dependencies. +6. Adjust the organization settings as needed. +7. Click "Organize Assets" to apply the changes. + +### Thank You +If you enjoy Asset Organizer, please consider [supporting me ♡](https://ko-fi.com/Dreadrith)! \ No newline at end of file diff --git a/AssetOrganizer/README.md.meta b/AssetOrganizer/README.md.meta new file mode 100644 index 0000000..8cc9b30 --- /dev/null +++ b/AssetOrganizer/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 293a57234d624b74ab4a7fbe07d0ac19 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AssetOrganizer/package.json b/AssetOrganizer/package.json new file mode 100644 index 0000000..0bda437 --- /dev/null +++ b/AssetOrganizer/package.json @@ -0,0 +1,17 @@ +{ + "name": "com.dreadscripts.assetorganizer", + "displayName": "DreadScripts - AssetOrganizer", + "version": "1.0.1", + "description": "Reorganizes Prefab, Scene or Folder's dependency assets into their own sorted folders.", + "gitDependencies": {}, + "vpmDependencies": {}, + "author": { + "name": "Dreadrith", + "email": "dreadscripts@gmail.com", + "url": "https://www.dreadrith.com" + }, + "legacyFolders": {}, + "legacyFiles": {}, + "type": "tool", + "unity": "2019.4" +} \ No newline at end of file diff --git a/AssetOrganizer/package.json.meta b/AssetOrganizer/package.json.meta new file mode 100644 index 0000000..47a85d2 --- /dev/null +++ b/AssetOrganizer/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e4bc2cfdad5430543a82759af2a714dc +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AutoBounds.meta b/AutoBounds.meta new file mode 100644 index 0000000..9c1d1b4 --- /dev/null +++ b/AutoBounds.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d3dd19a6bc8656345af033917af670f4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AutoBounds/Editor.meta b/AutoBounds/Editor.meta new file mode 100644 index 0000000..13b31f0 --- /dev/null +++ b/AutoBounds/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c6fc63526d0ac084981a6d4acbeff746 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AutoBounds/Editor/AutoBounds.cs b/AutoBounds/Editor/AutoBounds.cs new file mode 100644 index 0000000..b856fe1 --- /dev/null +++ b/AutoBounds/Editor/AutoBounds.cs @@ -0,0 +1,92 @@ +using UnityEngine; +using UnityEditor; + +//Made by Dreadrith#3238 +//Discord: https://discord.gg/ZsPfrGn +//Github: https://github.com/Dreadrith/DreadScripts +//Gumroad: https://gumroad.com/dreadrith +//Ko-fi: https://ko-fi.com/dreadrith + +namespace DreadScripts.AutoBounds +{ + public class AutoBounds + { + private const float boundsPercentIncrease = 25; + + //Sets bounds to auto-calculated dimensions starting from the target + [MenuItem("DreadTools/Utility/AutoBounds/Auto")] + private static void CalculateBounds() + { + //Get Selection + GameObject go = Selection.activeGameObject; + if (!go) return; + + //Check for animator and to use hips instead of target as root + //Always using target as root may make the bounds follow improperly + Animator ani = go.GetComponent(); + bool isHuman = ani && ani.avatar && ani.isHuman; + + Transform rootBone = isHuman ? ani.GetBoneTransform(HumanBodyBones.Hips) ?? go.transform : go.transform; + + //Get child renderers including disabled + var renderers = go.GetComponentsInChildren(true); + + //Get Max Extent by getting the biggest dimension + //Avatars can rotate their armature around meaning this dimension can go in any direction, so reuse it for every dimension + //Probably not the best logic or calculation but it usually works + float maxExtent = 0; + foreach (var r in renderers) + { + if (!r.sharedMesh) continue; + Transform currentRootBone = r.rootBone ?? r.transform; + var currentExtent = GetMaxAxis(rootBone.InverseTransformPoint(currentRootBone.position)) + GetMaxAxis(r.sharedMesh.bounds.size); + if (maxExtent < currentExtent) maxExtent = currentExtent; + } + + //If human, hips should stay the center + //Otherwise, center the bounds vertically based on current dimensions + Vector3 center = new Vector3(0, isHuman ? 0 : maxExtent / 2, 0); + + //Increase area by percentage for safe measure + maxExtent *= 1 + boundsPercentIncrease / 100; + Vector3 extents = new Vector3(maxExtent, maxExtent, maxExtent); + + //Set auto calculated bounds starting from target as root + SetBounds(go.transform, rootBone, new Bounds(center, extents)); + } + + + //Sets sampled bounds from target starting from top most parent of target + [MenuItem("DreadTools/Utility/AutoBounds/Sample")] + private static void SampleBounds() + { + //Get Selection + GameObject go = Selection.activeGameObject; + if (!go) return; + + //Get renderer for sampling + SkinnedMeshRenderer sampleRenderer = go.GetComponent(); + if (!sampleRenderer) + { + Debug.LogWarning("No skinned mesh renderer on selected gameobject."); + return; + } + + //Set the samples bounds start from the top most parent + SetBounds(go.transform.root, sampleRenderer.rootBone, sampleRenderer.bounds); + } + + //Sets all children skinned mesh renderers of the root to the given bounds + private static void SetBounds(Transform root, Transform rootbone, Bounds myBounds) + { + foreach (var r in root.GetComponentsInChildren(true)) + { + r.rootBone = rootbone; + r.localBounds = myBounds; + EditorUtility.SetDirty(r); + } + } + + private static float GetMaxAxis(Vector3 v) => Mathf.Max(v.x, v.y, v.z); + } +} diff --git a/AutoBounds/Editor/AutoBounds.cs.meta b/AutoBounds/Editor/AutoBounds.cs.meta new file mode 100644 index 0000000..800ac2b --- /dev/null +++ b/AutoBounds/Editor/AutoBounds.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b593cd90629c1ec408e9482136c2ce62 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AutoBounds/Editor/AutoBoundsEditor.asmdef b/AutoBounds/Editor/AutoBoundsEditor.asmdef new file mode 100644 index 0000000..6610281 --- /dev/null +++ b/AutoBounds/Editor/AutoBoundsEditor.asmdef @@ -0,0 +1,15 @@ +{ + "name": "AutoBoundsEditor", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/AutoBounds/Editor/AutoBoundsEditor.asmdef.meta b/AutoBounds/Editor/AutoBoundsEditor.asmdef.meta new file mode 100644 index 0000000..1feee63 --- /dev/null +++ b/AutoBounds/Editor/AutoBoundsEditor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9ba96ad25be5a4649abd6919a2505e50 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AutoBounds/How to use.txt b/AutoBounds/How to use.txt new file mode 100644 index 0000000..0b636af --- /dev/null +++ b/AutoBounds/How to use.txt @@ -0,0 +1,26 @@ +Made by Dreadrith#3238 +Discord: https://discord.gg/ZsPfrGn +Github: https://github.com/Dreadrith/DreadScripts +Gumroad: https://gumroad.com/dreadrith +Ko-fi: https://ko-fi.com/dreadrith + +Menu items can be found in the top left corner of the Unity Editor window +[DreadTools > Utility > AutoBounds] + +=========================================================================== + +[Automatic] +This will set all the skinned mesh renderers of the target to the same automatically calculated bounds and sets the hip/root bone as the target. + +1- Select the root of your avatar. +2- Press the menu item: [DreadTools > Utility > AutoBounds > Auto] + +============================================================================ + +[Sample] +This will set all the skinned mesh renderers that are children to the top most parent of the target to the same bounds and root bone as the target. + +1- Select the target that you want to sample from. +2- Press the menu item: [DreadTools > Utility > AutoBounds > Sample] + +============================================================================ \ No newline at end of file diff --git a/AutoBounds/How to use.txt.meta b/AutoBounds/How to use.txt.meta new file mode 100644 index 0000000..7549c64 --- /dev/null +++ b/AutoBounds/How to use.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 101f95a936983c24e93978d6b5194335 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AutoBounds/LICENSE b/AutoBounds/LICENSE new file mode 100644 index 0000000..a7d4152 --- /dev/null +++ b/AutoBounds/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Dreadrith + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/AutoBounds/LICENSE.meta b/AutoBounds/LICENSE.meta new file mode 100644 index 0000000..08aada1 --- /dev/null +++ b/AutoBounds/LICENSE.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7a9e3c6636b709a4ba2456e06fa37dc5 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AutoBounds/README.md b/AutoBounds/README.md new file mode 100644 index 0000000..250a28b --- /dev/null +++ b/AutoBounds/README.md @@ -0,0 +1,23 @@ +# AutoBounds +AutoBounds's purpose is to make easier to set the bounds of skinned mesh renderers so that they don't disappear in your peripherals especially when the avatar is not in a standing pose + +# How To Use +Menu items can be found in the top left corner of the Unity Editor window +[DreadTools > Utility > AutoBounds] + +## Automatic +This will set all the skinned mesh renderers of the target to the same automatically calculated bounds and sets the hip/root bone as the target. + +1- Select the root of your avatar. +2- Press the menu item: [DreadTools > Utility > AutoBounds > Auto] + +## Sample +This will set all the skinned mesh renderers that are children to the top most parent of the target to the same bounds and root bone as the target. + +1- Select the target that you want to sample from. +2- Press the menu item: [DreadTools > Utility > AutoBounds > Sample] + +### Before +[]() +### After +[]() diff --git a/AutoBounds/README.md.meta b/AutoBounds/README.md.meta new file mode 100644 index 0000000..cefc5cc --- /dev/null +++ b/AutoBounds/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f82691f766015f24a92f2952e70e2aea +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AutoBounds/_media.meta b/AutoBounds/_media.meta new file mode 100644 index 0000000..2676379 --- /dev/null +++ b/AutoBounds/_media.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dd6bbcd0b5d172d47a2fb8b30c225eeb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AutoBounds/_media/After.png b/AutoBounds/_media/After.png new file mode 100644 index 0000000000000000000000000000000000000000..0b9297ff0e42f16344f03421820f5f9fac5da728 GIT binary patch literal 91451 zcmd42hgXx&^9HJ-f;0sIK|wx(2%$@n4vNy7^xmY2AT5E=5h*HFlp>H2BLX5Fgb;cW zf|LY72rVErp@kB9y)S-$_uPNsa!yXlS$1b9 zbLY3tUNo11UwVe8;()jFU?UCHbER0$Mc~Utw?}%9&Yi1BraN-H1bn~ZqiG2~ca9ly z_Buc5${l#_+-aWHlSd|jb}NmS0&VeWO;Z8+;`5)K?%kIJ{(3&}S*L?)+IxF_SJT75nsKNGk#uJ8Wd<3V!A7a+pN zHcH7?c|!nIVE`@2Msn&+CUg?ur!IT)s;4}|CDz2fugA$@hdb!7BtU6ZXG&|jz*1Bn zMVTUFRhVG9z&z3(!?NLZCm1kJiMS&N=>3lqAXeyk;RnkhPfN*IrA(M8Fl?yET%jrD z1Vbm*@b}-axijfyN2=VCAFDN9Wy?k@oSJ~|(H>hA+n@(F7Quwg!^uxJWJ z&!Xl|WJCAL$B7*DR9w7}cDeIH6$Gy0$pGldXxBrggBul)MI($i>U3kXN30&$s`xcv zr!fDOsphE-V*PIG3r{E!A;gZ1xF3H*Ea1q46w$ERE#!r85{Ci5-ojesM4SX+5Hpk1 zLPZ34M5$Bs$#&q(JATg7*9Y8yQD%)3+3DS`tCM0SFPJIqDw&m7&F@S^#xWiIa%z2j zDJjDLI2msrL0ART$4W8)5`sG5wL!%e6>Y2gv9}ZY4X#p%IOvg(e?-InLbeyeO&s7Cv)4JHl=f9oAw({(c!L}d$Y+3C;q!Clfla(DBOK^{ma0*Wej-wdWG7f zF2a6nSuE4RCWk~49JsP>&PN?viRz(qSVHtrL?K7xv2exeB zKc8;2QghdaB~7oi(i{sD6J;iSj-V@YXXDYaRkwiM{hDh!B!iDGEk+#epql-G)q#Z$ zEZcD5JCc})l1b`pyIO@QAF^Y#m#pmsV9!a-vd76&$7CpQ)Uw;`NJL~g#bnB9vLVO| zCr!@@tnS7GCHQB|mYJN+UX9p`0u-sws7@+i3P|yT_QDnL!1+Zc0-N!iO;RBH9GQY6 zjy94bAcu*o+D@-}a+5xLly|eai9NNHFoo*0SPDfY4m*v$-_9^zqOXf)tR*hE!0{x&(t?T~4 zm0%b4YT9?j*iW2b>`xEOQ8*47b|g2oXEli&IG3U^k>f26qX(vp6vb zitcnwKEVJEX=z8UAPcNbYTobj=Ct?5`JNu{)++&%j-O46)h(@C5`5!(z>SDFL5~w* z^jK|VRatrc>}1HAe@IiSkLW*-7-kbRpT_ujTjd1Mb!`~dd_LiZ{Ncr2r4jQH0vhm! z31{BW%Xfc1L!o&1bPv$s;*K0_WYJzp|3;w05lx zJ6kKbHe2Cz>h##2I4ii-e7x$N^d>kd+pDe+Psc$YJJ_?x66|Km4;%KbZQfH39D=L;+D?tNd>r$O6*-$8Hzyg)FOer%e*B%gt!84?J>R zL4cjg_918Hv?n_zzg1Rw86Mi+H35W}+K@5Xm53GfwA`XU1_k}~FSN@Suss{ym4~pI zNeFH}(BZ}P2R(TrTkUk-7*&ph+7N~)$N#_`tmd*1!l7&mVWw$Xlt2#t^rybn=LPz7 zU?b3xtf%iQTIYCkA^z@0^Xa9d4RgS}C4TAXJv0tr$v4k)+-ET3%`EWBO32z0mvUB{ z+2|SHsO0sN`Hgn`4F1tXF8ES#c)w^O*^J$d8#Unbv7u*TF$gUi>cFRyXeUe3lKRig{xZ+Af8{DgA!BP|B<#&)i7Y zpj;}|zUsk2??!iaG5G{DW-1|1I1E7tIzQRoZYF2sSTmE2*vdls(<)EP+%(? zWBzQT+IB1~Q8i+-(+e=L&%*a!sP)eiWzBtJ@Z(PrWw77Yt8vG?1DN~E z^yYIYwG1s7dh*bizolW0T8zLDxLW{c!b(+WenYrg-Yf2gL>R~MzLQ473;&V?3CKa8oe7?4I*E^ zvkm(bDCMj!D>%{|*ZXc;5r|(KEqOg*S4I5;przA$_f=1C9xa(S`yCmtMD*q;jRR6& zhJNekZT$U-weZ54Q19YUq3n;BmvRW@oI$^pzxB}LwYRR{*@}a)=n89SdA)Ynesjc|H;{XqvHW_U!kNqwRg`YME6w=9aWN9Fu4Y=as2sd={sf8rue zz!;VN6U+n}Oi;%7c&TO*)ec|8pzBE!3ngy&SvQ>5!yrF#KaM=N=w;4BbGBeV#qJNU z{jas6!Ped6$-}_=sw%sVD%YTxweVd9AZ+S$sgvCP^KRPDpKaDW{f8X@FcE?T#5?NG zx^*0*dO8$Y5^U#KtP(dv)o*sKC^?L^P*T1u?a?C?J#CW4LQm=1($I$h!s?*yZ5gHm zG)+jzmeR=8p8%{GOa|~v=l}3a(Fx{gpK>Pk!m}IgtZzSK<}tE7^OHQ)$o{Dy-y-#S z-H$gq_m^$ty(t@FyxYZdvMk_-@44gM)9h_Vv0Oup*ybS+7^Nx$Cb^015}=6LGR?K9 zMx_b3x2z1hC^<;8=?>ZJuT*;`q7@nC{5dn82!a$v4qEJ+HW=Gu9euk zh$`{jHZ4Sw1hxJU1}4;qJ>Ku%PN@A21Ex82z%f8E)ZC$e0i-ty0I+k@L+1AWM|l4T zVXGf!V4nYmHAxo<=Bh1vdiabEj`t@k%2?%L(NHf~+o5&x_{M|YtrJ7y;$plJh z;>NFu&JT6c|B0)rRQ(S$)`ukRPKMxC(Xn7EUI>+4_`VA!0=kR&z^5~zj9cF>cP8hl zis{p&emf+wl7E_#cE+|2dTI3P4FvT250f=W!m&bnv;zXC&%rwwA;^rNKkt_D)ogpT zLiq8reZ3L@5}!qT?Wrbl%FXOu|9xsv2Pp(xXA^q?VBP+|tZ?}PWM5YKMNyrBJdff4 zZ?U)F{N-lNCE?g2eY!!20$*>_>W;^Uc^O?lA#$!`boi2kWKk3K*#da+bpY#xir57& z@?j8ZCz#Fo9^gv);1;pJ1)Stp-}S$bFbL!c#@Ik< zen*b#iaF9eFZy$lR7Hlx%TjLhgl%Xqg#2dG{HwvFtYscq{y*98e?HC{ez^9H>RiZV zqZj~m*#gp5LXI{wnjs;jtvf8ze3VzqGataSsIF13F`meg%Vb8R_NUlzT{K|R~9tH&%;SRMRIk)Dcy8m2*N8lm# z*&;^Gas43hM?aMZD~yZez{6D(0YI*ymcW8;oMH{@uV)S5hfdo|LtY4I&3h0J?$0w> zIx^HQW3nn|B8|F0`q_5LV8wh+PqN@v8cO#!DTk@<7?8{(=Ac+pYW_)K7sV;mAKO@z z8b!UkxN`aNS@dRu4haMl%RzBD69m?FGaKe;Mps0En1JAO+iHJe?gFZOhk%yPvX zp>4Zd5e7N6byR>Kryb|6y;)WZi8;t(V~W6ZX~WTlrskrVl3ui9>l`&`8t9G{0oxsjMH+8%g{5~Z$(Ed_l&$=H2_LcmkLU4hD-fFO#hx5_cq^b{ zu%ZcMMqaP>%xI=M$CmY8Nu2Bn{jN$*_<=is{h6Hk6r4qQaOuxsDH3@2xGJ$z*v5b? zxb>z$#<8Psu$vs)rxw5~A0Jb^+v6$0R&AoqF0tcle?6Z8`SP#|ZN}_bes^Yb z_ke6ooF-(K?0>XKj_?GSk5zCIwfX`_QWwlH$W}cXYfl+q3ofOBqv~y=!%tI#6(3YF z=#*whQzcIoR~~&=bu+O84U}p!3~M$@fu2&c{7jl0y`0XZph8U?x8D5XYwK}kn4nDc zhHYYDr#iWFl*hm3aR9VoXUqf0YT2=nGZZZ5uuCQ+scau7>t#PchcQ+Rt`s{U1en)E zb;kzhu+#A>0R0cQ1j(fZ!}tn_i?>WL7ab~8nX4(=Yv*6r>KYf$d6OJg3> zS-M%_@%1*3(bYjsI8nw`W6|~guEEQesw(f69F5X;r;KWAs)Qg^ZJ0{7q#?=k<;1Ro zg7aA_;3lL_y4;R;AY$Q+O0_C>ghn<3E05p1CXipAL9{;7xTaw$see>_VO|Zo#94!N z5{2I8tu>#-+V!>C= zu>M8k9C)!pfu4X?%W?=_A$8z%q{a_vOsb<~>Ns)Wmjbe9Sr2;R$t?rR{76%tmGlXA zLSjkDfBItC;4jrWHewYz&UPuBJVr#tkoV!YvD??l=t+f?tRT@?C4IW|c7*-gWJ6eEd9Pc{RqDo&R@0 z{M#lua~^1ldr_tXFWb9gh8!%O0!W9Y22S$YkRe2F?vN)=KyBrFt4bl zQvKSnjt`<-R!Cab3LC9-8HNrJ|M63Rq5w{)u614dmrf#{2Bj=%MEnerp@rYd*JTNk zB$R@Qeqmpp)F=3O*e>*sf=Y!!nwLDG!R>34KF@my8!5&UVv6BaW^ELsH7B(O2kC6B zfwx)TM&`G#7?b*fehd22!pFaT-%{I4SlS<@n>k{-qiR5Zvjj23Ca>0~2?wvR$kQEs z%J)u-069(~oX;Ln|OVT7v^jU>F>y8Y)^4*Iy}M?!J)`o7l{ z=940he@npYXRD@WGd0TaU19Sg#@mf1D-xeR{r9W@0`k(%rb2xq0??on3!p}=xR4LUh)brv3_0BJ!|jxL0>fRk)u>_k;> zcp|N9&CmrinG8alWq-g8o4xn?Xv<$H^Mg89p@1~{^k>reKI@rCdu^eT_;giDI(|k# zET4eR<#6fzBFXjv!~?DgpZ7OMO8QR;;PN;@5U(shJup&z(u0qdXyp@nq`ZE5GGE9oPfe{>w%?BeXlh)1PH z%+HwSC3V@8_FfrkUfFmU9BNXwHs~M@vp93Gv!4;YYHhkGE1} zH$}mC`hvHDbKjO6-Q*sJWpDo4{I#Yq#%b_Y&;@F~0LaO}!tK$B^-ViHJmr3=95ivv zHlvUagZb}|Q#s%E!<69SCr6@Fg#aa9aYkWbT5L`9WvTVtt196PmLt9;@=7LyE2;9{ z#xS<@{z0ycY7Qp(WHL+e*JQG>ok*oi@MI~(Z45rMa8JbZ^hLo0A{%_2%~p~L$ZDVM zGkn}=m~c(?>ajo;zclQ5S^Caxq2)yJC;@gF&^>hr+9-N~NU@2*YUZTuA8On+DyUT> z9o;rr@)XE5GFU~C74M5)KH(Kp_jI->I|Qu%-9K)hRzEY|v+7H553JJZqL+-BqZPc( z`H#M1-HaeOE_Km6uAeP9T{E4f;}XfrtA4;XMwCf*aP^S8{x@i=U=21}?~xtRzyL?3aoD8|Cd2PmA&0CB~Yh05hWxuq8nv#nCtP<;J zff^A^{>;RbYmb4yu-&$*;k1t!kpd7@#*PbnZ1Dj|((wb;_UcprV(fEg&FE4e51Hc^Cq%dMr zW)krnvfk#a-Qu<2nreMGk6Vm#?om{B#x!1R)ns2%m55sugjg?~-NMCIz`^>o`eR`q z%$}@7`=NMk3K|Y4$^4Y3Y3@*W9H(@Q<|Bzl>|2B?YKqr-GU~&E9LoXyy8*XhtA;uc z2D{Nl{qeHOFLo|H_;m387)vD={JI@+Syw=>e@4l=g&`~&drvl@mZM{Qm!h;MClKO# zL16oa8flGltPlZ@dOi2|{z34tVld93?TnaIIYCKkjlYl%f^eS8aC^O0t zqR(+1zYkU*cxeoAT9hBa;nRDH>cj~ZIBs@AVSLDFCIm116Sw32oA~_)SB&q^xPy|z zOs>7U<8i>EGtMmfTIGjloPNxaJuYQkuw8{Oh}GF0eRThr`r| zQU&;|;kQd|XQWoWnsXEpF;EtFdnET*la(=1?Mh_bJm|2pikItF+qbW_PxO9MeAWNz z9xB9$M$sH{w#CW{FUgZ>DTta&xgkep)Xx8EJ?IicnpOeEzCEHs-hk|p9Xu(`<6zUe>xGnr1mG zp!I+2#4r&W%&&6-w@_qfX=5s2I>>^7Dh8) z-t#c$rottlmiY^DA}cwE#gvsptu&hS%{d#XTq~?&RbZl?vlXAb+X1}q`6vB?KO8RB zObuP86$_tB<~=uWGZs=p)qCoPh1;4E4R~ywd-(i@kEgNc&-3;5*$TK%V(!T#^vb;_ z@j>8gWRb0}fA7~J;~Fcpjr!S{&~GMG*kXLoA4sCF%V*44s$Rv@hO1^$++@Ium)i>g zE>7G*D?WKx^M}R&xgv%Dwm*%7(q^T|W_+yf;ftS=J=H}nF?#Y)7FM1o24-UOJ<-G2 z;HC6lk>Vgy&IOsc4+@_uy1X#oV**{<{SrS1)r(JZ=lyyl|F)l4PXnhcNpIS;JyLTr zGYFnAB~4saf~+`12h%^QC5k^epnqJ8zjiUP@d-73s3?9^@}rMMG`6Pf$n!}InWR&u z>bBj~qSLl@xUmxD^}hffdtS@W^X><}gB6jblUnWZFU`F|PZn4ZL+u1X9*?|UNnYuL zRblP^eRA90IRGYmeB{t;txrKGhH=N}AdR!e%|u%!w|h*!6f!G;U%cw@OfAXrrn4=T zyx#KYGXDG7+XZT-quzk?+1s2N-L}r&Q{FP4e$!Yh%b?!PyVxTsL7X=06mjFvs$%nX z{vNCHy#B_VK*93N#Zocrq25@jqB>TBZM_wEtPX1wGBdQcy7xV?rq|UwZ!-1xv(;Cy zCmFehShVrINN~+;tLb>&Gai&p8Bf|$Q2P~0y=ybI`6qOR2}ud_7w18U@sDZn&gT&2 z2c|bCi(eC4UQ_mt0o~B@uXX4?ifv#kB9?$d{^DA9XTgl#tVo4mH08c_j;b5soSK*8 zOIDo~&BluUCub)OGy;hK_e(e7_db~I_5D?>KvhPAnh$na6u39ZX?HKbh~&7WC*YSq z$`NM#D&a$BtlJYTkAkQ{?$N<7n@e8yD5C{Iy>~uxQ2ijHW@^Lyub?bH94or2FuoL; z0SHia=_MTjOC#>#@N4uAWPjzTI3dS2PY;RjcB`Qq3se#FClfZRs=DEg6RSAZ8{)Ku zj<@S3bB6YIB;>H86wbtv9_D{u=3ge>3JFP=@^QTQ>{x^6zRwS~EV(=pKV$dtkzIwq z{@pO^_eR64zwQXC(ZVtkARv>tal6yLAJT(U!s+1dakUogvOKl^sP%wz9U-YxMmWSK z`sC}A<#4MXuB$~@lH35uG30X#4p|6fjxR@zv7wAYE2B%MgEKCS$ev@C%gSb5P34;R>Vf$@ zz9A|zTjyKQ0$LLkS}ifGo24tnllKZ ziee0?nw8%PJ_@KV%-MZrFv~ z+7X)A6p1{2ccbSlvO?`3i27_OV@#JxNX*+L2^8=1f)>-7hQ6)|FZc_sOsaF{Nbf&1 zVd(rR5oAdBa)?}vK1?+O=R`-i`QO*>W6;6qo}yWoWKYXJR5`hlh-;Tpq82yZoD7W! zvAh|P#3i(_=;d)F$J_8`F>9MXNF-bX)})z&`^BS_KOy(ZA$qbi>-B336XL!4<1nE6 z<@y^SDm_H1?sAm=d^-Z#dj4j_);Do%75&2c@7Q-!FYvB({RjAm+2EJmIb4&TS2pEX z_;~|_(#Y3pdF9P36pU7D5=@tPETO7Xjb4T73xbdkvc0nX%h+mUyjP!~&#Ts;kOw&c z+nMWqJUSONkqbxdD~6v4tW8UlbL6!VTVgV4XtRxQZ`Vzb%|fbfY&`nP=CD&uqQhGR z|NTIz7jxhd9iqS%8^=$ndCN<$)t3OK>&)$b*7T!M8cRp__&2WBLfGK%G(lidCZ{~P zqHYivYf#0m8$WZm&P7e`R*z31J3`}%#E1M|OM!v`G9OqcxTY86r)L_U@Up@qCgeRI zxYBXdX2qudNx?;Su7bG!)z`|_y$_CTjwZ%f^{31)(@O;Y4Pp_`(<=n$vFB9I4CZ-4>&YjQ(sWFJ2xY%6Ly!p#0W^i8CMi z7=EVls56bHuslXyHGXHjaI=I`=U|WGnaSyzm@JRsK~)fcg2c763j?%mdF|Ev{1^xE z#i6K-&+ZWHw+Xd{hUA_``M8y)wSaCyg>#=8DLWn4j`i2sqHI(dePNMz(J>tF=@fw2 zx!oj~l6o)ukh2YIj~goI{$mxT7Gkn%|6$B&k1%YYwRVOtTss)RkUJLA;!Tf~rm{^f zx`@8wxoh)#qZaI4k>>~3VQyl5x;}>r_u1+BF9Q{vSMAcPUVQ}$rF6nul`i_eRjkDX z#`F*ObgPXgU3h%eKeL#HCm`}$K+5XG23(G$+W}0L*eBhW^F?XQ@(K>3nEm@{Y^gg` zyI&tgk(N=Bz8W$t=1&WM=K4clPI5@8;)h$2nOO$7sR7k5B3p(fGP!bU7I!HCnN^c0 zFWLX9UA!&D8z0Fy^(G^EDnj8wiAD6^il}LorDuD|4eXDcL?5Nnau50caTF-9YMR=`gfoKL_bq<8@umf7DxH8 zYg|*Dgd+anSe1}p*eR$p)bVZ59s|a;<+fP9@0^i-kUJd~0P*Tk?1X-$7w=qJ{wN|e zV&PhdO{Vz9r7!wgFAZ1LUbI#1)KOnmG$u>l9eXOf0i3MUh$=mPK=0(jtE5psWNn`DRKecMB$9U!o$Q z8xQ_>9`@X4=Mm)&jf<5i82Po)1gAiEhq0*ZxznH<7A);qlwj^!(KH4ae;;^XZR|Jt{mVOKzroymWQy z9oKUDVu;t+4<-%9+obJGp!fsiqO2R7itC4hn$l;@9{_6}dtT?uTP2&Hu41hNXzvs> zpLd2-eHh{iv99F%!<1zs5%n&{Oo}45z}PwAuiP82YCG0na?yQpf%%{5?$)_gH<&fY zKVQYX+`C!ahC)f2BE>>D#a1n5b*GJ&%s?1RdRi{rcy+8pp{ zWUlC=Pnc`Y`@x?lRjv(QH(J-+b#AEJ^bI|ju{yGiK3Qy)9+BK-lY?Gcn1J5O3E#X@ zY}ZJO2t9x{lzW%Cvd~bA^s0{_5Nm@*Fys_i)ssHd`F)E3!kA+pRB;@B7Ri?X!RfnC zH2yPn)F)B z=h9Rcu>(NqeyAlAK(XBUd8Ra&?)-c zr`rW8pb)4RIGjz7(t~>u5#EFl0oovaUI67K`sV{PxsW7TpFbV))OLa?(z!OJd}X>< zhBVWM7IclP*5gxTjLFe6HPIe;yy8NW$>qzi_Tf@r9-muKRg~aFh_jbz#V!q;Dwg;_ z6f=(Vu8A(~0JA9~RIhHZ&uF$<>)G#d$o*HC8u`|%Vu=URgp(f3_Mwbf)`so+2L`RF zAMN(wrU!{;vsFa%*^g8n>l=~P-74XS4^ECUn&lykKn47kfk=>QM%SVQ+NdZqF)iH9 z5wQ(kul(hScp(mxI0MLRqV`TKx|T-e!q@0-hP?yZ*%tlfTN>IP3D14sGF;AleD4={ zWZ{q9!Mt$XM?7+_M5pzRkKTBF%kHxZE|f_1#c^v=!uRUGi9G{0MhAjh#Ng;j>zrR! z4wxC~@Nh5XT#w~TP5jjCW~jQ`NL=Wb^Z3RGbktL$kr55sg36QIca_Ics?kl|pe-)2 zH)brPtP=+k9)Ei0 zZJKyRRo}i%F_fSi3`7u!a6?IAA#lax0m=^gSz?XXmp>FCAR0j#z90u(44{Rt&2kFJ z+JR4FT>?E$?-4HbF$Wu@VwYhB#2@FV`Oe$$i(X7dKgkVXG^=eW=93u%L1=dm_E!UU zG8Hxo3b-*-0iqpKh%oJ#aA(3Z#d<$w<=|;h=+=?(-XWdPllfB<zU>s zbW|)|G$AG7+y++vFTwlU@8ZED#|B5M53Drm-`9vg8j*@Inmej9CM95Pol6&eZrv!P zNW%^5j2G;(!rc^1Xl-4vkow1^4`A1!>O}1MsEqt$dqSgnbdw>kV~5&GgK~wG*5Kh$ zXs8OK#nBw`uY?rB@rEEw-$6~0xCMe}2jZ17rmMIN{#LoA&r}g}eojp)zHL6*ba^*m z{;gjnlne?zI?^`WZ#E&}l>J1suSZGExJiduI~JE#yM4vt9G$*^fmU0f3eE2Glw_l$ z$F!Sk8X^$gBkSf7c zn_RaBeQpgeG(5N6^`e89Y2Eyn$N;qt$A_)eL^Ft2A6znc!Nuwut2?Cz9*+7+E-4In zSvqr{9m!lV4qk~abCE8rxH;sr&(0epdMEe2>4K*)?U$;tQ6Ef|jyVC-+G3ZlMLy{9Sl_m+#WZ5jrl4J3x5qaF{02eiT&d@d1;Rqegxe1x z8P=)=Z#f*--gjk7oF2V0C7f);7i~;e^=#l*#)1j(o2;+ z|2&0L=8dmOvkY54`j`s>0jbAz*8+an3 z4S~X95U5^^#-VMrGVvbQIbVZ7(Y4vFNNir!!%|^G`{ZZdKqO$-2b~4$$Io=5H3Prp zV?lcAZ95M>7b2bD7f{5;mnro%5vz1-ZXGiCV6Z#;Ewp$ewwgGrw!~6nYl&s4HmxQX zsutLkxY(PS=-j7Bjz%%Ct&B>zX&a!r>dFN8L3U$u{FzHOD*%w-j2z*xqbcBcGEIn?uJ zs4J5!2A34rdkvCa`B2pGtiM%X=}dmAT(C!vfrp#4LS0RO1vm|@lsp+l3rilw+mhYJ z&>|}Od78-04;Rcb&GY1~OZ{%cD)Zk<6R@P(Cv*HJ1y+RtaU(goL?cPBzimO#riG$< z3l@~tysn|~NWvWG1SY_p5>czZWW$d`80L|g^Njy+%0l8jrG@@m!;N2$yY7Fk?S#T0 zLHfJwvno$FHR4ZRd{f$rc{5_sd1tG>tbgT+Bdl7<)A~^{BW))gXXv`Z-_^P!6I3%b z5Rv`PA~MZPF0Yg=SvNWUy#Sw({BA#=EexD5U`l?#=)P?6 zp0T@fh?#}DK-y10!MU>{O~k(EJHua`Gwbkuzk7mUJE-$zRi)VH@N;zM&?|{OJHv#K zv>k}str3H2v^M1~UK-0lLZ+`ilVG$e=&ha~&E#VM@nS{Z55o$;o}mU-&FZo#{S646 znLUn`*RnO~CC@Tsg2L3Bai#WgFN@gRo%N@|AT9*vi_%U8@!YFLs5l!MYviHWC?XNc-`RCzP!dvsTrps%hP23UV^%uBTuOUyDTomgqqsedk z(HObG)8T_)ot1{ZFD-3bf&bsJz$iW%()p>?@&sdNQPpJTJHE;UD;4DietEVOKf5vJ zId+kQ%6YGXNsiy+0Fl|yDJ4m43o85_q_#$aEjPYIV)l~$e39->#m(DD*O&S>!9t41 zqv%{|1U8J&DhAFtT#bHoQ~0Rj%fRb1j{cQS^GYhbgKG`9xy6mJ)x${1!-vRmX(}5d z%=vQ}H5=fusB5k_YUf@q!?M>=MEqZz0?LmPqRO#m(NGZ2>Z6YaM89?PDWrnALt@Fr zTvq%2uCO=S<7PeD^=ec`D8lLQi-p>vagbCTqgPD@!zbXvG{x+kY6{Px%b`9 z5ZUJ-XH(gep@#U^Vd7^9R=72iWo>k~kuXgCs#LZBM1J@3&S?tR$9T!c`1u)F&AiRw4h?nF=z#Z$xLOoz3Ev+{ULY!3jSL9>;E#E+u8S=Ycr7}CW0Ue5_oB%aI}+4 zeW?QK3D(PtMJ}&I;YW-GC@cqwZ4k`IG&upJNO#_){gyIwhqX+?z~ zUy4yfMMRbB#XaR-i`09U+_@e`((B90_9I3;yPt`}*Z>eqRAdQ$PXlL?A0#IXgwPSx z)&ZDngfdzyC9-u;zo?cS?6u)7?fJ3kWE!fUsqlSll?3xEh;Dpi`=8CXJ^FeY<#w^x zYhCdW-cK#Rql!xm<|)47t(qBW>$?8+v|+?CzAPn&N1QR-OO8qy>_eaTEmC1#Ka%r* z@1N|rIerB?g!XSYQ@5SJl>Mjt8C=cF#`aWFxO} zm`c_yz!b}5T-BbaPGQnFgp3k2-?o+BP5e2(8${n~b z@{E^N=j5p`b6)i6e}Bg?B&Q1=_0~6L*iTU;M@XxM?pDT3TH`IL+|Q%uQ{;2~!*A>? zTigrR34uK$LI zT9BLJYqojck8Glkoa$hgpy~Z#)t{57t~CX$xxX?=Er@P&irx+r2Qz6px3qt=r#oez z*RbGP@0`at0L5nYWt_Lo>kJSiMNSP%Ank=!IJ{3IA7#EPeVKuCwrajfU%&=1H*yBL zPuLatvbJvqpFh&DUC}kD$MTP-$cwFxCp_UmSI)p}M?RV5_oD4!m4l_8Jb?kRRWA9d zyKHq~Dv0YM7v>a0J%B3t-M$Cq3187pH;D@XS)(H~@74M?sC@uEBC3j?f3|5=Qe1gs z+9-!bG!H9xutLMFhp1ZbOB$$Nvg6%0G5H$f)Kz{*K(I*N|7EUd)a-7XZsgS4c&VtA zYvNYamqL{ln(rG$c(p%k06*t{F;A??!@gG3A(@@Oty0uj)7aGVBV3wYpYI<;)O}Km zbuzZmFAUjvvZRlWACZO^OQ6ydeG_HrFtxe~*(p!wQWcTw?0S;6UcY&L8|^>wROUvT zk|YGm>6R_rOI2@Z`RV8Ipo+Rp$;@!dgTWO~;i|A|8u$ght9TYAgp>J*WEu{q-DYkINJsehvwC9>YBHkIfjS=hyFc2kb;iHLOGaorlYWbtlk=Ws4J>aG&pY2FbRrjm< zSC}M`Q!1usIlz}A7fi4+jZWhx7JP6^#pYSDNM;0&y8Ct~{FdhRuwF>5R3G;vu*pxo z`H29V`FM zr_07JnaIW$^W{t3c^tRww_By_vg=2bE=^rEs~1_-cSS%J@%sY);Wb=B#OcIiYfhB{ zKL2|E(nd>qx+xo@CuSIO9B}epRFlH=t<=S&!GW zst>g{PD zT0D;38GH^ff zE(fqx$H(oe6&`revnT4>r`t8wQCC%d(&1DJV*Ft7VtTZHT<>$f_35uzEyQdbRAqCi z6m4_Jt+uQsaFIsZ(wDb`;6`}CpnaPoSe;6UYU=n@B+yj@q$dj>8I%6`AzqBA1EyHg4fTYFPmK3h?blk z9^a<2m}-O2mv(XgI}zW1C(;L-Wt1 zZ=zwnh_eFMOEuE)-^dSN`+L-iQ-Q9)!~6-5hO&8#C?2$hM~r?pRN7T>TX=<+`{a;1 z2@^7`YmialwI+}RYxBMX#k&+? zUf&&llnY?YI%A)*L}z0KlfHXv|KQ;>;p=sA9OI0AcEi_jC1C_4UGVo}TxKB@PE6mO zwUH;zg1}yG+M`w9VH8R#kXH(fByEB8Xpa-!WJt@t;Wox=JpPQL0(v2$@EA|egSN%< zUXyLR|LNvdIV7$1?4SPe;V%A2I;tY{tQXm4`|PF3Y%JaKo+a!?#7BuWyqc@Xot8P` z@i@nWvy?u4#5so6S23?Y3f=h|Qy3n8yEF>rW$nJ>8#J5*;ao4*ZsOy=X)34X6~X=g zQta<#cQtP~8ZSgI?%1hbJuLe4?q5ex8(9HZTkn36` z(7ROG`7K)&^#vldiv1p>PD)5GvF#}qh3M9UBmCWHr|#@#KubHb4~uCsFARk*@oduu z>5<(g@21F3Atb8v&&>q8(Cppzq;%6lwdHZ_HjWW3|D-4MXHcY2 z=IIKLzxvmNPpjJA+M{yGqEQ!sCrs2xJP);DjU#fJ4pxYvH5g)8z<%y!!Bp~!MIvg) z`wyN+x1cJ^HczyyC-P$aY^|tmjL;em-%n#NpvO3HvXL;ks_$pe8^IZIKtXT`{SHYo zzpIK^SxrpuW&Y}%;qf?Uba&!)q7a+=fvxcp>=qFR%4oozr)rjAeCmm$ggET9*?q)* zQTcb7fG2MMF_7sU+rxE-S+|hO`mU*HjDrrzPlXR#J;QP%eg^W9EpbGoqF#M@<*%zu z=g zDi&sBQmy+)|IwudmB2T&KyMkYbMeyQv4EGIglfSbIseaKBG52(Yw`VN@e@?@t*F-Z zp|h4Gfm%blkPPZXHe~!abeaI~#^g&~k&3EEv@-q`IG0rY^UI-iPmsf~x->yIS{Qh# znnx%uK1IT%bKj*qb%?}y&1e56uZPZ3`*v8|b*k#;iOkMhIwSBzRs4)3^&8OEaW({A z&p^$r+i1LWcH{pjDK3Z->xSO1mO`YDX=dNY6 zRwF6eu@n|iU%n%h%N{fYw`lUqrG;lQ?f2=M>_%5jTc}Jp8toY zw_u3+eZGeMiXb7ebjJd+fV6ZeEFm4zCEX$2NH@5o2n$k5hxF2o(jncoba&n#e*for z30KWEbLN~gFkbo#xyZ6&=#KthX=|>UfooHr%rtIusQqD+1r}UY2(_<=H&50u5$Gri zEW3O|ObYJg2v9DzsDaNEXBm1lb_QM*OrYYt`Yx6E=3SNgB8!I%W@Z+n7I@FCZmoc|K=3qktIu#?RVe3~ zj;;F~4!ct!5-R@d##YyMCV;B@x4?k@94~faCNfqcw+rGg7judv6yldP{%B9K%C&O8@y5WWMne=YNm>!w9GMYJ}`PhFkm5xYJa{v7WCWikD$9+ zDq&m*jK1<(QY z`rYXmjBkgW?qKVHZmOnFk#`C)L-yG`wyFsZdBAZ!X^l{x|DE@^l2Xck8Hb-8Pge5V z!h3plpbKBf+~HC_{+y!lbl;d-GFc_QJ+65apuMA~t4#@>PpBjl=l47uW~5u5^A}H& z!PU2tTG(7y_n=Hpg=8E$@0BC#HY=H<|7C0}PZG^)hXtePtU!KJK^VY;KA zq^_i`*k{uAAA$MQ5o zbS-vPRNv#>RQ%Dy%hvApV2+hYR4f=7Wrd3wymJPXyU88xIwch`8N=_qp~q?roi2_4*Z zA152?oKw9B98_K*0vrqqi$|z{^W2%|fd`{&rtt`s$=BsruyR`vweS+Xi^8YJV+7;k z#uFCG(CNxzWB2|gDn9NN4~RhGQg*lu)3h-KJic^ySPJ!p-P|No9Nn?DO1KZcFq?Fz z<7zBPow)X!DRjl0OK~rY(D(RF@H?l(U=>|&aVP3OvR6buyBqEo0B!t}YS&4LfB;km zcE>cxv6q9}D*|1+Z>ns$W|(l{G%nPGB*eS-x3Ni(=F|y}k==~wsr!kU`$1*1gNOma zEX7LI&7|_b8K9aqq3k08eq~Rwsr;&V5!62UzawRMOdNLJ_#B6Z;X^quc55iP>x|;{ zs?`936b^*+{8BO4r3_9uD?t(&9xhD_79o#3j)c4^Y`ekMtF)g}Vvsv)asHe8rgsuQp!XrR&% zZ~ZLzM4y&G+Rm1DdwJvBf~;cXk{Wz0?z4J6&+bnI^xph{^nV6~7;BC61$ zSJ!st$t-Tto85td+VrZz`9o{`wv#`2Yw%`>z-LhyePss{-1Kg^u!dk2n78h?@So#4 zZ~Bs-CAp_4eRwscfcEnJokJ=5!feA30L5H+KS43p`uPs>)5Jo^axztQU;SRiH1(dn z7T_xw6{7c$OZjba17Db&UYmF9>b?;oKgI%xn3UY93D*6SCNd0)X;oho>30Yx2si1u z>WDu_rsb?hMAk{w_1h$EqqBjXYhs$GmWnVAqO9`ZQ`?#Er3fL?akO|ZvO{M6!A zC?;G+&zt$A81YqSGBD;ZMqknQFCj7bY}C~+A$$YAR`5U+xdmc`l3<^QMOJ6S<6V+= zU8@X`0(3u>Ixj9n5Nxg;A3drM(TTiGj;y*OUNnTn!VqBYUn9&Om??m&$`?~VdRH2E z?EQZm%GTHUncd~S&LujF z`7Z&zZtGrhgDi)^EIn=y%;vG6tY95fDKQEU`QoouI=RMy_iHts1`3=k&!4NZB*`)u zl9PrAHHeKa(Wu|wRoI^k0a@tdOTb)+e0Elt3Se;vJ3U)dJAoNYva8X=XA~(BepG(v zZ_c!;7JVkXGRCJh-Su<2(v&LomWh>6P!Ix}jJ?U0cctiR5A;QAY5jSN${xKo&p*C-n`sy&DXeLGDbPsk5QUzx z?ZGOf?53})HnrnSR&ivxZiyTds`WRIN|)c;$q80Dr1|2EX#h#s&G&zhCAouc<%2Ko z<6iST-Y-2)$Wxa`j4*XeeQIBS{ifcId`xO@8+_3er8Ll3P0^1ic5Ca}#!haGYP7To zlz&i@6e(fGBm0CJL!O7^ipHm+-nqCm2lQ8@PwNhmuyh^TvHhDd#Ve!*!vfp<6_NzI zbwn%xLP@H@6v6!Re|xn9Qnl``Wl2I{*WUAlJWkKJi+2^_BqmKwUzhh|A;Y7(`n_J> zdRw~Rm^gE4SbMYlyfJVbj7qUBGe8K;W{(gDY`zY-lvR@%Dk6EZR&6O`${_|5S|!`0 zkaPO`%d?Mt<_!@d#?zeZuc*T0BB$$wLi}YJTD%YRn<^fkx$iFqYvE8qJ={gUW6Cqi zkz}Xpnng})8H%FZI;5@N>1R~^s;~Lsw1p}p)qddX_2)G{fN?QAVO$@6OK)k)eaFuq zC@q**ml^~M0_dKxK6$x|gC5u*^H;YEPIlFD3`JIjqcBIBJ5$WGPgiC{!aApC%y~%a zFI?ZIyX8ZI2rHU^u80w`Y_+YJpZio3SD7&u``3q-lWgtLbDBC59?*Njdi5P=!BV-L zGdWhZU$QzSNV`u2JB8McLmKJ_gRuX$@B*hI2IP4+*ni_2&vrA_I(7OR$3?Qu&DGEIc?rH6Ed<`pDkbqNv>|q-w)j1^Eq{xXRK2A9@|Gz7 z|H!T7fEkH#Tljo%D{l$n`^N5{v(S&p=K_dzR%6bv8)$BF1hjWq7Kpx4kKPtjz1 zP}}+XB!0!GJ)&%yX@s0!`>cdk+MI-z*Q|u{zkLHT>?-X+L)PJ}?j2_)SOav+eD68a zSR5{vl$k*BVrR{YLX!ULuuwXlx6n`r8eu;Bq+amH9T}XKhz5dPr=tT_r{%ab0jIf- zlr4TNi}gN2d+D*;R;)pxO#EMc0RnQO~dQOe!aD zGS?7pwb~ofEQl&yrD_Ka8+&V;eIExS4p@Ze#E*7TL0`h2xZ^K%zxbP)eP0-be5lUk zwqY2PiHB}}QI7?dy{&OdHODs`GIq`_ znj2NDnazvv`+tHeeMH&6q6gF^B=A^Ia7ZG7{L;%)7LpSr3EJBaHtq~FJ>49{$=B;` zeYgxbK4!`?L0;^C6V1kvFV74eh{DMusmp%TN=^_p<{dfTQZg7PV-hrj3n2ewPr;W^ zDI4n;>{d4QbHqLY9rXZDh~7MEDdB+>c|ETXDnFs^+f!SjP&4QB=pqMCWyEMdBI6~e z&h70`e{n$1eR+B;Qw`loTU_iry@0mVg)c|uRcfM85GQd-4Gp)&eYRum7d%|BCAR)0 zz*go$keyhl0d|#{ZLVy3W!=rD?bS_Kk~Lbu>_`0b^MkJ5pfs9|o|c>_^T!uMTl%5Y zbg2yZ?fC8Sb@aTJDq$;4u2k?oLQ9vHo zKXzx1ujm3sT}mhG-gncgvrS>!pIi9n+INHwLf*-5HBJ>mm|cl`Wn!OnYnydbHoaE2g{h8(#Z-d{d%Bm~kKMj4>4e5s>3+T%+HTHM z+WEbT$5@_DhzB{O*}k|m0|GGlQ;d4A79%T{V`x9hB2kC6x`+0LP^jBMW;tdIqx_T- z=NUvxF+jd+0L<&)+yNiiEB(OiuGx^4z$LW>p-V zye?_5;pYAefC?%3DRG@cf_2Nteur+NZZe$gm-MWqc!JJ`N;*{;OECjcn(LZ1^sNZ0 zeBOOXV*lVATejoUdCa^x^(l#HB>&P4s%F{Z7dx+gSJ=(>?Q_q^QP#@C9tV+81Ef`n z>7R_?uRmiTc@YBy%}uJj&I~(doG^2>BeYHoprg%6>x5|#VUbj3J5p-UR$^uFW5j-1 zNP|K7+GU2Mcy6E3C`qufl51h8AJ9ct6UipAuSX4_47K8M1&7m`tV85C@!`GR5d%^t z-HV1+=O@rA=z21KDT#cwAp;@iwX^WdFwOf+Q;jXVrjARtm{gZllnS?QU&`4^>F$Ev zIUfvzGOXGW3U2yiSsx3}vgtaz%40 zh6_;%MV}$%WZ}QRYZCVP<=5;(%E;sYrDthnKOS5LboHhivO)Kf;o2NG7=m7nNfijOUt&s)y~MEAw8@4x3}c3LJ}cF~iAn$Egafar z(mV1(<~kjztjCg<+77HWH{mgL@#M3o#!^#n;Wa3K-K7#+EI2(U$bK0yg7S5nB%+}0 z-HWT2Z6148p4g4=UJ_@NBYhu=LgQCQF8*n5H2uhNjnE%I@&+{Rl-^MXg%3_LrLunH z-153dXEo!Mw<&3m5}VE-d8U=Zex}^&G6Et+g94ia2^~@4mKu6>>S6qLWZyYuWEYlg zPp&rml!G62dDFF+W{GZj^P;U@W2N`LwB0O%BJ_NruW%dcelFluMyu*?Y|i?j9@(JJO9}qUu-%Q5Y#L2>~ z9o+3rkG~n14|$z-)IW<%K&jznE?3_pd<~dLeQu}>JW7d}cj@Ewj2e-YiG3dfU5~_% zeSLeAGu`{r9(>HMtgJwo?S_%KeyjxYi><@`9ZD)VtaX&+(q#5-na8dI6P^`3{@-wk zQP9+dSnOxiN+HW(7H`|Q*(m?Cu(}sZJeGs`w#?fN+Rk45n)-Yg+fuRL#QngF0ej>k zF5}RFES21ag})RCl~DoEH7^y*sXoY4$?fIu4R;6lJV(5E^DV8R&n?QE02^M-^0|;4 z1cr8vJAwP&Vt7Iib6+u>R?RUH87t}T#p5hbp=zYNL;0nmOJVe+BLZ(pXw z`@0da+As#DGy(>AEYtuHdPWsM;nxgwn2>)M`Pp7bN)c(B0szVl?r z#}|C>p^81xBeT76QjO4pQt-hnj2U{hoDWCx$qzPq{~aV`3HrvL;4V4*-9OB4;u_U6d5K>M7@P98L5*Kd(FL_YiBd z%zEUiUMpgI%QPIHN;?J15xEumffgdayNKP^mRW@UOGrLBMNs!cg@Lx*RT}mSX@i%^9 z6#{PX58_DNeXOt9b1HOb`I#~_6K_3OwUhKie8_NwDrv6#c+>LQestRx+K|w&UE+MN z!2hg{j(a>g!Usb6K;Fd>rCt+|q(9~vee+t>muE*%9p@Kv_(4bahyKc9Q;dkDIE~Bn ztc>vH-PG;npg{}m2+O+fHK7iU#Wq;YT!MtwKu8=D$Jc4t=o=o8n)qg{Es*`Z74F9i zWLanjJ9Z>w${Luv2vrq+jO)M9b=e662sej)<|^ThWEFC4#_#rc*QmAFWrxt)eAhL0 z%%zwKlK?0u!}i9AlSq;y`sl0O*ix4nZ(}7MB37)D4?pG9`7)g}f0RwiB***m7UZp2 zG9&Tt(^b(^5iPhXwRwSKk%VA#Cr+!hL^x#qWmA#Sh0j1-^iD2Z_WCkWo-Gbb2uUBX zxPsJ6`h2^bKvxwYO!I?{71a1qYUgc?fYxUrsNrCGPW0}F76=jfo$m)aD_FaP7FEs(_-H@6YL9`XR1FebeT4KVGxD=s^|8d>C7LtK-PsD7PR zjb8h2l{kE@b-qH9Y$j~-m~SI5@-{W;t1AA3Ri+&^uKR}g_|UO6D&!nHBzsx&LRqja?MesS=HO>ixobt)}_;%#m$Pt?694uA`c%+P{*PKFK zt7&jMU{43|C_({%%w8J|24N$ z=w=EF1y6S>ue)Ldv6F|aNQSjbG90j)To5teMt<`oTiK4ZgIN@2)uAuQ~?4#fzo;jha{KRS4@{4FnxxIHTtBpyR zcQf$ zf^;#Z?}Vc~yA>QdP5VycOt;D|Lh}I$53e}o__DOzj=oNb_?5~Rhmo`;@>l%X2YkQR zaioR&1~V9C+Gd7(G!a5xc1^O)x(@1_ADrR46U7XG^3g6TP3=-OTkrI~#CZuZhA)I_ zZBIO2h3li0#^_2Ry_XL@TagSm?m7Y?G+0A3RVPAXoI#FmB+gW)8==?>VAseARLv6P zKX>bDxY0OsP*%jr=AY@C0b|OWnOog|57z(;jl^lnlUS;}1wiy-h)Gln;0nOXAjDw} z)%C|7Q|CE9b#}CiG0xD6Yc5%||bRweC&y=g(<>q6Fv8>U&Z?Ge{UNMO<4SAp`OsxLL(aZ!D-J z%AL>#sEj-!2R0D;Y6qxpwIhr|sS(Zk&{o9||MfxKx8TQs3f;C8S+iERUPDR&&ljk? zYcP$)kTaml8nT6DsD~z*frRFe-to|`?o`@@nIQQvTC-_c&-jxsy`&shu@~>Q3P!d4 z-AEp4y)xzQ*X*&5FR7GCpAaG-0|U0BB9xl@4nO4X>^Xz{M?*-?8%n-cGvJ(o%1p3z zt;4x=c07MkD0%Ziv~T33i`0$|_{i6hhVaA3%#P}&`3sV?myrYV1VOw8WrHUAA--?2 zcm21&|GgL^u3p2Oo_{@==AEUIP|&|8ZTJ>l@+Iy+Y|S8W!q;!=vFmq2c@Yyla(cW{ znM`BscGaO`ASvv`7xFt&5?n7lxi(O=#HdeRTAkCex4@N-^?W23;fX zf6zPoHGR;{+SOdjgIa*sD3!oT7nOt5!Qa1gmH_3S{1wW7|JxJUs95OH)(U#P6K76< zH+2rf*ehzW=MVVCFTJm6rC-3yy6p`iN9V-Ww?8x;sa!0p z3V0DU(J2%2PRF-GvuMs`nJ!cYNW2jQ-VJRP}d4ie?CpIi4qmpOs%fe zX6G5u3-RX)dqo{&EE!HG@*2DFx+bE(OhR7?TkV@SNug!*#ObcE)DFSA^K;C4g;X-D$vbUF*H*WZ7KA`g4$%lHh99U%W)a zsQUW1A#r3e(Jj}CuWs6Lo&JQ9teB9!!X|%98qBCh0}hTgpHk=wPv1O4hugv9<1^HZ zLM}DMgOJF@bA8=y@<6q)r~cGlK$Qm2`lg z%`?j$b?PDKx6vU3-NFJ~Ce#5jy_B~tqhPmEd)04|9?LvTzaz$AF0($B7u*sgX}{JZ z2e3##@Y9wS=*+cleysVBHx$Ob4=LCuOj927Iz8DegxG%%8{6ClpJ{#EiWzBSZzg_e zC=vs>vs1Zjip9xLr-u(DpfPM{(u!5Rssx`FRO5Gb{oI;;IP~4syK0fWmw7z)%LrJ! zu7B48c-`0I^-FEiIC@diV9?BRr|zaqkQEMV6+XHz*iphD3-B)ctE=DXKO65w|Nr|$ zTJf@J>WHp>t3#esAxDm*T`R|+T-9`We}z%vGO!h0SS5s-k}{&;>!&0%v>)mR={v}H zYiGd^d4`8;@voMig;ZK8fn94o*p%W%+}88dziFG~FC?q|97_B+KrP9!$K=YFu39Lg z-Tm3xm|Bw{!^$XjHn&;k)7~}GG=$AHa;!5q0R{u8I{4cbTJ&_~N>+H4@_B}1A$z}x z*FRS0sDv0!POxc9a5$#LMSbR}@Ov!w+}K~rE^;H+EL#X^y*sBjXyL0YrobX*?+C^f z4>JRKo1{Ru$nqnUWygt7mIz@1r|C-_b*;yWzRFh*b*<4f56j`&e8t!_%0eH!C`op0hbG4pA5LGv^%|mxE{hfIkytBN!hqBL0sN(q!{s)rYrj! zs5CT~@K`g*87(v<49q6*!tKAnEq8SITTgGB|0o;VVyQ$mnPt)4F&7;0a#ay1TG=k} zyC~H7Pvh!XUkODfnO!N6O^C&dchyszo{wk0j_QxVF)f~WA}y?!_=~Zc4`5AwilVZ$fMArCo;YubvHVt zyeD1!F~9ap^CPUc(&w1Nn;eUg=ou4n_vXMZB;;&;f)AH*ytiiUw#!o?*f zl!qjbyhy;)9OSBhx@BcKq!e_S!RqoLnBi-+@&v19>Eb1xsGSlEPW(a_pO5TXthSj! z-{aD(GJH`lTF!Wyt{1aLCfpc_*>xhP41EY#H67dNU5HH{T{u1sH8HK%ut2wnA_m{c z*jNPmhud;c#VgY^{+Bh}0?NXq!J-*#AfsV#LJ83Gr+KK|1l`%wGb&~4sr~9BYj||u z?{wJkdpkghFs6O-exnSI=(E!2wqlSr5FvdaF^G8=>FO7T9gZv*J)+!YRz>jN`KCGJ zLaV>-(GW;u~kg-gP4q=657)4j-c;^xG($>^t%;=A4GO2p^znyR$l90UIn3e==^O@c% zBQWE|D=EWqXxe}On*20$moMPCg--lNmmP$7h38xp%93YJBHY@04*1R=g3oa+m%g-O z(1^Lyi}~IW-|b_-ZW1q7B$E-)4e%LoD`*@unIy6<^Fx(@Oa}#+{1CiC3Jnc2x#Dk) z1a*u!-czvOOtzX%1l&E#245De(BlbAqKJX_I3qg<7|4~0T@yhtZv?uSUWg%Ue4US1 zc27S6My?F~tVcC*71#IL(4mXcHAXq4uCtt9Q0zRrGR~xXwfv^Ymt{dqJ!8}l{y2+DnPpz&($HV`ic57V4^N?sf(4YoE-!K1AS6>mOi8%AlC;d`PGLeZBUChev2A$qmgB9vLEy|OvFYeoa>0H*7yU}Gc;E~!w%{1)0JbL%D zbywemCYwjj1AW1PuoLs@jx->qW!?9U|DJz|_SLsOzY00H)0~zAd1q}kp)mbr-e@rF zB$$ToAYA>B!$zaJpIs3BH08hA;EIAZTxIY!m5+z_db=# z=n?tvKeKb}(QKFoy2?n5dTm>8P;BNbm)m8KYoRFN#}^z+y+#ig7=T(izQVmzGcUE; zipbAG=|k&bRqj~AO)pNi`TuYQy}P6M^`}2I1fQ+lzK>~sA3gK~94>>N!Z=|EbW0rnv-+x@LuOQ~ zquv+g%QxKsF$hDx@;FXM0NBWj`$Kx4KD@l>ikVcA_THC~U3xk0jx-A-qJ|;Eer;8E zC4!FoXRnWhJd|u%EAkdq?WDG;z|Mw9Mt&1A;VqFj-|aCLX5aP9Lc?I*LD21aemFPs z&U?P#z3kNkF5Y=34gECT8D}dxl#z%QTtf=N&vyBs_b$SmGq|D|ABDZ8a^?@`oq8ur8eGIsZkOq3GwlI8kB1#g*cf-Ad_|-L}D%UANy=r~0KSGFZ!W zfr_WPP{Ans(!A4v=jmBeKRru`Q*Np%$vvr_Fhk$XasgGlLtHM4Ba1%PQMn<(`y`y*7*N8;{i<^j!bu?uEI&nPtGOPdB+Iqz2 zyYp2DIVqmyLNE4ff@D7G(G~p;7=2MVupqT1V+!m}EU-I(!~)ozE*Ys$bA#i@mu%qE z1t8S|yGH3VJY1JaUAZE`zD<5~VzUn~CYSh7a$Bzzy9_+(5@h0_>szYmG(6-FrlQrJ z?1B?o`58>3wPo}kZ4!J#u=xJ?&v>>U=INYkT{iqE(Fa;C-9;LfRbRwWuYbK^M6gmu zuR|^XcN=s{F7!_SE6JFfKgyi?V*Nj&U#=uXbG(1&^a_7G8rFy7kXGVQ4%K(ZPB@`p zD5Czwe35ZNY?jI!Ij{?3cK$Uo(+_W~(5M;gawodE1)m*%6ZN1=5pBRU$4@TTX+;Id znMO5Kc1jw;V=n#k{#kX(4&DBsI$@Cdyf94@T9svu@yvPR+k6LcciA#vhCzxUk_KCE zOL`|P5U}?Ko|yZBJF3`1lL|u%W!52Ge@S14#8LxZz>=7ea2hPWmaXeX&yrRCU8 zGzJo99wJP?jJ_tFTvv93H3#b%e0!vZhxYw^`Y)5+7A?Ty%ur1jbeg3dMpQhNU0~5f z+*x_Po3h^s)0&GsYdY~?VvJrr*eUAV(fesS+&Q%ZSjQeRnk;5|NHI}=n~VWK1xw3I z{|tMhEV!R!`E8#(;O59ysjrrj2QCPa0yUDulc1kQVlS>FPB&;EW!MO&tU34BP$*Ieu>liMf#_&fEMc40^ZHkX;2 z5f3|AH1)qx-^b@y%W=7ov!uCPE+Aysa{g_@us$hgW*DE8Bb`SS-6pU1R$};#?faCk zIUh_^m&WEk; zXx1$;RU$|JM5X^M`qHq1X+HS8&WDMAIkK3^tk`bpex&Axly&A-taf9O^^CXN zntg}Sg@WF#^W9T3>XX-MSm8I9^E|^#wuaB-{&iOlz6c9Gv4u*g`9m7uNRt&cFTT*A zeP9%!T<5an5I$1lwyp2mWX{evFQmb`8vXzUZ^*Nc{(M`A533sX&i+cZy-(O$5W^vMf)RG_ki_I4?y6(irO?>vNY1qABwntC{(Qf z)kuA*Y~AJ8v1;2m@6aIuTjHxkt8>#d?H*M3*>Bp^#q)R*GmVV|41B}>>qp@chEnqv z6K)#t=$JdmuX<2y>Vl^}HYPhfx=yLx`SqIk{`SjuAno`F=m5v{ee1Wme1DtAVZ!@o z*{|C#xirBR(!*~)<<>U@$~jj6OlA2&LRf?5ua|LS=q+5ra@NF=1h?)M^&|&~3n3BD zIeSvC_V^XyJ1`*iCG63^QzyES#k}uD8lQQQm=s|82|SlH0VS$^iAVxN&6A2JcqNdV zZvaZmhK1d0b(Qf#PVQlnC>tRaeST0k_QLeZ0Ep86lz$fIVtY{dDE{%`7jf79d3iv0 zad~rg!tmqs>_qB9t(8rj_hsT&KN(`0je@$U<-12PXZU#T=sQTMM_R$8}d0m@L zZHG-q4ES6ozTWz|GdwTcYb9mZu}jorKJ>KZo+<{hEOSKW4hzQO+RVu^S-%X3s1(1$ z5P@#xLboK@$z$4s!`jD%U#wK7MaZ(evoiS)JpT9VxBej~J8-ApXgV+0(ric&XhStD zmQjXFM2Yd;|PN zdW@@^=gEMD*z}vIIbbT2=8Km4%fpbrwT`0JoLKJ@FsSs6wllI-FE8j`f(ZW-{|Ilt?gN#xK> z#A~}fynVD@x0Mw`$r?A-NTNa)7b3Zg-CkyA1NTjFwegelG*A@Vg;0ai^sjqh##aXw z_$}Gw$k^#3LoA2YFL>tX6?2 zQ$t5W^t;TGz%@UJb>8^1+7f%!MGugrdE^v$0|=9hw>d>r!>O(*|KIf2rd87=1XLtHv^axIx$(eY+_*o4 zV<5_Ox>0ZTRUY}T-;GLdzwv;F%l4q|-Ja{35%a9GU+Hr!NA;Nbt*y5@Qbfa@0BFBj z_8^jxwbFaRVm+B}IZpVnJ=cYpRvSRx#Sk+1&+>JTk78-N|S>gy+e!d9amXRiU=kUn$n2cg{E`BD&Zr!~5;=!)oL= zmopm=yRVn-arI9QALH5|FC0nlOC8&H^&Tyxw(uKzeTVVA*Kq@Yl6g$>z7qudRw{u@ znEg`P5`9~OrGwx%?5jr9+sFx*Y3NT2FlJGsioPgF3crwKO9U~`0VD=~okJu}%QZ%S zyw-qMlCRxj68m%Su;tNM zqEwe4cN>Oq?S$hF4(JwGp&Hg~n$ z2NqZCX4_`e+2gR+*G%c(-WE%3Q6N{FHE>PZ-PF&{6HR@v;A6Fo?Ogwq(rm-|17RZL z$Cc!1(F2S&@x-I*7lObvBDtzOr6RS?YUJ!^^Np!+M$1D+`Z{v}b4)S}(#cSzp- zvP>T#%<_X-rf<6xy0I(!Do!*(qA3i+F-h-*xd4!K=a)cKiyB*#VTHET21e?Qk2tN9`0F9@mAJx_>x63X8PfQ*}M`;(oo( z&7zgbIo78`_9E%jBVfD#Q3s;ODM-t@l0S!>hUkYdZO|z&P=EgfVxP)Y!(>q7khJ*R z3|-xaIPOVn?7DueHjFw+v4+@YhGFuh%=n;lv|fu9^(uDK$Fp@ch04QpRl>t9hdUGU z`+fYTjG|4^;VL`&&-?beE5UB^JKI3M```bpcPiF*v9Paal)1tu-|;p7pK!GKz31uV->N4{Ml=Gsq2>Lfx(D z<#vQLX5FZ&R2Ib4=UOKFHinRfox81fC_BOytJyQB#~sn($EQXu;T}tmRGQ^FQ@ghh zv%c9AekznSKTtyeiH_f&Hj6wo>_s$u>P-!Itnessq;lXzs>Qa`%o#o>td~pG) zjTH^=XS6?fu}GqoO(3^WW@Gun!6Rhty9-~UF+-VzN43+2*C;!;rE3=1N+~|z2XIkg zE4Afv(C`xZ;o}3%(!H2Jt=c0j;*JS?h85Zl_Bfb3po29ITNz!2Gt$0gLCxmc77C|+ zjUO*pQ>z>+%MLZeyZwg`c8CV*yKT~B>EvR@$1N; zLfre6cus|Dx-fWvSdaHhS_lh9cIEbW6U&d(^x$}Tj`s@QTsiC9--XNa|DGpFG%U^5 zGxC<>>o8(N3dosYH!l=h)ep=&YAtcslCvI(|FMlb-4A*guXIRxZX|2fGz@Ix3H<>T zR>}CAYBC_?@VV|u)hv@9%=46h{PKS@V_h;IT#y>|md+@A3odCtXGjeH1@87HTm9n3 zy!k`X_}NW88{N-><8u|{VA(fS&=t^H4YbzQO%Ryo;Jr?Gjko}emUt7l1DU<1E=t=? z(RTeVK7Hw5lp{b%hCZs+AI|O`kCfJJ3!TyUAKsF_d47pF0>8i^3tG;W1POR@28I8z z^?nJa6#;=NtYk)tO0W0!vbdE zo#^}rMtV0B;DGg>B(9_ocX!fs!{o5y^aiscOf6ob`g?jM%_W=C*iFh?mdI(HcfY!w z?C*@pz^ zR{Xpt!REXd6Z_r4yPIs@s`8rF0ljn=O!XF7*0`Szf--MDo(m zUoU-dV0>Y6GPgd5tUpyebWpGM;^tZz(o5%dAgz@`nCExcC>PJ>rrGM!jJWNMj{`NX zC;;*q&QDelh0Y|*%l?e{cF2OpmGX!6AurF^p@k8n9T=k2I)X28W%iUB#$&?-baD^? zJb6mypN%gtJB!TdpVwv_PN^t-$UW||uQR>&yEGk89_mCDzrh$vl)YzKy1^N`^;nr( zg7w|cUHyq4?!6|#?p|J@Cf%UGJp8JCCBs1fmYraf88u=UBAo->*#=v=N30PSHYD3a zO13A^xHn=AzMGU=?M&v|SWBJD{wYp)|Bg!2Za(;4W>Mm^U*kbVt;M~?MD1|bi3UZ5 z!~J-({{_L{&riX71MGIumgTBYsE2LEE<9A`{J$UF?CD1jx|IPBD7Z?z_Py`qGRv!j z?shtjF00mi_E|;F_L}q^an(EF9a4lD=ZbRu6@EtVC&Aexj!7NJg&rgOUcs3ipC|fj zhF;h}4mn{GFSxu3wU}Q#n8e5*MS~YxyV*kYV$Tm}_`ruc;C^@MXkDH4=6;VUgM;~e za_uXkS#x2*)F=doSW)PFvSb?9{uWj!vkkd0*Kt++_0K@*#Srfv@ELDqsEeme%*cjS zM8Qi9_cyE=R6{bEC6L^2q6kf~XrTyAW%FfFpH#a|rKni6F^;0zYa(~upFqhlBH`fT(|9ekV)0gbh z&qz+gZ~R)fk-hiofK^3rDXxAR+SMEJZk${7n^sIhjs$_Z8hQ^ zm@C%ydqdd-U^CtO9}o-yCI+#V0+1pFj8VUh#{PtO!Ed|FNw+5^{6Nk2;fdH~UF4iN zs_}jOBK}w_5LIKocD%;Mf8Rb8z%Umufcq{QYbI?|WZ+@!(sn;G-r4+>V88f&o;fdM z(xM9b+JJqc77*U^*JrKd8EenL66>dkGfn zDK+5M9Biq7YpQBljbIQ!|g@k@)8(2|@6S3{9t4{F| z)i~??6QfFI8&^@~p%xFY;6FYmq}nJw-EL5AiNM9_`k@+lgrW3K*6uZ6b{f4= z%-_kxKqdw%G30ulH1GA3ov*uE0qW^3dy>Y{to)^84dMYtq{7>LF zD7D?YMSbzl_*}T|Y@OU)dLw3NCdT5SCULZXhTdiOoMMH_hhDS-VepEeZJ%9Z0;Y>ty+%<$SppQ&zy#YRFVIX-++gz=a zw^*b$Tzc>>5IqAQneW%E0(LjltW%OyM=DIjw-WNMF>pK96xgJP34y$G(VI(ulF{tx z;x;`BrMOL*O#PP9uJjHTy9By9E0uz$^A7_|v1=&^+^E&(t~{y7p`VQ^{;m|4s@HJ= zx7OilWejfDh2*e?+s<1JV~w|11&}i$e#LH}aRZE}%sngH0oP@95(xui5a5Gm+K^r= z(dkMoy%^~JpZBJCJG;@w)O4iWd@mN?bD>Abc0rb8MMOL>HraGS-{+!0x2z-ZBV|6g zQYX`;;%Cd4f24ceh!*K}F3V;k;r$_64zB8523@`8B~XE=dR59c0R%GrrF@@sEq-Nb zzg@zKnuxA+gzC&lD0xFU!Vhs_??@?*5<8f9w0l4NEZ~80($I%_^YiV*FU|hb*K2g3 znNUoyVWalLQ^jDIY+^<9RxGPXSzhm}6JxA>E8l0_LCt{f3&`=Ci1 z_kDXee>$?p;ugOQ4PmPCvn2zNBfQe>3!7gf1SdNHYXv`_pH3a@#uxXea0i-+-uy1a z5Sq=eAni3y2)q6`QLRvkm!`$90M*&|Op4yJ?TPH`Rh0C9&#N|$S?T@{O{DcvDuzNF zJATklVk$=~a*GCD^(>m0!|nDo^J7cMgiEfU>UX>Xza`;l{FZk+UBLUi0I+NUtd8_O%%9_%cQ zghMPs*kN92eZtM}(4H})LdqOutPR2=nh4B!_q`i+sU58n(G8$kdMd#a115G$=g$p& zP7U75etbCEyZ+W{)$j@v!RfeyUt-uwL=;P~@X*AR%t7bYn67W?zRu-gwc8G?%Kd3o zzX~|6oEMhkNd9I7hxFu>KZbvo_%*O!Eu8BL)Gl2IYunhkOHMK8IPKcycvsgl^a27n zrhXkx$Y7Vsqd&0`${bSChNxpFtToYkHvYWaQiz$*e|`A%`lUHJAfjYNxioZyv|0b( zi{A*00-HUFls*wX@F7}cTQT%#1HXpkvr=;r_Vva|20|&a`YKp2y3eiGOvC_g=~@MiN`@8^TisRq6Uuz{0AY z9^lh7r6Dqwszgp$x=a1_+Rgbg&6(@M9ld&2n`k{#^6T>;`L#Fra0S;9=Fv|ws!eK% zSw&gAN_l1XbErO3ypGB=o>x+zl053Awo<@2cHK!%`ts}S4+&t z9%aYDy_aX%<1}DTJF!Wb6+4+Gc~&4XH^b71&S-kZS@@l@l8>&mfE1#=KeZCoUg60R zQfd1=q%lh|A9D<}>vAxqzKjU%jUr2)Yb+>eek4OW#$2`|sgI^lZgDU4yyYVeh-`=d zMVbyQc3o3%kD10irQ~1V&UE@&q_8~SYKNB-aQKSVptP_c(7$VSOaZBcldUJ?iczM3 zCsMujiEL+qG4-BcN#c+On6#AthwJJLYU_bmxXRR%x}?#6_|jdr`1X`>189yDiMF6E zoi278)%cX?|+4YkdYJ^Khimomnp^8o!is2w30+`;_-=8DD zJ^>?c8-8GX(vSmfPk!DhJvLy{+dtRx$T4~`uD=Q!m1BXtYwHh`336r3H=Rc-NjmuVE76yd*=%*JiDtL?2G@;BP+KB!o= zdcaWPGiBwRgS6F%7Q1O30cFd+r2Za>R-?SM=`yfz>^^ygi{7z{l(J1;{i-rUrTe;g z#(#Unara-jOZqP)d~{7@x66rP_}HHz(i8$8M#Y)W*@||iO%HB~JcQ#I6*$2mfDL1Q zFzh_+Q-a`7lvW*+tZZ3(061xlHUaYya;}m z)QCHtgg+^^J5Ynr6;?3PYT28}=jJ_7)ji7}mkvO(^Sy7yAL|uNxalM}`Dxg7&5>gS zAv?Og4iN3Iqx{#zTeqsLb?nojz%dHTxX>rgZ-LwyXS;V=Cg)JE#kSif2w$qFtt!pA zC}nd5RoMb%#NofS99$qlv3bkEK*40X?FsFePO$cpUj_{K8mry5K|l%y0i9DRiY+7x zTXAaGuy*p(8AV8De)3sC ze=PTDu}(L~jU`79idi}5B)ieiCbOGX=-8`WX1nitb0fUtuTY+3G?*nkb(DSDCf0fQ z#j_~zcIWcM3P@T0V+Z@A81iSc(X**er0*O@j3_(q%1yWYlFT=Y0a!;d{!QGKeXLYcg&ntrg*`myPbGu>((Z z^K?L`*O6&VE6#0yOG=rvNP+$iZ#%YhH6+1xpFy8SZ?#?m3d_N?FD*rXt**N$%PCbD z|3!twk|d*tHhmaaQwL&7lfJ1XLUe!)=uCE;MhkK(J+LKu)wjUiekF_N5lyvHx`waU*#+C-fLSMlRFZG-rNVcBFIfx`Aq zEUVb%g}bT(eM@$8>$6cl-wx^3*ylpzfz%5nCh^+}x`jQj-Qj6-o^S-i#}p1=9KnNQ zyW9M2ugUdugY;$9h74+)Iu++GfUi+`;IQMy{ntWO%WCu>lI!O_L=|Rl5+_T+$EOOR z(dH;sK!F24vf>timlSWj%_gYQnyFR$|5{BR0sl5B639<~N(YjDpqD8m!Ka-x63-}cyZn*!32_xu50j{j zfW?V**F}-PrE|G{XNv1*Uu3jAY)hlbw+I+hXixkYnZn%@mfi+g%5JivDGYwgCbYQo zvUWW_&~)nlVO1T>)y45=5@VmzKaQ z3`XS++{~84-qb1)H7%ns{RYm#nYrZ(il9`Mxjc`BbK7*!LjO3fIkHP>SG%i+OIqAd zebl8KLjy!>ovYu>juX`}QPG*V%$C!R8+ZU?i~rEg2Q)L&fU0~fUOitWMdAmO{YpER zCY$C22a&Iretp#P0E?H%qa*n)Lsu`}Tuz?SX*Xi?-wf(4X>?U^Ou=d)cp+bn-r{<@O9nTd&QEmVe(Br=tvGXKM^r`B6&YKv0WMMbcx0WI8g4a!_?{ zd5Rg$sMvhNn$Ri@H`Xn4r)c7RS=t@_i=essxl9uv7%+3Aka8rSQ%2Z!ZkqROujQ)2SNV^~h9X`uYW%Haq@NbdGd1K8Zo8QFODCljPnRrB$u-b%8ri z-QVjQk%d!!HpOv1Adl4f7bn@Zg@#zcCABOwcG@7ltFPBT#ag>)JR5&% ziL`Z}OcF!i?Z!2>xtZL(aNDi^S9l?fG^=+my1nhIgj&F)kvFm>eO#tvZvvDs;M9=>1Y zv-w<~WXR_bbJ_jgW~V-FcY(1uNjdtkomLLy*FuepReChfNMo1FCWX$*L1@S6w_X-V zUaqzC7K!d#rqqp;xfR5LrjWorEGty6@l!F*og&foTiaY0tbxes@rU_bA0evx^S*>M zw(U||caj_DdI(R~yBLH(n-_!= znzSrDgfT;4e```=UN)jM6UI3Z|uzo=&}TGbu$-q}va7aH&kR z!P?aTn-nA9g~;*PfhZ71h8sL``nv#sONxaH5m^QwH!FB^ga*vZo@6)Q;LtIWop)7&S5!@!l>MPYlvq^w4w!e zD=s~9)_nQm4zOSi*<6<`inMKD6TBCrDfR$X_A{bh68SEB%R#f1U{o?LV+JH%qyrwN zk#Q`#`Ns51=FyAlPgdFE>%6PgL5?N+ELR4A0r6eQtRr7j1mcpWw-R*56L~t4K@WA> z8K@S!ap$;BNHd)Z<1<39AbcP?GXkE*Uww^}0y8p3TaST(UuvUxP|5~v-|Uc5t;a6$ zs8buBCYn<18R?G{w8PHN)+TGlRMo&2*iOG9`n*2%gDCoqv~_>n2Y%mK>qZR!IlFJM z2Cm&d3l$Yg{m2OeDWe?A1JyBBPf8AUiz3c-QEk!#Bc)Ls<3cw%#pOgFRX%taUAwC0 z38quSgE*cV1;V-1>Yo4;IZlX$pC(w{4*H(s6-XO|{zT;4+3fl>uBC{E%3cQfHz6H# zM&cdLNC)C3f07;=p~43CR(xVU$@VNwKXk@0=O<&rM`ABsHajq|SH3y-Uea!ZM60FF zxRSx`U=ZGT(?0_6d+4Wl(nn^i)$?0COoL|?Kz>9*Rx2=DliC8`$Vnk=iN8DvXncDP zUrp?flp@k7?33%vql&x{L&ki+?I!ON1X26#u)TryIL4P5{?r6JJKU}^n zuHKi2x$VYuFF(1B)|>a`I{X2_JddRKo@^ZZYpmr1I$6g1vYGt2%T1#D9)ADeb2?i1 zVyX5;3*Xz_E+*W&dg$MjBiZf$ShcPtC#CdX$vZ`k2B`a(sE_)Z(u3rLbmTC+eG;aZU+1 z{{1^WqiPuRnHe|&Cp**$<9(Bym8}$2TCLARrq_&3I12g<5sDnrwi*c$9aKX?O?q7p z63yah;>p%aAG_zSYzs0dW9EE^nUKL3z zhx@_tfYud$BhLY+dZ5E1yH*Qa(#N93G19<9fM)Tcotfym4RpoH9_Y%ka(mV0{qbBj zc5^Si*{hvvLP}TvuiCgG8%*ixNUK}Y^riiC4 zh#cLLOlF`nDQQv-ABAu=Gq~d}CH^TowRE8GiwQPvf`gcK)*CXvchCx7%5y~#N=s$Y zYHX}Oqe{m;`Yjj<<;V{oMACsDQm5+WP569xU!o|cR`9PUSlarn)xE!DOF`PC2smsG zsZZ7niRh2VXBWuYyI*}UcE{;4-P1~8H8qhZq34=voZuQOs4;+gAcgRFI2KRUcsBcQ z8Jwglw6_~f9m8S%>+gwf@v|+EqTc6%5R!adeig9QvY^&hMwN!)H6o0`DM$Etd-%cC`|^$btbm5Vo?Dt^R%B{e99 z!%opzZ^~-c^q`ColH>u|LU#VgysjDN063g*12QtZ&UM+vseXN#t5j!7BMXi6LmJ<2oW#a@A)=7Zda zMd@D?2D=EQjy~cvq@>I$qpYiy

UqVFxLehq2FWef*DhziQz6;HK^%y$`moQGcpK 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 literal 0 HcmV?d00001 diff --git a/AutoBounds/_media/After.png.meta b/AutoBounds/_media/After.png.meta new file mode 100644 index 0000000..c2f88a8 --- /dev/null +++ b/AutoBounds/_media/After.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: b4d4eec8e21c87f47b20228e1ed0e320 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 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 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/AutoBounds/_media/Before.png b/AutoBounds/_media/Before.png new file mode 100644 index 0000000000000000000000000000000000000000..bf81d81ee93633fe6adec8202d20b65ec6b4bcc9 GIT binary patch literal 103999 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∈ZWCmQA>?ttaS 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 FV1godC@%m2 literal 0 HcmV?d00001 diff --git a/AutoBounds/_media/Before.png.meta b/AutoBounds/_media/Before.png.meta new file mode 100644 index 0000000..9472c35 --- /dev/null +++ b/AutoBounds/_media/Before.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 654e762dad0af114c9f148942ba2b372 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + 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: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 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 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/AutoBounds/package.json b/AutoBounds/package.json new file mode 100644 index 0000000..c206363 --- /dev/null +++ b/AutoBounds/package.json @@ -0,0 +1,23 @@ +{ + "name": "com.dreadscripts.tool.autobounds", + "displayName": "AutoBounds", + "version": "1.0.0", + "unity": "2019.4", + "description": "Editor script to help setting the bounds of skinned mesh renderers.", + "keywords": [ + "Dreadrith", + "DreadScripts", + "DreadTools", + "Editor", + "Utility", + "Renderers" + ], + "author": { + "name": "Dreadrith", + "email": "dreadscripts@gmail.com", + "url": "https://github.com/Dreadrith" + }, + "legacyFolders": { + "Assets\\DreadScripts\\Utility\\Editor\\AutoBounds": "97d295ac00bde904b83106bff682f8b6" + } +} \ No newline at end of file diff --git a/AutoBounds/package.json.meta b/AutoBounds/package.json.meta new file mode 100644 index 0000000..e6b52e9 --- /dev/null +++ b/AutoBounds/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 57512e319d5fa5d4f948b525f1c016af +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Better-Unity.meta b/Better-Unity.meta new file mode 100644 index 0000000..f0c57fc --- /dev/null +++ b/Better-Unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9c58042552f45a5439a61e9c16711da7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Better-Unity/.gitignore b/Better-Unity/.gitignore new file mode 100644 index 0000000..719db2f --- /dev/null +++ b/Better-Unity/.gitignore @@ -0,0 +1,2 @@ + +*.meta diff --git a/Better-Unity/Editor/BetterUnityEditor.asmdef b/Better-Unity/Editor/BetterUnityEditor.asmdef new file mode 100644 index 0000000..2e74079 --- /dev/null +++ b/Better-Unity/Editor/BetterUnityEditor.asmdef @@ -0,0 +1,15 @@ +{ + "name": "BetterUnityEditor", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Better-Unity/Editor/CopyCutPaste.cs b/Better-Unity/Editor/CopyCutPaste.cs new file mode 100644 index 0000000..98e4234 --- /dev/null +++ b/Better-Unity/Editor/CopyCutPaste.cs @@ -0,0 +1,86 @@ +using UnityEngine; +using UnityEditor; +using System.IO; + +//Adds 3 new Assets context menu items: Copy, Cut & Paste + +namespace BetterUnity +{ + public class CopyCutPaste + { + private static bool copy; + private static string[] _tempGUID; + private static string[] assetsGUID; + + [MenuItem("Assets/Copy", false, 20)] + private static void Copy() + { + copy = true; + assetsGUID = _tempGUID; + } + + [MenuItem("Assets/Cut", false, 20)] + private static void Cut() + { + copy = false; + assetsGUID = _tempGUID; + } + + [MenuItem("Assets/Paste", false, 20)] + private static void Paste() + { + string folderPath = AssetDatabase.GetAssetPath(Selection.activeObject); + Move(folderPath, assetsGUID, copy); + } + + public static void Move(string destination, string[] assetsGUID, bool copy) + { + if (!string.IsNullOrEmpty(Path.GetExtension(destination)) && !AssetDatabase.IsValidFolder(destination)) + destination = Path.GetDirectoryName(destination); + + try + { + AssetDatabase.StartAssetEditing(); + + foreach (string s in assetsGUID) + { + string filePath = AssetDatabase.GUIDToAssetPath(s); + string fileName = Path.GetFileName(filePath); + + + if (copy) + { + AssetDatabase.CopyAsset(filePath, AssetDatabase.GenerateUniqueAssetPath(destination + "/" + fileName)); + } + else + { + if (destination + "/" + fileName != filePath) + AssetDatabase.MoveAsset(filePath, AssetDatabase.GenerateUniqueAssetPath(destination + "/" + fileName)); + } + } + } + catch(System.Exception e) { Debug.LogError(e);} + finally + { + AssetDatabase.StopAssetEditing(); + } + } + + [MenuItem("Assets/Copy", true, 20)] + [MenuItem("Assets/Cut", true, 20)] + private static bool ValidateSelect() + { + _tempGUID = Selection.assetGUIDs; + return _tempGUID.Length > 0; + } + + [MenuItem("Assets/Paste", true, 20)] + private static bool ValidateMove() + { + return (assetsGUID != null && assetsGUID.Length > 0 && Selection.activeObject); + } + + + + } +} \ No newline at end of file diff --git a/Better-Unity/Editor/CopyGUID.cs b/Better-Unity/Editor/CopyGUID.cs new file mode 100644 index 0000000..86cb260 --- /dev/null +++ b/Better-Unity/Editor/CopyGUID.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +public class CopyGUID : MonoBehaviour +{ + [MenuItem("Assets/Copy GUID")] + private static void CopyGUIDMethod() + { + if (Selection.assetGUIDs.Length > 0) + EditorGUIUtility.systemCopyBuffer = Selection.assetGUIDs[0]; + } +} diff --git a/Better-Unity/Editor/CreateTxt.cs b/Better-Unity/Editor/CreateTxt.cs new file mode 100644 index 0000000..2f40ad1 --- /dev/null +++ b/Better-Unity/Editor/CreateTxt.cs @@ -0,0 +1,36 @@ +using UnityEditor; +using System.IO; + +//Adds new context menu item: Assets > Create > Text File +//Creates a new text file in the destination folder + +namespace BetterUnity +{ + public class CreateTxt + { + [MenuItem("Assets/Create/Text File", false, 20)] + private static void CreateMyHeckingTextFile() + { + //Get the path of what was used on right click + string path = AssetDatabase.GetAssetPath(Selection.activeObject); + + //If using Unity's toolbar context menu. There may be no selection. So use the main Assets folder. + if (string.IsNullOrWhiteSpace(path)) path = "Assets"; + + //If it's a folder, use it. If it's a file, get the parent folder. Name it "New Text File". + string txtPath = (AssetDatabase.IsValidFolder(path) ? path : Path.GetDirectoryName(path)) + "/New Text File.txt"; + + //Make it unique + txtPath = AssetDatabase.GenerateUniqueAssetPath(txtPath); + + //Create it and Dispose of the StreamWriter + File.CreateText(txtPath).Dispose(); + + //Import it + AssetDatabase.ImportAsset(txtPath); + + //Highlight it + EditorGUIUtility.PingObject(AssetDatabase.LoadMainAssetAtPath(txtPath)); + } + } +} \ No newline at end of file diff --git a/Better-Unity/Editor/GOCopyPath.cs b/Better-Unity/Editor/GOCopyPath.cs new file mode 100644 index 0000000..c55a5cf --- /dev/null +++ b/Better-Unity/Editor/GOCopyPath.cs @@ -0,0 +1,29 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +//Copy the path from the root transform to the target GameObject + +namespace BetterUnity +{ + public class GOCopyPath + { + private const bool log = true; + + [MenuItem("GameObject/Copy Path", false, -1000)] + private static void GameObjectCopyPath() + { + var go = Selection.activeGameObject; + if (!go) + { + Debug.LogWarning("No GameObject selected"); + return; + } + + string path = AnimationUtility.CalculateTransformPath(go.transform, go.transform.root); + if (log) Debug.Log("Path: " + path); + GUIUtility.systemCopyBuffer = path; + } + } +} diff --git a/Better-Unity/Editor/TransformEditor.cs b/Better-Unity/Editor/TransformEditor.cs new file mode 100644 index 0000000..a8cf115 --- /dev/null +++ b/Better-Unity/Editor/TransformEditor.cs @@ -0,0 +1,134 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using UnityEngine; +using UnityEditor; + +//Replicates Unity's Transform Inspector but adds new Context Menu to each field. +//Allows you to Copy, Paste and Reset any transform field individually. + +namespace BetterUnity +{ + [CanEditMultipleObjects] + [CustomEditor(typeof(Transform))] + public class TransformEditor : Editor + { + private static System.Type RotationGUIType; + private static MethodInfo RotationGUIEnableMethod; + private static MethodInfo DrawRotationGUIMethod; + private object rotationGUI; + + private SerializedProperty m_LocalPosition; + private SerializedProperty m_LocalRotation; + private SerializedProperty m_LocalScale; + + private static Vector3 copiedValues; + private static bool hasCopiedValues; + private static int contextChoice; + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + EditorGUILayout.PropertyField(m_LocalPosition, positionContent); + Rect posRect = GUILayoutUtility.GetLastRect(); + + DrawRotationGUIMethod.Invoke(rotationGUI, null); + Rect rotRect = GUILayoutUtility.GetLastRect(); + + EditorGUILayout.PropertyField(m_LocalScale, scaleContent); + Rect scaleRect = GUILayoutUtility.GetLastRect(); + + serializedObject.ApplyModifiedProperties(); + + Event e = Event.current; + Vector2 m = e.mousePosition; + if (e.type == EventType.ContextClick) + { + contextChoice = 0; + if (posRect.Contains(m)) contextChoice = 1; + if (rotRect.Contains(m)) contextChoice = 2; + if (scaleRect.Contains(m)) contextChoice = 3; + if (contextChoice > 0) + { + GenericMenu myMenu = new GenericMenu(); + myMenu.AddItem(new GUIContent("Copy"), false, CopyFieldValues); + myMenu.AddItem(new GUIContent("Paste"), false, hasCopiedValues ? new GenericMenu.MenuFunction(PasteFieldValues) : null); + myMenu.AddItem(new GUIContent("Reset"), false, ResetFieldValues); + myMenu.ShowAsContext(); + } + } + } + + private void ResetFieldValues() + { + switch (contextChoice) + { + case 1: + m_LocalPosition.vector3Value = Vector3.zero; + break; + case 2: + m_LocalRotation.quaternionValue = new Quaternion(); + break; + case 3: + m_LocalScale.vector3Value = Vector3.one; + break; + } + serializedObject.ApplyModifiedProperties(); + } + private void CopyFieldValues() + { + hasCopiedValues = true; + switch (contextChoice) + { + case 1: copiedValues = m_LocalPosition.vector3Value; + break; + case 2: + copiedValues = m_LocalRotation.quaternionValue.eulerAngles; + break; + case 3: + copiedValues = m_LocalScale.vector3Value; + break; + } + } + + private void PasteFieldValues() + { + switch (contextChoice) + { + case 1: + m_LocalPosition.vector3Value = copiedValues; + break; + case 2: + var tempQuaternion = new Quaternion {eulerAngles = copiedValues}; + m_LocalRotation.quaternionValue = tempQuaternion; + break; + case 3: + m_LocalScale.vector3Value = copiedValues ; + break; + } + serializedObject.ApplyModifiedProperties(); + } + + private void OnEnable() + { + if (RotationGUIType == null) RotationGUIType = System.Type.GetType("UnityEditor.TransformRotationGUI, UnityEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"); + if (RotationGUIEnableMethod == null) RotationGUIEnableMethod = RotationGUIType.GetMethod("OnEnable", BindingFlags.Public | BindingFlags.Instance); + if (DrawRotationGUIMethod == null) DrawRotationGUIMethod = RotationGUIType.GetMethod("RotationField", Array.Empty()); + + m_LocalPosition = serializedObject.FindProperty("m_LocalPosition"); + m_LocalRotation = serializedObject.FindProperty("m_LocalRotation"); + m_LocalScale = serializedObject.FindProperty("m_LocalScale"); + + if (rotationGUI == null) rotationGUI = Activator.CreateInstance(RotationGUIType); + RotationGUIEnableMethod.Invoke(rotationGUI, new object[] {m_LocalRotation, rotationContent}); + } + + private GUIContent positionContent = new GUIContent("Position", "The local position of this GameObject relative to the parent."); + private GUIContent rotationContent = new GUIContent("Rotation", "The local rotation of this GameObject relative to the parent."); + private GUIContent scaleContent = new GUIContent("Scale", "The local scaling of this GameObject relative to the parent."); + private const string floatingPointWarning = "Due to floating-point precision limitations, it is recommended to bring the world coordinates of the GameObject within a smaller range."; + + } +} diff --git a/Better-Unity/LICENSE b/Better-Unity/LICENSE new file mode 100644 index 0000000..a7d4152 --- /dev/null +++ b/Better-Unity/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Dreadrith + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Better-Unity/README.md b/Better-Unity/README.md new file mode 100644 index 0000000..c383e97 --- /dev/null +++ b/Better-Unity/README.md @@ -0,0 +1,37 @@ +# Better-Unity +Built on Unity 2019.4.31f1.
+Collection of editor scripts that aim to overall facilitate and improve usage of Unity Editor. + + +Download: +Unity Package - + Zip (VPM Compatible) + +

+ CopyCutPaste + Adds 3 new Assets context menu items: Copy, Cut & Paste +
+ +
+ CreateTxt + Adds a new Assets context menu item: Create > Text File
+ Allows you to instantly create a text file in the targeted folder +
+ +
+ Transform Editor + Replicates Unity's Transform Inspector but adds a Context Menu to each field.
+ Allows you to Copy, Paste and Reset any transform field individually. +
+ +
+ GOCopy Path + Adds a new GameObject context menu item: GameObject > Copy Path.
+ Allows you to Copy the path From the root to the target GameObject. +
+ +
+ CopyGUID + Adds a new Assets context menu item: Copy GUID.
+ Copies the GUID of the selected Asset to the clipboard. +
diff --git a/Better-Unity/package.json b/Better-Unity/package.json new file mode 100644 index 0000000..4699fd5 --- /dev/null +++ b/Better-Unity/package.json @@ -0,0 +1,23 @@ +{ + "name": "com.dreadscripts.tool.betterunity", + "displayName": "DreadTools - Better Unity", + "version": "1.0.0", + "unity": "2019.4", + "description": "Editor scripts to improve the Unity Editor.", + "keywords": [ + "Dreadrith", + "DreadScripts", + "DreadTools", + "Editor", + "Utility", + "Enhancement" + ], + "author": { + "name": "Dreadrith", + "email": "dreadscripts@gmail.com", + "url": "https://github.com/Dreadrith" + }, + "legacyFolders": { + "Assets\\DreadScripts\\Better Unity": "a09203517043c5344b527754b22a4eac" + } +} \ No newline at end of file diff --git a/CameraUtility.meta b/CameraUtility.meta new file mode 100644 index 0000000..1ea3992 --- /dev/null +++ b/CameraUtility.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 71b402fd2933a4b478281f4cf11967be +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/CameraUtility/Editor.meta b/CameraUtility/Editor.meta new file mode 100644 index 0000000..3b94866 --- /dev/null +++ b/CameraUtility/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 904e122b4614a8c439caa37312b0704d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/CameraUtility/Editor/CameraUtility.cs b/CameraUtility/Editor/CameraUtility.cs new file mode 100644 index 0000000..29cb3b6 --- /dev/null +++ b/CameraUtility/Editor/CameraUtility.cs @@ -0,0 +1,52 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace DreadScripts.CameraUtility +{ + public class CameraUtility + { + private const float SCENE_PIVOT_OFFSET = 1; + + [MenuItem("DreadTools/Utility/Camera/Snap Scene To Game")] + public static void SnapSceneViewToGame() + { + if (!TryGetGameCamera(out Camera gc)) return; + + SceneView view = SceneView.lastActiveSceneView; + if (YellowLog(view == null, "No Scene View found")) return; + + Undo.RecordObject(view, "Snap STG"); + view.LookAtDirect(gc.transform.position, gc.transform.rotation, SCENE_PIVOT_OFFSET/2); + view.pivot = gc.transform.position + gc.transform.forward * SCENE_PIVOT_OFFSET; + } + + [MenuItem("DreadTools/Utility/Camera/Snap Game To Scene")] + public static void SnapGameViewToScene() + { + if (!TryGetGameCamera(out Camera gc)) return; + if (!TryGetSceneCamera(out Camera sc)) return; + + Undo.RecordObject(gc.transform, "Snap GTS"); + gc.transform.SetPositionAndRotation(sc.transform.position, sc.transform.rotation); + } + + private static bool TryGetGameCamera(out Camera gameCamera) + { + gameCamera = Camera.main ?? Object.FindObjectOfType(); + return !YellowLog(!gameCamera, "No Camera found in scene"); + } + private static bool TryGetSceneCamera(out Camera sceneCamera) + { + sceneCamera = SceneView.lastActiveSceneView?.camera; + return !YellowLog(!sceneCamera, "No Scene View found"); + } + + private static bool YellowLog(bool condition, string msg) + { + if (condition) Debug.LogWarning($"[CameraUtility] {msg}"); + return condition; + } + } +} diff --git a/CameraUtility/Editor/CameraUtility.cs.meta b/CameraUtility/Editor/CameraUtility.cs.meta new file mode 100644 index 0000000..cf87717 --- /dev/null +++ b/CameraUtility/Editor/CameraUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e230c2bf340461c46939efc284f6bf22 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/CameraUtility/Editor/com.dreadscripts.camerautility.Editor.asmdef b/CameraUtility/Editor/com.dreadscripts.camerautility.Editor.asmdef new file mode 100644 index 0000000..dd7f063 --- /dev/null +++ b/CameraUtility/Editor/com.dreadscripts.camerautility.Editor.asmdef @@ -0,0 +1,15 @@ +{ + "name": "com.dreadscripts.camerautility.Editor", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/CameraUtility/Editor/com.dreadscripts.camerautility.Editor.asmdef.meta b/CameraUtility/Editor/com.dreadscripts.camerautility.Editor.asmdef.meta new file mode 100644 index 0000000..2b674cc --- /dev/null +++ b/CameraUtility/Editor/com.dreadscripts.camerautility.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: acb80353a76f6c0488836f3e26ef1785 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/CameraUtility/LICENSE b/CameraUtility/LICENSE new file mode 100644 index 0000000..545aeca --- /dev/null +++ b/CameraUtility/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Dreadrith + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/CameraUtility/LICENSE.meta b/CameraUtility/LICENSE.meta new file mode 100644 index 0000000..511d011 --- /dev/null +++ b/CameraUtility/LICENSE.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c6d418ac183680543906fe0d17a02a3a +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/CameraUtility/README.md b/CameraUtility/README.md new file mode 100644 index 0000000..2f03237 --- /dev/null +++ b/CameraUtility/README.md @@ -0,0 +1,16 @@ +# Camera Utility + +### [Download From Here](https://vpm.dreadscripts.com/) + +![image](https://i.imgur.com/5fow365.gif) + +## Features +- Snap the Scene view to the position and rotation of the Game view camera or vice versa. + +## How to Use +1. Open the Unity Editor. +2. Navigate to `DreadTools > Utility > Camera` in the top menu. +3. Choose either "Snap Scene To Game" or "Snap Game To Scene" to synchronize views accordingly. + +### Thank You +If you enjoy Camera Utility, please consider [supporting me ♡](https://ko-fi.com/Dreadrith)! diff --git a/CameraUtility/README.md.meta b/CameraUtility/README.md.meta new file mode 100644 index 0000000..610531b --- /dev/null +++ b/CameraUtility/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: df3ef724ecd912644ab09c0dd1490ca1 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/CameraUtility/package.json b/CameraUtility/package.json new file mode 100644 index 0000000..90c92b3 --- /dev/null +++ b/CameraUtility/package.json @@ -0,0 +1,17 @@ +{ + "name": "com.dreadscripts.camerautility", + "displayName": "DreadScripts - CameraUtility", + "version": "1.0.1", + "description": "Simple menu item to snap Game View to Scene View or vice versa.", + "gitDependencies": {}, + "vpmDependencies": {}, + "author": { + "name": "Dreadrith", + "email": "dreadscripts@gmail.com", + "url": "https://www.dreadrith.com" + }, + "legacyFolders": {}, + "legacyFiles": {}, + "type": "tool", + "unity": "2019.4" +} \ No newline at end of file diff --git a/CameraUtility/package.json.meta b/CameraUtility/package.json.meta new file mode 100644 index 0000000..7e51e2c --- /dev/null +++ b/CameraUtility/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c08baa384bf219b4494368267dea3617 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/CopyCutPaste.meta b/CopyCutPaste.meta new file mode 100644 index 0000000..d4003a2 --- /dev/null +++ b/CopyCutPaste.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f0694de95b2b93b4f825ec371ddbff0f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/CopyCutPaste/Editor.meta b/CopyCutPaste/Editor.meta new file mode 100644 index 0000000..2852468 --- /dev/null +++ b/CopyCutPaste/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 214b8dfd44e5d9240b993faa65d5bd17 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/CopyCutPaste/Editor/CopyCutPaste.cs b/CopyCutPaste/Editor/CopyCutPaste.cs new file mode 100644 index 0000000..d8296e1 --- /dev/null +++ b/CopyCutPaste/Editor/CopyCutPaste.cs @@ -0,0 +1,84 @@ +using UnityEngine; +using UnityEditor; +using System.IO; + +namespace DreadScripts.CopyCutPaste +{ + public class CopyCutPaste + { + private static bool copy; + private static string[] _tempGUID; + private static string[] assetsGUID; + + [MenuItem("Assets/Copy", false, 20)] + private static void Copy() + { + copy = true; + assetsGUID = _tempGUID; + } + + [MenuItem("Assets/Cut", false, 20)] + private static void Cut() + { + copy = false; + assetsGUID = _tempGUID; + } + + [MenuItem("Assets/Paste", false, 20)] + private static void Paste() + { + string folderPath = AssetDatabase.GetAssetPath(Selection.activeObject); + Move(folderPath, assetsGUID, copy); + } + + public static void Move(string destination, string[] assetsGUID, bool copy) + { + if (!string.IsNullOrEmpty(Path.GetExtension(destination)) && !AssetDatabase.IsValidFolder(destination)) + destination = Path.GetDirectoryName(destination); + + try + { + AssetDatabase.StartAssetEditing(); + + foreach (string s in assetsGUID) + { + string filePath = AssetDatabase.GUIDToAssetPath(s); + string fileName = Path.GetFileName(filePath); + + + if (copy) + { + AssetDatabase.CopyAsset(filePath, AssetDatabase.GenerateUniqueAssetPath(destination + "/" + fileName)); + } + else + { + if (destination + "/" + fileName != filePath) + AssetDatabase.MoveAsset(filePath, AssetDatabase.GenerateUniqueAssetPath(destination + "/" + fileName)); + } + } + } + catch(System.Exception e) { Debug.LogError(e);} + finally + { + AssetDatabase.StopAssetEditing(); + } + } + + [MenuItem("Assets/Copy", true, 20)] + [MenuItem("Assets/Cut", true, 20)] + private static bool ValidateSelect() + { + _tempGUID = Selection.assetGUIDs; + return _tempGUID.Length > 0; + } + + [MenuItem("Assets/Paste", true, 20)] + private static bool ValidateMove() + { + return (assetsGUID != null && assetsGUID.Length > 0 && Selection.activeObject); + } + + + + } +} \ No newline at end of file diff --git a/CopyCutPaste/Editor/CopyCutPaste.cs.meta b/CopyCutPaste/Editor/CopyCutPaste.cs.meta new file mode 100644 index 0000000..eeb51e6 --- /dev/null +++ b/CopyCutPaste/Editor/CopyCutPaste.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e426aee4657d89e48be7f5d84c4adbdd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/CopyCutPaste/Editor/com.dreadscripts.copycutpaste.Editor.asmdef b/CopyCutPaste/Editor/com.dreadscripts.copycutpaste.Editor.asmdef new file mode 100644 index 0000000..d593741 --- /dev/null +++ b/CopyCutPaste/Editor/com.dreadscripts.copycutpaste.Editor.asmdef @@ -0,0 +1,15 @@ +{ + "name": "com.dreadscripts.copycutpaste.Editor", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/CopyCutPaste/Editor/com.dreadscripts.copycutpaste.Editor.asmdef.meta b/CopyCutPaste/Editor/com.dreadscripts.copycutpaste.Editor.asmdef.meta new file mode 100644 index 0000000..50ff3a9 --- /dev/null +++ b/CopyCutPaste/Editor/com.dreadscripts.copycutpaste.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 76bf5f01c2ff3744eab2e7b22276e902 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/CopyCutPaste/LICENSE b/CopyCutPaste/LICENSE new file mode 100644 index 0000000..545aeca --- /dev/null +++ b/CopyCutPaste/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Dreadrith + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/CopyCutPaste/LICENSE.meta b/CopyCutPaste/LICENSE.meta new file mode 100644 index 0000000..9bc40e8 --- /dev/null +++ b/CopyCutPaste/LICENSE.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b549fccaaa3640d439317f3d4c5e43ba +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/CopyCutPaste/README.md b/CopyCutPaste/README.md new file mode 100644 index 0000000..eaa1386 --- /dev/null +++ b/CopyCutPaste/README.md @@ -0,0 +1,7 @@ +# CopyCutPaste +Adds 3 much needed buttons to Unity assets: Copy, Cut, and Paste. Does what's expected. + +### [Download From Here](https://vpm.dreadscripts.com/) + +### Thank You +If you enjoy CopyCutPaste, please consider [supporting me ♡](https://ko-fi.com/Dreadrith)! \ No newline at end of file diff --git a/CopyCutPaste/README.md.meta b/CopyCutPaste/README.md.meta new file mode 100644 index 0000000..0f74314 --- /dev/null +++ b/CopyCutPaste/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b36388504e24a824fa514d38dbf5b32c +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/CopyCutPaste/package.json b/CopyCutPaste/package.json new file mode 100644 index 0000000..5dff63a --- /dev/null +++ b/CopyCutPaste/package.json @@ -0,0 +1,17 @@ +{ + "name": "com.dreadscripts.copycutpaste", + "displayName": "DreadScripts - CopyCutPaste", + "version": "1.0.1", + "description": "Adds 3 much needed buttons to Unity assets: Copy, Cut, and Paste.", + "gitDependencies": {}, + "vpmDependencies": {}, + "author": { + "name": "Dreadrith", + "email": "dreadscripts@gmail.com", + "url": "https://www.dreadrith.com" + }, + "legacyFolders": {}, + "legacyFiles": {}, + "type": "tool", + "unity": "2019.4" +} \ No newline at end of file diff --git a/CopyCutPaste/package.json.meta b/CopyCutPaste/package.json.meta new file mode 100644 index 0000000..d3134c7 --- /dev/null +++ b/CopyCutPaste/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 97bb26747222b3d4f96722ba6c1fb318 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl.meta b/LimbControl.meta new file mode 100644 index 0000000..fb6f3bb --- /dev/null +++ b/LimbControl.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6a4b9dbdf0cee554da296d547d86a5d1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/CHANGELOG.md b/LimbControl/CHANGELOG.md new file mode 100644 index 0000000..1dacd1f --- /dev/null +++ b/LimbControl/CHANGELOG.md @@ -0,0 +1,30 @@ +(v1.1.2) +-------- +- [Misc] Defined minimal unity version +- [Misc] Renamed package to say DreadScripts instead of DreadTools + +(v1.1.1) +-------- +- [Fix] Fixed Package importing to project root instead of Packages +- [Fix] Fixed Package causing upload to throw errors due to Editor namespace + +(v1.1.0) +-------- +- [Feature] Limb Control will now also temporarily activate with control menu is open +- [Improvement] Limb Control now uses 0 parameter memory! Woo! +- [Fix] Fixed a few issues with pathing +- [UI] Reworked some UI +- [Misc] All Parameters renamed to use slash pathing. i.e: LC/RightArm/Toggle +- [Misc] Placed Add Tracking submenu after limb control like it's supposed to have been +- [Misc] Layers and States are now organized rather than default and have empty clips. +- [Misc] Some general code cleanup + +(v1.0.3) +-------- +- [Improvement] Max Parameter Cost is now detected automatically +- [Change] Modified folder name and paths from 'Limb Control' to 'LimbControl' +- [Change] Moved script to editor folder and removed unnecessary '#if UNITY_EDITOR' + +(v1.0.2) +-------- +- Initial Changelog creation \ No newline at end of file diff --git a/LimbControl/CHANGELOG.md.meta b/LimbControl/CHANGELOG.md.meta new file mode 100644 index 0000000..0dc7799 --- /dev/null +++ b/LimbControl/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f912695042cde8d49b2b38efd30fd2bc +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Documentation~/com.dreadscripts.limbcontrol.md b/LimbControl/Documentation~/com.dreadscripts.limbcontrol.md new file mode 100644 index 0000000..480f32d --- /dev/null +++ b/LimbControl/Documentation~/com.dreadscripts.limbcontrol.md @@ -0,0 +1,34 @@ +Made by Dreadrith#3238 +Discord Server: https://discord.gg/ZsPfrGn + +## Feature Release + +Window found under DreadTools > Limb Control + +Limb Control allows the control of limbs through Puppet Control with a few clicks. +Desktop users, you've got power now! Half body users, Kick those people that say you dun got legs! + +Setup: +- Set your Avatar Descriptor +- Select the limbs to control +- Press Add Control +- Done! + +By default, each selected limb is a separate control and is controlled separately. +Use "Same Control" to make the selected limbs be controlled using the same control. + +Use "Custom BlendTree" to change the way the limbs move by setting your own BlendTree. + +Add Tracking: Adds another Submenu to the Expression Menu which allows Enabling/Disabling tracking on limbs. +Utilizes the integer values from 244 to 255, integer may be reused for other purposes. + +## Information about the feature +- Toggling a Limb control "On" sets the limb to Animation and enables its ability to be controlled using the "Control" puppet menu. +- Toggling a Limb control "Off" sets the limb to Tracking and disables the ability to control it using the "Control" puppet menu. +- Limb Control works during normal movement, emote animation and while sitting. + +## Information about the script +- Duplicates Base, Action and Sitting controllers if they exist. Creates new ones if they don't. +- Creates a new Expression Menu and/or Expression Parameters if they don't exist. +- Adds Submenu controls to the main Expression Menu. Fails if full. +- Creates new assets at the chosen asset path in the window. diff --git a/LimbControl/Editor.meta b/LimbControl/Editor.meta new file mode 100644 index 0000000..3405aa8 --- /dev/null +++ b/LimbControl/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2be2d83291a64544eb311808c71ae551 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Editor/LimbControl.cs b/LimbControl/Editor/LimbControl.cs new file mode 100644 index 0000000..f3f8e94 --- /dev/null +++ b/LimbControl/Editor/LimbControl.cs @@ -0,0 +1,938 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using VRC.SDK3.Avatars.Components; +using UnityEditor.Animations; +using VRC.SDK3.Avatars.ScriptableObjects; +using System; +using System.Linq; +using System.IO; +using System.Text.RegularExpressions; +using Object = UnityEngine.Object; +using static DreadScripts.LimbControl.LimbControl.CustomGUI; +using UnityEditor.SceneManagement; +using UnityEngine.Networking; + +namespace DreadScripts.LimbControl +{ + public class LimbControl : EditorWindow + { + private const string LAYER_TAG = "Limb Control"; + + + public static VRCAvatarDescriptor avatar; + public static bool useSameParameter; + public static bool useCustomTree; + public static bool addTracking; + public static bool addRightArm, addLeftArm, addRightLeg, addLeftLeg; + + public static BlendTree customTree; + + private static string assetPath; + private static AnimationClip emptyClip; + private static Vector2 scroll; + + + [MenuItem("DreadTools/Limb Control", false, 566)] + public static void ShowWindow() + { + GetWindow("Limb Control").titleContent.image = EditorGUIUtility.IconContent("AvatarMask Icon").image; + } + + public void OnGUI() + { + bool isValid = true; + scroll = EditorGUILayout.BeginScrollView(scroll); + + using (new GUILayout.VerticalScope(EditorStyles.helpBox)) + { + avatar = (VRCAvatarDescriptor)EditorGUILayout.ObjectField(Content.avatarContent, avatar, typeof(VRCAvatarDescriptor), true); + isValid &= avatar; + + } + + EditorGUILayout.Space(); + using (new GUILayout.VerticalScope(GUI.skin.box)) + { + DrawTitle("Control Limbs", "Choose which Limbs to control in your menu"); + + using (new GUILayout.HorizontalScope()) + { + DrawColoredButton(ref addLeftArm, "Left Arm"); + DrawColoredButton(ref addRightArm, "Right Arm"); + } + + using (new GUILayout.HorizontalScope()) + { + DrawColoredButton(ref addLeftLeg, "Left Leg"); + DrawColoredButton(ref addRightLeg, "Right Leg"); + } + DrawColoredButton(ref addTracking, Content.trackingContent); + EditorGUILayout.Space(); + } + + using (new GUILayout.VerticalScope(GUI.skin.box)) + { + DrawTitle("Extra", "To Add to or Modify Limb Control"); + bool canCombineControl = Convert.ToInt32(addRightArm) + Convert.ToInt32(addLeftArm) + Convert.ToInt32(addLeftLeg) + Convert.ToInt32(addRightLeg) > 1; + if (!canCombineControl) useSameParameter = false; + using (new EditorGUI.DisabledScope(!canCombineControl)) + DrawColoredButton(ref useSameParameter, Content.sameControlContent); + + + if (!useCustomTree) DrawColoredButton(ref useCustomTree, Content.customTreeContent); + else + { + using (new GUILayout.HorizontalScope()) + { + using (new BGColoredScope(useCustomTree)) + useCustomTree = GUILayout.Toggle(useCustomTree, string.Empty, EditorStyles.toolbarButton, GUILayout.Width(18), GUILayout.Height(18)); + customTree = (BlendTree)EditorGUILayout.ObjectField(customTree, typeof(BlendTree), false); + } + } + } + + EditorGUILayout.Space(); + EditorGUILayout.Space(); + GUILayout.Label(new GUIContent("Required Memory: 0!","Limb Control only needs VRC's IK sync and no parameter syncing!"), EditorStyles.centeredGreyMiniLabel); + + + isValid &= addLeftArm || addLeftLeg || addRightArm || addRightLeg || addTracking; + + using (new GUILayout.HorizontalScope()) + { + using (new BGColoredScope(isValid)) + using(new EditorGUI.DisabledScope(!isValid)) + if (GUILayout.Button("Apply Limb Control", Content.comicallyLargeButton, GUILayout.Height(32))) + InitAddControl(!(addLeftArm || addLeftLeg || addRightArm || addRightLeg)); + + using (new BGColoredScope(Color.red)) + using (new EditorGUI.DisabledScope(!avatar)) + if (GUILayout.Button(Content.iconTrash,new GUIStyle(GUI.skin.button) {padding=new RectOffset()},GUILayout.Width(40),GUILayout.Height(32))) + if (EditorUtility.DisplayDialog("Remove Limb Control", "Remove Limb Control from " + avatar.gameObject.name + "?\nThis action can't be reverted.", "Remove", "Cancel")) + RemoveLimbControl(); + } + + DrawSeparator(); + assetPath = AssetFolderPath(assetPath, "Generated Assets", "LimbControlSavePath"); + Credit(); + + EditorGUILayout.EndScrollView(); + } + + private static string folderPath; + private static void InitAddControl(bool onlyTracking=false) + { + + if (avatar.expressionsMenu) + { + int cCost = (!onlyTracking ? 1 : 0) + (addTracking ? 1 : 0); + if (onlyTracking && !avatar.expressionsMenu.controls.Any(c => c.name == "Limb Control" && c.type == VRCExpressionsMenu.Control.ControlType.SubMenu && c.subMenu)) + { + cCost -= 1; + } + if (addTracking && !avatar.expressionsMenu.controls.Any(c => c.name == "Tracking Control" && c.type == VRCExpressionsMenu.Control.ControlType.SubMenu && c.subMenu)) + { + cCost -= 1; + } + + if ( 8 - (avatar.expressionsMenu.controls.Count + cCost) < 0) + { + Debug.LogError("Expression Menu can't contain more than 8 controls!"); + return; + } + + } + + ReadyPath(assetPath); + folderPath = AssetDatabase.GenerateUniqueAssetPath($"{assetPath}/{ValidatePath(avatar.gameObject.name)}"); + ReadyPath(folderPath); + emptyClip = Resources.Load("Animations/LC_EmptyClip"); + + AnimatorController myLocomotion = GetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Base); + if (!myLocomotion) + myLocomotion = Resources.Load("Animations/LC_BaseLocomotion"); + + myLocomotion = CopyAssetAndReturn(myLocomotion, AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + myLocomotion.name + ".controller")); + SetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Base, myLocomotion); + + if (onlyTracking) goto AddTrackingJump; + + AnimatorController myAction = GetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Action); + if (!myAction) + { + myAction = new AnimatorController() { name = "LC_BaseAction" }; + AssetDatabase.CreateAsset(myAction, folderPath + "/" + myAction.name + ".controller"); + myAction.AddLayer("Base Layer"); + } + else + myAction = CopyAssetAndReturn(myAction, AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + myAction.name + ".controller")); + SetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Action, myAction); + + AnimatorController mySitting = GetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Sitting); + if (!mySitting) + mySitting = Resources.Load("Animations/LC_BaseSitting"); + + mySitting = CopyAssetAndReturn(mySitting, AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + mySitting.name + ".controller")); + SetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Sitting, mySitting); + + AvatarMask GetNewMask(string n) + { + AvatarMask newMask = new AvatarMask() { name = n }; + for (int i = 0; i < 13; i++) + { + newMask.SetHumanoidBodyPartActive((AvatarMaskBodyPart)i, false); + } + AssetDatabase.CreateAsset(newMask, AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + newMask.name + ".mask")); + return newMask; + } + + AvatarMask myMask = null; + if (useSameParameter) + myMask = GetNewMask("LC_MixedMask"); + + GetBaseTree(); + + void DoControl(bool isRight, bool isArm) + { + string direction = isRight? "Right" : "Left"; + string limbName = isArm ? "Arm" : "Leg"; + string fullName = direction + limbName; + + if (!useSameParameter) + myMask = GetNewMask($"LC_{fullName}Mask"); + + myMask.SetHumanoidBodyPartActive((AvatarMaskBodyPart)Enum.Parse(typeof(AvatarMaskBodyPart), fullName, true), true); + if (!useSameParameter) + AddControl(myMask, customTree, $"LC/{fullName}"); + } + + if (addRightArm) DoControl(true, true); + if (addRightLeg) DoControl(true, false); + if (addLeftLeg) DoControl(false, false); + if (addLeftArm) DoControl(false, true); + + + if (useSameParameter) + { + string newBaseParameter = "Mixed"; + + if (avatar.expressionParameters) + newBaseParameter = GenerateUniqueString(newBaseParameter, s => avatar.expressionParameters.parameters.All(p => p.name != s)); + AddControl(myMask, customTree, $"LC/{newBaseParameter}"); + } + + Debug.Log("[Limb Control] Added Limb Control successfully!"); + + AddTrackingJump: + if (addTracking) AddTracking(myLocomotion); + } + public static void AddControl(AvatarMask mask, BlendTree tree, string baseparameter) + { + var tempParameter = $"{baseparameter}/Temp"; + var toggleParameter = $"{baseparameter}/Toggle"; + var treeParameter1 = $"{baseparameter}/X"; + var treeParameter2 = $"{baseparameter}/Y"; + avatar.customExpressions = true; + avatar.customizeAnimationLayers = true; + + VRCExpressionsMenu myMenu = avatar.expressionsMenu; + VRCExpressionParameters myParams = avatar.expressionParameters; + + if (!myMenu) + myMenu = ReplaceMenu(avatar, folderPath); + + if (!myParams) + myParams = ReplaceParameters(avatar, folderPath); + + + + VRCExpressionsMenu mainMenu = myMenu.controls.Find(c => c.name == "Limb Control" && c.type == VRCExpressionsMenu.Control.ControlType.SubMenu && c.subMenu)?.subMenu; + + if (mainMenu == null) + { + mainMenu = CreateInstance(); + mainMenu.controls = new List(); + AddControls(myMenu, new List() { new VRCExpressionsMenu.Control() { name = "Limb Control", type = VRCExpressionsMenu.Control.ControlType.SubMenu, subMenu = mainMenu, icon = Resources.Load("Icons/LC_HandWaving") } }); + AssetDatabase.CreateAsset(mainMenu, folderPath + "/LC_LimbControlMainMenu.asset"); + } + + VRCExpressionsMenu mySubmenu = Resources.Load("LC_LimbControlMenu"); + var subMenuPath = $"{folderPath}/{ValidateName(baseparameter)} Control Menu.asset"; + mySubmenu = CopyAssetAndReturn(mySubmenu, subMenuPath); + + mySubmenu.controls[0].value = 1; + mySubmenu.controls[0].parameter = new VRCExpressionsMenu.Control.Parameter() { name = toggleParameter }; + + VRCExpressionsMenu.Control.Parameter[] subParameters = new VRCExpressionsMenu.Control.Parameter[2]; + subParameters[0] = new VRCExpressionsMenu.Control.Parameter { name = treeParameter1 }; + subParameters[1] = new VRCExpressionsMenu.Control.Parameter() { name = treeParameter2 }; + + mySubmenu.controls[1].parameter = new VRCExpressionsMenu.Control.Parameter(){name = tempParameter }; + mySubmenu.controls[1].subParameters = subParameters; + + EditorUtility.SetDirty(mySubmenu); + + var indStart = toggleParameter.IndexOf('/')+1; + var indEnd = toggleParameter.LastIndexOf('/'); + if (indStart == indEnd) + indStart = 0; + if (indEnd == 0) + indEnd = toggleParameter.Length; + + var midName = toggleParameter.Substring(indStart, indEnd - indStart); + var finalName = midName.Aggregate(string.Empty, (result, next) => + { + if (char.IsUpper(next) && result.Length > 0) + result += ' '; + return result + next; + }); + + VRCExpressionsMenu.Control newControl = new VRCExpressionsMenu.Control + { + type = VRCExpressionsMenu.Control.ControlType.SubMenu, + name = finalName, + subMenu = mySubmenu + + }; + AddControls(mainMenu, new List() { newControl }); + + AddParameters(myParams, new List() { + new VRCExpressionParameters.Parameter(){ name = tempParameter, saved = false, valueType = VRCExpressionParameters.ValueType.Bool, networkSynced = false, defaultValue = 0 }, + new VRCExpressionParameters.Parameter(){ name = toggleParameter,saved = true, valueType = VRCExpressionParameters.ValueType.Bool, networkSynced = false, defaultValue = 0 }, + new VRCExpressionParameters.Parameter(){ name = treeParameter1, saved = true, valueType = VRCExpressionParameters.ValueType.Float, networkSynced = false, defaultValue = 0 }, + new VRCExpressionParameters.Parameter(){ name = treeParameter2, saved = true, valueType = VRCExpressionParameters.ValueType.Float, networkSynced = false, defaultValue = 0 } + }); + + BlendTree myTree = CopyAssetAndReturn(tree, AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + tree.name + ".blendtree")); + myTree.blendParameter = treeParameter1; + myTree.blendParameterY = treeParameter2; + EditorUtility.SetDirty(myTree); + + void AddLimbLayer(AnimatorController controller, bool setTracking) + { + ReadyParameter(controller, tempParameter, AnimatorControllerParameterType.Bool); + ReadyParameter(controller, toggleParameter, AnimatorControllerParameterType.Bool); + ReadyParameter(controller, treeParameter1, AnimatorControllerParameterType.Float); + ReadyParameter(controller, treeParameter2, AnimatorControllerParameterType.Float); + + AnimatorControllerLayer newLayer = AddLayer(controller, toggleParameter, 1, mask); + AddTag(newLayer, LAYER_TAG); + + AnimatorState firstState = newLayer.stateMachine.AddState("Idle", new Vector3(30, 160)); + AnimatorState secondState = newLayer.stateMachine.AddState("Control", new Vector3(30, 210)); + + firstState.motion = emptyClip; + secondState.motion = myTree; + + if (setTracking) + { + VRCAnimatorTrackingControl trackingControl = firstState.AddStateMachineBehaviour(); + VRCAnimatorTrackingControl trackingControl2 = secondState.AddStateMachineBehaviour(); + + if (mask.GetHumanoidBodyPartActive(AvatarMaskBodyPart.Head)) + { + trackingControl.trackingHead = VRCAnimatorTrackingControl.TrackingType.Tracking; + trackingControl2.trackingHead = VRCAnimatorTrackingControl.TrackingType.Animation; + } + + if (mask.GetHumanoidBodyPartActive(AvatarMaskBodyPart.Body)) + { + trackingControl.trackingHip = VRCAnimatorTrackingControl.TrackingType.Tracking; + trackingControl2.trackingHip = VRCAnimatorTrackingControl.TrackingType.Animation; + } + + if (mask.GetHumanoidBodyPartActive(AvatarMaskBodyPart.RightArm)) + { + trackingControl.trackingRightHand = VRCAnimatorTrackingControl.TrackingType.Tracking; + trackingControl2.trackingRightHand = VRCAnimatorTrackingControl.TrackingType.Animation; + } + + if (mask.GetHumanoidBodyPartActive(AvatarMaskBodyPart.LeftArm)) + { + trackingControl.trackingLeftHand = VRCAnimatorTrackingControl.TrackingType.Tracking; + trackingControl2.trackingLeftHand = VRCAnimatorTrackingControl.TrackingType.Animation; + } + + if (mask.GetHumanoidBodyPartActive(AvatarMaskBodyPart.RightFingers)) + { + trackingControl.trackingRightFingers = VRCAnimatorTrackingControl.TrackingType.Tracking; + trackingControl2.trackingRightFingers = VRCAnimatorTrackingControl.TrackingType.Animation; + } + + if (mask.GetHumanoidBodyPartActive(AvatarMaskBodyPart.LeftFingers)) + { + trackingControl.trackingLeftFingers = VRCAnimatorTrackingControl.TrackingType.Tracking; + trackingControl2.trackingLeftFingers = VRCAnimatorTrackingControl.TrackingType.Animation; + } + + if (mask.GetHumanoidBodyPartActive(AvatarMaskBodyPart.RightLeg)) + { + trackingControl.trackingRightFoot = VRCAnimatorTrackingControl.TrackingType.Tracking; + trackingControl2.trackingRightFoot = VRCAnimatorTrackingControl.TrackingType.Animation; + } + + if (mask.GetHumanoidBodyPartActive(AvatarMaskBodyPart.LeftLeg)) + { + trackingControl.trackingLeftFoot = VRCAnimatorTrackingControl.TrackingType.Tracking; + trackingControl2.trackingLeftFoot = VRCAnimatorTrackingControl.TrackingType.Animation; + } + + } + + var t = firstState.AddTransition(secondState, false); + t.duration = 0.15f; + t.AddCondition(AnimatorConditionMode.If, 0, toggleParameter); + + t = firstState.AddTransition(secondState, false); + t.duration = 0.15f; + t.AddCondition(AnimatorConditionMode.If, 0, tempParameter); + + t = secondState.AddTransition(firstState, false); + t.duration = 0.15f; + t.AddCondition(AnimatorConditionMode.IfNot, 0, toggleParameter); + t.AddCondition(AnimatorConditionMode.IfNot, 0, tempParameter); + + } + + + AnimatorController myLocomotion = GetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Base); + AddLimbLayer(myLocomotion, true); + + AnimatorController myAction = GetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Action); + AddLimbLayer(myAction, false); + + AnimatorController mySitting = GetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Sitting); + AddLimbLayer(mySitting, false); + + EditorUtility.SetDirty(avatar); + EditorSceneManager.MarkAllScenesDirty(); + } + + private static void AddTracking(AnimatorController c) + { + ReadyParameter(c, "LC/Tracking Control", AnimatorControllerParameterType.Int); + + VRCExpressionsMenu myMenu = avatar.expressionsMenu; + VRCExpressionParameters myParams = avatar.expressionParameters; + + if (!myMenu) + myMenu = ReplaceMenu(avatar, folderPath); + + if (!myParams) + myParams = ReplaceParameters(avatar, folderPath); + + VRCExpressionsMenu trackingMenu = Resources.Load("LC_TrackingMainMenu"); + trackingMenu = ReplaceMenu(trackingMenu, folderPath, true); + + AddControls(myMenu, new List() { new VRCExpressionsMenu.Control() {name="Tracking Control", type= VRCExpressionsMenu.Control.ControlType.SubMenu, subMenu = trackingMenu, icon = Resources.Load("Icons/LC_RnR") } }); + AddParameters(myParams, new List() { new VRCExpressionParameters.Parameter() { name = "LC/Tracking Control", saved = false, valueType = VRCExpressionParameters.ValueType.Int, networkSynced = false } }); + + AnimatorControllerLayer newLayer = AddLayer(c, "LC/Tracking Control", 0); + AddTag(newLayer, LAYER_TAG); + + AnimatorStateMachine m = newLayer.stateMachine; + AnimatorState HoldState = m.AddState("Hold", new Vector3(260, 120)); + HoldState.motion = emptyClip; + + m.exitPosition = new Vector3(760, 120); + Vector3 startIndex = new Vector3(510, -140); + Vector3 GetNextPos() + { + startIndex += new Vector3(0, 40); + return startIndex; + } + + void AddTrackingState(string propertyName,string partName, int toggleValue) + { + AnimatorState enableState = m.AddState(partName + " On", GetNextPos()); + AnimatorState disableState = m.AddState(partName + " Off", GetNextPos()); + enableState.motion = disableState.motion = emptyClip; + + InstantTransition(HoldState, enableState).AddCondition(AnimatorConditionMode.Equals, toggleValue, "LC/Tracking Control"); + InstantExitTransition(enableState).AddCondition(AnimatorConditionMode.NotEqual, toggleValue, "LC/Tracking Control"); + + InstantTransition(HoldState, disableState).AddCondition(AnimatorConditionMode.Equals, toggleValue+1, "LC/Tracking Control"); + InstantExitTransition(disableState).AddCondition(AnimatorConditionMode.NotEqual, toggleValue+1, "LC/Tracking Control"); + + void setSObject(SerializedObject o, int v) + { + o.FindProperty(propertyName).enumValueIndex = v; + o.ApplyModifiedPropertiesWithoutUndo(); + } + + setSObject(new SerializedObject(enableState.AddStateMachineBehaviour()), 1); + setSObject(new SerializedObject(disableState.AddStateMachineBehaviour()), 2); + } + + AddTrackingState("trackingHead", "Head", 254); + AddTrackingState("trackingRightHand", "Right Hand", 252); + AddTrackingState("trackingLeftHand", "Left Hand", 250); + AddTrackingState("trackingHip", "Hip", 248); + AddTrackingState("trackingRightFoot", "Right Foot", 246); + AddTrackingState("trackingLeftFoot", "Left Foot", 244); + + Debug.Log("[Limb Control] Added Tracking Control successfully!"); + } + + private static void RemoveLimbControl() + { + Debug.Log("Removing Limb Control from " + avatar.gameObject.name); + void RemoveControl(AnimatorController c) + { + if (!c) + return; + for (int i=c.layers.Length-1;i>=0;i--) + { + if (HasTag(c.layers[i], LAYER_TAG)) + { + Debug.Log("Removed Layer " + c.layers[i].name+" from "+c.name); + c.RemoveLayer(i); + } + } + for (int i=c.parameters.Length-1;i>=0;i--) + { + if (c.parameters[i].name.StartsWith("LC/")) + { + Debug.Log("Removed Parameter " + c.parameters[i].name + " from " + c.name); + c.RemoveParameter(i); + } + } + } + RemoveControl(GetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Base)); + RemoveControl(GetPlayableLayer(avatar,VRCAvatarDescriptor.AnimLayerType.Action)); + RemoveControl(GetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Sitting)); + + if (avatar.expressionsMenu) + { + for (int i = avatar.expressionsMenu.controls.Count - 1; i >= 0; i--) + { + if (avatar.expressionsMenu.controls[i].name == "Limb Control") + { + Debug.Log("Removed Limb Control Submenu from Expression Menu"); + avatar.expressionsMenu.controls.RemoveAt(i); + EditorUtility.SetDirty(avatar.expressionsMenu); + continue; + } + if (avatar.expressionsMenu.controls[i].name == "Tracking Control") + { + Debug.Log("Removed Tracking Control Submenu from Expression Menu"); + avatar.expressionsMenu.controls.RemoveAt(i); + EditorUtility.SetDirty(avatar.expressionsMenu); + continue; + } + } + } + if (avatar.expressionParameters) + { + for (int i=avatar.expressionParameters.parameters.Length-1;i>=0;i--) + { + if (avatar.expressionParameters.parameters[i].name.StartsWith("LC/")) + { + Debug.Log("Removed " + avatar.expressionParameters.parameters[i].name + " From Expression Parameters"); + ArrayUtility.RemoveAt(ref avatar.expressionParameters.parameters, i); + } + } + EditorUtility.SetDirty(avatar.expressionParameters); + } + + Debug.Log("Finished removing Limb Control!"); + } + + + + private void OnEnable() + { + if (avatar == null) avatar = FindObjectOfType(); + + assetPath = EditorPrefs.GetString("LimbControlPath", "Assets/DreadScripts/LimbControl/Generated Assets"); + GetBaseTree(); + } + + private static void GetBaseTree() + { + if (!customTree || !useCustomTree) + customTree = Resources.Load("Animations/LC_NormalBlendTree"); + } + + #region GUI Methods + + private static void DrawColoredButton(ref bool toggle, string label) => DrawColoredButton(ref toggle, new GUIContent(label)); + private static void DrawColoredButton(ref bool toggle, GUIContent label) + { + using (new BGColoredScope(toggle)) + toggle = GUILayout.Toggle(toggle, label, EditorStyles.toolbarButton); + } + + private static void DrawTitle(string title, string tooltip = "") + { + using (new GUILayout.HorizontalScope("in bigtitle")) + { + bool hasTooltip = !string.IsNullOrEmpty(tooltip); + if (hasTooltip) GUILayout.Space(21); + GUILayout.Label(title, Content.styleTitle); + if (hasTooltip) GUILayout.Label(new GUIContent(Content.iconHelp){tooltip = tooltip}, GUILayout.Width(18)); + } + } + private static void Credit() + { + using (new GUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + if (GUILayout.Button("Made By Dreadrith#3238", "boldlabel")) + Application.OpenURL("https://linktr.ee/Dreadrith"); + } + } + #endregion + + #region DSHelper Methods + + private static AnimatorController GetPlayableLayer(VRCAvatarDescriptor avi, VRCAvatarDescriptor.AnimLayerType type) + { + for (var i = 0; i < avi.baseAnimationLayers.Length; i++) + if (avi.baseAnimationLayers[i].type == type) + return GetController(avi.baseAnimationLayers[i].animatorController); + + for (var i = 0; i < avi.specialAnimationLayers.Length; i++) + if (avi.specialAnimationLayers[i].type == type) + return GetController(avi.specialAnimationLayers[i].animatorController); + + return null; + } + private static bool SetPlayableLayer(VRCAvatarDescriptor avi, VRCAvatarDescriptor.AnimLayerType type,RuntimeAnimatorController ani) + { + for (var i = 0; i < avi.baseAnimationLayers.Length; i++) + if (avi.baseAnimationLayers[i].type == type) + { + if (ani) + avi.customizeAnimationLayers = true; + avi.baseAnimationLayers[i].isDefault = !ani; + avi.baseAnimationLayers[i].animatorController = ani; + EditorUtility.SetDirty(avi); + return true; + } + + for (var i = 0; i < avi.specialAnimationLayers.Length; i++) + if (avi.specialAnimationLayers[i].type == type) + { + if (ani) + avi.customizeAnimationLayers = true; + avi.specialAnimationLayers[i].isDefault = !ani; + avi.specialAnimationLayers[i].animatorController = ani; + EditorUtility.SetDirty(avi); + return true; + } + + + return false; + } + private static AnimatorController GetController(RuntimeAnimatorController controller) + { + return AssetDatabase.LoadAssetAtPath(AssetDatabase.GetAssetPath(controller)); + } + + private static AnimatorStateTransition InstantTransition(AnimatorState state, AnimatorState destination) + { + var t = state.AddTransition(destination, false); + t.duration = 0; + return t; + } + private static AnimatorStateTransition InstantExitTransition(AnimatorState state) + { + var t = state.AddExitTransition(false); + t.duration = 0; + return t; + } + + private static void AddTag(AnimatorControllerLayer layer, string tag) + { + if (HasTag(layer, tag)) return; + + var t = layer.stateMachine.AddAnyStateTransition((AnimatorState)null); + t.isExit = true; + t.mute = true; + t.name = tag; + } + private static bool HasTag(AnimatorControllerLayer layer, string tag) + { + return layer.stateMachine.anyStateTransitions.Any(t => t.isExit && t.mute && t.name == tag); + } + + private static AnimatorControllerLayer AddLayer(AnimatorController controller, string name, float defaultWeight, AvatarMask mask = null) + { + var newLayer = new AnimatorControllerLayer + { + name = name, + defaultWeight = defaultWeight, + avatarMask = mask, + stateMachine = new AnimatorStateMachine + { + name = name, + hideFlags = HideFlags.HideInHierarchy, + entryPosition = new Vector3(50, 120), + anyStatePosition = new Vector3(50, 80), + exitPosition = new Vector3(50, 40), + }, + }; + AssetDatabase.AddObjectToAsset(newLayer.stateMachine, controller); + controller.AddLayer(newLayer); + return newLayer; + } + private static void ReadyParameter(AnimatorController controller, string parameter, AnimatorControllerParameterType type) + { + if (!GetParameter(controller, parameter, out _)) + controller.AddParameter(parameter, type); + } + private static bool GetParameter(AnimatorController controller, string parameter, out int index) + { + index = -1; + for (int i = 0; i < controller.parameters.Length; i++) + { + if (controller.parameters[i].name == parameter) + { + index = i; + return true; + } + } + return false; + } + + + + private static void ReadyPath(string folderPath) + { + if (!Directory.Exists(folderPath)) + { + Directory.CreateDirectory(folderPath); + AssetDatabase.ImportAsset(folderPath); + } + } + + internal static string ValidatePath(string path) + { + string regexFolderReplace = Regex.Escape(new string(Path.GetInvalidPathChars())); + + path = path.Replace('\\', '/'); + if (path.IndexOf('/') > 0) + path = string.Join("/", path.Split('/').Select(s => Regex.Replace(s, $@"[{regexFolderReplace}]", "-"))); + + return path; + } + internal static string ValidateName(string name) + { + string regexFileReplace = Regex.Escape(new string(Path.GetInvalidFileNameChars())); + return string.IsNullOrEmpty(name) ? "Unnamed" : Regex.Replace(name, $@"[{regexFileReplace}]", "-"); + } + + + private static T CopyAssetAndReturn(string path, string newpath) where T : Object + { + if (path != newpath) + AssetDatabase.CopyAsset(path, newpath); + return AssetDatabase.LoadAssetAtPath(newpath); + + } + + internal static T CopyAssetAndReturn(T obj, string newPath) where T : Object + { + string assetPath = AssetDatabase.GetAssetPath(obj); + Object mainAsset = AssetDatabase.LoadMainAssetAtPath(assetPath); + + if (!mainAsset) return null; + if (obj != mainAsset) + { + T newAsset = Object.Instantiate(obj); + AssetDatabase.CreateAsset(newAsset, newPath); + return newAsset; + } + + AssetDatabase.CopyAsset(assetPath, newPath); + return AssetDatabase.LoadAssetAtPath(newPath); + } + + + private static VRCExpressionParameters ReplaceParameters(VRCAvatarDescriptor avi, string folderPath) + { + avi.customExpressions = true; + if (avi.expressionParameters) + { + avi.expressionParameters = CopyAssetAndReturn(avi.expressionParameters, AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + avi.expressionParameters.name + ".asset")); + return avi.expressionParameters; + } + + var assetPath = folderPath + "/" + avi.gameObject.name + " Parameters.asset"; + var newParameters = ScriptableObject.CreateInstance(); + newParameters.parameters = Array.Empty(); + AssetDatabase.CreateAsset(newParameters, AssetDatabase.GenerateUniqueAssetPath(assetPath)); + AssetDatabase.ImportAsset(assetPath); + avi.expressionParameters = newParameters; + avi.customExpressions = true; + return newParameters; + } + + private static VRCExpressionsMenu ReplaceMenu(VRCExpressionsMenu menu, string folderPath, bool deep = true, Dictionary copyDict = null) + { + VRCExpressionsMenu newMenu; + if (!menu) + return null; + if (copyDict == null) + copyDict = new Dictionary(); + + if (copyDict.ContainsKey(menu)) + newMenu = copyDict[menu]; + else + { + newMenu = CopyAssetAndReturn(menu, AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + menu.name + ".asset")); + copyDict.Add(menu, newMenu); + if (!deep) return newMenu; + + foreach (var c in newMenu.controls.Where(c => c.type == VRCExpressionsMenu.Control.ControlType.SubMenu && c.subMenu != null)) + { + c.subMenu = ReplaceMenu(c.subMenu, folderPath, true, copyDict); + } + + EditorUtility.SetDirty(newMenu); + } + return newMenu; + } + + private static VRCExpressionsMenu ReplaceMenu(VRCAvatarDescriptor avi, string folderPath, bool deep = false) + { + avi.customExpressions = true; + if (avi.expressionsMenu) + { + avi.expressionsMenu = ReplaceMenu(avi.expressionsMenu, folderPath, deep); + return avi.expressionsMenu; + } + + + var newMenu = ScriptableObject.CreateInstance(); + newMenu.controls = new List(); + AssetDatabase.CreateAsset(newMenu, AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + avi.gameObject.name + " Menu.asset")); + avi.expressionsMenu = newMenu; + avi.customExpressions = true; + return newMenu; + + } + + private static void AddControls(VRCExpressionsMenu target, List newCons) + { + foreach (var c in newCons) + target.controls.Add(c); + + EditorUtility.SetDirty(target); + } + + private static void AddParameters(VRCExpressionParameters target, List newParams) + { + target.parameters = target.parameters == null || target.parameters.Length <= 0 ? newParams.ToArray() : target.parameters.Concat(newParams).ToArray(); + + EditorUtility.SetDirty(target); + AssetDatabase.WriteImportSettingsIfDirty(AssetDatabase.GetAssetPath(target)); + } + private static string GenerateUniqueString(string s, System.Func check) + { + if (check(s)) + return s; + + int suffix = 0; + + int.TryParse(s.Substring(s.Length - 2, 2), out int d); + if (d >= 0) + suffix = d; + if (suffix > 0) s = suffix > 9 ? s.Substring(0, s.Length - 2) : s.Substring(0, s.Length - 1); + + s = s.Trim(); + + suffix++; + + string newString = s + " " + suffix; + while (!check(newString)) + { + suffix++; + newString = s + " " + suffix; + } + + return newString; + } + #endregion + + internal static class CustomGUI + { + internal static class Content + { + internal static GUIContent iconTrash = new GUIContent(EditorGUIUtility.IconContent("TreeEditor.Trash")) { tooltip = "Remove Limb Control from Avatar" }; + internal static GUIContent iconError = new GUIContent(EditorGUIUtility.IconContent("console.warnicon.sml")) { tooltip = "Not enough memory available in Expression Parameters!" }; + internal static GUIContent iconHelp = new GUIContent(EditorGUIUtility.IconContent("UnityEditor.InspectorWindow")); + + internal static GUIContent + customTreeContent = new GUIContent("Use Custom BlendTree", "Set a custom BlendTree to change the way the limbs move"), + avatarContent = new GUIContent("Avatar Descriptor", "Drag and Drop your avatar here."), + trackingContent = new GUIContent("Add Tracking Control", "Add a SubMenu that allows the individual Enable/Disable of limb tracking"), + sameControlContent = new GUIContent("Use Same Control", "Selected limbs will be controlled together using the same single control"); + + internal static GUIStyle styleTitle = new GUIStyle(GUI.skin.label) {alignment = TextAnchor.MiddleCenter, fontSize = 14, fontStyle = FontStyle.Bold}; + internal static GUIStyle comicallyLargeButton = new GUIStyle(GUI.skin.button) {fontSize = 16, fontStyle = FontStyle.Bold}; + } + + internal sealed class BGColoredScope : System.IDisposable + { + private readonly Color ogColor; + public BGColoredScope(Color setColor) + { + ogColor = GUI.backgroundColor; + GUI.backgroundColor = setColor; + } + + public BGColoredScope(bool isActive) + { + ogColor = GUI.backgroundColor; + GUI.backgroundColor = isActive ? Color.green : Color.grey; + } + + public void Dispose() => GUI.backgroundColor = ogColor; + + } + + internal static string AssetFolderPath(string variable, string title, string prefKey) + { + using (new GUILayout.HorizontalScope()) + { + using (new EditorGUI.DisabledScope(true)) + EditorGUILayout.TextField(title, variable); + + if (GUILayout.Button("...", GUILayout.Width(30))) + { + var dummyPath = EditorUtility.OpenFolderPanel(title, AssetDatabase.IsValidFolder(variable) ? variable : "Assets", string.Empty); + if (string.IsNullOrEmpty(dummyPath)) + return variable; + string newPath = FileUtil.GetProjectRelativePath(dummyPath); + + if (!newPath.StartsWith("Assets")) + { + Debug.LogWarning("New Path must be a folder within Assets!"); + return variable; + } + + newPath = ValidatePath(newPath); + variable = newPath; + EditorPrefs.SetString(prefKey, variable); + } + } + + return variable; + } + + internal static void DrawSeparator(int thickness = 2, int padding = 10) + { + Rect r = EditorGUILayout.GetControlRect(GUILayout.Height(thickness + padding)); + r.height = thickness; + r.y += padding / 2f; + r.x -= 2; + r.width += 6; + ColorUtility.TryParseHtmlString(EditorGUIUtility.isProSkin ? "#595959" : "#858585", out Color lineColor); + EditorGUI.DrawRect(r, lineColor); + } + } + } +} diff --git a/LimbControl/Editor/LimbControl.cs.meta b/LimbControl/Editor/LimbControl.cs.meta new file mode 100644 index 0000000..e8628cd --- /dev/null +++ b/LimbControl/Editor/LimbControl.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 546c21cd2ef473f469fc09e9f17df7be +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Editor/com.dreadscripts.limbcontrol.Editor.asmdef b/LimbControl/Editor/com.dreadscripts.limbcontrol.Editor.asmdef new file mode 100644 index 0000000..fe732b4 --- /dev/null +++ b/LimbControl/Editor/com.dreadscripts.limbcontrol.Editor.asmdef @@ -0,0 +1,15 @@ +{ + "name": "com.dreadscripts.limbcontrol.Editor", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/LimbControl/Editor/com.dreadscripts.limbcontrol.Editor.asmdef.meta b/LimbControl/Editor/com.dreadscripts.limbcontrol.Editor.asmdef.meta new file mode 100644 index 0000000..286bd6f --- /dev/null +++ b/LimbControl/Editor/com.dreadscripts.limbcontrol.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f3eaebd95cc4e8a4cb3f2daeb810aaef +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/LICENSE.md b/LimbControl/LICENSE.md new file mode 100644 index 0000000..e68260d --- /dev/null +++ b/LimbControl/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Dreadrith + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/LimbControl/LICENSE.md.meta b/LimbControl/LICENSE.md.meta new file mode 100644 index 0000000..aaef59a --- /dev/null +++ b/LimbControl/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8fbe7850af5ea0d42969e2bac72e238c +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/README.md b/LimbControl/README.md new file mode 100644 index 0000000..ded8c8d --- /dev/null +++ b/LimbControl/README.md @@ -0,0 +1,14 @@ +Showcase | Setup +:-------------------------:|:-------------------------: +[![Limb Control](https://img.youtube.com/vi/eJMprLDaUJI/0.jpg)](https://youtu.be/eJMprLDaUJI) | [![Limb Setup](https://img.youtube.com/vi/BbhiZaY9-Ns/0.jpg)](https://youtu.be/BbhiZaY9-Ns) + +# Limb Control + +Feature Release +-------------------- +Limb Control allows you to control your limbs through Puppet Control with a few clicks. +Desktop users, you've got power now! Half body users, Kick those people that say you dun got legs! + +Using "Same Control" makes the selected limbs be controlled using the same Puppet control. +You can also set your own BlendTree to move your limbs the way you want them to! +Besides that, you can also add Tracking Control which allows you toggle individual parts' tracking. diff --git a/LimbControl/README.md.meta b/LimbControl/README.md.meta new file mode 100644 index 0000000..b28142f --- /dev/null +++ b/LimbControl/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e046f0c7ae4ff704db06aa9ec88a8283 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources.meta b/LimbControl/Resources.meta new file mode 100644 index 0000000..5efa70d --- /dev/null +++ b/LimbControl/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9e976a03ce46a1c47a66ef4d37694f03 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/Animations.meta b/LimbControl/Resources/Animations.meta new file mode 100644 index 0000000..ac08f32 --- /dev/null +++ b/LimbControl/Resources/Animations.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bf73b754ebe397541abc7a18767d78bd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/Animations/LC_BaseLocomotion.controller b/LimbControl/Resources/Animations/LC_BaseLocomotion.controller new file mode 100644 index 0000000..ed1ad76 --- /dev/null +++ b/LimbControl/Resources/Animations/LC_BaseLocomotion.controller @@ -0,0 +1,410 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LC_BaseLocomotion + serializedVersion: 5 + m_AnimatorParameters: + - m_Name: VelocityX + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: VelocityY + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: VelocityZ + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: AngularY + m_Type: 1 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Grounded + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Upright + m_Type: 1 + m_DefaultFloat: 1 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: Seated + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: AFK + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: TrackingType + m_Type: 3 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Locomotion + m_StateMachine: {fileID: 110700000} + 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 &110700000 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Locomotion + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 1102577115747224770} + m_Position: {x: 324, y: 192, z: 0} + - serializedVersion: 1 + m_State: {fileID: 1102611737556091544} + m_Position: {x: 324, y: -144, z: 0} + - serializedVersion: 1 + m_State: {fileID: 1102781996838665776} + m_Position: {x: 324, y: 36, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 24, y: -60, z: 0} + m_EntryPosition: {x: 24, y: -144, z: 0} + m_ExitPosition: {x: 1776, y: -252, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 1102611737556091544} +--- !u!114 &114022255662586678 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: b658310f3202fc64aac64aa6e603b79a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &114161388611585310 +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: 292304312, guid: 661092b4961be7145bfbe56e1e62337b, type: 3} + m_Name: + m_EditorClassIdentifier: + trackingHead: 2 + trackingLeftHand: 1 + trackingRightHand: 1 + trackingHip: 2 + trackingLeftFoot: 2 + trackingRightFoot: 2 + trackingLeftFingers: 0 + trackingRightFingers: 0 + trackingEyes: 0 + debugString: +--- !u!114 &114186363907183432 +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: 292304312, guid: 661092b4961be7145bfbe56e1e62337b, type: 3} + m_Name: + m_EditorClassIdentifier: + trackingHead: 1 + trackingLeftHand: 1 + trackingRightHand: 1 + trackingHip: 2 + trackingLeftFoot: 2 + trackingRightFoot: 2 + trackingLeftFingers: 0 + trackingRightFingers: 0 + trackingEyes: 0 + debugString: +--- !u!114 &114389411411105514 +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: 292304312, guid: 661092b4961be7145bfbe56e1e62337b, type: 3} + m_Name: + m_EditorClassIdentifier: + trackingHead: 2 + trackingLeftHand: 2 + trackingRightHand: 2 + trackingHip: 2 + trackingLeftFoot: 2 + trackingRightFoot: 2 + trackingLeftFingers: 0 + trackingRightFingers: 0 + trackingEyes: 0 + debugString: +--- !u!114 &114592321216657706 +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: 292304312, guid: 661092b4961be7145bfbe56e1e62337b, type: 3} + m_Name: + m_EditorClassIdentifier: + trackingHead: 1 + trackingLeftHand: 1 + trackingRightHand: 1 + trackingHip: 1 + trackingLeftFoot: 1 + trackingRightFoot: 1 + trackingLeftFingers: 0 + trackingRightFingers: 0 + trackingEyes: 0 + debugString: +--- !u!114 &114860979276583244 +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: 292304312, guid: 661092b4961be7145bfbe56e1e62337b, type: 3} + m_Name: + m_EditorClassIdentifier: + trackingHead: 1 + trackingLeftHand: 1 + trackingRightHand: 1 + trackingHip: 1 + trackingLeftFoot: 1 + trackingRightFoot: 1 + trackingLeftFingers: 0 + trackingRightFingers: 0 + trackingEyes: 0 + debugString: +--- !u!1101 &1101015495729127544 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 4 + m_ConditionEvent: Upright + m_EventTreshold: 0.41 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102577115747224770} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.5 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101069751804321926 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 3 + m_ConditionEvent: Upright + m_EventTreshold: 0.7 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102611737556091544} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.2 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101267269745335784 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 3 + m_ConditionEvent: Upright + m_EventTreshold: 0.43 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102781996838665776} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.5 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101557312258220082 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 4 + m_ConditionEvent: Upright + m_EventTreshold: 0.68 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102781996838665776} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.5 + m_TransitionOffset: 0 + m_ExitTime: 0 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &1102577115747224770 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Prone + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1101267269745335784} + 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: 20600000, guid: 667633d86ecc9c0408e81156d77d9a83, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &1102611737556091544 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Standing + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1101557312258220082} + 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: 20600000, guid: b7ff0bc6ae31ce4458992fa6ce9f6897, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &1102781996838665776 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Crouching + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1101015495729127544} + - {fileID: 1101069751804321926} + 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: 20600000, guid: 1fe93258fe621c344be8713451c5104f, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: diff --git a/LimbControl/Resources/Animations/LC_BaseLocomotion.controller.meta b/LimbControl/Resources/Animations/LC_BaseLocomotion.controller.meta new file mode 100644 index 0000000..925ef2e --- /dev/null +++ b/LimbControl/Resources/Animations/LC_BaseLocomotion.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: debbf9a84fe0fd34ba7d73b6789e13c6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/Animations/LC_BaseSitting.controller b/LimbControl/Resources/Animations/LC_BaseSitting.controller new file mode 100644 index 0000000..6f3df23 --- /dev/null +++ b/LimbControl/Resources/Animations/LC_BaseSitting.controller @@ -0,0 +1,793 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LC_BaseSitting + serializedVersion: 5 + m_AnimatorParameters: + - m_Name: Seated + m_Type: 4 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + - m_Name: AvatarVersion + m_Type: 3 + m_DefaultFloat: 0 + m_DefaultInt: 0 + m_DefaultBool: 0 + m_Controller: {fileID: 9100000} + m_AnimatorLayers: + - serializedVersion: 5 + m_Name: Sitting + m_StateMachine: {fileID: 1107681706011699772} + 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!114 &114008585218972436 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: 141706016, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} + m_Name: + m_EditorClassIdentifier: + enterPoseSpace: 0 + fixedDelay: 1 + delayTime: 0 + debugString: +--- !u!114 &114022255662586678 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: b658310f3202fc64aac64aa6e603b79a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &114147142126113726 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: b6969d45d27693b4fac97c750e8b2a3f, type: 3} + m_Name: + m_EditorClassIdentifier: + disableLocomotion: 0 + disableLeftHandTrack: 0 + disableRightHandTrack: 0 + disableHip3pt: 0 + disableAutoWalk: 0 + disableHipTrackFbt: 0 + disableRightFootTrack: 0 + disableLeftFootTrack: 0 + disableHeadTrack: 1 + disableAll: 0 + setViewPoint: 0 + delayTime: 0 + DebugName: SitDown +--- !u!114 &114147305607324078 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: b6969d45d27693b4fac97c750e8b2a3f, type: 3} + m_Name: + m_EditorClassIdentifier: + disableLocomotion: 0 + disableLeftHandTrack: 0 + disableRightHandTrack: 0 + disableHip3pt: 1 + disableAutoWalk: 1 + disableHipTrackFbt: 1 + disableRightFootTrack: 1 + disableLeftFootTrack: 1 + disableHeadTrack: 0 + disableAll: 1 + setViewPoint: 1 + delayTime: 0.21 + DebugName: SittingV2 +--- !u!114 &114159394839152826 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: 1658034022, guid: 661092b4961be7145bfbe56e1e62337b, type: 3} + m_Name: + m_EditorClassIdentifier: + setView: 1 + delayTime: 0.21 + debugString: + applied: 0 +--- !u!114 &114451134694153264 +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: 292304312, guid: 661092b4961be7145bfbe56e1e62337b, type: 3} + m_Name: + m_EditorClassIdentifier: + trackingHead: 1 + trackingLeftHand: 1 + trackingRightHand: 1 + trackingHip: 2 + trackingLeftFoot: 2 + trackingRightFoot: 2 + trackingLeftFingers: 0 + trackingRightFingers: 0 + trackingEyes: 0 + debugString: +--- !u!114 &114530651618753848 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: 82154fcd59363fa4aa5ceb410dfa0cc0, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &114532836840147502 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: 292304312, guid: 661092b4961be7145bfbe56e1e62337b, type: 3} + m_Name: + m_EditorClassIdentifier: + trackingHead: 2 + trackingLeftHand: 2 + trackingRightHand: 2 + trackingHip: 2 + trackingLeftFoot: 2 + trackingRightFoot: 2 + trackingLeftFingers: 0 + trackingRightFingers: 0 + trackingEyes: 0 + debugString: +--- !u!114 &114548198012850600 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: 1876060101, guid: 661092b4961be7145bfbe56e1e62337b, type: 3} + m_Name: + m_EditorClassIdentifier: + enterPoseSpace: 1 + fixedDelay: 1 + delayTime: 0.21 + debugString: +--- !u!114 &114681529930865528 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: b6969d45d27693b4fac97c750e8b2a3f, type: 3} + m_Name: + m_EditorClassIdentifier: + disableLocomotion: 0 + disableLeftHandTrack: 0 + disableRightHandTrack: 0 + disableHip3pt: 0 + disableAutoWalk: 0 + disableHipTrackFbt: 0 + disableRightFootTrack: 0 + disableLeftFootTrack: 0 + disableHeadTrack: 0 + disableAll: 0 + setViewPoint: 0 + delayTime: 0 + DebugName: GetUp +--- !u!114 &114710780056594672 +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: 141706016, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} + m_Name: + m_EditorClassIdentifier: + enterPoseSpace: 1 + fixedDelay: 1 + delayTime: 0.51 + debugString: +--- !u!114 &114768730629577578 +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: b6969d45d27693b4fac97c750e8b2a3f, type: 3} + m_Name: + m_EditorClassIdentifier: + disableLocomotion: 1 + disableLeftHandTrack: 0 + disableRightHandTrack: 0 + disableHip3pt: 1 + disableAutoWalk: 1 + disableHipTrackFbt: 1 + disableRightFootTrack: 1 + disableLeftFootTrack: 1 + disableHeadTrack: 0 + disableAll: 0 + setViewPoint: 1 + delayTime: 0 + DebugName: SitLoop +--- !u!114 &114803473576782264 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: -646210727, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} + m_Name: + m_EditorClassIdentifier: + trackingHead: 1 + trackingLeftHand: 1 + trackingRightHand: 1 + trackingHip: 1 + trackingLeftFoot: 1 + trackingRightFoot: 1 + trackingLeftFingers: 0 + trackingRightFingers: 0 + trackingEyes: 0 + trackingMouth: 0 + debugString: +--- !u!114 &114804564424020894 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: -646210727, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} + m_Name: + m_EditorClassIdentifier: + trackingHead: 1 + trackingLeftHand: 1 + trackingRightHand: 1 + trackingHip: 0 + trackingLeftFoot: 0 + trackingRightFoot: 0 + trackingLeftFingers: 0 + trackingRightFingers: 0 + trackingEyes: 0 + trackingMouth: 0 + debugString: +--- !u!114 &114820903061213562 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: 1658034022, guid: 661092b4961be7145bfbe56e1e62337b, type: 3} + m_Name: + m_EditorClassIdentifier: + setView: 0 + delayTime: 0 + debugString: + applied: 0 +--- !u!114 &114875782908073470 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: -646210727, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} + m_Name: + m_EditorClassIdentifier: + trackingHead: 2 + trackingLeftHand: 2 + trackingRightHand: 2 + trackingHip: 2 + trackingLeftFoot: 2 + trackingRightFoot: 2 + trackingLeftFingers: 1 + trackingRightFingers: 1 + trackingEyes: 1 + trackingMouth: 1 + debugString: +--- !u!114 &114897624052543500 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: b6969d45d27693b4fac97c750e8b2a3f, type: 3} + m_Name: + m_EditorClassIdentifier: + disableLocomotion: 0 + disableLeftHandTrack: 0 + disableRightHandTrack: 0 + disableHip3pt: 0 + disableAutoWalk: 0 + disableHipTrackFbt: 0 + disableRightFootTrack: 0 + disableLeftFootTrack: 0 + disableHeadTrack: 0 + disableAll: 0 + setViewPoint: 0 + delayTime: 0 + DebugName: RestoreTracking +--- !u!114 &114938240376977580 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: 1876060101, guid: 661092b4961be7145bfbe56e1e62337b, type: 3} + m_Name: + m_EditorClassIdentifier: + enterPoseSpace: 0 + fixedDelay: 1 + delayTime: 0 + debugString: +--- !u!114 &114977321789056526 +MonoBehaviour: + m_ObjectHideFlags: 1 + 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: 292304312, guid: 661092b4961be7145bfbe56e1e62337b, type: 3} + m_Name: + m_EditorClassIdentifier: + trackingHead: 1 + trackingLeftHand: 1 + trackingRightHand: 1 + trackingHip: 1 + trackingLeftFoot: 1 + trackingRightFoot: 1 + trackingLeftFingers: 0 + trackingRightFingers: 0 + trackingEyes: 0 + debugString: +--- !u!1101 &1101090626813726064 +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: 1102286624050114800} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.5 + m_TransitionOffset: 0 + m_ExitTime: 1 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101163680668272054 +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: 0} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 1 + serializedVersion: 3 + m_TransitionDuration: 0.2 + m_TransitionOffset: 0 + m_ExitTime: 1 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101181580859197468 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 4 + m_ConditionEvent: AvatarVersion + m_EventTreshold: 3 + - m_ConditionMode: 1 + m_ConditionEvent: Seated + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102753656758336688} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.2 + m_TransitionOffset: 0 + m_ExitTime: 1 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101459797441652132 +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: 1102398980834643402} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.2 + m_TransitionOffset: 0 + m_ExitTime: 1 + m_HasExitTime: 1 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101633722343387124 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 2 + m_ConditionEvent: Seated + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 0} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 1 + serializedVersion: 3 + m_TransitionDuration: 0.2 + m_TransitionOffset: 0 + m_ExitTime: 1 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101808702802395124 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 2 + m_ConditionEvent: Seated + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102320304955423218} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0 + m_TransitionOffset: 0 + m_ExitTime: 1 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &1101861624235594360 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 3 + m_ConditionEvent: AvatarVersion + m_EventTreshold: 2 + - m_ConditionMode: 1 + m_ConditionEvent: Seated + m_EventTreshold: 0 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1102695531508929512} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.2 + m_TransitionOffset: 0 + m_ExitTime: 0.75 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1102 &1102286624050114800 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: PoseSpace + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1101459797441652132} + m_StateMachineBehaviours: + - {fileID: 114710780056594672} + 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: 970f39cfa8501c741b71ad9eefeeb83d, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &1102320304955423218 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RestoreTracking + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1101163680668272054} + m_StateMachineBehaviours: + - {fileID: 114803473576782264} + - {fileID: 114008585218972436} + 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: 91e5518865a04934b82b8aba11398609, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &1102398980834643402 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: UpperBodyTracked + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1101808702802395124} + m_StateMachineBehaviours: + - {fileID: 114804564424020894} + 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: 970f39cfa8501c741b71ad9eefeeb83d, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &1102560665265379622 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: VersionSwitch + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1101861624235594360} + - {fileID: 1101181580859197468} + 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: 91e5518865a04934b82b8aba11398609, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &1102695531508929512 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DisableTracking + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1101090626813726064} + m_StateMachineBehaviours: + - {fileID: 114875782908073470} + 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: 91e5518865a04934b82b8aba11398609, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1102 &1102753656758336688 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: V2Seated + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: 1101633722343387124} + 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: 970f39cfa8501c741b71ad9eefeeb83d, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +--- !u!1107 &1107681706011699772 +AnimatorStateMachine: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Sitting + m_ChildStates: + - serializedVersion: 1 + m_State: {fileID: 1102695531508929512} + m_Position: {x: 204, y: 348, z: 0} + - serializedVersion: 1 + m_State: {fileID: 1102320304955423218} + m_Position: {x: 1104, y: 348, z: 0} + - serializedVersion: 1 + m_State: {fileID: 1102398980834643402} + m_Position: {x: 804, y: 348, z: 0} + - serializedVersion: 1 + m_State: {fileID: 1102286624050114800} + m_Position: {x: 504, y: 348, z: 0} + - serializedVersion: 1 + m_State: {fileID: 1102560665265379622} + m_Position: {x: 96, y: 204, z: 0} + - serializedVersion: 1 + m_State: {fileID: 1102753656758336688} + m_Position: {x: 612, y: 156, z: 0} + m_ChildStateMachines: [] + m_AnyStateTransitions: [] + m_EntryTransitions: [] + m_StateMachineTransitions: {} + m_StateMachineBehaviours: [] + m_AnyStatePosition: {x: 36, y: 24, z: 0} + m_EntryPosition: {x: 36, y: 108, z: 0} + m_ExitPosition: {x: 1428, y: 348, z: 0} + m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} + m_DefaultState: {fileID: 1102560665265379622} diff --git a/LimbControl/Resources/Animations/LC_BaseSitting.controller.meta b/LimbControl/Resources/Animations/LC_BaseSitting.controller.meta new file mode 100644 index 0000000..f996241 --- /dev/null +++ b/LimbControl/Resources/Animations/LC_BaseSitting.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b74b69dfec89e1446bfaa06ca5348385 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/Animations/LC_EmptyClip.anim b/LimbControl/Resources/Animations/LC_EmptyClip.anim new file mode 100644 index 0000000..55e6b1f --- /dev/null +++ b/LimbControl/Resources/Animations/LC_EmptyClip.anim @@ -0,0 +1,53 @@ +%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: LC_EmptyClip + 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: [] + 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: [] + 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: 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: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/LimbControl/Resources/Animations/LC_EmptyClip.anim.meta b/LimbControl/Resources/Animations/LC_EmptyClip.anim.meta new file mode 100644 index 0000000..8c9680e --- /dev/null +++ b/LimbControl/Resources/Animations/LC_EmptyClip.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b5662ee04470f6548a6eca8c22b5978f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/Animations/LC_NormalBlendTree.blendtree b/LimbControl/Resources/Animations/LC_NormalBlendTree.blendtree new file mode 100644 index 0000000..b042684 --- /dev/null +++ b/LimbControl/Resources/Animations/LC_NormalBlendTree.blendtree @@ -0,0 +1,89 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!206 &20600000 +BlendTree: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LC_NormalBlendTree + m_Childs: + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 957a79874e541c94fa0a22d5a3eb66d1, type: 2} + m_Threshold: 0 + m_Position: {x: 1, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: VelocityX + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: b3217facd16fc78479f2f5251ba1317b, type: 2} + m_Threshold: 1 + m_Position: {x: -1, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: VelocityX + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 0b880ee47bdaa5647b9d77b72fc6629d, type: 2} + m_Threshold: 2 + m_Position: {x: 0, y: 1} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: VelocityX + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: ef27a02dbff4e004ab901b486706bf52, type: 2} + m_Threshold: 3 + m_Position: {x: 0, y: -1} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: VelocityX + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 0624707b131b6a7489374321542a64fb, type: 2} + m_Threshold: 4 + m_Position: {x: 0, y: 0} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: VelocityX + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 2fd72ee6ef7304a48a7cdd3c00d6c995, type: 2} + m_Threshold: 5 + m_Position: {x: -0.707, y: -0.707} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: VelocityX + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: 3e83eeab1a70d58449135e6d00218565, type: 2} + m_Threshold: 6 + m_Position: {x: -0.707, y: 0.707} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: VelocityX + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: da26a77912f71474c8b219df419ed18c, type: 2} + m_Threshold: 7 + m_Position: {x: 0.707, y: 0.707} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: VelocityX + m_Mirror: 0 + - serializedVersion: 2 + m_Motion: {fileID: 7400000, guid: cf10e7275768e674b8b617f850413c64, type: 2} + m_Threshold: 8 + m_Position: {x: 0.707, y: -0.707} + m_TimeScale: 1 + m_CycleOffset: 0 + m_DirectBlendParameter: VelocityX + m_Mirror: 0 + m_BlendParameter: LArmX + m_BlendParameterY: LArmY + m_MinThreshold: 0 + m_MaxThreshold: 8 + m_UseAutomaticThresholds: 0 + m_NormalizedBlendValues: 0 + m_BlendType: 1 diff --git a/LimbControl/Resources/Animations/LC_NormalBlendTree.blendtree.meta b/LimbControl/Resources/Animations/LC_NormalBlendTree.blendtree.meta new file mode 100644 index 0000000..4380ee3 --- /dev/null +++ b/LimbControl/Resources/Animations/LC_NormalBlendTree.blendtree.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 763573ff00d82be4ca9f14d41fa23ff9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 20600000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/Animations/Normal.meta b/LimbControl/Resources/Animations/Normal.meta new file mode 100644 index 0000000..5ab2d9e --- /dev/null +++ b/LimbControl/Resources/Animations/Normal.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 06adb0c1615a4b844b0ca46f64d5140f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/Animations/Normal/LC_NormalDown.anim b/LimbControl/Resources/Animations/Normal/LC_NormalDown.anim new file mode 100644 index 0000000..ed9ac0d --- /dev/null +++ b/LimbControl/Resources/Animations/Normal/LC_NormalDown.anim @@ -0,0 +1,683 @@ +%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: LC_NormalDown + 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: -0.286 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.297 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.802 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.143 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.286 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.297 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.802 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.143 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.5494506 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.5494506 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + 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: 90 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 93 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 91 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 92 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 94 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 81 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 82 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 83 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 85 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 84 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 71 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 63 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 74 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 66 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0 + 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.286 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.297 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.802 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.143 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.286 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.297 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.802 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.143 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.5494506 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.5494506 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/LimbControl/Resources/Animations/Normal/LC_NormalDown.anim.meta b/LimbControl/Resources/Animations/Normal/LC_NormalDown.anim.meta new file mode 100644 index 0000000..7c7de39 --- /dev/null +++ b/LimbControl/Resources/Animations/Normal/LC_NormalDown.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ef27a02dbff4e004ab901b486706bf52 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/Animations/Normal/LC_NormalDownLeft.anim b/LimbControl/Resources/Animations/Normal/LC_NormalDownLeft.anim new file mode 100644 index 0000000..770b6df --- /dev/null +++ b/LimbControl/Resources/Animations/Normal/LC_NormalDownLeft.anim @@ -0,0 +1,818 @@ +%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: LC_NormalDownLeft + 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: -0.637 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.495 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.736 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.143 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.062 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.095 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.385 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.011 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.2967033 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.4945055 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.31868133 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.32967034 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.12087912 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + 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: 90 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 93 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 91 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 92 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 94 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 81 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 82 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 83 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 85 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 84 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 66 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 63 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 64 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 74 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 71 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 72 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 73 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0 + 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.637 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.495 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.736 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.143 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.062 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.095 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.385 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.011 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.2967033 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.4945055 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.31868133 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.32967034 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.12087912 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/LimbControl/Resources/Animations/Normal/LC_NormalDownLeft.anim.meta b/LimbControl/Resources/Animations/Normal/LC_NormalDownLeft.anim.meta new file mode 100644 index 0000000..e60963b --- /dev/null +++ b/LimbControl/Resources/Animations/Normal/LC_NormalDownLeft.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2fd72ee6ef7304a48a7cdd3c00d6c995 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/Animations/Normal/LC_NormalDownRight.anim b/LimbControl/Resources/Animations/Normal/LC_NormalDownRight.anim new file mode 100644 index 0000000..0ffdb81 --- /dev/null +++ b/LimbControl/Resources/Animations/Normal/LC_NormalDownRight.anim @@ -0,0 +1,818 @@ +%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: LC_NormalDownRight + 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: -0.062 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.095 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.385 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.011 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.637 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.495 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.736 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.143 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.2967033 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.4945055 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.32967034 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.31868133 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.12087912 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + 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: 90 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 93 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 91 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 92 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 94 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 81 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 82 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 83 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 84 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 85 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 74 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 71 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 72 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 66 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 64 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 63 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 65 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0 + 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.062 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.095 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.385 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.011 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.637 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.495 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.736 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.143 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.2967033 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.4945055 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.32967034 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.31868133 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.12087912 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/LimbControl/Resources/Animations/Normal/LC_NormalDownRight.anim.meta b/LimbControl/Resources/Animations/Normal/LC_NormalDownRight.anim.meta new file mode 100644 index 0000000..0d190d8 --- /dev/null +++ b/LimbControl/Resources/Animations/Normal/LC_NormalDownRight.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cf10e7275768e674b8b617f850413c64 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/Animations/Normal/LC_NormalLeft.anim b/LimbControl/Resources/Animations/Normal/LC_NormalLeft.anim new file mode 100644 index 0000000..af24829 --- /dev/null +++ b/LimbControl/Resources/Animations/Normal/LC_NormalLeft.anim @@ -0,0 +1,773 @@ +%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: LC_NormalLeft + 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: 0.043956038 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.63736266 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.000000005567467 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.3736264 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.4 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.34065935 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.62637365 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.37362635 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.14285713 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.5824176 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.6813187 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.16483517 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + 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: 90 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 91 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 93 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 92 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 94 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 81 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 82 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 84 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 71 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 72 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 73 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 74 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 63 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 64 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 65 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 66 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0 + 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.043956038 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.63736266 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.000000005567467 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.3736264 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.4 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.34065935 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.62637365 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.37362635 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.14285713 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.5824176 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.6813187 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.16483517 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/LimbControl/Resources/Animations/Normal/LC_NormalLeft.anim.meta b/LimbControl/Resources/Animations/Normal/LC_NormalLeft.anim.meta new file mode 100644 index 0000000..2d8bef1 --- /dev/null +++ b/LimbControl/Resources/Animations/Normal/LC_NormalLeft.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b3217facd16fc78479f2f5251ba1317b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/Animations/Normal/LC_NormalRight.anim b/LimbControl/Resources/Animations/Normal/LC_NormalRight.anim new file mode 100644 index 0000000..429f429 --- /dev/null +++ b/LimbControl/Resources/Animations/Normal/LC_NormalRight.anim @@ -0,0 +1,773 @@ +%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: LC_NormalRight + 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: 0.4 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.34065935 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.043956038 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.63736266 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.3736264 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.000000005567467 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.5824176 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.6813187 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.16483517 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.62637365 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.37362635 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.14285713 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + 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: 90 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 91 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 93 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 81 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 82 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 83 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 84 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 85 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 71 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 72 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 73 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 74 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 63 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 64 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 65 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 66 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0 + 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.4 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.34065935 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.043956038 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.63736266 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.3736264 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.000000005567467 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.5824176 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.6813187 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.16483517 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.62637365 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.37362635 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.14285713 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/LimbControl/Resources/Animations/Normal/LC_NormalRight.anim.meta b/LimbControl/Resources/Animations/Normal/LC_NormalRight.anim.meta new file mode 100644 index 0000000..da7e02e --- /dev/null +++ b/LimbControl/Resources/Animations/Normal/LC_NormalRight.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 957a79874e541c94fa0a22d5a3eb66d1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/Animations/Normal/LC_NormalStill.anim b/LimbControl/Resources/Animations/Normal/LC_NormalStill.anim new file mode 100644 index 0000000..aac94e1 --- /dev/null +++ b/LimbControl/Resources/Animations/Normal/LC_NormalStill.anim @@ -0,0 +1,593 @@ +%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: LC_NormalStill + 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: 0.1758242 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.1758242 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.6043956 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.36263737 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.6043956 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.36263737 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.37362638 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.2747253 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.37362638 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.2747253 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + 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: 90 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 93 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 81 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 84 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 91 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 92 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 82 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 83 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 71 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 74 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 63 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 66 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0 + 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.1758242 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.1758242 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.6043956 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.36263737 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.6043956 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.36263737 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.37362638 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.2747253 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.37362638 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.2747253 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/LimbControl/Resources/Animations/Normal/LC_NormalStill.anim.meta b/LimbControl/Resources/Animations/Normal/LC_NormalStill.anim.meta new file mode 100644 index 0000000..8823a4b --- /dev/null +++ b/LimbControl/Resources/Animations/Normal/LC_NormalStill.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0624707b131b6a7489374321542a64fb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/Animations/Normal/LC_NormalUp.anim b/LimbControl/Resources/Animations/Normal/LC_NormalUp.anim new file mode 100644 index 0000000..505cb3b --- /dev/null +++ b/LimbControl/Resources/Animations/Normal/LC_NormalUp.anim @@ -0,0 +1,773 @@ +%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: LC_NormalUp + 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: 0.725 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.769 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.802 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Shoulder Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.549 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.505 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.802 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Shoulder Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.725 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.505 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.549 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.769 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + 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: 90 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 94 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 88 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 92 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 91 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 93 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 79 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 81 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 82 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 83 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 84 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 85 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 63 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 66 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 71 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 74 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0 + 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.725 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.769 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.802 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Shoulder Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.549 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.505 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.802 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Shoulder Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.725 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.505 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.549 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.769 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/LimbControl/Resources/Animations/Normal/LC_NormalUp.anim.meta b/LimbControl/Resources/Animations/Normal/LC_NormalUp.anim.meta new file mode 100644 index 0000000..61b4bec --- /dev/null +++ b/LimbControl/Resources/Animations/Normal/LC_NormalUp.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0b880ee47bdaa5647b9d77b72fc6629d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/Animations/Normal/LC_NormalUpLeft.anim b/LimbControl/Resources/Animations/Normal/LC_NormalUpLeft.anim new file mode 100644 index 0000000..4944d2d --- /dev/null +++ b/LimbControl/Resources/Animations/Normal/LC_NormalUpLeft.anim @@ -0,0 +1,953 @@ +%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: LC_NormalUpLeft + 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: 0.62637365 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.7692308 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.8021978 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Shoulder Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.5164835 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.7692308 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.5604396 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.1648352 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.48351648 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.7692308 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.8021978 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Shoulder Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.9120879 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.16483517 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.9120879 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.61538464 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.2197802 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + 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: 90 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 94 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 88 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 92 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 91 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 93 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 81 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 82 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 83 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 84 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 85 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 79 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 66 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 63 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 64 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 65 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 74 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 71 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 72 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 73 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0 + 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.62637365 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.7692308 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.8021978 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Shoulder Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.5164835 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.7692308 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.5604396 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.1648352 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.48351648 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.7692308 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.8021978 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Shoulder Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.9120879 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.16483517 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.9120879 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.61538464 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.2197802 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/LimbControl/Resources/Animations/Normal/LC_NormalUpLeft.anim.meta b/LimbControl/Resources/Animations/Normal/LC_NormalUpLeft.anim.meta new file mode 100644 index 0000000..2cb4a5e --- /dev/null +++ b/LimbControl/Resources/Animations/Normal/LC_NormalUpLeft.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3e83eeab1a70d58449135e6d00218565 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/Animations/Normal/LC_NormalUpRight.anim b/LimbControl/Resources/Animations/Normal/LC_NormalUpRight.anim new file mode 100644 index 0000000..9fd9e72 --- /dev/null +++ b/LimbControl/Resources/Animations/Normal/LC_NormalUpRight.anim @@ -0,0 +1,953 @@ +%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: LC_NormalUpRight + 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: 0.5604396 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.7692308 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.8021978 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Shoulder Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.48351648 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.1648352 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.62637365 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.7692308 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.5164835 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.7692308 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.8021978 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Shoulder Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.9120879 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.61538464 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.2197802 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.9120879 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.16483517 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + 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: 90 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 94 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 88 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 92 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 91 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 93 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 81 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 82 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 83 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 84 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 85 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 79 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 66 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 63 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 64 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 65 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 74 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 71 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 72 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + - serializedVersion: 2 + path: 0 + attribute: 73 + script: {fileID: 0} + typeID: 95 + customType: 8 + isPPtrCurve: 0 + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 0 + 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.5604396 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.7692308 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.8021978 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Shoulder Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.48351648 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.1648352 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.62637365 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.7692308 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.5164835 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Arm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.7692308 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Forearm Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.8021978 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Shoulder Down-Up + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.9120879 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.61538464 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.2197802 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Left Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Lower Leg Stretch + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: -0.9120879 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Front-Back + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg In-Out + path: + classID: 95 + script: {fileID: 0} + - curve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.16483517 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + attribute: Right Upper Leg Twist In-Out + path: + classID: 95 + script: {fileID: 0} + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/LimbControl/Resources/Animations/Normal/LC_NormalUpRight.anim.meta b/LimbControl/Resources/Animations/Normal/LC_NormalUpRight.anim.meta new file mode 100644 index 0000000..7fbb80f --- /dev/null +++ b/LimbControl/Resources/Animations/Normal/LC_NormalUpRight.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: da26a77912f71474c8b219df419ed18c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/Icons.meta b/LimbControl/Resources/Icons.meta new file mode 100644 index 0000000..9f052ef --- /dev/null +++ b/LimbControl/Resources/Icons.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a90661a860e00d042a6023a71ce62446 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/Icons/LC_HandWaving.png b/LimbControl/Resources/Icons/LC_HandWaving.png new file mode 100644 index 0000000000000000000000000000000000000000..920908ed5633501e3df6d8e9221ae4e2f15f1cfc GIT binary patch literal 21737 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 literal 0 HcmV?d00001 diff --git a/LimbControl/Resources/Icons/LC_HandWaving.png.meta b/LimbControl/Resources/Icons/LC_HandWaving.png.meta new file mode 100644 index 0000000..a009159 --- /dev/null +++ b/LimbControl/Resources/Icons/LC_HandWaving.png.meta @@ -0,0 +1,121 @@ +fileFormatVersion: 2 +guid: af7dab49ea38131479b9445e33208ab2 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + 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: 0 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 89b25030c4864ee489bb086b7ce807b6 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/Icons/LC_RnR.png b/LimbControl/Resources/Icons/LC_RnR.png new file mode 100644 index 0000000000000000000000000000000000000000..affc1bbc2009fc9460b08e826e6a6f552f45b778 GIT binary patch literal 12979 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 M0aJXjzEkx70;7#e!vFvP literal 0 HcmV?d00001 diff --git a/LimbControl/Resources/Icons/LC_RnR.png.meta b/LimbControl/Resources/Icons/LC_RnR.png.meta new file mode 100644 index 0000000..bb2b443 --- /dev/null +++ b/LimbControl/Resources/Icons/LC_RnR.png.meta @@ -0,0 +1,121 @@ +fileFormatVersion: 2 +guid: 13e2661009eeb7545915355882b30374 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + 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: 0 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: e70acdaecf288c049881fa8ef7586960 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/Icons/LC_ToggleOff.png b/LimbControl/Resources/Icons/LC_ToggleOff.png new file mode 100644 index 0000000000000000000000000000000000000000..28c96babe57d67da297176be2c1570d2cfc4e4e7 GIT binary patch literal 9660 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 HHlhCud`SWd literal 0 HcmV?d00001 diff --git a/LimbControl/Resources/Icons/LC_ToggleOn.png.meta b/LimbControl/Resources/Icons/LC_ToggleOn.png.meta new file mode 100644 index 0000000..e681204 --- /dev/null +++ b/LimbControl/Resources/Icons/LC_ToggleOn.png.meta @@ -0,0 +1,121 @@ +fileFormatVersion: 2 +guid: 10d27a8d2e801d347821d88bbcc188c6 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + 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: 0 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Windows Store Apps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 59a59151e98683e4799ad89993370aab + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/LC_LimbControlMenu.asset b/LimbControl/Resources/LC_LimbControlMenu.asset new file mode 100644 index 0000000..814b28a --- /dev/null +++ b/LimbControl/Resources/LC_LimbControlMenu.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: -340790334, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} + m_Name: LC_LimbControlMenu + m_EditorClassIdentifier: + controls: + - name: Toggle + icon: {fileID: 2800000, guid: 10d27a8d2e801d347821d88bbcc188c6, type: 3} + type: 102 + parameter: + name: + value: 1 + style: 0 + subMenu: {fileID: 0} + subParameters: [] + labels: [] + - name: Control + icon: {fileID: 2800000, guid: af7dab49ea38131479b9445e33208ab2, type: 3} + type: 201 + parameter: + name: + value: 1 + style: 0 + subMenu: {fileID: 0} + subParameters: + - name: + - name: + labels: + - name: + icon: {fileID: 0} + - name: + icon: {fileID: 0} + - name: + icon: {fileID: 0} + - name: + icon: {fileID: 0} diff --git a/LimbControl/Resources/LC_LimbControlMenu.asset.meta b/LimbControl/Resources/LC_LimbControlMenu.asset.meta new file mode 100644 index 0000000..f6a1ee5 --- /dev/null +++ b/LimbControl/Resources/LC_LimbControlMenu.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2d5bbd3bcec1bed4b9adf75f39e9e465 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/LC_TrackingMainMenu.asset b/LimbControl/Resources/LC_TrackingMainMenu.asset new file mode 100644 index 0000000..70e1294 --- /dev/null +++ b/LimbControl/Resources/LC_TrackingMainMenu.asset @@ -0,0 +1,75 @@ +%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: -340790334, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} + m_Name: LC_TrackingMainMenu + m_EditorClassIdentifier: + controls: + - name: Head + icon: {fileID: 0} + type: 103 + parameter: + name: + value: 4 + style: 0 + subMenu: {fileID: 11400000, guid: af043a01b1924c34aa341dfd7cc5ede4, type: 2} + subParameters: [] + labels: [] + - name: Right Hand + icon: {fileID: 0} + type: 103 + parameter: + name: + value: 6 + style: 0 + subMenu: {fileID: 11400000, guid: 4d2c8509202ecf8498e4efdc6e061af6, type: 2} + subParameters: [] + labels: [] + - name: Right Foot + icon: {fileID: 0} + type: 103 + parameter: + name: + value: 1 + style: 0 + subMenu: {fileID: 11400000, guid: 1dff0ecce87ec97429acceb60d20dd10, type: 2} + subParameters: [] + labels: [] + - name: Left Foot + icon: {fileID: 0} + type: 103 + parameter: + name: + value: 1 + style: 0 + subMenu: {fileID: 11400000, guid: d1a4a4d18516f4e4dac3d3a9e358af66, type: 2} + subParameters: [] + labels: [] + - name: Left Hand + icon: {fileID: 0} + type: 103 + parameter: + name: + value: 9 + style: 0 + subMenu: {fileID: 11400000, guid: 49a5326f471a99e47bf10f4045c8c2e7, type: 2} + subParameters: [] + labels: [] + - name: Hip + icon: {fileID: 0} + type: 103 + parameter: + name: + value: 1 + style: 0 + subMenu: {fileID: 11400000, guid: c715e1e0cbb0302449523154fa63de64, type: 2} + subParameters: [] + labels: [] diff --git a/LimbControl/Resources/LC_TrackingMainMenu.asset.meta b/LimbControl/Resources/LC_TrackingMainMenu.asset.meta new file mode 100644 index 0000000..1d27731 --- /dev/null +++ b/LimbControl/Resources/LC_TrackingMainMenu.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d77eedc62b3c0414bb13dee70d551aed +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/SubMenus.meta b/LimbControl/Resources/SubMenus.meta new file mode 100644 index 0000000..a726417 --- /dev/null +++ b/LimbControl/Resources/SubMenus.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c4a82b3f188fd7f4ba60522403006a5a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/SubMenus/LC_Head Tracking.asset b/LimbControl/Resources/SubMenus/LC_Head Tracking.asset new file mode 100644 index 0000000..1ccee43 --- /dev/null +++ b/LimbControl/Resources/SubMenus/LC_Head Tracking.asset @@ -0,0 +1,35 @@ +%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: -340790334, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} + m_Name: LC_Head Tracking + m_EditorClassIdentifier: + controls: + - name: On + icon: {fileID: 2800000, guid: 10d27a8d2e801d347821d88bbcc188c6, type: 3} + type: 101 + parameter: + name: LC/Tracking Control + value: 254 + style: 0 + subMenu: {fileID: 0} + subParameters: [] + labels: [] + - name: Off + icon: {fileID: 2800000, guid: 61fee4a9eae042b47b08a725c6b2c02b, type: 3} + type: 101 + parameter: + name: LC/Tracking Control + value: 255 + style: 0 + subMenu: {fileID: 0} + subParameters: [] + labels: [] diff --git a/LimbControl/Resources/SubMenus/LC_Head Tracking.asset.meta b/LimbControl/Resources/SubMenus/LC_Head Tracking.asset.meta new file mode 100644 index 0000000..a29a91c --- /dev/null +++ b/LimbControl/Resources/SubMenus/LC_Head Tracking.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: af043a01b1924c34aa341dfd7cc5ede4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/SubMenus/LC_Hip Tracking.asset b/LimbControl/Resources/SubMenus/LC_Hip Tracking.asset new file mode 100644 index 0000000..1b730e8 --- /dev/null +++ b/LimbControl/Resources/SubMenus/LC_Hip Tracking.asset @@ -0,0 +1,35 @@ +%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: -340790334, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} + m_Name: LC_Hip Tracking + m_EditorClassIdentifier: + controls: + - name: On + icon: {fileID: 2800000, guid: 10d27a8d2e801d347821d88bbcc188c6, type: 3} + type: 101 + parameter: + name: LC/Tracking Control + value: 248 + style: 0 + subMenu: {fileID: 0} + subParameters: [] + labels: [] + - name: Off + icon: {fileID: 2800000, guid: 61fee4a9eae042b47b08a725c6b2c02b, type: 3} + type: 101 + parameter: + name: LC/Tracking Control + value: 249 + style: 0 + subMenu: {fileID: 0} + subParameters: [] + labels: [] diff --git a/LimbControl/Resources/SubMenus/LC_Hip Tracking.asset.meta b/LimbControl/Resources/SubMenus/LC_Hip Tracking.asset.meta new file mode 100644 index 0000000..25e71b9 --- /dev/null +++ b/LimbControl/Resources/SubMenus/LC_Hip Tracking.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c715e1e0cbb0302449523154fa63de64 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/SubMenus/LC_Left Foot Tracking.asset b/LimbControl/Resources/SubMenus/LC_Left Foot Tracking.asset new file mode 100644 index 0000000..6455113 --- /dev/null +++ b/LimbControl/Resources/SubMenus/LC_Left Foot Tracking.asset @@ -0,0 +1,35 @@ +%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: -340790334, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} + m_Name: LC_Left Foot Tracking + m_EditorClassIdentifier: + controls: + - name: On + icon: {fileID: 2800000, guid: 10d27a8d2e801d347821d88bbcc188c6, type: 3} + type: 101 + parameter: + name: LC/Tracking Control + value: 244 + style: 0 + subMenu: {fileID: 0} + subParameters: [] + labels: [] + - name: Off + icon: {fileID: 2800000, guid: 61fee4a9eae042b47b08a725c6b2c02b, type: 3} + type: 101 + parameter: + name: LC/Tracking Control + value: 245 + style: 0 + subMenu: {fileID: 0} + subParameters: [] + labels: [] diff --git a/LimbControl/Resources/SubMenus/LC_Left Foot Tracking.asset.meta b/LimbControl/Resources/SubMenus/LC_Left Foot Tracking.asset.meta new file mode 100644 index 0000000..ca48cca --- /dev/null +++ b/LimbControl/Resources/SubMenus/LC_Left Foot Tracking.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d1a4a4d18516f4e4dac3d3a9e358af66 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/SubMenus/LC_Left Hand Tracking.asset b/LimbControl/Resources/SubMenus/LC_Left Hand Tracking.asset new file mode 100644 index 0000000..22a26f3 --- /dev/null +++ b/LimbControl/Resources/SubMenus/LC_Left Hand Tracking.asset @@ -0,0 +1,35 @@ +%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: -340790334, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} + m_Name: LC_Left Hand Tracking + m_EditorClassIdentifier: + controls: + - name: On + icon: {fileID: 2800000, guid: 10d27a8d2e801d347821d88bbcc188c6, type: 3} + type: 101 + parameter: + name: LC/Tracking Control + value: 250 + style: 0 + subMenu: {fileID: 0} + subParameters: [] + labels: [] + - name: Off + icon: {fileID: 2800000, guid: 61fee4a9eae042b47b08a725c6b2c02b, type: 3} + type: 101 + parameter: + name: LC/Tracking Control + value: 251 + style: 0 + subMenu: {fileID: 0} + subParameters: [] + labels: [] diff --git a/LimbControl/Resources/SubMenus/LC_Left Hand Tracking.asset.meta b/LimbControl/Resources/SubMenus/LC_Left Hand Tracking.asset.meta new file mode 100644 index 0000000..b20e6e7 --- /dev/null +++ b/LimbControl/Resources/SubMenus/LC_Left Hand Tracking.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 49a5326f471a99e47bf10f4045c8c2e7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/SubMenus/LC_Right Foot Tracking.asset b/LimbControl/Resources/SubMenus/LC_Right Foot Tracking.asset new file mode 100644 index 0000000..341e3c7 --- /dev/null +++ b/LimbControl/Resources/SubMenus/LC_Right Foot Tracking.asset @@ -0,0 +1,35 @@ +%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: -340790334, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} + m_Name: LC_Right Foot Tracking + m_EditorClassIdentifier: + controls: + - name: On + icon: {fileID: 2800000, guid: 10d27a8d2e801d347821d88bbcc188c6, type: 3} + type: 101 + parameter: + name: LC/Tracking Control + value: 246 + style: 0 + subMenu: {fileID: 0} + subParameters: [] + labels: [] + - name: Off + icon: {fileID: 2800000, guid: 61fee4a9eae042b47b08a725c6b2c02b, type: 3} + type: 101 + parameter: + name: LC/Tracking Control + value: 247 + style: 0 + subMenu: {fileID: 0} + subParameters: [] + labels: [] diff --git a/LimbControl/Resources/SubMenus/LC_Right Foot Tracking.asset.meta b/LimbControl/Resources/SubMenus/LC_Right Foot Tracking.asset.meta new file mode 100644 index 0000000..cc85e26 --- /dev/null +++ b/LimbControl/Resources/SubMenus/LC_Right Foot Tracking.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1dff0ecce87ec97429acceb60d20dd10 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/Resources/SubMenus/LC_Right Hand Tracking.asset b/LimbControl/Resources/SubMenus/LC_Right Hand Tracking.asset new file mode 100644 index 0000000..3974f76 --- /dev/null +++ b/LimbControl/Resources/SubMenus/LC_Right Hand Tracking.asset @@ -0,0 +1,35 @@ +%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: -340790334, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3} + m_Name: LC_Right Hand Tracking + m_EditorClassIdentifier: + controls: + - name: On + icon: {fileID: 2800000, guid: 10d27a8d2e801d347821d88bbcc188c6, type: 3} + type: 101 + parameter: + name: LC/Tracking Control + value: 252 + style: 0 + subMenu: {fileID: 0} + subParameters: [] + labels: [] + - name: Off + icon: {fileID: 2800000, guid: 61fee4a9eae042b47b08a725c6b2c02b, type: 3} + type: 101 + parameter: + name: LC/Tracking Control + value: 253 + style: 0 + subMenu: {fileID: 0} + subParameters: [] + labels: [] diff --git a/LimbControl/Resources/SubMenus/LC_Right Hand Tracking.asset.meta b/LimbControl/Resources/SubMenus/LC_Right Hand Tracking.asset.meta new file mode 100644 index 0000000..7040558 --- /dev/null +++ b/LimbControl/Resources/SubMenus/LC_Right Hand Tracking.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4d2c8509202ecf8498e4efdc6e061af6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/LimbControl/package.json b/LimbControl/package.json new file mode 100644 index 0000000..661c836 --- /dev/null +++ b/LimbControl/package.json @@ -0,0 +1,31 @@ +{ + "author": { + "name": "Dreadrith", + "email": "dreadscripts@gmail.com", + "url": "https://github.com/Dreadrith" + }, + "name": "com.dreadscripts.limbcontrol", + "displayName": "DreadScripts - Limb Control", + "version": "1.1.2", + "description": "Puppet Control your limbs whether you're on VR or Desktop, Sitting or Dancing", + "keywords": [ + "Dreadrith", + "DreadScripts", + "DreadTools", + "VRChat", + "Tool", + "Feature", + "Desktop" + ], + "gitDependencies": {}, + "vpmDependencies": { + "com.vrchat.avatars": "3.x.x" + }, + "legacyFolders": { + "Assets/DreadScripts/Limb Control": "590739e9535a1a0418b3476990debfb3", + "Assets/DreadScripts/LimbControl": "-1" + }, + "legacyFiles": {}, + "type": "tool", + "unity": "2019.4" +} \ No newline at end of file diff --git a/LimbControl/package.json.meta b/LimbControl/package.json.meta new file mode 100644 index 0000000..102631a --- /dev/null +++ b/LimbControl/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2cccb10b3fadf184b8a3f12ff0ab38a3 +PackageManifestImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Metal-Pipe.meta b/Metal-Pipe.meta new file mode 100644 index 0000000..7a5f354 --- /dev/null +++ b/Metal-Pipe.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b38e8e3f8b01ac7458138d4961ec5117 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Metal-Pipe/CHANGELOG.md b/Metal-Pipe/CHANGELOG.md new file mode 100644 index 0000000..1da26e4 --- /dev/null +++ b/Metal-Pipe/CHANGELOG.md @@ -0,0 +1,2 @@ +## [1.0.0] - 2023/04/18 +### Initial Release \ No newline at end of file diff --git a/Metal-Pipe/CHANGELOG.md.meta b/Metal-Pipe/CHANGELOG.md.meta new file mode 100644 index 0000000..b604be5 --- /dev/null +++ b/Metal-Pipe/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 57f28502b1efbf541a91b054db13bcd7 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Metal-Pipe/Editor.meta b/Metal-Pipe/Editor.meta new file mode 100644 index 0000000..4796902 --- /dev/null +++ b/Metal-Pipe/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f170acfbc72991d4e96951ec67fd43f2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Metal-Pipe/Editor/MetalPipe.cs b/Metal-Pipe/Editor/MetalPipe.cs new file mode 100644 index 0000000..a2fc521 --- /dev/null +++ b/Metal-Pipe/Editor/MetalPipe.cs @@ -0,0 +1,175 @@ +using UnityEditor; +using UnityEngine; + +namespace DreadScripts.MetalPipe +{ + public class MetalPipe : EditorWindow, IHasCustomMenu + { + private const string PREF_KEY = "MetalPipeSettings"; + private const string TEXTURE_PATH = "MP_Protagonist"; + private const string AUDIO_PATH = "MP_Sooth (LOUD)"; + + private Texture2D _pipeTexture; + + private Texture2D pipeTexture + { + get + { + if (_pipeTexture == null) _pipeTexture = Resources.Load(TEXTURE_PATH); + return _pipeTexture; + } + } + private AudioClip pipeAudio; + private bool displaySettings; + private bool hasModifiedSettings; + private double nextPlayTime; + private Vector2 scroll; + + public float volume = 0.25f; + public bool autoPlay; + public float minAutoTime = 20; + public float maxAutoTime = 420; + + #region Properties + private static GameObject _pipePlayerContainer; + + private static GameObject pipePlayerContainer + { + get + { + _pipePlayerContainer = new GameObject("Pipe"); + _pipePlayerContainer.hideFlags = HideFlags.DontSave | HideFlags.HideInHierarchy; + var source = _pipePlayerContainer.AddComponent(); + source.hideFlags = HideFlags.DontSave; + source.spatialBlend = 0; + source.playOnAwake = false; + source.priority = 0; + return _pipePlayerContainer; + } + } + private static AudioSource pipeAudioSource => pipePlayerContainer.GetComponent(); + + #endregion + + + [MenuItem("DreadTools/Utility/Metal Pipe")] + public static void ShowWindow() + { + var inst = GetWindow("Metal Pipe"); + inst.titleContent.image = inst.pipeTexture; + } + + public void OnGUI() + { + if (!displaySettings) + { + var ratio = pipeTexture.width / (float)pipeTexture.height; + var rect = GUILayoutUtility.GetAspectRect(ratio); + + GUI.DrawTexture(rect, pipeTexture); + + var e = Event.current; + switch (e.type) + { + case EventType.Repaint: + EditorGUIUtility.AddCursorRect(rect, MouseCursor.Link); + break; + case EventType.MouseDown when e.button == 0 && rect.Contains(e.mousePosition): + PlayClip(); + break; + } + + } + else + { + scroll = EditorGUILayout.BeginScrollView(scroll); + EditorGUI.BeginChangeCheck(); + volume = EditorGUILayout.Slider("Volume", volume, 0, 1); + + bool wasAutoPlaying = autoPlay; + autoPlay = EditorGUILayout.Toggle(new GUIContent("Auto Play", ""), autoPlay); + if (wasAutoPlaying != autoPlay) + { + EditorApplication.update -= CheckForAutoPlay; + if (autoPlay) + { + RandomizeTimer(); + EditorApplication.update += CheckForAutoPlay; + } + } + + using (new EditorGUI.DisabledScope(!autoPlay)) + { + EditorGUI.indentLevel++; + minAutoTime = Mathf.Max(0, EditorGUILayout.FloatField("Min Auto Time", minAutoTime)); + maxAutoTime = Mathf.Max(0, EditorGUILayout.FloatField("Max Auto Time", maxAutoTime)); + EditorGUI.indentLevel--; + } + + hasModifiedSettings |= EditorGUI.EndChangeCheck(); + + using (new GUILayout.HorizontalScope()) + { + if (GUILayout.Button("Back", GUILayout.ExpandWidth(false))) + displaySettings = false; + + using (new EditorGUI.DisabledScope(!hasModifiedSettings)) + { + if (GUILayout.Button("Revert Changes")) + LoadSettings(); + + if (GUILayout.Button("Save Settings")) + SaveSettings(); + } + } + + EditorGUILayout.EndScrollView(); + } + } + + public void PlayClip(bool isTest = false) + { + pipeAudioSource.PlayOneShot(pipeAudio, volume); + if (!isTest) RandomizeTimer(); + } + + + public void OnEnable() + { + pipeAudio = Resources.Load(AUDIO_PATH); + LoadSettings(); + + if (autoPlay) + { + RandomizeTimer(); + EditorApplication.update -= CheckForAutoPlay; + EditorApplication.update += CheckForAutoPlay; + } + } + + public void OnDisable() => EditorApplication.update -= CheckForAutoPlay; + + + public void CheckForAutoPlay() + { + if (Time.realtimeSinceStartup > nextPlayTime) + PlayClip(); + } + public void RandomizeTimer() => nextPlayTime = Time.realtimeSinceStartup + Random.Range(minAutoTime, maxAutoTime); + public void AddItemsToMenu(GenericMenu menu) => menu.AddItem(new GUIContent("Settings"), displaySettings, () => displaySettings = !displaySettings); + + #region Saving + public void SaveSettings() + { + EditorPrefs.SetString(PREF_KEY, JsonUtility.ToJson(this)); + hasModifiedSettings = false; + } + public void LoadSettings() + { + if (EditorPrefs.HasKey(PREF_KEY)) JsonUtility.FromJsonOverwrite(EditorPrefs.GetString(PREF_KEY), this); + hasModifiedSettings = false; + } + #endregion + } + +} \ No newline at end of file diff --git a/Metal-Pipe/Editor/MetalPipe.cs.meta b/Metal-Pipe/Editor/MetalPipe.cs.meta new file mode 100644 index 0000000..0e6e58b --- /dev/null +++ b/Metal-Pipe/Editor/MetalPipe.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0e9935148c0be85439592b0052c895ca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Metal-Pipe/Editor/com.dreadscripts.metalpipe.Editor.asmdef b/Metal-Pipe/Editor/com.dreadscripts.metalpipe.Editor.asmdef new file mode 100644 index 0000000..0db49a5 --- /dev/null +++ b/Metal-Pipe/Editor/com.dreadscripts.metalpipe.Editor.asmdef @@ -0,0 +1,13 @@ +{ + "name": "com.dreadscripts.metalpipe.Editor", + "references": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Metal-Pipe/Editor/com.dreadscripts.metalpipe.Editor.asmdef.meta b/Metal-Pipe/Editor/com.dreadscripts.metalpipe.Editor.asmdef.meta new file mode 100644 index 0000000..6af97cc --- /dev/null +++ b/Metal-Pipe/Editor/com.dreadscripts.metalpipe.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 54f6442ba203a494db8497077d69a272 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Metal-Pipe/LICENSE.md b/Metal-Pipe/LICENSE.md new file mode 100644 index 0000000..8993ad3 --- /dev/null +++ b/Metal-Pipe/LICENSE.md @@ -0,0 +1,18 @@ +Copyright (c) 2023 Dreadrith + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Metal-Pipe/LICENSE.md.meta b/Metal-Pipe/LICENSE.md.meta new file mode 100644 index 0000000..0e71bf9 --- /dev/null +++ b/Metal-Pipe/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bbbb9d1a52c90f246b5adb328f7d88f6 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Metal-Pipe/Resources.meta b/Metal-Pipe/Resources.meta new file mode 100644 index 0000000..1320393 --- /dev/null +++ b/Metal-Pipe/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 89cd029e998f91f4e94b3805e8268346 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Metal-Pipe/Resources/MP_Protagonist.png b/Metal-Pipe/Resources/MP_Protagonist.png new file mode 100644 index 0000000000000000000000000000000000000000..3b9c3e59acc9ee50ef9b857b8f16e45aaa52a8ed GIT binary patch literal 51042 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

+w!h`W6o|*oFbd5qyslh4E0*A7#eZLlZ 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

NbD*eT{6Gt>e)0jB&E{oc7pBkGRZ;t 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 _gameWindowType ?? (_gameWindowType = Type.GetType(GAME_WINDOW_TYPE_ASSEMBLY_FULL_NAME)); + private static readonly PropertyInfo hasFocusProperty = typeof(EditorWindow).GetProperty("hasFocus", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); + + private static CancellationTokenSource cts; + + private static bool closeGameWindow; + private static bool unfocusGameWindow; + private static EditorWindow[] previouslyFocusedWindows; + private static void HandlePlaymodeChange(PlayModeStateChange change) + { + cts?.Cancel(); + + switch (change) + { + case PlayModeStateChange.ExitingEditMode: + RememberWindows(); + break; + case PlayModeStateChange.EnteredPlayMode: + try + { + cts = new CancellationTokenSource(); + _ = HandleGameWindow(cts.Token); + } + catch(OperationCanceledException){} + break; + case PlayModeStateChange.EnteredEditMode: + SessionState.EraseString(LAST_WINDOWS_SESS_KEY); + if (!closeGameWindow && unfocusGameWindow && !SessionState.GetBool(GAME_WINDOW_OPEN_SESS_KEY, true)) + { + var gameWindows = (EditorWindow[])Resources.FindObjectsOfTypeAll(gameWindowType); + if (gameWindows.Any() && !gameWindows.Any(w => previouslyFocusedWindows.Contains(w))) + foreach(var w in gameWindows) + w.Close(); + } + + previouslyFocusedWindows = null; + break; + } + } + + private static void RememberWindows() + { + if (unfocusGameWindow && hasFocusProperty != null) + { + var idList = string.Join(",", Resources.FindObjectsOfTypeAll() + .Where(w => (bool) hasFocusProperty.GetValue(w)) + .Select(w => w.GetInstanceID().ToString())); + + SessionState.SetString(LAST_WINDOWS_SESS_KEY, idList); + } + + if (gameWindowType == null) return; + var gameWindows = Resources.FindObjectsOfTypeAll(gameWindowType); + SessionState.SetBool(GAME_WINDOW_OPEN_SESS_KEY, gameWindows.Length > 0); } + + private static async Task HandleGameWindow(CancellationToken ct) + { + if (!closeGameWindow && !unfocusGameWindow) return; + var gameWindowWasOpen = SessionState.GetBool(GAME_WINDOW_OPEN_SESS_KEY, true); + await Task.Delay(GAME_WINDOW_HANDLE_DELAY, ct); + + if (closeGameWindow && !gameWindowWasOpen) + { + var windows = Resources.FindObjectsOfTypeAll(gameWindowType); + foreach (var w in windows) + { + var ew = (EditorWindow)w; + ew.Close(); + } + } else if (unfocusGameWindow) + { + var previousWindowsFocusList = SessionState.GetString(LAST_WINDOWS_SESS_KEY, string.Empty); + if (string.IsNullOrWhiteSpace(previousWindowsFocusList)) return; + + previouslyFocusedWindows = previousWindowsFocusList + .Split(',').Select(int.Parse) + .Select(EditorUtility.InstanceIDToObject) + .OfType().Where(w => w != null).ToArray(); + foreach (var w in previouslyFocusedWindows) + w.Focus(); + } + } + + + #region Initialization + [InitializeOnLoadMethod] + private static void Initialize() => LoadVariables(); + private static void LoadVariables() + { + closeGameWindow = EditorPrefs.GetBool(CLOSE_GAME_WINDOW_PREF_KEY, false); + unfocusGameWindow = EditorPrefs.GetBool(UNFOCUS_GAME_WINDOW_PREF_KEY, true); + RefreshHook(); + } + + private static void RefreshHook() + { + EditorApplication.playModeStateChanged -= HandlePlaymodeChange; + if (closeGameWindow || unfocusGameWindow) + EditorApplication.playModeStateChanged += HandlePlaymodeChange; + } + #endregion + + #region Menu Items + [MenuItem("DreadTools/Utility/NoAutoGame/AutoUnfocus")] + private static void ToggleUnfocusGameWindow() + { + bool newValue = !EditorPrefs.GetBool(UNFOCUS_GAME_WINDOW_PREF_KEY, true); + EditorPrefs.SetBool(UNFOCUS_GAME_WINDOW_PREF_KEY, newValue); + Debug.Log($"[NoAutoGame] AutoUnfocus is now {(newValue ? "enabled" : "disabled")}."); + unfocusGameWindow = newValue; + RefreshHook(); + } + + [MenuItem("DreadTools/Utility/NoAutoGame/AutoClose")] + private static void ToggleCloseGameWindow() + { + bool newValue = !EditorPrefs.GetBool(CLOSE_GAME_WINDOW_PREF_KEY, false); + EditorPrefs.SetBool(CLOSE_GAME_WINDOW_PREF_KEY, newValue); + Debug.Log($"[NoAutoGame] AutoClose is now {(newValue ? "enabled" : "disabled")}."); + closeGameWindow = newValue; + RefreshHook(); + } + #endregion + + } + + +} diff --git a/NoAutoGame/Editor/NoAutoGame.cs.meta b/NoAutoGame/Editor/NoAutoGame.cs.meta new file mode 100644 index 0000000..8431da8 --- /dev/null +++ b/NoAutoGame/Editor/NoAutoGame.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a6c420c7dc39936499f795315373858c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/NoAutoGame/Editor/com.dreadscripts.noautogame.Editor.asmdef b/NoAutoGame/Editor/com.dreadscripts.noautogame.Editor.asmdef new file mode 100644 index 0000000..1fdea90 --- /dev/null +++ b/NoAutoGame/Editor/com.dreadscripts.noautogame.Editor.asmdef @@ -0,0 +1,15 @@ +{ + "name": "com.dreadscripts.noautogame.Editor", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/NoAutoGame/Editor/com.dreadscripts.noautogame.Editor.asmdef.meta b/NoAutoGame/Editor/com.dreadscripts.noautogame.Editor.asmdef.meta new file mode 100644 index 0000000..00250c0 --- /dev/null +++ b/NoAutoGame/Editor/com.dreadscripts.noautogame.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b0aba0aac9d6446439e0b33d153a8596 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/NoAutoGame/LICENSE b/NoAutoGame/LICENSE new file mode 100644 index 0000000..545aeca --- /dev/null +++ b/NoAutoGame/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Dreadrith + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/NoAutoGame/LICENSE.meta b/NoAutoGame/LICENSE.meta new file mode 100644 index 0000000..a260dd6 --- /dev/null +++ b/NoAutoGame/LICENSE.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ba9c196d2f7700141892c2fea0f6ca6a +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/NoAutoGame/README.md b/NoAutoGame/README.md new file mode 100644 index 0000000..ba969ca --- /dev/null +++ b/NoAutoGame/README.md @@ -0,0 +1,12 @@ +# NoAutoGame +Prevents the Game window from opening or automatically focusing. + +### [Download From Here](https://vpm.dreadscripts.com/) + +## How it works +There are two settings you can toggle from `DreadTools > Utility > NoAutoGame` +- **AutoClose:** If there was no Game window before entering playmode, then the Game window will be closed right away. +- **AutoUnfocus:** This will restore all windows' focuses to what it was before entering playmode. Additionally, if AutoClose is disabled, and there was no Game window, then it'll close the Game window upon exiting playmode. + +### Thank You +If you enjoy NoAutoGame, please consider [supporting me ♡](https://ko-fi.com/Dreadrith)! \ No newline at end of file diff --git a/NoAutoGame/README.md.meta b/NoAutoGame/README.md.meta new file mode 100644 index 0000000..a182449 --- /dev/null +++ b/NoAutoGame/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ac0f110be26650d4c8c71ecce405ca12 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/NoAutoGame/package.json b/NoAutoGame/package.json new file mode 100644 index 0000000..7cac3a4 --- /dev/null +++ b/NoAutoGame/package.json @@ -0,0 +1,17 @@ +{ + "name": "com.dreadscripts.noautogame", + "displayName": "DreadScripts - NoAutoGame", + "version": "1.1.0", + "description": "Prevents the Game window from opening or automatically focusing.", + "gitDependencies": {}, + "vpmDependencies": {}, + "author": { + "name": "Dreadrith", + "email": "dreadscripts@gmail.com", + "url": "https://www.dreadrith.com" + }, + "legacyFolders": {}, + "legacyFiles": {}, + "type": "tool", + "unity": "2019.4" +} \ No newline at end of file diff --git a/NoAutoGame/package.json.meta b/NoAutoGame/package.json.meta new file mode 100644 index 0000000..e742825 --- /dev/null +++ b/NoAutoGame/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 53fccee2c1c00224bb4ebda93d268b44 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PackageProcessor.meta b/PackageProcessor.meta new file mode 100644 index 0000000..620062b --- /dev/null +++ b/PackageProcessor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a85d857cc5a56534ca8c306dcd1d4fcb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PackageProcessor/Editor.meta b/PackageProcessor/Editor.meta new file mode 100644 index 0000000..2db3e9a --- /dev/null +++ b/PackageProcessor/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: df1ae91095633fd4d930d1e9b2b8193e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PackageProcessor/Editor/ExportPostProcessor.cs b/PackageProcessor/Editor/ExportPostProcessor.cs new file mode 100644 index 0000000..51cec2c --- /dev/null +++ b/PackageProcessor/Editor/ExportPostProcessor.cs @@ -0,0 +1,405 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using HarmonyLib; +using System.Reflection; +using System.IO; +using System.Linq; +using Object = UnityEngine.Object; + +namespace DreadScripts.PackageProcessor +{ + [InitializeOnLoad] + public class ExportPostProcessor + { + #region Patching + private static readonly System.Type packageExportType; + private static readonly System.Type packageTreeGUIType; + private static readonly FieldInfo includeDependenciesField; + private static readonly FieldInfo exportItemsField; + private static readonly MethodInfo refreshListMethod; + private static readonly MethodInfo getTreeItemMethod; + #endregion + + #region Constants + + private const string PARAM_FOLDERS = "exportDefaultOffFolders"; + private const string PARAM_EXTENSIONS = "exportDefaultOffExtensions"; + private const string PARAM_TYPES = "exportDefaultOffTypes"; + private const string PARAM_ASSETS = "exportDefaultOffAssets"; + #endregion + + private static PackageProcessorData settings; + private static EditorWindow exporterInstance; + + private static object rawItems; + private static ReflectedExportPackageItem[] reflectedItems; + private static bool firstStart = true; + + static ExportPostProcessor() + { + packageExportType = GetType("UnityEditor.PackageExport"); + packageTreeGUIType = GetType("UnityEditor.PackageExportTreeView+PackageExportTreeViewGUI"); + + includeDependenciesField = packageExportType.GetField("m_IncludeDependencies", BindingFlags.Instance | BindingFlags.NonPublic); + exportItemsField = packageExportType.GetField("m_ExportPackageItems", BindingFlags.Instance | BindingFlags.NonPublic); + + + refreshListMethod = GetType("UnityEditor.PackageExportTreeView").GetMethod("ComputeEnabledStateForFolders", BindingFlags.Instance | BindingFlags.NonPublic); + getTreeItemMethod = GetType("UnityEditor.PackageExportTreeView+PackageExportTreeViewItem").GetMethod("get_item", BindingFlags.Instance | BindingFlags.Public); + + var harmony = new Harmony("com.dreadscripts.exportpostprocessor.tool"); + + void QuickPatch(System.Type targetType, string ogMethod, string preMethod = "", string poMethod = "") + { + MethodInfo originalMethod = AccessTools.GetDeclaredMethods(targetType).Find(m => m.Name == ogMethod); + HarmonyMethod prefixMethod = string.IsNullOrEmpty(preMethod) ? null : new HarmonyMethod(typeof(ExportPostProcessor).GetMethod(preMethod, BindingFlags.NonPublic | BindingFlags.Static)); + HarmonyMethod postMethod = string.IsNullOrEmpty(poMethod) ? null : new HarmonyMethod(typeof(ExportPostProcessor).GetMethod(poMethod, BindingFlags.NonPublic | BindingFlags.Static)); + harmony.Patch(originalMethod, prefixMethod, postMethod); + } + + QuickPatch(packageExportType, "ShowExportPackage", null, nameof(ShowExportPost)); + QuickPatch(packageExportType, "BuildAssetList", null, nameof(BuildAssetListPost)); + QuickPatch(packageExportType, "OnGUI", null, nameof(packageGUIPost)); + QuickPatch(packageTreeGUIType, "OnRowGUI", nameof(treeRowGUIPrefix)); + } + + static void ShowExportPost() + { + settings = PackageProcessorData.instance; + exporterInstance = EditorWindow.GetWindow(packageExportType); + firstStart = true; + if (settings.active) + includeDependenciesField.SetValue(exporterInstance, settings.includeDependencies); + + } + + static void BuildAssetListPost() + { + GetExportItems(); + if (!firstStart || !settings.active) return; + firstStart = false; + + List offTypes = new List(); + settings.exportDefaultOffTypes.ForEach(t => + { + if (string.IsNullOrWhiteSpace(t)) return; + System.Type targetType = GetType(t); + if (targetType != null) + offTypes.Add(targetType); + }); + foreach (var i in reflectedItems) + { + if (offTypes.Any(t => t == i.type) || + settings.exportDefaultOffFolders.Any(f => i.assetPath.Contains(f)) || + settings.exportDefaultOffExtensions.Any(s => s == Path.GetExtension(i.assetPath)) || + (!i.isFolder && settings.exportDefaultOffAssets.Any(g => g == i.guid))) + + i.enabledState = 0; + } + } + + static void packageGUIPost() + { + using (new GUILayout.HorizontalScope()) + { + + if (GUILayout.Button("Modified by Dreadrith#3238", "minilabel")) + Application.OpenURL("https://github.com/Dreadrith/DreadScripts"); + GUILayout.FlexibleSpace(); + } + } + + static ReflectedExportPackageItem reflectedTargetItem; + static void treeRowGUIPrefix(Rect rowRect,UnityEditor.IMGUI.Controls.TreeViewItem tvItem) + { + if (Event.current.type == EventType.ContextClick && rowRect.Contains(Event.current.mousePosition)) + { + object targetItem = getTreeItemMethod.Invoke(tvItem, null); + if (targetItem != null) + { + reflectedTargetItem = new ReflectedExportPackageItem(targetItem); + if (!reflectedTargetItem.isFolder) + { + GenericMenu myMenu = new GenericMenu(); + myMenu.AddItem(new GUIContent("Toggle Type"), false, new GenericMenu.MenuFunction(ToggleSelectedType)); + myMenu.AddSeparator(""); + + if (!HasSelectedAsset()) + myMenu.AddItem(new GUIContent("Exclusions/Add Asset"), false, new GenericMenu.MenuFunction(ExcludeSelectedAsset)); + else + myMenu.AddItem(new GUIContent("Exclusions/Remove Asset"), false, new GenericMenu.MenuFunction(IncludeSelectedAsset)); + + if (!HasSelectedType()) + myMenu.AddItem(new GUIContent("Exclusions/Add Type"), false, new GenericMenu.MenuFunction(ExcludeSelectedType)); + else + myMenu.AddItem(new GUIContent("Exclusions/Remove Type"), false, new GenericMenu.MenuFunction(IncludeSelectedType)); + + if (!HasSelectedExtension()) + myMenu.AddItem(new GUIContent("Exclusions/Add Extension"), false, new GenericMenu.MenuFunction(ExcludeSelectedExtension)); + else + myMenu.AddItem(new GUIContent("Exclusions/Remove Extension"), false, new GenericMenu.MenuFunction(IncludeSelectedExtension)); + + myMenu.ShowAsContext(); + Event.current.Use(); + } + else + { + GenericMenu myMenu = new GenericMenu(); + if (!HasSelectedFolder()) + myMenu.AddItem(new GUIContent("Exclusions/Add Folder"), false, new GenericMenu.MenuFunction(ExcludeSelectedFolder)); + else + myMenu.AddItem(new GUIContent("Exclusions/Remove Folder"), false, new GenericMenu.MenuFunction(IncludeSelectedFolder)); + myMenu.ShowAsContext(); + Event.current.Use(); + } + } + else + { + GenericMenu myMenu = new GenericMenu(); + myMenu.AddDisabledItem(new GUIContent("Folder not being exported")); + myMenu.ShowAsContext(); + Event.current.Use(); + } + } + } + + static void ToggleSelectedType() + { + List targetItems = new List(); + bool allOn = true; + Iterate(reflectedItems, i => + { + if (i.type == reflectedTargetItem.type) + { + targetItems.Add(i); + if (i.enabledState == 0) + { + allOn = false; + } + } + }); + targetItems.ForEach(i => i.enabledState = allOn ? 0 : 1); + RefreshTreeView(); + } + + static bool HasExclusion(string property, string value) + { + SerializedObject data = new SerializedObject(PackageProcessorData.instance); + SerializedProperty targetProperty = data.FindProperty(property); + for (int i = 0; i < targetProperty.arraySize; i++) + { + if (targetProperty.GetArrayElementAtIndex(i).stringValue == value) + { + return true; + } + } + return false; + } + + static void AddExclusion(string property, string value) + { + SerializedObject data = new SerializedObject(PackageProcessorData.instance); + SerializedProperty targetProperty = data.FindProperty(property); + targetProperty.arraySize++; + targetProperty.GetArrayElementAtIndex(targetProperty.arraySize - 1).stringValue = value; + data.ApplyModifiedPropertiesWithoutUndo(); + } + + static void RemoveExclusion(string property, string value) + { + SerializedObject data = new SerializedObject(PackageProcessorData.instance); + SerializedProperty targetProperty = data.FindProperty(property); + for (int i = 0; i < targetProperty.arraySize; i++) + { + if (targetProperty.GetArrayElementAtIndex(i).stringValue == value) + { + targetProperty.DeleteArrayElementAtIndex(i); + break; + } + } + data.ApplyModifiedPropertiesWithoutUndo(); + } + + #region Extension Exclusion + static bool HasSelectedExtension() => HasExclusion(PARAM_EXTENSIONS, Ext(reflectedTargetItem.assetPath)); + static void ExcludeSelectedExtension() => AddExclusion(PARAM_EXTENSIONS, Ext(reflectedTargetItem.assetPath)); + static void IncludeSelectedExtension() => RemoveExclusion(PARAM_EXTENSIONS, Ext(reflectedTargetItem.assetPath)); + #endregion + + #region Folder Exclusion + static bool HasSelectedFolder() => HasExclusion(PARAM_FOLDERS, reflectedTargetItem.assetPath); + static void ExcludeSelectedFolder() => AddExclusion(PARAM_FOLDERS, reflectedTargetItem.assetPath); + static void IncludeSelectedFolder() => RemoveExclusion(PARAM_FOLDERS, reflectedTargetItem.assetPath); + #endregion + + #region Type Exclusion + static bool HasSelectedType() => PackageProcessorData.instance.exportDefaultOffTypes.Any(t => GetType(t) == reflectedTargetItem.type); + static void ExcludeSelectedType() => AddExclusion(PARAM_TYPES, reflectedTargetItem.type.AssemblyQualifiedName); + static void IncludeSelectedType() + { + SerializedObject data = new SerializedObject(PackageProcessorData.instance); + SerializedProperty targetProperty = data.FindProperty(PARAM_TYPES); + for (int i = 0; i < targetProperty.arraySize; i++) + { + Type currentType = GetType(targetProperty.GetArrayElementAtIndex(i).stringValue); + if (currentType == reflectedTargetItem.type) + { + targetProperty.DeleteArrayElementAtIndex(i); + break; + } + } + data.ApplyModifiedPropertiesWithoutUndo(); + } + + #endregion + + #region Asset Exclusion + static bool HasSelectedAsset() => HasExclusion(PARAM_ASSETS, reflectedTargetItem.guid); + static void ExcludeSelectedAsset() => AddExclusion(PARAM_ASSETS, reflectedTargetItem.guid); + static void IncludeSelectedAsset() => RemoveExclusion(PARAM_ASSETS, reflectedTargetItem.guid); + #endregion + + private static string Ext(string path) => Path.GetExtension(path); + + private static void GetExportItems() + { + rawItems = exportItemsField.GetValue(exporterInstance); + object[] exportItems = (object[])rawItems; + exportItemsField.SetValue(exporterInstance, exportItems); + + reflectedItems = new ReflectedExportPackageItem[exportItems.Length]; + for (int i = 0; i < exportItems.Length; i++) + reflectedItems[i] = new ReflectedExportPackageItem(exportItems[i]); + + } + + private static void RefreshTreeView() + { + refreshListMethod.Invoke(packageExportType.GetField("m_Tree", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(exporterInstance), null); + } + + private class ReflectedExportPackageItem + { + private readonly object instance; + + public bool isFolder => AssetDatabase.IsValidFolder(assetPath); + + private string _assetPath; + public string assetPath + { + get + { + if (string.IsNullOrEmpty(_assetPath)) + _assetPath = (string)assetPathField.GetValue(instance); + return _assetPath; + } + } + + private bool stateInit; + private int _enabledState; + public int enabledState + { + get + { + if (!stateInit) + return 1; + if (_enabledState == -2) + _enabledState = (int)enabledStateField.GetValue(instance); + return _enabledState; + } + set + { + stateInit = true; + _enabledState = value; + enabledStateField.SetValue(instance, value); + } + } + + private string _guid; + public string guid + { + get + { + if (string.IsNullOrEmpty(_guid)) + _guid = (string)guidField.GetValue(instance); + return _guid; + } + } + + private System.Type _type; + public System.Type type + { + get + { + if (asset && _type == null) + _type = asset.GetType(); + return _type; + } + } + + private Object _asset; + private bool _assetLoaded; + + private Object asset + { + get + { + if (_asset || _assetLoaded) return _asset; + + _asset = AssetDatabase.LoadMainAssetAtPath(assetPath); + _assetLoaded = true; + return _asset; + } + } + + + static FieldInfo assetPathField; + static FieldInfo enabledStateField; + static FieldInfo guidField; + public ReflectedExportPackageItem(object instance) + { + this.instance = instance; + } + + [InitializeOnLoadMethod] + static void InitializeFields() + { + System.Type targetType = AccessTools.TypeByName("ExportPackageItem"); + assetPathField = targetType.GetField("assetPath", BindingFlags.Public | BindingFlags.Instance); + enabledStateField = targetType.GetField("enabledStatus", BindingFlags.Public | BindingFlags.Instance); + guidField = targetType.GetField("guid", BindingFlags.Public | BindingFlags.Instance); + } + + } + + private static System.Type GetType(string typeName) + { + System.Type myType = System.Type.GetType(typeName); + if (myType != null) + return myType; + foreach (Assembly assembly in System.AppDomain.CurrentDomain.GetAssemblies()) + { + myType = assembly.GetType(typeName); + if (myType != null) + return myType; + } + return null; + } + + public static void Iterate(IEnumerable collection, System.Action action) + { + using (IEnumerator myNum = collection.GetEnumerator()) + { + while (myNum.MoveNext()) + { + action(myNum.Current); + } + } + } + + } + +} \ No newline at end of file diff --git a/PackageProcessor/Editor/ExportPostProcessor.cs.meta b/PackageProcessor/Editor/ExportPostProcessor.cs.meta new file mode 100644 index 0000000..fc31160 --- /dev/null +++ b/PackageProcessor/Editor/ExportPostProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: afc24f4a03a4b5d42a9c8ca0f1c4604e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PackageProcessor/Editor/ImportPostProcessor.cs b/PackageProcessor/Editor/ImportPostProcessor.cs new file mode 100644 index 0000000..11d18e2 --- /dev/null +++ b/PackageProcessor/Editor/ImportPostProcessor.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using HarmonyLib; +using UnityEngine; +using UnityEditor; +using Object = UnityEngine.Object; + +namespace DreadScripts.PackageProcessor +{ + [InitializeOnLoad] + public class ImportPostProcessor + { + + private static readonly Harmony harmony; + private static readonly FieldInfo assetPathField; + private static readonly FieldInfo enabledStatusField; + private static readonly FieldInfo isFolderField; + + static ImportPostProcessor() + { + harmony = new Harmony("com.dreadscripts.importpostprocessor.tool"); + Type packageImportType = GetType("UnityEditor.PackageImport"); + Type packageImportItemType = GetType("UnityEditor.ImportPackageItem"); + assetPathField = packageImportItemType.GetField("destinationAssetPath", BindingFlags.Public | BindingFlags.Instance); + enabledStatusField = packageImportItemType.GetField("enabledStatus", BindingFlags.Public | BindingFlags.Instance); + isFolderField = packageImportItemType.GetField("isFolder", BindingFlags.Public | BindingFlags.Instance); + QuickPatch(packageImportType, "ShowImportPackage", string.Empty, nameof(ShowImportPackagePost)); + } + + private static void ShowImportPackagePost(object[] items) + { + foreach (var i in items) + { + string path = (string)assetPathField.GetValue(i) ; + bool isFolder = (bool)isFolderField.GetValue(i); + if (!isFolder && !string.IsNullOrEmpty(path) && (path.EndsWith(".cs") || path.EndsWith(".dll"))) + enabledStatusField.SetValue(i, 0); + + } + } + + private static void QuickPatch(System.Type targetType, string ogMethod, string preMethod = "", string poMethod = "") + { + MethodInfo originalMethod = AccessTools.GetDeclaredMethods(targetType).Find(m => m.Name == ogMethod); + HarmonyMethod prefixMethod = string.IsNullOrEmpty(preMethod) ? null : new HarmonyMethod(typeof(ImportPostProcessor).GetMethod(preMethod, BindingFlags.NonPublic | BindingFlags.Static)); + HarmonyMethod postMethod = string.IsNullOrEmpty(poMethod) ? null : new HarmonyMethod(typeof(ImportPostProcessor).GetMethod(poMethod, BindingFlags.NonPublic | BindingFlags.Static)); + harmony.Patch(originalMethod, prefixMethod, postMethod); + } + + private static System.Type GetType(string typeName) + { + System.Type myType = System.Type.GetType(typeName); + if (myType != null) + return myType; + foreach (Assembly assembly in System.AppDomain.CurrentDomain.GetAssemblies()) + { + myType = assembly.GetType(typeName); + if (myType != null) + return myType; + } + + return null; + } + } +} diff --git a/PackageProcessor/Editor/ImportPostProcessor.cs.meta b/PackageProcessor/Editor/ImportPostProcessor.cs.meta new file mode 100644 index 0000000..12785ea --- /dev/null +++ b/PackageProcessor/Editor/ImportPostProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cbdf79a44f36b9b4aaabc6ffa66403b9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PackageProcessor/Editor/PackageProcessorData.cs b/PackageProcessor/Editor/PackageProcessorData.cs new file mode 100644 index 0000000..a8ba76e --- /dev/null +++ b/PackageProcessor/Editor/PackageProcessorData.cs @@ -0,0 +1,55 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; + +namespace DreadScripts.PackageProcessor +{ + [System.Serializable] + public class PackageProcessorData : ScriptableObject + { + private static PackageProcessorData _instance; + + public static PackageProcessorData instance + { + get + { + if (!_instance && Exists()) + if (_instance = AssetDatabase.LoadAssetAtPath(SavePath)) + return _instance; + + _instance = CreateInstance(); + if (!System.IO.Directory.Exists(folderPath)) + System.IO.Directory.CreateDirectory(folderPath); + + AssetDatabase.CreateAsset(_instance, SavePath); + return _instance; + } + } + + private static string _folderPath; + + public static string folderPath + { + get + { + if (string.IsNullOrEmpty(_folderPath)) + _folderPath = PlayerPrefs.GetString("PackageProcessorDataPath", "Assets/DreadScripts/Saved Data/PackageProcessor"); + return _folderPath; + } + set => _folderPath = value; + } + + private static string SavePath => folderPath + "/PackageProcessorData.asset"; + + public bool active = true; + public bool includeDependencies = false; + public List exportDefaultOffExtensions = new List(); + public List exportDefaultOffFolders = new List(); + public List exportDefaultOffTypes = new List(); + public List exportDefaultOffAssets = new List(); + + public static bool Exists() => System.IO.File.Exists(SavePath); + + } +} diff --git a/PackageProcessor/Editor/PackageProcessorData.cs.meta b/PackageProcessor/Editor/PackageProcessorData.cs.meta new file mode 100644 index 0000000..54cde81 --- /dev/null +++ b/PackageProcessor/Editor/PackageProcessorData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ed2394df32bc4ff439e376a0a2aa49e6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PackageProcessor/Editor/PackageProcessorWindow.cs b/PackageProcessor/Editor/PackageProcessorWindow.cs new file mode 100644 index 0000000..f45d5e3 --- /dev/null +++ b/PackageProcessor/Editor/PackageProcessorWindow.cs @@ -0,0 +1,248 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using Object = UnityEngine.Object; + +namespace DreadScripts.PackageProcessor +{ + public class PackageProcessorWindow : EditorWindow + { + private static SerializedObject settings; + private static SerializedProperty includeDependencies; + private static SerializedProperty active; + + private static SerializedProperty exportDefaultOffTypes; + private static SerializedProperty exportDefaultOffFolders; + private static SerializedProperty exportDefaultOffExtensions; + private static SerializedProperty exportDefaultOffAssets; + + private static Object targetObject; + private static Object targetFolder; + private static Object targetAsset; + + [MenuItem("DreadTools/Utility/Package Processor")] + public static void ShowWindow() => GetWindow(false, "Package Processor Settings", true); + + private void OnGUI() + { + settings.Update(); + + using (new BGColorScope(active.boolValue, Color.green, Color.grey)) + active.boolValue = GUILayout.Toggle(active.boolValue, "Active", "toolbarbutton"); + + using (new EditorGUI.DisabledScope(!active.boolValue)) + { + using (new LabelWidthScope(200)) + EditorGUILayout.PropertyField(includeDependencies, new GUIContent("Default Include Dependencies")); + DrawListProperty(exportDefaultOffExtensions); + DrawListProperty(exportDefaultOffFolders, FolderPropertyGUI); + DrawListProperty(exportDefaultOffTypes, TypePropertyGUI); + DrawAssetProperty(exportDefaultOffAssets); + } + + PackageProcessorData.folderPath = AssetFolderPath(PackageProcessorData.folderPath, "Settings Path", "ExportPostProcessorDataPath"); + + settings.ApplyModifiedProperties(); + + + } + + #region GUI Methods + private void DrawListProperty(SerializedProperty p, Action guiCall = null) + { + using (new GUILayout.VerticalScope("box")) + { + p.isExpanded = EditorGUILayout.Foldout(p.isExpanded, p.displayName); + if (!p.isExpanded) return; + + guiCall?.Invoke(); + + EditorGUI.indentLevel++; + if (GUILayout.Button("+")) + p.arraySize++; + + for (int i = p.arraySize-1; i >= 0; i--) + { + using (new GUILayout.HorizontalScope()) + { + EditorGUILayout.PropertyField(p.GetArrayElementAtIndex(i)); + if (GUILayout.Button("X", GUILayout.Width(18))) + p.DeleteArrayElementAtIndex(i); + } + } + EditorGUI.indentLevel--; + } + } + private void TypePropertyGUI() + { + + using (new GUILayout.HorizontalScope()) + { + targetObject = EditorGUILayout.ObjectField("Add Type Of", targetObject, typeof(Object), true); + EditorGUI.BeginDisabledGroup(!targetObject); + if (GUILayout.Button("Add Type")) + { + exportDefaultOffTypes.arraySize++; + exportDefaultOffTypes.GetArrayElementAtIndex(exportDefaultOffTypes.arraySize - 1).stringValue = targetObject.GetType().AssemblyQualifiedName; + } + EditorGUI.EndDisabledGroup(); + } + + } + private void FolderPropertyGUI() + { + + using (new GUILayout.HorizontalScope()) + { + EditorGUI.BeginChangeCheck(); + targetFolder = EditorGUILayout.ObjectField("Folder", targetFolder, typeof(Object), true); + if (EditorGUI.EndChangeCheck() && targetFolder) + { + string assetPath = AssetDatabase.GetAssetPath(targetFolder); + if (!AssetDatabase.IsValidFolder(assetPath)) + targetFolder = AssetDatabase.LoadMainAssetAtPath(System.IO.Path.GetDirectoryName(assetPath)); + } + EditorGUI.BeginDisabledGroup(!targetFolder); + if (GUILayout.Button("Add Folder")) + { + exportDefaultOffFolders.arraySize++; + exportDefaultOffFolders.GetArrayElementAtIndex(exportDefaultOffFolders.arraySize - 1).stringValue = AssetDatabase.GetAssetPath(targetFolder); + } + EditorGUI.EndDisabledGroup(); + } + + } + + private void DrawAssetProperty(SerializedProperty p) + { + using (new GUILayout.VerticalScope("box")) + { + p.isExpanded = EditorGUILayout.Foldout(p.isExpanded, p.displayName); + if (p.isExpanded) + { + using (new GUILayout.HorizontalScope()) + { + targetAsset = EditorGUILayout.ObjectField("Add GUID Of", targetAsset, typeof(Object), false); + if (AssetDatabase.IsValidFolder(AssetDatabase.GetAssetPath(targetAsset))) + targetAsset = null; + EditorGUI.BeginDisabledGroup(!targetAsset); + if (GUILayout.Button("Add GUID")) + { + AssetDatabase.TryGetGUIDAndLocalFileIdentifier(targetAsset, out string newGUID, out long _); + exportDefaultOffAssets.arraySize++; + exportDefaultOffAssets.GetArrayElementAtIndex(exportDefaultOffAssets.arraySize - 1).stringValue = newGUID; + } + EditorGUI.EndDisabledGroup(); + } + + EditorGUI.indentLevel++; + if (GUILayout.Button("+")) + { + p.arraySize++; + } + for (int i = p.arraySize - 1; i >= 0; i--) + { + using (new GUILayout.HorizontalScope()) + { + EditorGUILayout.PropertyField(p.GetArrayElementAtIndex(i)); + if (GUILayout.Button("X", GUILayout.Width(18))) + p.DeleteArrayElementAtIndex(i); + if (GUILayout.Button("?",GUILayout.Width(18))) + { + Object asset = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(p.GetArrayElementAtIndex(i).stringValue)); + if (!asset) + { + if (EditorUtility.DisplayDialog("Not Found", "Asset for this GUID was not found. Delete?", "Delete", "Ignore")) + p.DeleteArrayElementAtIndex(i); + } + else + EditorGUIUtility.PingObject(asset); + + } + } + } + EditorGUI.indentLevel--; + } + } + } + + private static string AssetFolderPath(string variable, string title, string playerpref, bool isPlayerPrefs = true) + { + using (new GUILayout.HorizontalScope()) + { + using (new EditorGUI.DisabledScope(true)) + EditorGUILayout.TextField(title, variable); + + if (GUILayout.Button("...", GUILayout.Width(30))) + { + var dummyPath = EditorUtility.OpenFolderPanel(title, AssetDatabase.IsValidFolder(variable) ? variable : "Assets", string.Empty); + if (string.IsNullOrEmpty(dummyPath)) + return variable; + string newPath = FileUtil.GetProjectRelativePath(dummyPath); + + if (!newPath.StartsWith("Assets")) + { + Debug.LogWarning("New Path must be a folder within Assets!"); + return variable; + } + + variable = newPath; + if (isPlayerPrefs) PlayerPrefs.SetString(playerpref, variable); + else EditorPrefs.SetString(playerpref, variable); + } + } + + return variable; + } + #endregion + + private void OnEnable() + { + if (settings == null) + { + settings = new SerializedObject(PackageProcessorData.instance); + includeDependencies = settings.FindProperty("includeDependencies"); + active = settings.FindProperty("active"); + exportDefaultOffTypes = settings.FindProperty("exportDefaultOffTypes"); + exportDefaultOffFolders = settings.FindProperty("exportDefaultOffFolders"); + exportDefaultOffExtensions = settings.FindProperty("exportDefaultOffExtensions"); + exportDefaultOffAssets = settings.FindProperty("exportDefaultOffAssets"); + } + + } + + #region Scope Classes + public class LabelWidthScope : System.IDisposable + { + private readonly float originalWidth; + public LabelWidthScope(float newWidth) + { + originalWidth = EditorGUIUtility.labelWidth; + EditorGUIUtility.labelWidth = newWidth; + } + + public void Dispose() => EditorGUIUtility.labelWidth = originalWidth; + + } + + public class BGColorScope : System.IDisposable + { + private readonly Color originalColor; + + public BGColorScope(bool active, Color activeColor, Color inactiveColor) + { + originalColor = GUI.backgroundColor; + GUI.backgroundColor = active ? activeColor : inactiveColor; + } + + public void Dispose() => GUI.backgroundColor = originalColor; + + } + #endregion + } + + + +} \ No newline at end of file diff --git a/PackageProcessor/Editor/PackageProcessorWindow.cs.meta b/PackageProcessor/Editor/PackageProcessorWindow.cs.meta new file mode 100644 index 0000000..e564073 --- /dev/null +++ b/PackageProcessor/Editor/PackageProcessorWindow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 43224e74da76e8a4ca25914ed1364442 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PackageProcessor/Editor/com.dreadrith.packageprocessor.Editor.asmdef b/PackageProcessor/Editor/com.dreadrith.packageprocessor.Editor.asmdef new file mode 100644 index 0000000..aaf10b3 --- /dev/null +++ b/PackageProcessor/Editor/com.dreadrith.packageprocessor.Editor.asmdef @@ -0,0 +1,15 @@ +{ + "name": "com.dreadrith.packageprocessor.Editor", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/PackageProcessor/Editor/com.dreadrith.packageprocessor.Editor.asmdef.meta b/PackageProcessor/Editor/com.dreadrith.packageprocessor.Editor.asmdef.meta new file mode 100644 index 0000000..71283ca --- /dev/null +++ b/PackageProcessor/Editor/com.dreadrith.packageprocessor.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b94789d11fa32064c84634c99b5a21bd +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PackageProcessor/LICENSE b/PackageProcessor/LICENSE new file mode 100644 index 0000000..545aeca --- /dev/null +++ b/PackageProcessor/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Dreadrith + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/PackageProcessor/LICENSE.meta b/PackageProcessor/LICENSE.meta new file mode 100644 index 0000000..8660900 --- /dev/null +++ b/PackageProcessor/LICENSE.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e31dd2b2d1b36c94ba8b44b96eaa1632 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PackageProcessor/README.md b/PackageProcessor/README.md new file mode 100644 index 0000000..367964b --- /dev/null +++ b/PackageProcessor/README.md @@ -0,0 +1,37 @@ +# Package Processor +Make it less tedious to import or export only the things that you need. + +![image](https://cdn.discordapp.com/attachments/1096062312495972414/1096062312944783450/postprost.gif?ex=66343bd3&is=6632ea53&hm=3bec6fe57e3675b2a80bba600fcbb753f312ec7797d62ed5633d3defb8c09b21&) + +Package Processor can be used to reduce the tediousness of having to Select/Deselect certain assets based on Exclusion rules and other features. + +Settings can be found under +DreadTools > Scripts Settings > Package Processor +Currently, Import Processor only deselects scripts and doesn't have settings. + +Settings Window +--------------- +- "Active": Whether the settings should affect the exporting at all. + - "Include Dependencies": Whether opening the export window should have dependencies On or Off by default. + - "Default Off Extensions": Any File matching one of these extensions will be Off by default. + - "Default Off Folders": Any File whose path contains one of these paths will be Off by default. + - "Default Off Types": Any File whose type matches one of these types will be Off by default. + - "Default Off Assets": Any File whose GUID matches one of these GUIDs will be Off by default. + - "Settings Path": The path where the settings should be saved and loaded from. + +Export Window +------------- +Right Clicking any file will open a Context menu for extra features + +- File - Toggle Type: Turns On/Off all of the assets being exporting whose types match the one selected. +- Exclusions: + - Add/Remove Asset: Adds/Removes this File's GUID in the Default Off Assets list. + - Add/Remove Type: Adds/Removes this File's Type in the Default Off Types list. + - Add/Remove Extension: Adds/Removes this File's Extension in the Default Off Extensions list. + +- Folder - Exclusions: Add/Remove Folder: Adds/Removes this Folder's Path in the Default Off Folders list. + +**Requires Harmony!** + +### Thank you +If you enjoy Package Processor, please consider [supporting me ♡](https://ko-fi.com/Dreadrith)! diff --git a/PackageProcessor/README.md.meta b/PackageProcessor/README.md.meta new file mode 100644 index 0000000..c79a8b6 --- /dev/null +++ b/PackageProcessor/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3c7cb9dfc3a13214cb620c8f76deca94 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PackageProcessor/package.json b/PackageProcessor/package.json new file mode 100644 index 0000000..9cab5b2 --- /dev/null +++ b/PackageProcessor/package.json @@ -0,0 +1,17 @@ +{ + "name": "com.dreadrith.packageprocessor", + "displayName": "DreadScripts - PackageProcessor", + "version": "1.0.1", + "description": "Make it less tedious to import or export only the things that you need.", + "gitDependencies": {}, + "vpmDependencies": {}, + "author": { + "name": "Dreadrith", + "email": "dreadscripts@gmail.com", + "url": "https://www.dreadrith.com" + }, + "legacyFolders": {}, + "legacyFiles": {}, + "type": "tool", + "unity": "2019.4" +} \ No newline at end of file diff --git a/PackageProcessor/package.json.meta b/PackageProcessor/package.json.meta new file mode 100644 index 0000000..a350534 --- /dev/null +++ b/PackageProcessor/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 779188ec76ff7e84f9da587fa51f2d2c +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PhysBone-Converter.meta b/PhysBone-Converter.meta new file mode 100644 index 0000000..e8c21a0 --- /dev/null +++ b/PhysBone-Converter.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b8269f379715f7c408dd9249447b4491 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PhysBone-Converter/Editor.meta b/PhysBone-Converter/Editor.meta new file mode 100644 index 0000000..56cad45 --- /dev/null +++ b/PhysBone-Converter/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fb81ed9ea3b9261488c105f6fc58a0ee +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PhysBone-Converter/Editor/PhysBoneConverter.cs b/PhysBone-Converter/Editor/PhysBoneConverter.cs new file mode 100644 index 0000000..f6a13ab --- /dev/null +++ b/PhysBone-Converter/Editor/PhysBoneConverter.cs @@ -0,0 +1,368 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using UnityEditor; +using UnityEngine; +using VRC.SDK3.Avatars.Components; +using VRC.SDK3.Dynamics.PhysBone.Components; + +//This work is licensed under the Creative Commons Attribution-NonCommercial 2.0 License. +//To view a copy of the license, visit https://creativecommons.org/licenses/by-nc/2.0/legalcode + +//Made by Dreadrith#3238 +//Discord: https://discord.gg/ZsPfrGn +//Github: https://github.com/Dreadrith/DreadScripts +//Gumroad: https://gumroad.com/dreadrith +//Ko-fi: https://ko-fi.com/dreadrith + +namespace DreadScripts.PhysBoneConverter +{ + public class PhysBoneConverter : EditorWindow + { + #region Automated + private static readonly Dictionary colliderDictionary = new Dictionary(); + private static readonly AnimationCurve AngleToStiffnessCurve = SmoothCurveTangents(new AnimationCurve( + new Keyframe(0, 1), + new Keyframe(60, 0.5f), + new Keyframe(105, 0.2f), + new Keyframe(130, 0.1f), + new Keyframe(180, 0))); + + private static readonly GUIContent[] names = + { + new GUIContent("Damping","How much the bones get slowed down."), + new GUIContent("Elasticity","How much force is applied to return each bone to its original orientation."), + new GUIContent("Stiffness", "How much the bone's original orientation gets preserved."), + new GUIContent("Inert", "How much the character's position change is ignored in physics simulation."), + new GUIContent("Friction", "How much the bones get slowed down when colliding.") + }; + + private static int optionsCount; + private static FieldInfo frictionField; + private static FieldInfo frictionDistribField; + #endregion + + #region Input + public static GameObject targetRoot; + public static bool makeBackup = true; + public static bool[] bools = {true,true,true,true,true}; + public static float[] floats = {0.2f, 0.2f, 0, 0, 0}; + public static AnimationCurve[] curves = {new AnimationCurve(), new AnimationCurve(), new AnimationCurve(), new AnimationCurve(), new AnimationCurve()}; + #endregion + + #region GUI + [MenuItem("DreadTools/Utility/PhysBone Converter")] + public static void ShowWindow() => GetWindow("PhysBone Converter"); + + + public void OnGUI() + { + EditorGUIUtility.labelWidth = 90; + + using (new GUILayout.HorizontalScope(GUI.skin.box)) + targetRoot = (GameObject) EditorGUILayout.ObjectField(Helper.Content.root, targetRoot, typeof(GameObject), true); + + for (int i = 0; i < optionsCount; i++) + DrawFloatOption(i); + + using (new EditorGUI.DisabledScope(!targetRoot)) + if (GUILayout.Button("Convert", Helper.Styles.toolbarButton)) + Helper.ReportCall(StartConversion); + + + EditorGUIUtility.labelWidth = 0; + + Helper.Credit(); + } + + private static void DrawFloatOption(int index) + { + using (new GUILayout.HorizontalScope(GUI.skin.box)) + { + EditorGUILayout.PrefixLabel(names[index]); + if (!bools[index]) + { + floats[index] = EditorGUILayout.Slider(floats[index], 0f, 1f); + curves[index] = EditorGUILayout.CurveField(curves[index], GUILayout.Width(70)); + } + else GUILayout.FlexibleSpace(); + + var ogColor = GUI.backgroundColor; + GUI.backgroundColor = bools[index] ? Color.green : Color.red; + bools[index] = GUILayout.Toggle(bools[index], "Auto", GUI.skin.button, GUILayout.ExpandWidth(false)); + GUI.backgroundColor = ogColor; + } + } + + private void OnEnable() + { + targetRoot = targetRoot ?? FindObjectOfType()?.gameObject ?? FindObjectOfType()?.gameObject; + frictionField = typeof(DynamicBone).GetField("m_Friction"); + frictionDistribField = typeof(DynamicBone).GetField("m_FrictionDistrib"); + optionsCount = frictionField == null ? 4 : 5; + } + #endregion + + #region Main + public static void StartConversion() + { + if (!targetRoot) return; + colliderDictionary.Clear(); + var pbBones = targetRoot.GetComponentsInChildren(true); + var pbColliders = targetRoot.GetComponentsInChildren(true); + if (pbBones.Length == 0 && pbColliders.Length == 0) + { + Helper.GreenLog("No Physbones or colliders to convert."); + return; + } + + if (makeBackup) + { + var t = targetRoot.transform; + var backup = Instantiate(targetRoot, t.position, t.rotation, t.parent); + backup.name = backup.name.Replace(" (Backup)", string.Empty).Replace("(Clone)", " (Backup)"); + backup.SetActive(false); + } + + foreach (var c in pbColliders) ConvertCollider(c); + + //1 to 1 Replacement is rarely incorrect. + //In cases where there are multiple children of the PB and it's set to ignore, then each child needs its own DBone. + foreach (var pb in pbBones) ConvertPhysBone(pb); + + + foreach (var c in pbColliders) DestroyImmediate(c); + foreach (var pb in pbBones) DestroyImmediate(pb); + + Helper.GreenLog($"Finished conversion! Bones: {pbBones.Length} | Colliders: {pbColliders.Length}"); + } + + private static void ConvertCollider(VRCPhysBoneCollider pbc) + { + Transform rootTransform = pbc.GetRootTransform(); + string collidersName = $"{rootTransform.name} Colliders"; + GameObject colliderParent = rootTransform.Find(collidersName)?.gameObject; + if (!colliderParent) + { + colliderParent = new GameObject(collidersName) + { + transform = + { + parent = rootTransform, + localPosition = Vector3.zero, + localRotation = Quaternion.identity, + localScale = Vector3.one + } + }; + } + + GameObject colliderTarget = new GameObject("Collider") + { + transform = + { + parent = colliderParent.transform, + localPosition = pbc.position, + localRotation = pbc.rotation, + localScale = Vector3.one + } + }; + GameObjectUtility.EnsureUniqueNameForSibling(colliderTarget); + + bool isPlane = pbc.shapeType == VRC.Dynamics.VRCPhysBoneColliderBase.ShapeType.Plane; + + DynamicBoneColliderBase baseCollider; + if (isPlane) baseCollider = colliderTarget.AddComponent(); + else baseCollider = colliderTarget.AddComponent(); + + + baseCollider.m_Bound = (DynamicBoneColliderBase.Bound) (pbc.insideBounds ? 1 : 0); + baseCollider.m_Center = Vector3.zero; + baseCollider.m_Direction = DynamicBoneColliderBase.Direction.Y; + + if (!isPlane) + { + var collider = (DynamicBoneCollider)baseCollider; + collider.m_Radius = pbc.radius; + collider.m_Height = pbc.height; + } + + colliderDictionary.Add(pbc, baseCollider); + } + + private static void ConvertPhysBone(VRCPhysBone pb) + { + var dbone = pb.gameObject.AddComponent(); + dbone.m_Root = pb.GetRootTransform(); + float scaleFactor = (Mathf.Abs(dbone.transform.lossyScale.x / dbone.m_Root.lossyScale.x)); + + + dbone.m_Damping = bools[0] ? 1 - pb.spring : floats[0]; + dbone.m_DampingDistrib = bools[0] ? InvertCurve(pb.springCurve) : curves[0]; + dbone.m_Elasticity = bools[1] ? pb.pull : floats[1]; + dbone.m_ElasticityDistrib = bools[1] ? pb.pullCurve : curves[1]; + dbone.m_Inert = bools[3] ? pb.immobile : floats[3]; + dbone.m_InertDistrib = bools[3] ? pb.immobileCurve : curves[3]; + if (!bools[4]) + { + frictionField.SetValue(dbone, floats[4]); + frictionDistribField.SetValue(dbone, curves[4]); + } + + dbone.m_Radius = pb.radius / scaleFactor; + dbone.m_RadiusDistrib = pb.radiusCurve; + dbone.m_Gravity = new Vector3(0, -pb.gravity / 10f, 0); + + //Better Limit conversion, such as Hinge to Freeze Axis, can be done, but not all possibilities with PhysBone limits can be achieved. + if (bools[2]) + { + dbone.m_Stiffness = 0; + if (pb.limitType == VRC.Dynamics.VRCPhysBoneBase.LimitType.Angle) + { + bool hasAnglecurve = pb.maxAngleXCurve != null && pb.maxAngleXCurve.keys.Length > 0; + dbone.m_Stiffness = hasAnglecurve ? 1 : AngleToStiffnessCurve.Evaluate(pb.maxAngleX); + + dbone.m_StiffnessDistrib = SmoothCurveTangents(DeriveCurve(SubdivideCurve(pb.maxAngleXCurve, 10, false), k => + { + k.value = AngleToStiffnessCurve.Evaluate(k.value * 180); + return k; + })); + } + } + else + { + dbone.m_Stiffness = floats[2]; + dbone.m_StiffnessDistrib = curves[2]; + } + + dbone.m_Exclusions = pb.ignoreTransforms; + dbone.m_Colliders = pb.colliders.Cast() + .Where(pbc => pbc && colliderDictionary.ContainsKey(pbc)) + .Select(pbc => colliderDictionary[pbc]).ToList(); + + + if (pb.endpointPosition != Vector3.zero) + { + foreach (var t in dbone.m_Root.GetComponentsInChildren().Where(t => t.childCount == 0 && !IsExcluded(t, dbone.m_Exclusions))) + { + GameObjectUtility.EnsureUniqueNameForSibling(new GameObject($"{t.name} EndBone") + { + transform = + { + parent = t, + position = t.TransformPoint(pb.endpointPosition), + localRotation = Quaternion.identity, + localScale = Vector3.one, + } + }); + } + } + + //Dunno if this optimizes anything in-game but aye better than nothing + dbone.m_DistantDisable = true; + dbone.m_ReferenceObject = targetRoot.transform; + } + + private static bool IsExcluded(Transform t, IEnumerable exclusions) => exclusions.Any(e => e != null && t.IsChildOf(e)); + #endregion + + #region Curve Functions + private static AnimationCurve SmoothCurveTangents(AnimationCurve curve) + { + if (curve == null) return null; + for (int i = 0; i < curve.keys.Length; i++) + curve.SmoothTangents(i, 0); + return curve; + } + private static AnimationCurve DeriveCurve(AnimationCurve curve, Func KeyFunc) + { + if (curve == null) return null; + int length = curve.keys.Length; + + var newKeys = new Keyframe[length]; + for (int i = 0; i < length; i++) + newKeys[i] = KeyFunc(curve.keys[i]); + + return new AnimationCurve(newKeys); + } + private static AnimationCurve InvertCurve(AnimationCurve curve) => + DeriveCurve(curve, k => + { + k.value = -k.value; + k.inTangent = -k.inTangent; + k.outTangent = -k.outTangent; + return k; + }); + private static AnimationCurve SubdivideCurve(AnimationCurve curve, int keyLimit = 10, bool smoothCurve = true) + { + if (curve == null) return null; + if (curve.length <= 1) return curve; + List keys = new List(curve.keys); + if (keys.Count > 1) + { + while (keys.Count < keyLimit) + { + var currentKeys = keys.OrderBy(k => k.time).ToList(); + for (int i = 0; i < currentKeys.Count - 1 && keys.Count < keyLimit; i++) + { + var time = (currentKeys[i].time + currentKeys[i + 1].time) / 2; + keys.Add(new Keyframe(time, curve.Evaluate(time))); + } + } + } + + + var newCurve = new AnimationCurve(keys.ToArray()); + if (smoothCurve) SmoothCurveTangents(newCurve); + return newCurve; + } + private static void LogCurve(AnimationCurve curve) + { + Debug.Log(string.Join("\n", curve.keys.Select(k => k.time).Zip(curve.keys.Select(k => k.value), (t, v) => $"Time: {t} | Value: {v}"))); + } + #endregion + } + public static class Helper + { + + internal static void ReportCall(Action action) + { + try { action(); } + catch (Exception e) + { + string errorMSG = $"{e.Message}\n\n{e.StackTrace}"; + if (EditorUtility.DisplayDialog("Error!", $"An unexpected error has occured and execution was halted. Please Press Copy and report this stack trace to Dreadrith#3238\n~~~~~~~~~~~~\n{errorMSG}", "Copy", "Nah")) + EditorGUIUtility.systemCopyBuffer = errorMSG; + throw; + } + } + + internal static void Credit() + { + using (new GUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + if (GUILayout.Button("Made By Dreadrith#3238", "boldlabel")) + Application.OpenURL("https://linktr.ee/Dreadrith"); + } + } + + private const string logName = "PBConverter"; + internal static void GreenLog(string msg) => + Debug.Log($"[{logName}] {msg}"); + + public static class Styles + { + public static readonly GUIStyle toolbarButton = GUI.skin.GetStyle("toolbarbutton"); + public static readonly GUIStyle box = GUI.skin.GetStyle("box"); + } + + public static class Content + { + public static readonly GUIContent root = new GUIContent("Root", "The Root. Will convert all the PhysBones and Colliders under this root."); + } + + } + +} diff --git a/PhysBone-Converter/Editor/PhysBoneConverter.cs.meta b/PhysBone-Converter/Editor/PhysBoneConverter.cs.meta new file mode 100644 index 0000000..16f9133 --- /dev/null +++ b/PhysBone-Converter/Editor/PhysBoneConverter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5362ab9190648fc4fa4a11324829ab0b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PhysBone-Converter/Instructions.txt b/PhysBone-Converter/Instructions.txt new file mode 100644 index 0000000..cd44528 --- /dev/null +++ b/PhysBone-Converter/Instructions.txt @@ -0,0 +1,20 @@ +//Made by Dreadrith#3238 +//Discord: https://discord.gg/ZsPfrGn +//Github: https://github.com/Dreadrith/DreadScripts +//Gumroad: https://gumroad.com/dreadrith +//Ko-fi: https://ko-fi.com/dreadrith + +This tool will convert your PhysBones and PBColliders to DynamicBones and DBColliders. +Of course, it's not perfect but it does almost the inverse conversion of PhysBones. + +How to use +---------- +Find the tool's window near the top left corner of Unity under +DreadTools > Utility > PhysBone Converter + +1- Make sure that your avatar or root is correctly set as "Root". +2- Press Convert. Done! + +You can optionally disable the "Auto" option for any setting and set your own value and curve. +This will be the same value across all DynamicBones + diff --git a/PhysBone-Converter/Instructions.txt.meta b/PhysBone-Converter/Instructions.txt.meta new file mode 100644 index 0000000..2169a80 --- /dev/null +++ b/PhysBone-Converter/Instructions.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 54d64c9949521fa468c6dbab8670364f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PhysBone-Converter/LICENSE.md b/PhysBone-Converter/LICENSE.md new file mode 100644 index 0000000..af6fc40 --- /dev/null +++ b/PhysBone-Converter/LICENSE.md @@ -0,0 +1,2 @@ +This work is licensed under the Creative Commons Attribution-NonCommercial 2.0 License. +To view a copy of the license, visit https://creativecommons.org/licenses/by-nc/2.0/legalcode \ No newline at end of file diff --git a/PhysBone-Converter/LICENSE.md.meta b/PhysBone-Converter/LICENSE.md.meta new file mode 100644 index 0000000..932e1da --- /dev/null +++ b/PhysBone-Converter/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 29f9273871992164daf47069bf15ea30 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PhysBone-Converter/README.md b/PhysBone-Converter/README.md new file mode 100644 index 0000000..fc01076 --- /dev/null +++ b/PhysBone-Converter/README.md @@ -0,0 +1,32 @@ +# PhysBone Converter +This tool will convert your PhysBones and PBColliders to DynamicBones and DBColliders.
+Of course, it's not perfect but it does almost the inverse conversion of PhysBones.

+Download here

+![window](https://raw.githubusercontent.com/Dreadrith/DreadScripts/main/Other/Info_Source/PhysBoneConverter/toolwindow.png) + +# How to use +Prerequisites: VRCAvatars SDK & Dynamic Bone OR Dynamic Bone Stub
+ +Find the tool's window near the top left corner of Unity under
+DreadTools > Utility > PhysBone Converter + +1- Make sure that your avatar or root is correctly set as "Root".
+2- Press Convert. Done! + +You can optionally disable the "Auto" option for any setting and set your own value and curve.
+This will be the same value across all DynamicBones

+![showcase](https://raw.githubusercontent.com/Dreadrith/DreadScripts/main/Other/Info_Source/PhysBoneConverter/showcase.gif) + +# Potential Issues +Issue: DreadTools button doesn't appear on the top toolbar
+Solution: Your project has a script error which prevents new scripts from loading. Check your console for errors and read them for details about what's causing them. Below are some common errors + +Issue: Error: the type or namespace name 'DynamicBoneColliderBase' could not be found.
+Solution: You either don't have Dynamic Bones or your dynamic bones version doesn't match the one this script is made for. This was made for 1.2.x as it's the most common version. Try using the Dynamic Bone Stub listed above instead + +Issue: Error: The type or namespace name 'VRCPhysBoneCollider' could not be found
+Issue: Error: 'VRCPhysBone' does not contain a definition for 'maxAngleXCurve'...
+Solution: Both of these can be solved with importing the proper Avatars VRCSDK. Currently, the latest Avatars VRCSDK should work. + +Issue: The Dynamic Bones aren't acting the same as how PhysBones were.
+Sadly, Dynamic Bones don't function the same as PhysBones and have less features. As such, they will behave differently and in some uncommon cases even look broken in comparison. This may be improved with manual tweaking. diff --git a/PhysBone-Converter/README.md.meta b/PhysBone-Converter/README.md.meta new file mode 100644 index 0000000..368f9fd --- /dev/null +++ b/PhysBone-Converter/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3fc128096b1a3c34cb474729e4bc841f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/PhysBone-Converter/package.json b/PhysBone-Converter/package.json new file mode 100644 index 0000000..9276cfd --- /dev/null +++ b/PhysBone-Converter/package.json @@ -0,0 +1,23 @@ +{ + "name": "com.dreadrith.physboneconverter", + "displayName": "DreadTools - PhysBone Converter", + "version": "1.0.3", + "unity": "2019.4", + "description": "Converts PhysBones to DynamicBones to the best of my capability", + "keywords": [ + "Dreadrith", + "DreadScripts", + "DreadTools", + "VRChat", + "ChilloutVR" + "Tool", + "Converter", + "Conversion", + "DynamicBone" + ], + "author": { + "name": "Dreadrith", + "email": "dreadscripts@gmail.com", + "url": "https://linktr.ee/Dreadrith" + } +} \ No newline at end of file diff --git a/PhysBone-Converter/package.json.meta b/PhysBone-Converter/package.json.meta new file mode 100644 index 0000000..e9453d2 --- /dev/null +++ b/PhysBone-Converter/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e1562724099a9d24a8757ab714f67242 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/QuickToggle.meta b/QuickToggle.meta new file mode 100644 index 0000000..fba2e4d --- /dev/null +++ b/QuickToggle.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1969d984bcccc7744ab94b84eb2f6f1d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/QuickToggle/CHANGELOG.md b/QuickToggle/CHANGELOG.md new file mode 100644 index 0000000..bcad480 --- /dev/null +++ b/QuickToggle/CHANGELOG.md @@ -0,0 +1,17 @@ +v1.6.1 +------ +- [Fix] Added assembly definition which allows the package to actually compile +- [Misc] Defined minimal unity version + +v1.6.0 +------ +- [Improvement] Updated VPM Format + +v1.5.1 +------ +- [Feature] Added 'Write Defaults' Option for making a toggle +- [Improvement] Migrated to VPM Format + +v1.5.0 +------ +- [Feature] Added VRC support to quickly add a toggle diff --git a/QuickToggle/CHANGELOG.md.meta b/QuickToggle/CHANGELOG.md.meta new file mode 100644 index 0000000..b31def0 --- /dev/null +++ b/QuickToggle/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2236364181b3da64cbcee7bf193d7d0b +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/QuickToggle/Editor.meta b/QuickToggle/Editor.meta new file mode 100644 index 0000000..58fca15 --- /dev/null +++ b/QuickToggle/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 902ff8ac2ea082648a2d0fa88cd0a3c1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/QuickToggle/Editor/QuickToggle.cs b/QuickToggle/Editor/QuickToggle.cs new file mode 100644 index 0000000..c20cdf2 --- /dev/null +++ b/QuickToggle/Editor/QuickToggle.cs @@ -0,0 +1,1113 @@ +using System; +using UnityEngine; +using UnityEditor; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text.RegularExpressions; +using UnityEditor.Animations; +using VRC.SDK3.Avatars.Components; +using VRC.SDK3.Avatars.ScriptableObjects; +using Object = UnityEngine.Object; + +namespace DreadScripts.QuickToggle +{ + public class QuickToggle : EditorWindow + { + #region VRC + +#if VRC_SDK_VRCSDK3 + private static VRCAvatarDescriptor avatar; + private static VRCExpressionsMenu menu; + private static VRCToggleFlags vrcAddFlags = VRCToggleFlags.All; + private static string _parameter = "Toggle"; + + private static string parameter + { + get => _parameter; + set + { + if (_parameter == value) return; + _parameter = value; + RefreshUniqueParameter(); + } + } + + private static bool uniqueParameter = true; + private static bool useWriteDefaults = false; + private enum VRCToggleFlags + { + None = 0, + FX = 1 << 0, + Menu = 1 << 1, + Parameters = 1 << 2, + All = ~0 + } +#endif + + #endregion + + #region Private Variables + + private static bool init; + private static bool clipValid = false; + private static string folderPath; + + private static UnityEditorInternal.ReorderableList targetList; + private static Vector2 scroll; + + public static int toolbarIndex; + private static readonly string[] toolbarOptions = {"Toggle", "Blendshape", "Settings"}; + private const string PREF_KEY = "QuickToggleDataKey"; + + private enum BlendClipMode + { + SingleClip, + ClipPerRenderer, + ClipPerBlendshape + } + + #endregion + + #region Input + + public static GameObject _root; + + public static GameObject root + { + get => _root; + set + { + if (_root == value) return; + _root = value; + OnRootChanged(); + } + } + + public static List targets = new List(); + + private static List skinnedRenderers = new List() {new SkinnedShapeSlot()}; + + public static string clipName; + + #endregion + + #region Settings + + [SerializeField] private int frameSpan = 1; + [SerializeField] private bool loopTime; + [SerializeField] private bool pingFolder = true; + [SerializeField] private bool autoClose = true; + [SerializeField] private string savePath = "Assets/DreadScripts/Quick Actions/Quick Toggle/Generated Clips"; + + private static bool autoName = true; + private static bool individualToggle; + private static bool createOpposite = true; + private static bool useAllShapes; + private static BlendClipMode shapeClipMode = BlendClipMode.SingleClip; + + #endregion + + [MenuItem("DreadTools/Quick Toggle", false, 840)] + [MenuItem("GameObject/Quick Toggle", false, -10)] + public static void ShowWindow() + { + GetWindow(); + GameObject[] targetObjs = Selection.GetFiltered(SelectionMode.Editable); + targets = targetObjs.Select(t => new ToggleObject(t)).ToList(); + skinnedRenderers = targetObjs.Select(t => new SkinnedShapeSlot(t.GetComponent())).Where(s => s.renderer).ToList(); + + GameObject[] selectedObj = Selection.GetFiltered(SelectionMode.TopLevel); + if (!root && selectedObj.Length > 0) + root = selectedObj[0].transform.root.gameObject; + +#if VRC_SDK_VRCSDK3 + if (!root) root = FindObjectOfType()?.gameObject; +#endif + + if (autoName) + { + clipName = string.Empty; + switch (targetObjs.Length) + { + case 0: + clipName = "Objects"; + break; + case 1: + clipName = targetObjs[0].name; + +#if VRC_SDK_VRCSDK3 + parameter = clipName; +#endif + + break; + + default: + { + for (int i = 0; i < targetObjs.Length; i++) + { + int letterCount = Mathf.Clamp(7 - targetObjs.Length, 2, 5); + clipName += targetObjs[i].name.Substring(0, Mathf.Clamp(letterCount, 1, targetObjs[i].name.Length)); + if (i != targetObjs.Length - 1) + clipName += "-"; + } + +#if VRC_SDK_VRCSDK3 + parameter = clipName; +#endif + + break; + } + } + + clipName += " Enable"; + } + + CheckIfValid(); + init = false; + + } + + private static QuickToggle GetWindow() => GetWindow(false, "Quick Toggle", true); + + #region Main GUI Methods + + private void OnGUI() + { + if (!init) + RefreshList(); + + toolbarIndex = GUILayout.Toolbar(toolbarIndex, toolbarOptions, EditorStyles.toolbarButton); + scroll = EditorGUILayout.BeginScrollView(scroll); + + switch (toolbarIndex) + { + case 0: + case 1: + DrawCreatorGUI(); + break; + case 2: + DrawSettingsGUI(); + break; + } + + + using (new GUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + if (GUILayout.Button("Made by Dreadrith#3238", "boldlabel")) + Application.OpenURL("https://github.com/Dreadrith/DreadScripts"); + } + + EditorGUILayout.EndScrollView(); + + if (!init) + { + GUI.FocusControl("CreateClip"); + init = true; + } + + if (GUI.GetNameOfFocusedControl() == "CreateClip" && Event.current.type == EventType.KeyDown && (Event.current.keyCode == KeyCode.Return || Event.current.keyCode == KeyCode.KeypadEnter)) + { + StartCreateClip(false); + } + } + + private void DrawCreatorGUI() + { + bool creatingToggle = toolbarIndex == 0; + + using (new GUILayout.VerticalScope(EditorStyles.helpBox)) + { + +#if VRC_SDK_VRCSDK3 + bool showAvatarField = avatar && creatingToggle; + EditorGUI.BeginChangeCheck(); + Object tempObject = EditorGUILayout.ObjectField(showAvatarField ? "Avatar" : "Root", showAvatarField ? (Object) avatar : (Object) root, showAvatarField ? typeof(VRCAvatarDescriptor) : typeof(GameObject), true); + if (EditorGUI.EndChangeCheck()) + { + avatar = tempObject as VRCAvatarDescriptor; + if (avatar) root = avatar.gameObject; + else root = (GameObject) tempObject; + } +#else + root = (GameObject)EditorGUILayout.ObjectField( "Root", root, typeof(GameObject), true); +#endif + } + + using (new GUILayout.VerticalScope(EditorStyles.helpBox)) + { + if (creatingToggle) targetList.DoLayoutList(); + else + { + + for (int i = 0; i < skinnedRenderers.Count; i++) + skinnedRenderers[i].Draw(); + + if (GUILayout.Button("Add Skinned Renderer")) skinnedRenderers.Add(new SkinnedShapeSlot()); + + + } + } + + EditorGUILayout.Space(); + + using (new GUILayout.VerticalScope(EditorStyles.helpBox)) + { + + + using (new GUILayout.HorizontalScope()) + { + using (new GUILayout.VerticalScope()) + { + DoToggle(ref createOpposite, Styles.createOppositeContent); + using (new GUILayout.VerticalScope()) clipName = EditorGUILayout.TextField("Clip Name", clipName); + using (new EditorGUI.DisabledScope(creatingToggle)) + shapeClipMode = (BlendClipMode) EditorGUILayout.EnumPopup("Clip Mode", shapeClipMode); + } + + using (new GUILayout.VerticalScope()) + { + using (new EditorGUI.DisabledScope(!creatingToggle)) + { + DoToggle(ref individualToggle, Styles.individualToggleContent); + autoName = EditorGUILayout.Toggle(new GUIContent("AutoName", "Automatically generate a clip name when using context menu button"), autoName); + } + using (new EditorGUI.DisabledScope(creatingToggle || shapeClipMode == BlendClipMode.ClipPerBlendshape)) + DoToggle(ref useAllShapes, Styles.useAllShapesContent); + + } + } + + } + + EditorGUILayout.Space(); + +#if VRC_SDK_VRCSDK3 + if (avatar && creatingToggle) + { + using (new GUILayout.HorizontalScope(EditorStyles.helpBox)) + { + using (new GUILayout.VerticalScope()) + { + using (new EditorGUI.DisabledScope(!creatingToggle || !avatar)) + vrcAddFlags = (VRCToggleFlags) EditorGUILayout.EnumFlagsField("Add To", vrcAddFlags); + + using (new EditorGUI.DisabledScope(!vrcAddFlags.HasFlag(VRCToggleFlags.Menu))) + menu = (VRCExpressionsMenu) EditorGUILayout.ObjectField("Target Menu", menu, typeof(VRCExpressionsMenu), false); + } + + using (new GUILayout.VerticalScope()) + { + using (new GUILayout.HorizontalScope()) + { + using (new EditorGUI.DisabledScope(!creatingToggle || !avatar || vrcAddFlags == VRCToggleFlags.None)) + parameter = EditorGUILayout.TextField("Parameter", parameter); + + if (!avatar) GUILayout.Label(Styles.noteIcon, GUILayout.Width(18)); + + + var og = GUI.backgroundColor; + GUI.backgroundColor = uniqueParameter ? Color.green : Color.grey; + + EditorGUI.BeginChangeCheck(); + using (new EditorGUI.DisabledScope(vrcAddFlags == VRCToggleFlags.None)) + uniqueParameter = GUILayout.Toggle(uniqueParameter, "Unique", GUI.skin.button, GUILayout.ExpandWidth(false)); + if (EditorGUI.EndChangeCheck()) RefreshUniqueParameter(); + + GUI.backgroundColor = og; + } + + useWriteDefaults = EditorGUILayout.Toggle("Write Defaults", useWriteDefaults); + + } + } + + EditorGUILayout.Space(); + } +#endif + + + + + GUI.SetNextControlName("CreateClip"); + + using (new EditorGUI.DisabledScope(string.IsNullOrWhiteSpace(clipName))) + { + if (creatingToggle) + { + using (new EditorGUI.DisabledScope(!clipValid)) + if (GUILayout.Button("Create Toggle Clip", EditorStyles.toolbarButton)) + StartCreateClip(false); + } + else + using (new EditorGUI.DisabledScope(!skinnedRenderers.Any(sr => sr.renderer))) + if (GUILayout.Button("Create Blendshape Clip", EditorStyles.toolbarButton)) + StartCreateClip(true); + } + + } + + private void DrawSettingsGUI() + { + using (new GUILayout.HorizontalScope(EditorStyles.helpBox)) + { + using (new GUILayout.VerticalScope()) + { + frameSpan = Mathf.Max(1, EditorGUILayout.IntField(new GUIContent("Clip Length", "The length of the animation clip in frames (60 fps)"), frameSpan)); + autoClose = EditorGUILayout.Toggle(new GUIContent("Close Window", "Close window upon clip creation."), autoClose); + } + + using (new GUILayout.VerticalScope()) + { + loopTime = EditorGUILayout.Toggle(new GUIContent("Loop Time", "Sets loop time to true on the created clips."), loopTime); + pingFolder = EditorGUILayout.Toggle(new GUIContent("Ping Folder", "Automatically highlights the folder where the clips were generated"), pingFolder); + } + } + + EditorGUILayout.LabelField(string.Empty, GUI.skin.horizontalSlider); + savePath = DSHelper.AssetFolderPath(savePath, "Generated Assets Path"); + + } + + #endregion + + #region Main Methods + + public void StartCreateClip(bool isBlendshapes) + { +#if VRC_SDK_VRCSDK3 + if (!isBlendshapes) + { + RefreshUniqueParameter(); + + void VRCWarningCheck(string msg, bool condition) + { + if (!condition) return; + EditorUtility.DisplayDialog("Warning", msg, "Ok"); + throw new Exception(msg); + } + + VRCWarningCheck("FX Controller not set in Avatar Descriptor.", vrcAddFlags.HasFlag(VRCToggleFlags.FX) && avatar.GetPlayableLayer(VRCAvatarDescriptor.AnimLayerType.FX) == null); + + int addCount = individualToggle ? targets.Count(o => o.valid) : 1; + + if (vrcAddFlags.HasFlag(VRCToggleFlags.Parameters)) + { + VRCWarningCheck("Expression Parameters not set in Avatar Descriptor", vrcAddFlags.HasFlag(VRCToggleFlags.Parameters) && avatar.expressionParameters == null); + + if (avatar.expressionParameters.parameters == null) + { + avatar.expressionParameters.parameters = Array.Empty(); + EditorUtility.SetDirty(avatar.expressionParameters); + } + + VRCWarningCheck($"Expression Parameters requires {addCount}/256 free memory.", avatar.expressionParameters.CalcTotalCost() + addCount > 256); + } + + if (vrcAddFlags.HasFlag(VRCToggleFlags.Menu)) + { + VRCWarningCheck("No Target Menu set.", vrcAddFlags.HasFlag(VRCToggleFlags.Menu) && menu == null); + VRCWarningCheck("Cannot add more than 8 toggles to an expression menu!", addCount > 8); + VRCWarningCheck($"Target Menu requires {addCount}/8 free control slots.", menu.controls.Count + addCount > 8); + } + + + + } +#endif + DSHelper.ReadyPath(savePath); + folderPath = savePath + "/" + root.name; + DSHelper.ReadyPath(folderPath); + + if (isBlendshapes) + CreateBlendshapeClips(); + else CreateToggleClips(); + + if (autoClose) Close(); + } + + private void CreateToggleClips() + { + AnimationClip currentClip = new AnimationClip(); + + foreach (ToggleObject obj in targets.Where(o => o != null && o.valid)) + { + string path = AnimationUtility.CalculateTransformPath(obj.gameObject.transform, root.transform); + + System.Type myType = obj.GetActive().GetType(); + + currentClip.SetCurve(path, myType, myType == typeof(GameObject) ? "m_IsActive" : "m_Enabled", new AnimationCurve {keys = new Keyframe[] {new Keyframe {time = 0, value = obj.active ? 1 : 0}, new Keyframe {time = frameSpan / 60f, value = obj.active ? 1 : 0}}}); + + if (individualToggle) + { + SaveClip(currentClip, $" {obj.gameObject.name}", false); + RefreshUniqueParameter(); + currentClip = new AnimationClip(); + } + } + + if (!individualToggle) + SaveClip(currentClip, string.Empty, false); + + if (pingFolder) + EditorGUIUtility.PingObject(AssetDatabase.LoadAssetAtPath(folderPath)); + } + + private void CreateBlendshapeClips() + { + AnimationClip GetNewClip() + { + AnimationClip newClip = new AnimationClip(); + return newClip; + } + + + AnimationClip currentClip = null; + for (int i = 0; i < skinnedRenderers.Count; i++) + { + if (!skinnedRenderers[i].renderer) + continue; + string renderPath = AnimationUtility.CalculateTransformPath(skinnedRenderers[i].renderer.transform, root.transform); + if ((shapeClipMode == BlendClipMode.ClipPerRenderer) || i == 0) + currentClip = GetNewClip(); + bool anyShapeUsed = false; + for (int j = 0; j < skinnedRenderers[i].shapes.Count; j++) + { + SkinnedShape shape = skinnedRenderers[i].shapes[j]; + if (shape.value > 0 || (useAllShapes && shapeClipMode != BlendClipMode.ClipPerBlendshape)) + { + anyShapeUsed = true; + currentClip.SetCurve(renderPath, typeof(SkinnedMeshRenderer), "blendShape." + shape.name, new AnimationCurve() {keys = new Keyframe[] {new Keyframe(0, shape.value), new Keyframe(frameSpan / 60f, shape.value)}}); + if (shapeClipMode == BlendClipMode.ClipPerBlendshape) + { + SaveClip(currentClip, " " + shape.name, true); + currentClip = GetNewClip(); + } + } + } + + if (shapeClipMode == BlendClipMode.ClipPerRenderer && anyShapeUsed) + { + SaveClip(currentClip, " " + skinnedRenderers[i].renderer.gameObject.name, true); + currentClip = GetNewClip(); + } + + } + + if (shapeClipMode == BlendClipMode.SingleClip) + SaveClip(currentClip, string.Empty, true); + if (pingFolder) + EditorGUIUtility.PingObject(AssetDatabase.LoadAssetAtPath(folderPath)); + } + + private AnimationClip CreateOppositeClip(AnimationClip c, string clipPath, bool isBlendshapeClip) + { + AnimationClip newClip = new AnimationClip(); + EditorUtility.CopySerialized(c, newClip); + EditorCurveBinding[] bindings = AnimationUtility.GetCurveBindings(newClip); + foreach (var b in bindings) + { + int myValue = isBlendshapeClip || AnimationUtility.GetEditorCurve(c, b)[0].value != 0 ? 0 : 1; + newClip.SetCurve(b.path, b.type, b.propertyName, new AnimationCurve() {keys = new Keyframe[] {new Keyframe(0, myValue), new Keyframe(frameSpan / 60f, myValue)}}); + } + + string oppPath = AssetDatabase.GenerateUniqueAssetPath(clipPath.Substring(0, clipPath.Length - 5) + " Opp.anim"); + SaveClip(newClip, oppPath); + return newClip; + } + + private void SaveClip(AnimationClip c, string suffix, bool isBlendShapeClip) + { + AnimationClip onClip = c, offClip = null; + string path = AssetDatabase.GenerateUniqueAssetPath($"{folderPath}/{clipName}{suffix}.anim"); + SaveClip(c, path); + + if (createOpposite) offClip = CreateOppositeClip(c, path, isBlendShapeClip); + +#if VRC_SDK_VRCSDK3 + DoVRCToggle(onClip, offClip); +#endif + } + + private void SaveClip(AnimationClip c, string path) + { + AssetDatabase.CreateAsset(c, path); + Debug.Log("[Quick Toggle] " + System.IO.Path.GetFileNameWithoutExtension(path) + " Created."); + EnableLoopTime(c); + } + + private void EnableLoopTime(AnimationClip c) + { + if (!loopTime) return; + AnimationClipSettings settings = AnimationUtility.GetAnimationClipSettings(c); + settings.loopTime = true; + AnimationUtility.SetAnimationClipSettings(c, settings); + } + +#if VRC_SDK_VRCSDK3 + private void DoVRCToggle(AnimationClip onClip, AnimationClip offClip) + { + if (vrcAddFlags == VRCToggleFlags.None) return; + if (vrcAddFlags.HasFlag(VRCToggleFlags.FX)) + { + AnimatorController c = avatar.GetPlayableLayer(VRCAvatarDescriptor.AnimLayerType.FX); + if (!c) throw new NullReferenceException("Unexpected Error! FX Controller not found!"); + else + { + c.AddParameter(parameter, AnimatorControllerParameterType.Bool); + + AnimatorControllerLayer newLayer = c.AddLayer(parameter, 1); + AnimationClip buffer = ReadyBuffer(); + AnimatorStateMachine m = newLayer.stateMachine; + + m.exitPosition = Vector3.zero; + m.anyStatePosition = new Vector3(0, 40); + m.entryPosition = new Vector3(0, 80); + + AnimatorState idleState = m.AddState("Idle", new Vector3(-20, 140)); + AnimatorState onState = m.AddState($"{parameter} On", new Vector3(-140, 240)); + AnimatorState offState = m.AddState($"{parameter} Off", new Vector3(100, 240)); + idleState.writeDefaultValues = onState.writeDefaultValues = offState.writeDefaultValues = useWriteDefaults; + + idleState.writeDefaultValues = onState.writeDefaultValues = offState.writeDefaultValues; + + idleState.motion = buffer; + onState.motion = onClip; + offState.motion = offClip; + + AnimatorStateTransition DoTransition(AnimatorState source, AnimatorState destination, bool state) + { + var t = source.AddTransition(destination); + t.hasExitTime = false; + t.duration = 0; + t.AddCondition(state ? AnimatorConditionMode.If : AnimatorConditionMode.IfNot, 0, parameter); + return t; + } + + DoTransition(idleState, onState, true).offset = 1; + DoTransition(idleState, offState, false).offset = 1; + + DoTransition(offState, onState, true); + DoTransition(onState, offState, false); + } + + } + + if (vrcAddFlags.HasFlag(VRCToggleFlags.Parameters)) + { + var so = new SerializedObject(avatar.expressionParameters); + var prop = so.FindProperty("parameters"); + + prop.arraySize++; + var elem = prop.GetArrayElementAtIndex(prop.arraySize - 1); + elem.FindPropertyRelative("name").stringValue = parameter; + elem.FindPropertyRelative("valueType").enumValueIndex = 2; + elem.FindPropertyRelative("saved").boolValue = true; + elem.FindPropertyRelative("defaultValue").floatValue = 0; + + so.ApplyModifiedPropertiesWithoutUndo(); + } + + if (vrcAddFlags.HasFlag(VRCToggleFlags.Menu)) + { + if (menu.controls == null) + menu.controls = new List(); + + var newControl = new VRCExpressionsMenu.Control + { + name = parameter, + parameter = new VRCExpressionsMenu.Control.Parameter() { name = parameter }, + type = VRCExpressionsMenu.Control.ControlType.Toggle, + value = 1 + }; + menu.controls.Add(newControl); + EditorUtility.SetDirty(menu); + } + } + + private AnimationClip ReadyBuffer() + { + string bufferPath = $"{savePath}/1 Frame Buffer.anim"; + AnimationClip buffer = AssetDatabase.LoadAssetAtPath(bufferPath); + if (buffer) return buffer; + buffer = new AnimationClip(); + buffer.SetCurve("_Buffer", typeof(GameObject), "m_IsActive", new AnimationCurve(new Keyframe(0, 0), new Keyframe(1 / 60f, 0))); + AssetDatabase.CreateAsset(buffer, bufferPath); + return buffer; + } +#endif + + private static void GreenLog(string msg, bool condition = true) + { + if (condition) Debug.Log($"[QuickToggle] {msg}"); + } + private static void RedLog(string msg, bool condition = true) + { + if (condition) Debug.Log($"[QuickToggle] {msg}"); + } + #endregion + + #region Automated Methods + + private static void AutoRename() + { + if (!autoName || targets.Count == 0) + return; + if (string.IsNullOrEmpty(clipName)) + return; + + string statusName = ""; + bool enabled = false, disabled = false; + foreach (var t in targets) + { + if (t.gameObject) + if (t.active) + { + enabled = true; + statusName = " Enable"; + } + else + { + disabled = true; + statusName = " Disable"; + } + + if (enabled && disabled) + { + statusName = " Toggle"; + break; + } + } + + if (clipName == (clipName = Regex.Replace(clipName, " enable", statusName, RegexOptions.IgnoreCase))) + { + if (clipName == (clipName = Regex.Replace(clipName, " disable", statusName, RegexOptions.IgnoreCase))) + { + clipName = Regex.Replace(clipName, " toggle", statusName, RegexOptions.IgnoreCase); + } + } + + } + + private static void OnRootChanged() + { +#if VRC_SDK_VRCSDK3 + avatar = root?.GetComponent(); + if (avatar != null) menu = avatar.expressionsMenu; +#endif + CheckIfValid(); + } + + private static void CheckIfValid() + { + clipValid = root; + if (!root) return; + foreach (ToggleObject obj in targets) + obj.valid = obj.gameObject && obj.gameObject.transform.IsChildOf(root.transform); + + clipValid = targets.All(t => t.valid); + } + +#if VRC_SDK_VRCSDK3 + private static void RefreshUniqueParameter() + { + if (!uniqueParameter) return; + if (!avatar || string.IsNullOrEmpty(_parameter) || + vrcAddFlags == VRCToggleFlags.None || + vrcAddFlags == VRCToggleFlags.Menu) return; + + if (avatar.expressionParameters && avatar.expressionParameters.parameters != null) + _parameter = DSHelper.GenerateUniqueString(_parameter, s => avatar.expressionParameters.parameters.All(p => p.name != s)); + + foreach (var c in avatar.baseAnimationLayers.Concat(avatar.specialAnimationLayers).Where(p => !p.isDefault).Select(p => p.animatorController as AnimatorController).Where(c => c)) + _parameter = DSHelper.GenerateUniqueString(_parameter, s => c.parameters.All(p => p.name != s)); + + } +#endif + + private void OnEnable() + { + this.Load(PREF_KEY); + + RefreshList(); + CheckIfValid(); + init = false; + } + + private void OnDisable() => this.Save(PREF_KEY); + + #endregion + + #region Extra GUI Methods + + private static string CutString(string s, int maxLength) + => s.Length <= maxLength ? s : s.Substring(0, maxLength - 3) + "..."; + + private static void DoToggle(ref bool b, GUIContent label) => b = EditorGUILayout.Toggle(label, b); + + private void DrawHeader(Rect rect) + { + EditorGUI.LabelField(rect, "Targets"); + + if (GUI.Button(new Rect(rect.width - 10, rect.y + 2, 20, EditorGUIUtility.singleLineHeight), Styles.switchIcon, GUIStyle.none)) + { + foreach (ToggleObject obj in targets) + obj.active = !obj.active; + AutoRename(); + } + } + + private void DrawElement(Rect rect, int index, bool isActive, bool isFocused) + { + if (!(index < targets.Count && index >= 0)) + return; + if (GUI.Button(new Rect(rect.x, rect.y + 2, 20, EditorGUIUtility.singleLineHeight), "X")) + { + targets.RemoveAt(index); + CheckIfValid(); + AutoRename(); + return; + } + + ToggleObject toggleObj = targets[index]; + Rect myRect = new Rect(rect.x + 22, rect.y + 2, rect.width - 62, EditorGUIUtility.singleLineHeight); + EditorGUI.BeginChangeCheck(); + + Object dummy; + dummy = EditorGUI.ObjectField(myRect, toggleObj.GetActive(), typeof(GameObject), true); + + if (EditorGUI.EndChangeCheck()) + { + if (dummy == null) + targets[index] = new ToggleObject(); + else + { + if (((GameObject) dummy).scene.IsValid()) + { + targets[index] = new ToggleObject((GameObject) dummy); + } + else + Debug.LogWarning("[QuickToggle] GameObject must be a scene object!"); + } + + CheckIfValid(); + } + + float xCoord = rect.x + rect.width - 18; + if (!toggleObj.valid) + EditorGUI.LabelField(new Rect(xCoord - 60, rect.y + 2, 25, EditorGUIUtility.singleLineHeight), Styles.warnIcon); + + EditorGUI.BeginDisabledGroup(!dummy || targets[index].allComps.Length < 2); + if (GUI.Button(new Rect(xCoord - 20, rect.y + 2, 20, 18), Styles.nextIcon, GUIStyle.none)) + { + targets[index].next(); + } + + EditorGUI.EndDisabledGroup(); + + if (toggleObj.active) + if (GUI.Button(new Rect(xCoord, rect.y, 20, 18), Styles.greenLight, GUIStyle.none)) + { + toggleObj.active = false; + AutoRename(); + } + + if (!toggleObj.active) + if (GUI.Button(new Rect(xCoord, rect.y, 20, 18), Styles.redLight, GUIStyle.none)) + { + toggleObj.active = true; + AutoRename(); + } + + } + + private void RefreshList() + { + targetList = new UnityEditorInternal.ReorderableList(targets, typeof(ToggleObject), false, true, true, false) + { + drawElementCallback = DrawElement, + drawHeaderCallback = DrawHeader + }; + } + + #endregion + + #region Classes + + public class ToggleObject + { + public GameObject gameObject = null; + public bool active = true; + public bool valid = true; + + public Component[] allComps; + public int index; + + public ToggleObject() + { + } + + public ToggleObject(GameObject o) + { + this.gameObject = o; + allComps = gameObject.GetComponents(); + } + + public Object GetActive() + { + if (index == 0) + { + return gameObject; + } + else + { + return allComps[index]; + } + } + + public void next() + { + index++; + if (index >= allComps.Length) + index = 0; + } + } + + private class SkinnedShapeSlot + { + private SkinnedMeshRenderer _renderer; + + public SkinnedMeshRenderer renderer + { + get => _renderer; + private set + { + if (_renderer == value) return; + _renderer = value; + OnRendererChanged(); + } + } + + public readonly List shapes = new List(); + private bool expanded; + private Vector2 scroll; + + public SkinnedShapeSlot() + { + } + + public SkinnedShapeSlot(SkinnedMeshRenderer renderer) => this.renderer = renderer; + + + void GetShapes() + { + shapes.Clear(); + for (int i = 0; i < renderer.sharedMesh.blendShapeCount; i++) + { + shapes.Add(new SkinnedShape(renderer.sharedMesh, i)); + } + + SortShapes(); + } + + void SortShapes() + { + int CompareShape(SkinnedShape a, SkinnedShape b) + { + return a.name.CompareTo(b.name); + } + + shapes.Sort(CompareShape); + } + + public void Draw() + { + if (expanded && renderer != null) + EditorGUILayout.BeginVertical(GUI.skin.box, GUILayout.MaxHeight(300)); + else + EditorGUILayout.BeginVertical(GUI.skin.box); + + using (new GUILayout.HorizontalScope()) + { + EditorGUIUtility.labelWidth = 10; + expanded = GUILayout.Toggle(expanded, string.Empty, GUI.skin.GetStyle("Foldout"), GUILayout.Width(15)); + renderer = (SkinnedMeshRenderer) EditorGUILayout.ObjectField(string.Empty, renderer, typeof(SkinnedMeshRenderer), true); + + EditorGUIUtility.labelWidth = 0; + + if (GUILayout.Button("X", GUI.skin.label, GUILayout.Width(18))) + { + skinnedRenderers.Remove(this); + return; + } + } + + if (expanded && shapes.Count > 0) + { + scroll = EditorGUILayout.BeginScrollView(scroll); + EditorGUIUtility.labelWidth = 100; + EditorGUI.indentLevel++; + foreach (var s in shapes) s.Draw(); + + EditorGUI.indentLevel--; + EditorGUILayout.EndScrollView(); + EditorGUIUtility.labelWidth = 0; + } + + EditorGUILayout.EndVertical(); + } + + private void OnRendererChanged() + { + if (renderer == null) shapes.Clear(); + else if (root && !renderer.transform.IsChildOf(root.transform)) + { + Debug.LogWarning("Renderer is not a child of root!"); + renderer = null; + shapes.Clear(); + } + else if (!renderer.sharedMesh) + { + Debug.LogWarning("Renderer is not using any mesh!"); + renderer = null; + shapes.Clear(); + } + else GetShapes(); + } + } + + private class SkinnedShape + { + public string name; + public int index; + public float value; + + public SkinnedShape(Mesh m, int i) + { + index = i; + name = m.GetBlendShapeName(i); + value = 0; + } + + public void Draw() + { + using (new GUILayout.HorizontalScope()) + { + EditorGUILayout.LabelField(CutString(name, 28), GUILayout.Width(180)); + value = EditorGUILayout.Slider(value, 0, 100); + } + } + } + + private static class Styles + { + internal static readonly GUIContent + noteIcon = new GUIContent(EditorGUIUtility.IconContent("console.warnicon.inactive.sml")) {tooltip = "No Avatar Descriptor found on Root"}, + warnIcon = new GUIContent(EditorGUIUtility.IconContent("d_console.warnicon.sml")) {tooltip = "Object is not a child of Root!"}, + greenLight = new GUIContent(EditorGUIUtility.IconContent("d_greenLight")) {tooltip = "Enable"}, + redLight = new GUIContent(EditorGUIUtility.IconContent("d_redLight")) {tooltip = "Disable"}, + switchIcon = new GUIContent(EditorGUIUtility.IconContent("d_Animation.Record")) {tooltip = "Invert Toggles"}, + nextIcon = new GUIContent(EditorGUIUtility.IconContent("Refresh")) {tooltip = "Cycle Components"}, + createOppositeContent = new GUIContent("Create Opposite", "Make the opposite clip for created animation clips"), + individualToggleContent = new GUIContent("Individual Toggles", "Make an animation clip for each target separately"), + useAllShapesContent = new GUIContent("Use all Blendshapes", "When creating the clip, utilize all the blendshapes of the Renderers"); + } + + #endregion + } + + internal static class DSHelper + { + internal static void ReadyPath(string folderPath) + { + if (Directory.Exists(folderPath)) return; + Directory.CreateDirectory(folderPath); + AssetDatabase.ImportAsset(folderPath); + } + internal static string AssetFolderPath(string variable, string title) + { + using (new GUILayout.HorizontalScope()) + { + using (new EditorGUI.DisabledScope(true)) + EditorGUILayout.TextField(title, variable); + + if (!GUILayout.Button("...", GUILayout.Width(30))) return variable; + var dummyPath = EditorUtility.OpenFolderPanel(title, AssetDatabase.IsValidFolder(variable) ? variable : "Assets", string.Empty); + if (string.IsNullOrEmpty(dummyPath)) + return variable; + string newPath = FileUtil.GetProjectRelativePath(dummyPath); + + if (!newPath.StartsWith("Assets")) + { + Debug.LogWarning("New Path must be a folder within Assets!"); + return variable; + } + + variable = newPath; + } + + return variable; + } + + internal static void Save(this T window, string prefs) where T : EditorWindow + { + string data = JsonUtility.ToJson(window, false); + PlayerPrefs.SetString(prefs, data); + } + internal static void Load(this T window, string prefs) where T : EditorWindow + { + string defaultData = JsonUtility.ToJson(window, false); + string data = PlayerPrefs.GetString(prefs, defaultData); + JsonUtility.FromJsonOverwrite(data, window); + } + + internal static string GenerateUniqueString(string s, System.Func check) + { + if (check(s)) + return s; + + int suffix = 0; + + int.TryParse(s.Substring(s.Length - 2, 2), out int d); + if (d >= 0) + suffix = d; + if (suffix > 0) s = suffix > 9 ? s.Substring(0, s.Length - 2) : s.Substring(0, s.Length - 1); + + s = s.Trim(); + + suffix++; + + string newString = s + " " + suffix; + while (!check(newString)) + { + suffix++; + newString = s + " " + suffix; + } + + return newString; + } + + internal static AnimatorControllerLayer AddLayer(this AnimatorController controller, string name, float defaultWeight) + { + var newLayer = new AnimatorControllerLayer + { + name = name, + defaultWeight = defaultWeight, + stateMachine = new AnimatorStateMachine + { + name = name, + hideFlags = HideFlags.HideInHierarchy + }, + }; + AssetDatabase.AddObjectToAsset(newLayer.stateMachine, controller); + controller.AddLayer(newLayer); + return newLayer; + } + +#if VRC_SDK_VRCSDK3 + internal static AnimatorController GetPlayableLayer(this VRCAvatarDescriptor avi, VRCAvatarDescriptor.AnimLayerType type) + => avi.baseAnimationLayers.Concat(avi.specialAnimationLayers).FirstOrDefault(l => l.type == type).animatorController as AnimatorController; +#endif + } +} \ No newline at end of file diff --git a/QuickToggle/Editor/QuickToggle.cs.meta b/QuickToggle/Editor/QuickToggle.cs.meta new file mode 100644 index 0000000..7dc009b --- /dev/null +++ b/QuickToggle/Editor/QuickToggle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 51c789a660c733043948e233cdbfda31 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/QuickToggle/Editor/com.dreadscripts.tool.quicktoggle.Editor.asmdef b/QuickToggle/Editor/com.dreadscripts.tool.quicktoggle.Editor.asmdef new file mode 100644 index 0000000..0d1716f --- /dev/null +++ b/QuickToggle/Editor/com.dreadscripts.tool.quicktoggle.Editor.asmdef @@ -0,0 +1,15 @@ +{ + "name": "com.dreadscripts.tool.quicktoggle.Editor", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/QuickToggle/Editor/com.dreadscripts.tool.quicktoggle.Editor.asmdef.meta b/QuickToggle/Editor/com.dreadscripts.tool.quicktoggle.Editor.asmdef.meta new file mode 100644 index 0000000..20b4aa7 --- /dev/null +++ b/QuickToggle/Editor/com.dreadscripts.tool.quicktoggle.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4701ac087cea88a4fb980b6762583b83 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/QuickToggle/LICENSE b/QuickToggle/LICENSE new file mode 100644 index 0000000..545aeca --- /dev/null +++ b/QuickToggle/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Dreadrith + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/QuickToggle/LICENSE.meta b/QuickToggle/LICENSE.meta new file mode 100644 index 0000000..dd65b9c --- /dev/null +++ b/QuickToggle/LICENSE.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4ffa88496fbe9d248a8016822480a7a1 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/QuickToggle/README.md b/QuickToggle/README.md new file mode 100644 index 0000000..aa47531 --- /dev/null +++ b/QuickToggle/README.md @@ -0,0 +1,41 @@ +# Quick Toggle +Quick Toggle simplifies the creation of simple clips and toggles. + +### [Download From Here](https://vpm.dreadscripts.com/) + +**Quick Steps:** +1. Set the Root +2. Select the Target GameObjects or Components. +3. Right Click > Quick Actions > Quick Toggle. +4. Set the desired settings. +5. Press "Create Toggle Clip". + +# Blendshape Mode +Easily create clips that modify the Blendshapes of skinned mesh renderers. +**Quick Steps:** +1. Set the Root. +2. Set a clip name. +3. Set the target Skinned Mesh Renderers. +4. Expand the foldout, set the desired blendshape values. +5. Press "Create Blendshape Clip". + +# Settings +- Clip Length: The length of the animation clip in frames (60 fps) +- Loop time: Sets loop time to true on the created animation clips +- Ping Folder: Highlights the folder where the new animations clips were created. +- Close Window: Automatically close the window after animation clips creation. +- Create Opposite: Create an opposite clip for each animation clip created. + - Toggle: Disables Objects/Components previously enabled and vice versa + - Blendshape: Sets Blendshapes value in the opposite clip to 0. + +- (Toggle) Individual Toggles: Creates an Animation clip for each target Object/Component + +- (Blendshape) Clip Mode: Chooses the clip creation + - Single Clip: Puts all set Blendshape values in a single animation clip. + - Separate Renderers: Makes an animation clip for each target Skinned Mesh Renderer. Can be used for multiple Clips for the same Renderer. + - Separate Blendshapes: Makes an animation clip for each used Blendshape (Value > 0). + +- (Blendshape) Use all Blendshapes: Uses all the Blendshape values in the target Renderers in the created clips. + +### Thank You +If you enjoy Quick Toggle, please consider [supporting me ♡](https://ko-fi.com/Dreadrith)! \ No newline at end of file diff --git a/QuickToggle/README.md.meta b/QuickToggle/README.md.meta new file mode 100644 index 0000000..49b4125 --- /dev/null +++ b/QuickToggle/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fad8af93d6e0c084d94e74efb5d32d3f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/QuickToggle/package.json b/QuickToggle/package.json new file mode 100644 index 0000000..9ace68a --- /dev/null +++ b/QuickToggle/package.json @@ -0,0 +1,17 @@ +{ + "name": "com.dreadscripts.quicktoggle", + "displayName": "DreadScripts - QuickToggle", + "version": "1.6.1", + "description": "Quick Toggle simplifies the creation of simple clips and toggles.", + "gitDependencies": {}, + "vpmDependencies": {}, + "author": { + "name": "Dreadrith", + "email": "dreadscripts@gmail.com", + "url": "https://www.dreadrith.com" + }, + "legacyFolders": {}, + "legacyFiles": {}, + "type": "tool", + "unity": "2019.4" +} \ No newline at end of file diff --git a/QuickToggle/package.json.meta b/QuickToggle/package.json.meta new file mode 100644 index 0000000..89a8816 --- /dev/null +++ b/QuickToggle/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ef3e67d5da8084a419990566749466ce +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ReplaceMotion.meta b/ReplaceMotion.meta new file mode 100644 index 0000000..8bc6c00 --- /dev/null +++ b/ReplaceMotion.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7dfe0ef1830032642a879730225296a4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ReplaceMotion/Editor.meta b/ReplaceMotion/Editor.meta new file mode 100644 index 0000000..8dd517e --- /dev/null +++ b/ReplaceMotion/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b095e083c4f79b24aaf1e6460f3e35e8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ReplaceMotion/Editor/ReplaceMotion.cs b/ReplaceMotion/Editor/ReplaceMotion.cs new file mode 100644 index 0000000..e5a9c4d --- /dev/null +++ b/ReplaceMotion/Editor/ReplaceMotion.cs @@ -0,0 +1,384 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEditor.Animations; +using VRC.SDK3.Avatars.Components; +using System.Linq; + +namespace DreadScripts.ReplaceMotion +{ + public class ReplaceMotion : EditorWindow + { + static List originalMotion = new List(); + private static bool hasEmptyState; + private static bool replacingEmptyState; + static bool[] replaceFields; + static Motion[] targetMotion; + static Motion emptyTargetMotion; + static readonly Dictionary replaceValues = new Dictionary(); + + private static VRCAvatarDescriptor mainAvatar; + private static AnimatorController mainController; + + private static Vector2 scroll; + + [MenuItem("DreadTools/Utility/Replace Motion")] + private static void showWindow() + { + GetWindow(false, "Replace Motion", true); + } + + private void OnEnable() + { + if (!mainAvatar && !mainController) + { + mainAvatar = FindObjectOfType(); + if (mainAvatar) + GetMotions(mainAvatar); + } + } + + private void OnGUI() + { + GUIStyle labelButton = new GUIStyle(GUI.skin.button) { padding = new RectOffset(1, 1, 1, 1), margin = new RectOffset(), alignment = TextAnchor.MiddleCenter }; + scroll = EditorGUILayout.BeginScrollView(scroll); + using (new GUILayout.HorizontalScope("box")) + { + EditorGUI.BeginChangeCheck(); + Object dummy = CustomObjectField(new GUIContent("Target"), (Object)mainAvatar ?? mainController ?? null, true, true, out int resultType, typeof(VRCAvatarDescriptor), typeof(AnimatorController)); + if (EditorGUI.EndChangeCheck()) + { + switch (resultType) + { + case -1: + mainAvatar = null; + mainController = null; + break; + case 0: + mainAvatar = (VRCAvatarDescriptor)dummy; + mainController = null; + break; + case 1: + mainAvatar = null; + mainController = (AnimatorController)dummy; + break; + } + if (mainAvatar) + GetMotions(mainAvatar); + else if (mainController) + GetMotions(mainController); + } + } + EditorGUI.BeginDisabledGroup(!(mainAvatar || mainController)); + if (GUILayout.Button("Replace")) + { + PopulateDictionary(); + if (mainAvatar) + SetMotions(mainAvatar); + else + SetMotions(mainController); + AssetDatabase.SaveAssets(); + Debug.Log("[Replace Motion] Done!"); + + if (mainAvatar) + GetMotions(mainAvatar); + else + GetMotions(mainController); + } + EditorGUI.EndDisabledGroup(); + + + if (originalMotion.Count > 0 || hasEmptyState) + { + DrawSeperator(); + if (hasEmptyState) + { + using (new GUILayout.HorizontalScope("box")) + { + EditorGUILayout.ObjectField(null, typeof(Motion), false); + GUILayout.Space(20); + GUILayout.Label("->", "boldlabel", GUILayout.Width(20)); + GUILayout.Space(20); + + if (!replacingEmptyState) + replacingEmptyState = GUILayout.Toggle(replacingEmptyState, new GUIContent("Replace", "Replace all instances of the original motion"), "button"); + + else + { + if (GUILayout.Button("X", labelButton, GUILayout.Width(20))) + replacingEmptyState = false; + + emptyTargetMotion = (Motion)EditorGUILayout.ObjectField(emptyTargetMotion, typeof(Motion), true); + } + + } + } + for (int i = 0; i < originalMotion.Count; i++) + { + using (new GUILayout.HorizontalScope("box")) + { + EditorGUILayout.ObjectField(originalMotion[i], typeof(Motion), false); + GUILayout.Space(20); + GUILayout.Label("->", "boldlabel", GUILayout.Width(20)); + GUILayout.Space(20); + if (!replaceFields[i]) + replaceFields[i] = GUILayout.Toggle(replaceFields[i],new GUIContent("Replace","Replace all instances of the original motion"), "button"); + else + { + if (GUILayout.Button("X", labelButton, GUILayout.Width(20))) + replaceFields[i] = false; + targetMotion[i] = (Motion)EditorGUILayout.ObjectField(targetMotion[i], typeof(Motion), true); + } + } + } + } + EditorGUILayout.EndScrollView(); + } + + private static Object CustomObjectField(GUIContent label, Object displayObject, bool allowScene, bool checkComponents, out int resultTypeIndex, params System.Type[] validTypes) + { + //Special Cases + bool supportsController = false; + int controllerTypeIndex = -1; + if (checkComponents) + { + for (int i = 0; i < validTypes.Length; i++) + { + if (validTypes[i] == typeof(AnimatorController)) + { + supportsController = true; + controllerTypeIndex = i; + break; + } + } + } + /////////////// + + + EditorGUI.BeginChangeCheck(); + Object dummy = EditorGUILayout.ObjectField(label, displayObject, typeof(Object), allowScene); + + if (EditorGUI.EndChangeCheck()) + { + if (!dummy) + { + resultTypeIndex = -1; + return null; + } + + for (int i = 0; i < validTypes.Length; i++) + { + if (dummy.GetType() == validTypes[i]) + { + resultTypeIndex = i; + return dummy; + } + } + + if (checkComponents && dummy is GameObject go) + { + Component[] components = go.GetComponents(); + for (int i = 0; i < components.Length; i++) + { + for (int j = 0; j < validTypes.Length; j++) + { + if (components[i].GetType() == validTypes[j]) + { + resultTypeIndex = j; + return components[i]; + } + + //Special Cases + if (supportsController && (components[i] is Animator ani) && ani.runtimeAnimatorController) + { + resultTypeIndex = controllerTypeIndex; + return AssetDatabase.LoadAssetAtPath(AssetDatabase.GetAssetPath(ani.runtimeAnimatorController)); + } + /////////////// + } + } + } + string validTypesMessage = string.Join(", ", validTypes.Select(t => t.Name)); + Debug.LogWarning("Field must be of Type: " + validTypesMessage); + } + resultTypeIndex = -2; + return dummy; + } + private void SetMotions(VRCAvatarDescriptor avatar) + { + IterateStates(avatar, SetMotions); + } + + private void GetMotions(VRCAvatarDescriptor avatar) + { + GetStart(); + IterateStates(avatar, s => GetMotions(s.motion)); + GetFinal(); + } + private void SetMotions(AnimatorController controller) + { + IterateStates(controller, SetMotions); + } + private void GetMotions(AnimatorController controller) + { + GetStart(); + IterateStates(controller, s => GetMotions(s.motion)); + GetFinal(); + } + + private void GetStart() + { + hasEmptyState = false; + emptyTargetMotion = null; + originalMotion.Clear(); + } + private void GetFinal() + { + originalMotion = originalMotion.Distinct().ToList(); + targetMotion = new Motion[originalMotion.Count]; + replaceFields = new bool[originalMotion.Count]; + } + + private void GetMotions(BlendTree tree) + { + originalMotion.Add(tree); + for (int i = 0; i < tree.children.Length; i++) + { + GetMotions(tree.children[i].motion); + } + } + + private void GetMotions(Motion motion) + { + if (!motion) + hasEmptyState = true; + else + { + if (motion is AnimationClip) + originalMotion.Add(motion); + else + { + if (motion is BlendTree tree) + { + GetMotions(tree); + } + } + } + } + + private void SetMotions(AnimatorState state) + { + if (!state.motion) + { + if (replacingEmptyState) + state.motion = emptyTargetMotion; + } + else + { + if (replaceValues.ContainsKey(state.motion)) + { + state.motion = replaceValues[state.motion]; + EditorUtility.SetDirty(state); + } + else + { + if (state.motion is BlendTree tree) + { + SetMotions(tree); + } + } + } + } + private void SetMotions(BlendTree tree) + { + ChildMotion[] newMotions = tree.children; + for (int i = 0; i < newMotions.Length; i++) + { + if (replaceValues.ContainsKey(newMotions[i].motion)) + newMotions[i].motion = replaceValues[newMotions[i].motion]; + else + if (newMotions[i].motion is BlendTree subTree) + SetMotions(subTree); + } + tree.children = newMotions; + EditorUtility.SetDirty(tree); + } + + private void PopulateDictionary() + { + replaceValues.Clear(); + for (int i = 0; i < originalMotion.Count; i++) + { + if (!replaceFields[i]) + replaceValues.Add(originalMotion[i], originalMotion[i]); + else + replaceValues.Add(originalMotion[i], targetMotion[i]); + } + } + + public static void IterateStates(VRCAvatarDescriptor avatar, System.Action action) + { + HashSet visitedControllers = new HashSet(); + foreach (var layer in avatar.baseAnimationLayers.Concat(avatar.specialAnimationLayers)) + { + if (layer.animatorController) + { + AnimatorController controller = AssetDatabase.LoadAssetAtPath(AssetDatabase.GetAssetPath(layer.animatorController)); + if (controller && !visitedControllers.Contains(controller)) + { + IterateStates(controller, action); + visitedControllers.Add(controller); + } + } + } + foreach (var runtimeController in avatar.GetComponentsInChildren().Select(a => a.runtimeAnimatorController)) + { + if (runtimeController) + { + AnimatorController controller = AssetDatabase.LoadAssetAtPath(AssetDatabase.GetAssetPath(runtimeController)); + if (controller && !visitedControllers.Contains(controller)) + { + IterateStates(controller, action); + visitedControllers.Add(controller); + } + } + } + } + + public static void IterateStates(AnimatorController controller, System.Action action) + { + foreach (var layer in controller.layers) + { + IterateStates(layer.stateMachine, action, true); + } + } + + public static void IterateStates(AnimatorStateMachine machine, System.Action action, bool deep = true) + { + if (deep) + foreach (var subMachine in machine.stateMachines.Select(c => c.stateMachine)) + { + IterateStates(subMachine, action); + } + + foreach (var state in machine.states.Select(s => s.state)) + { + action(state); + } + } + + private static void DrawSeperator() + { + Rect r = EditorGUILayout.GetControlRect(GUILayout.Height(1 + 2)); + r.height = 1; + r.y += 1; + r.x -= 2; + r.width += 6; + ColorUtility.TryParseHtmlString(EditorGUIUtility.isProSkin ? "#595959" : "#858585", out Color lineColor); + EditorGUI.DrawRect(r, lineColor); + } + + } + +} \ No newline at end of file diff --git a/ReplaceMotion/Editor/ReplaceMotion.cs.meta b/ReplaceMotion/Editor/ReplaceMotion.cs.meta new file mode 100644 index 0000000..2b1fe82 --- /dev/null +++ b/ReplaceMotion/Editor/ReplaceMotion.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 20a6e7c15d5f4744681ced7247a029a0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ReplaceMotion/Editor/com.dreadscripts.replacemotion.Editor.asmdef b/ReplaceMotion/Editor/com.dreadscripts.replacemotion.Editor.asmdef new file mode 100644 index 0000000..4ba6165 --- /dev/null +++ b/ReplaceMotion/Editor/com.dreadscripts.replacemotion.Editor.asmdef @@ -0,0 +1,15 @@ +{ + "name": "com.dreadscripts.replacemotion.Editor", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/ReplaceMotion/Editor/com.dreadscripts.replacemotion.Editor.asmdef.meta b/ReplaceMotion/Editor/com.dreadscripts.replacemotion.Editor.asmdef.meta new file mode 100644 index 0000000..56fadfa --- /dev/null +++ b/ReplaceMotion/Editor/com.dreadscripts.replacemotion.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 355ae8e34ea9b874a9965deb911d8a85 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ReplaceMotion/LICENSE b/ReplaceMotion/LICENSE new file mode 100644 index 0000000..545aeca --- /dev/null +++ b/ReplaceMotion/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Dreadrith + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/ReplaceMotion/LICENSE.meta b/ReplaceMotion/LICENSE.meta new file mode 100644 index 0000000..d935cd4 --- /dev/null +++ b/ReplaceMotion/LICENSE.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 38e2ba75221516844b3416a99546dbe5 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ReplaceMotion/README.md b/ReplaceMotion/README.md new file mode 100644 index 0000000..c941bc7 --- /dev/null +++ b/ReplaceMotion/README.md @@ -0,0 +1,20 @@ +# Replace Motion +Easily replace all instances of a motion in an Avatar or Controller with the desired motion. + +![image](https://cdn.discordapp.com/attachments/1067972913594118214/1067972913988386867/unknown_4.png?ex=663437c8&is=6632e648&hm=5faf9a4ba98a093d3cccd7906daf6fee811e4fb40bbe446c5c449355d7291b13&) + +Replace Motion will easily replace all instances of a motion in an Avatar or Controller with the desired motion. +Found under DreadTools > Utilities > Replace Motion + +Window +------- +After specifying a target avatar or controller, the window will show you all the motions used. You can replace all instances of a motion with another motion of your choice. + +Target:The Avatar or Animator Controller to replace motions in. + +Motion List: +- Left Field: The original motion that's used in the target +- Right Field: the new motion that the original motion should be replaced with + +### Thank you +If you enjoy Replace Motion, please consider [supporting me ♡](https://ko-fi.com/Dreadrith)! diff --git a/ReplaceMotion/README.md.meta b/ReplaceMotion/README.md.meta new file mode 100644 index 0000000..dd46207 --- /dev/null +++ b/ReplaceMotion/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 575a36e847cb59c4488f4fc71997bec8 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ReplaceMotion/package.json b/ReplaceMotion/package.json new file mode 100644 index 0000000..523457d --- /dev/null +++ b/ReplaceMotion/package.json @@ -0,0 +1,17 @@ +{ + "name": "com.dreadscripts.replacemotion", + "displayName": "DreadScripts - ReplaceMotion", + "version": "1.0.1", + "description": "Easily replace all instances of a motion in an Avatar or Controller with the desired motion.", + "gitDependencies": {}, + "vpmDependencies": {}, + "author": { + "name": "Dreadrith", + "email": "dreadscripts@gmail.com", + "url": "https://www.dreadrith.com" + }, + "legacyFolders": {}, + "legacyFiles": {}, + "type": "tool", + "unity": "2019.4" +} \ No newline at end of file diff --git a/ReplaceMotion/package.json.meta b/ReplaceMotion/package.json.meta new file mode 100644 index 0000000..aaa37b7 --- /dev/null +++ b/ReplaceMotion/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f83ab771cf8f96246b561c63d1a24535 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ResetHumanoid.meta b/ResetHumanoid.meta new file mode 100644 index 0000000..686e60b --- /dev/null +++ b/ResetHumanoid.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3bb8e19b467a38c4b9d8630d438ba9c9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ResetHumanoid/Editor.meta b/ResetHumanoid/Editor.meta new file mode 100644 index 0000000..c937afd --- /dev/null +++ b/ResetHumanoid/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 89e2972b5cc7da64bb621fd56a97c8b1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ResetHumanoid/Editor/ResetHumanoid.cs b/ResetHumanoid/Editor/ResetHumanoid.cs new file mode 100644 index 0000000..d0c2952 --- /dev/null +++ b/ResetHumanoid/Editor/ResetHumanoid.cs @@ -0,0 +1,121 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + +namespace DreadScripts.ResetHumanoid +{ + public class ResetHumanoid : EditorWindow + { + private static Animator ani; + private static bool full; + private static bool pos = true, rot = true, scale = true; + + [MenuItem("DreadTools/Utility/Reset Humanoid")] + private static void showWindow() + { + GetWindow(false, "Reset Humanoid", true); + if (ani == null) ani = FindObjectOfType(); + } + + private void OnGUI() + { + EditorGUIUtility.labelWidth = 60; + ani = (Animator) EditorGUILayout.ObjectField("Avatar", ani, typeof(Animator), true); + EditorGUILayout.BeginHorizontal(); + pos = EditorGUILayout.Toggle("Position", pos); + rot = EditorGUILayout.Toggle("Rotation", rot); + scale = EditorGUILayout.Toggle("Scale", scale); + EditorGUIUtility.labelWidth = 0; + EditorGUILayout.EndHorizontal(); + full = EditorGUILayout.Toggle(new GUIContent("Full Reset", "Reset includes the objects that the Model was imported with"), full); + if (GUILayout.Button("Reset")) + ResetPose(ani, full, pos, rot, scale); + + } + + public static void ResetPose(Animator ani, bool fullReset = false, bool position = true, bool rotation = true, bool scale = true) + { + if (!ani.avatar) + { + Debug.LogWarning("Avatar is required to reset pose!"); + return; + } + + // Humans IDs if not full reset, otherwise All Ids + // ID > Path + // ID > Element > Transform Data + Undo.RegisterFullObjectHierarchyUndo(ani.gameObject, "HierarchyReset"); + SerializedObject sAvi = new SerializedObject(ani.avatar); + SerializedProperty humanIds = sAvi.FindProperty("m_Avatar.m_Human.data.m_Skeleton.data.m_ID"); + SerializedProperty allIds = sAvi.FindProperty("m_Avatar.m_AvatarSkeleton.data.m_ID"); + SerializedProperty defaultPose = sAvi.FindProperty("m_Avatar.m_DefaultPose.data.m_X"); + SerializedProperty tos = sAvi.FindProperty("m_TOS"); + + Dictionary idToElem = new Dictionary(); + Dictionary elemToTransform = new Dictionary(); + Dictionary IdToPath = new Dictionary(); + + for (int i = 0; i < allIds.arraySize; i++) + idToElem.Add(allIds.GetArrayElementAtIndex(i).longValue, i); + + for (int i = 0; i < defaultPose.arraySize; i++) + elemToTransform.Add(i, new TransformData(defaultPose.GetArrayElementAtIndex(i))); + + for (int i = 0; i < tos.arraySize; i++) + { + SerializedProperty currProp = tos.GetArrayElementAtIndex(i); + IdToPath.Add(currProp.FindPropertyRelative("first").longValue, currProp.FindPropertyRelative("second").stringValue); + } + + Action applyTransform = (transform, data) => + { + if (transform) + { + if (position) + transform.localPosition = data.pos; + if (rotation) + transform.localRotation = data.rot; + if (scale) + transform.localScale = data.scale; + } + }; + + if (!fullReset) + { + for (int i = 0; i < humanIds.arraySize; i++) + { + Transform myBone = ani.transform.Find(IdToPath[humanIds.GetArrayElementAtIndex(i).longValue]); + TransformData data = elemToTransform[idToElem[humanIds.GetArrayElementAtIndex(i).longValue]]; + applyTransform(myBone, data); + } + } + else + { + for (int i = 0; i < allIds.arraySize; i++) + { + Transform myBone = ani.transform.Find(IdToPath[allIds.GetArrayElementAtIndex(i).longValue]); + TransformData data = elemToTransform[idToElem[allIds.GetArrayElementAtIndex(i).longValue]]; + applyTransform(myBone, data); + } + } + } + + struct TransformData + { + public Vector3 pos; + public Quaternion rot; + public Vector3 scale; + + public TransformData(SerializedProperty t) + { + SerializedProperty tProp = t.FindPropertyRelative("t"); + SerializedProperty qProp = t.FindPropertyRelative("q"); + SerializedProperty sProp = t.FindPropertyRelative("s"); + pos = new Vector3(tProp.FindPropertyRelative("x").floatValue, tProp.FindPropertyRelative("y").floatValue, tProp.FindPropertyRelative("z").floatValue); + rot = new Quaternion(qProp.FindPropertyRelative("x").floatValue, qProp.FindPropertyRelative("y").floatValue, qProp.FindPropertyRelative("z").floatValue, qProp.FindPropertyRelative("w").floatValue); + scale = new Vector3(sProp.FindPropertyRelative("x").floatValue, sProp.FindPropertyRelative("y").floatValue, sProp.FindPropertyRelative("z").floatValue); + } + } + } +} \ No newline at end of file diff --git a/ResetHumanoid/Editor/ResetHumanoid.cs.meta b/ResetHumanoid/Editor/ResetHumanoid.cs.meta new file mode 100644 index 0000000..a103c37 --- /dev/null +++ b/ResetHumanoid/Editor/ResetHumanoid.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 842214ab484e30f4fb54f3a8c49fe911 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ResetHumanoid/Editor/com.dreadscripts.resethumanoid.Editor.asmdef b/ResetHumanoid/Editor/com.dreadscripts.resethumanoid.Editor.asmdef new file mode 100644 index 0000000..70fdfc5 --- /dev/null +++ b/ResetHumanoid/Editor/com.dreadscripts.resethumanoid.Editor.asmdef @@ -0,0 +1,15 @@ +{ + "name": "com.dreadscripts.resethumanoid.Editor", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/ResetHumanoid/Editor/com.dreadscripts.resethumanoid.Editor.asmdef.meta b/ResetHumanoid/Editor/com.dreadscripts.resethumanoid.Editor.asmdef.meta new file mode 100644 index 0000000..1e06cb2 --- /dev/null +++ b/ResetHumanoid/Editor/com.dreadscripts.resethumanoid.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 23482c6621fa978479978cf55ec8f668 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ResetHumanoid/LICENSE b/ResetHumanoid/LICENSE new file mode 100644 index 0000000..545aeca --- /dev/null +++ b/ResetHumanoid/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Dreadrith + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/ResetHumanoid/LICENSE.meta b/ResetHumanoid/LICENSE.meta new file mode 100644 index 0000000..56a32de --- /dev/null +++ b/ResetHumanoid/LICENSE.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 852e3f2bfed42d24d9bac30b04123c5d +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ResetHumanoid/README.md b/ResetHumanoid/README.md new file mode 100644 index 0000000..b278bda --- /dev/null +++ b/ResetHumanoid/README.md @@ -0,0 +1,15 @@ +# Reset Humanoid + +### [Download From Here](https://vpm.dreadscripts.com/) + +## Features +- Allows resetting the pose of a humanoid animator. +- Choose which properties to reset: position, rotation, and scale. + +## How to Use +1. Navigate to `DreadTools > Utility > Reset Humanoid` in the top menu. +2. Select the avatar you want to reset the pose for. +3. Choose reset options and click "Reset" to apply the pose reset. + +### Thank You +If you enjoy Reset Humanoid, please consider [supporting me ♡](https://ko-fi.com/Dreadrith)! diff --git a/ResetHumanoid/README.md.meta b/ResetHumanoid/README.md.meta new file mode 100644 index 0000000..2eedc9f --- /dev/null +++ b/ResetHumanoid/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d64dd784833ec0f4f8046a38fc7b6b65 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ResetHumanoid/package.json b/ResetHumanoid/package.json new file mode 100644 index 0000000..4310137 --- /dev/null +++ b/ResetHumanoid/package.json @@ -0,0 +1,17 @@ +{ + "name": "com.dreadscripts.resethumanoid", + "displayName": "DreadScripts - ResetHumanoid", + "version": "1.0.2", + "description": "Simple tool to reset the pose of a humanoid animator.", + "gitDependencies": {}, + "vpmDependencies": {}, + "author": { + "name": "Dreadrith", + "email": "dreadscripts@gmail.com", + "url": "https://www.dreadrith.com" + }, + "legacyFolders": {}, + "legacyFiles": {}, + "type": "tool", + "unity": "2019.4" +} \ No newline at end of file diff --git a/ResetHumanoid/package.json.meta b/ResetHumanoid/package.json.meta new file mode 100644 index 0000000..e4f5111 --- /dev/null +++ b/ResetHumanoid/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9d494f6df5e33e84fbe7bb1718986c67 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SelectionHelper.meta b/SelectionHelper.meta new file mode 100644 index 0000000..7afc4cf --- /dev/null +++ b/SelectionHelper.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 14265031cf9ba0b4e9e41bfdca165a9b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SelectionHelper/Editor.meta b/SelectionHelper/Editor.meta new file mode 100644 index 0000000..de8bdfc --- /dev/null +++ b/SelectionHelper/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0c26ca17a65469e4b8475701dd9d7bef +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SelectionHelper/Editor/SaveSelection.cs b/SelectionHelper/Editor/SaveSelection.cs new file mode 100644 index 0000000..d3b71e8 --- /dev/null +++ b/SelectionHelper/Editor/SaveSelection.cs @@ -0,0 +1,76 @@ +using UnityEngine; +using UnityEditor; +using System.Linq; + +//Made by Dreadrith#3238 +//Discord: https://discord.gg/ZsPfrGn +//Github: https://github.com/Dreadrith/DreadScripts +//Gumroad: https://gumroad.com/dreadrith +//Ko-fi: https://ko-fi.com/dreadrith + +namespace DreadScripts.SelectionHelper +{ + [System.Serializable] + public class SaveSelection : ScriptableObject + { + [SerializeReference] + public Object[] oldSelection; + + public string[] s ={"Boi","Huh"}; + + [MenuItem("Assets/Selection Helper/Save Selection")] + [MenuItem("GameObject/Selection Helper/Save\\Load/Save Selection", false, 0)] + static void SaveSelected() + { + instance.oldSelection = Selection.objects; + Save(); + } + + [MenuItem("Assets/Selection Helper/Load Selection")] + [MenuItem("GameObject/Selection Helper/Save\\Load/Load Selection", false, 1)] + static void LoadSelected() + { + if (instance.oldSelection != null) + Selection.objects = Selection.objects.Concat(instance.oldSelection).ToArray(); + + } + + private static SaveSelection _instance; + private static SaveSelection instance => _instance ? _instance : GetInstance(); + + public static string folderPath = "DreadScripts/Saved Data/SaveSelection"; + private static string SavePath => folderPath + "/SaveSelectionData.txt"; + + public static SaveSelection GetInstance() + { + if (_instance == null && Exists()) + { + _instance = CreateInstance(); + using (System.IO.StreamReader reader = new System.IO.StreamReader(SavePath)) + JsonUtility.FromJsonOverwrite(reader.ReadToEnd(),_instance); + } + if (_instance == null) + { + _instance = CreateInstance(); + string directoryPath = System.IO.Path.GetDirectoryName(SavePath); + if (!System.IO.Directory.Exists(directoryPath)) + System.IO.Directory.CreateDirectory(directoryPath); + string json = JsonUtility.ToJson(_instance); + using (System.IO.StreamWriter writer = System.IO.File.CreateText(SavePath)) + writer.Write(json); + } + return _instance; + } + + public static void Save() + { + string json = EditorJsonUtility.ToJson(_instance); + using (System.IO.StreamWriter writer = new System.IO.StreamWriter(SavePath)) + writer.Write(json); + } + public static bool Exists() + { + return System.IO.File.Exists(SavePath); + } + } +} diff --git a/SelectionHelper/Editor/SaveSelection.cs.meta b/SelectionHelper/Editor/SaveSelection.cs.meta new file mode 100644 index 0000000..1ad6aa1 --- /dev/null +++ b/SelectionHelper/Editor/SaveSelection.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a04dba417148dc641a899dc4853dfebb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SelectionHelper/Editor/SceneObjectSelector.cs b/SelectionHelper/Editor/SceneObjectSelector.cs new file mode 100644 index 0000000..c0e9ae2 --- /dev/null +++ b/SelectionHelper/Editor/SceneObjectSelector.cs @@ -0,0 +1,294 @@ +using UnityEditor; +using UnityEngine; +using System.Linq; +using System.Collections.Generic; + +//By Dreadrith#3238 +//https://discord.gg/ZsPfrGn +//Github: https://github.com/Dreadrith/DreadScripts +//Gumroad: https://gumroad.com/dreadrith + +namespace DreadScripts.SelectionHelper +{ + public class SceneObjectSelector : EditorWindow + { + + + #region Pref Keys + public const string PREF_PREFIX = "DS_SelectionHelperData_"; + public static readonly string PREF_ONCOLOR = $"{PREF_PREFIX}SelectedColor"; + public static readonly string PREF_OFFCOLOR = $"{PREF_PREFIX}DeselectedColor"; + public static readonly string PREF_MINSIZE = $"{PREF_PREFIX}MinSize"; + public static readonly string PREF_MAXSIZE = $"{PREF_PREFIX}MaxSize"; + public static readonly string PREF_SIZE = $"{PREF_PREFIX}Size"; + public static readonly string PREF_HUMANOID = $"{PREF_PREFIX}OnlyHumanoid"; + + public static void PrefSetColor(string key, Color value) + { + PlayerPrefs.SetFloat($"{key}R", value.r); + PlayerPrefs.SetFloat($"{key}G", value.g); + PlayerPrefs.SetFloat($"{key}B", value.b); + } + + public static Color PrefGetColor(string key, Color defaultColor) => new Color( + PlayerPrefs.GetFloat($"{key}R", defaultColor.r), + PlayerPrefs.GetFloat($"{key}G", defaultColor.g), + PlayerPrefs.GetFloat($"{key}B", defaultColor.b)); + + public static void PrefSetBool(string key, bool value) => PlayerPrefs.SetInt(key, value ? 1 : 0); + public static bool PrefGetBool(string key, bool defaultValue) => PlayerPrefs.GetInt(key, defaultValue ? 1 : 0) == 1; + #endregion + + [InitializeOnLoadMethod] + public static void LoadSettings() + { + OnColor = PrefGetColor(PREF_ONCOLOR, new Color(0.4f, 0.85f, 0.65f)); + OffColor = PrefGetColor(PREF_OFFCOLOR, new Color(0.8f, 0.15f, 0.35f)); + minHandleSize = PlayerPrefs.GetFloat(PREF_MINSIZE, 0.005f); + maxHandleSize = PlayerPrefs.GetFloat(PREF_MAXSIZE, 0.04f); + + handleSize = PlayerPrefs.GetFloat(PREF_SIZE, 0.00525f); + onlyHumanoid = PrefGetBool(PREF_HUMANOID, false); + + SceneView.duringSceneGui -= OnScene; + SceneView.duringSceneGui += OnScene; + Selection.selectionChanged -= OnSelectionChange; + Selection.selectionChanged += OnSelectionChange; + } + + public static void SaveSettings() + { + PrefSetColor(PREF_ONCOLOR, OnColor); + PrefSetColor(PREF_OFFCOLOR, OffColor); + PlayerPrefs.SetFloat(PREF_MINSIZE, minHandleSize); + PlayerPrefs.SetFloat(PREF_MAXSIZE, maxHandleSize); + PlayerPrefs.SetFloat(PREF_SIZE, handleSize); + PrefSetBool(PREF_HUMANOID, onlyHumanoid); + SceneView.RepaintAll(); + } + + public static void Disable() + { + SceneView.duringSceneGui -= OnScene; + Selection.selectionChanged -= OnSelectionChange; + } + + [MenuItem("DreadTools/Scripts Settings/Scene Object Selector")] + public static void showWindow() + { + GetWindow("Scene Selector Settings"); + } + + private static bool selecting; + private static bool onlyHumanoid; + private static float handleSize, minHandleSize, maxHandleSize; + private static Transform[] sceneObjects; + private static bool ignoreDBones = true, includeRoots = true; + private static bool hasDbones = (null != System.Type.GetType("DynamicBone")); + private static bool[] bitmask; + private static Color OnColor; + private static Color OffColor; + private static void OnScene(SceneView sceneview) + { + Handles.BeginGUI(); + GUILayout.Space(20); + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + + if (GUILayout.Button(EditorGUIUtility.IconContent("CapsuleCollider2D Icon"), GUIStyle.none, GUILayout.Width(20), GUILayout.Height(20))) + { + Event e = Event.current; + if (e.button == 0) + { + selecting = !selecting; + if (selecting) + { + if (!onlyHumanoid) + { + sceneObjects = FindObjectsOfType(); + + if (hasDbones && ignoreDBones) + { + System.Type dboneType = System.Type.GetType("DynamicBone"); + List dbones = new List(); + Object[] dboneScripts = FindObjectsOfType(dboneType); + foreach (Object b in dboneScripts) + { + SerializedObject sb = new SerializedObject(b); + List exclusionList = new List(); + SerializedProperty excProp = sb.FindProperty("m_Exclusions"); + for (int i = 0; i < excProp.arraySize; i++) + exclusionList.Add((Transform) excProp.GetArrayElementAtIndex(i).objectReferenceValue); + GetBoneChildren(dbones, exclusionList, (Transform) sb.FindProperty("m_Root").objectReferenceValue, includeRoots); + } + + sceneObjects = sceneObjects.Except(dbones).ToArray(); + } + } + else + { + var list = new List(); + foreach (var a in FindObjectsOfType().Where(a => a.isHuman && a.avatar)) + { + for (int i = 0; i < 55; i++) + { + var t = a.GetBoneTransform((HumanBodyBones) i); + if (t) list.Add(t); + } + } + + sceneObjects = list.ToArray(); + } + refreshBitMask(); + } + } + if (e.button == 1) + { + GetWindow(false, "Scene Selector Settings", true); + } + } + EditorGUILayout.EndHorizontal(); + if (selecting) + { + //a + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + EditorGUI.BeginChangeCheck(); + handleSize = GUILayout.VerticalSlider(handleSize, maxHandleSize, minHandleSize, GUILayout.Height(50), GUILayout.Width(15)); + if (EditorGUI.EndChangeCheck()) + SaveSettings(); + + GUILayout.Space(1); + EditorGUILayout.EndHorizontal(); + } + Handles.EndGUI(); + + if (selecting) + { + if (sceneObjects.Length > 0) + { + for (int i = 0; i < sceneObjects.Length; i++) + { + if (!sceneObjects[i]) + continue; + int controlID = sceneObjects[i].GetHashCode(); + Event e = Event.current; + if (bitmask[i]) + Handles.color = OnColor; + else + Handles.color = OffColor; + Handles.SphereHandleCap(controlID, sceneObjects[i].position, Quaternion.identity, handleSize, EventType.Repaint); + switch (e.GetTypeForControl(controlID)) + { + case EventType.MouseDown: + if (HandleUtility.nearestControl == controlID && e.button == 0) + { + if (e.control) + { + if (!Selection.objects.Contains(sceneObjects[i].gameObject)) + { + Selection.objects = Selection.objects.Concat(new GameObject[] { sceneObjects[i].gameObject }).ToArray(); + } + else + { + Selection.objects = Selection.objects.Except(new GameObject[] { sceneObjects[i].gameObject }).ToArray(); + } + } + else + { + Selection.activeObject = sceneObjects[i].gameObject; + } + e.Use(); + } + break; + case EventType.Layout: + float distance = HandleUtility.DistanceToCircle(sceneObjects[i].position, handleSize / 2f); + HandleUtility.AddControl(controlID, distance); + break; + } + } + } + } + + } + + private static void GetBoneChildren(List dbones, List exclusionList, Transform parent, bool first = false) + { + if (exclusionList.Contains(parent)) return; + + if (!first) dbones.Add(parent); + for (int i = 0; i < parent.childCount; i++) + GetBoneChildren(dbones, exclusionList, parent.GetChild(i)); + + } + + + private void OnGUI() + { + EditorGUI.BeginChangeCheck(); + using (new GUILayout.HorizontalScope()) + { + EditorGUIUtility.labelWidth = 20; + EditorGUILayout.LabelField("Handle Size"); + + minHandleSize = EditorGUILayout.FloatField(minHandleSize, GUILayout.Width(40)); + handleSize = GUILayout.HorizontalSlider(handleSize, minHandleSize, maxHandleSize); + maxHandleSize = EditorGUILayout.FloatField(maxHandleSize, GUILayout.Width(40)); + EditorGUIUtility.labelWidth = 0; + } + + OnColor = EditorGUILayout.ColorField("Selected", OnColor); + OffColor = EditorGUILayout.ColorField("Deselected", OffColor); + + using (new GUILayout.HorizontalScope()) + { + EditorGUIUtility.labelWidth = 70; + + onlyHumanoid = EditorGUILayout.ToggleLeft("Only Humanoid", onlyHumanoid); + if (hasDbones) + { + ignoreDBones = EditorGUILayout.ToggleLeft("Ignore D-Bones", ignoreDBones); + includeRoots = EditorGUILayout.ToggleLeft("Include D-Bone Roots", includeRoots); + } + } + + if (EditorGUI.EndChangeCheck()) + SaveSettings(); + + EditorGUILayout.LabelField(string.Empty, GUI.skin.horizontalSlider); + + using (new GUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + if (GUILayout.Button("Made by Dreadrith#3238", "boldlabel")) + Application.OpenURL("https://github.com/Dreadrith/DreadScripts"); + } + + } + + private static void OnSelectionChange() + { + if (selecting) refreshBitMask(); + } + private static void refreshBitMask() + { + bitmask = new bool[sceneObjects.Length]; + for (int i = 0; i < sceneObjects.Length; i++) + { + if (!sceneObjects[i]) + { + sceneObjects = sceneObjects.Except(new Transform[] { sceneObjects[i] }).ToArray(); + refreshBitMask(); + break; + } + + if (Selection.objects.Contains(sceneObjects[i].gameObject)) + bitmask[i] = true; + else + bitmask[i] = false; + } + } + + + } +} diff --git a/SelectionHelper/Editor/SceneObjectSelector.cs.meta b/SelectionHelper/Editor/SceneObjectSelector.cs.meta new file mode 100644 index 0000000..fff388b --- /dev/null +++ b/SelectionHelper/Editor/SceneObjectSelector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 02cefda8b1d83074e9c6585e1b599f2c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SelectionHelper/Editor/SelectionHelper.cs b/SelectionHelper/Editor/SelectionHelper.cs new file mode 100644 index 0000000..0da7d02 --- /dev/null +++ b/SelectionHelper/Editor/SelectionHelper.cs @@ -0,0 +1,91 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using System.Linq; + +namespace DreadScripts.SelectionHelper +{ + public class SelectionHelper + { + //By Dreadrith#3238 + //Server: https://discord.gg/ZsPfrGn + //Github: https://github.com/Dreadrith/DreadScripts + //Gumroad: https://gumroad.com/dreadrith + + public static System.Type myCurrentType = System.Type.GetType(SessionState.GetString("SelectionHelperSelectType", "")); + + + [MenuItem("CONTEXT/Component/[SH] Choose Type", false, 900)] + static void selectType(MenuCommand selected) + { + myCurrentType = selected.context.GetType(); + SessionState.SetString("SelectionHelperSelectType", myCurrentType.AssemblyQualifiedName); + } + + [MenuItem("GameObject/Selection Helper/Select Immediate Children", false, 50)] + static void selectImmediate(MenuCommand selected) + { + Transform[] obj = Selection.GetFiltered(SelectionMode.Editable); + if (obj.Length == 0) + { + Debug.Log("[SH] No GameObject was selected"); + return; + } + List newSelection = new List(); + for (int i = 0; i < obj.Length; i++) + { + for (int j = 0; j < obj[i].childCount; j++) + { + newSelection.Add(obj[i].GetChild(j).gameObject); + } + } + Selection.objects = Selection.objects.Concat(newSelection).ToArray(); + } + + [MenuItem("GameObject/Selection Helper/By Type/Filter", false, -50)] + static void selectSelectedType() + { + Selection.objects = Selection.GetFiltered(myCurrentType, SelectionMode.Editable); + List newSelection = new List(); + for (int i = 0; i < Selection.objects.Length; i++) + { + newSelection.Add(((Component)Selection.objects[i]).gameObject); + } + Selection.objects = newSelection.ToArray(); + } + + [MenuItem("GameObject/Selection Helper/By Type/Children", false, -51)] + static void selectChildrenType(MenuCommand selected) + { + selectByType(selected, true); + } + + [MenuItem("GameObject/Selection Helper/By Type/Parents", false, -52)] + static void selectParentsType(MenuCommand selected) + { + selectByType(selected, false); + } + + static void selectByType(MenuCommand selected, bool child) + { + if (myCurrentType == null) + { + Debug.Log("[SH] No Component Type Chosen"); + return; + } + if (!selected.context) + { + Debug.Log("[SH] No GameObject was selected"); + return; + } + GameObject[] objs; + if (child) + objs = ((GameObject)selected.context).GetComponentsInChildren(myCurrentType, true).Select(c => c.gameObject).ToArray(); + else + objs = ((GameObject)selected.context).GetComponentsInParent(myCurrentType, true).Select(c => c.gameObject).ToArray(); + + Selection.objects = objs; + + } + } +} \ No newline at end of file diff --git a/SelectionHelper/Editor/SelectionHelper.cs.meta b/SelectionHelper/Editor/SelectionHelper.cs.meta new file mode 100644 index 0000000..72003c0 --- /dev/null +++ b/SelectionHelper/Editor/SelectionHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d370428cfe632814e82b8f8b0aba3da2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SelectionHelper/Editor/com.dreadscripts.selectionhelper.Editor.asmdef b/SelectionHelper/Editor/com.dreadscripts.selectionhelper.Editor.asmdef new file mode 100644 index 0000000..2a5f348 --- /dev/null +++ b/SelectionHelper/Editor/com.dreadscripts.selectionhelper.Editor.asmdef @@ -0,0 +1,15 @@ +{ + "name": "com.dreadscripts.selectionhelper", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/SelectionHelper/Editor/com.dreadscripts.selectionhelper.Editor.asmdef.meta b/SelectionHelper/Editor/com.dreadscripts.selectionhelper.Editor.asmdef.meta new file mode 100644 index 0000000..dd452fa --- /dev/null +++ b/SelectionHelper/Editor/com.dreadscripts.selectionhelper.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2816fbc8c0aecd44eb2bcfbd149155be +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SelectionHelper/LICENSE.md b/SelectionHelper/LICENSE.md new file mode 100644 index 0000000..a7d4152 --- /dev/null +++ b/SelectionHelper/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Dreadrith + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/SelectionHelper/LICENSE.md.meta b/SelectionHelper/LICENSE.md.meta new file mode 100644 index 0000000..82dc050 --- /dev/null +++ b/SelectionHelper/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b96a03a8521c0bc46818b2e3a1e973a8 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SelectionHelper/README.md b/SelectionHelper/README.md new file mode 100644 index 0000000..3e32633 --- /dev/null +++ b/SelectionHelper/README.md @@ -0,0 +1,22 @@ +# SelectionHelper +Unity Editor package to make selecting certain objects easier and less tedious + +Get it from the VCC listing! + +SelectionHelper: +---------------- +- Go to a Component on an object and Right Click > [SH] Choose Type. Right Click on a GameObject, Selection Helper > By Type > Children, Parents, or Filter Current Selection. +- Adds Selection Helper > Select Immediate Children, to GameObjects, to Select the next level of Children of currently selected GameObjects + +![Type Object Selector](https://raw.githubusercontent.com/Dreadrith/SelectionHelper/main/com.dreadscripts.selectionhelper/media~/TOS.gif) + +SceneObjectSelector: +-------------------- +Adds a small button to the top right of the Scene view. When clicked and enabled, will show a resizable sphere on each enabled object. This is useful for quickly selecting armature bones or managing empty objects. +Right click the new button to open its settings window. Automatically ignores Dynamic Bones by default. + +![Scene Object Selector](https://raw.githubusercontent.com/Dreadrith/SelectionHelper/main/com.dreadscripts.selectionhelper/media~/SOS.gif) + +SaveSelection: +-------------- +Adds Save\Load to Selection Helper, allows you to Save what objects were selected, and load them when needed. Loading combines current selection with loaded selection. diff --git a/SelectionHelper/README.md.meta b/SelectionHelper/README.md.meta new file mode 100644 index 0000000..f5e770f --- /dev/null +++ b/SelectionHelper/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 73637a1f995818c4695a9de50d48ac2f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SelectionHelper/package.json b/SelectionHelper/package.json new file mode 100644 index 0000000..9510eb8 --- /dev/null +++ b/SelectionHelper/package.json @@ -0,0 +1,25 @@ +{ + "name": "com.dreadscripts.selectionhelper", + "displayName": "DreadScripts - Selection Helper", + "version": "1.2.4", + "unity": "2019.4", + "license": "MIT", + "description": "Unity Editor package to make selecting certain objects easier and less tedious", + "keywords": [ + "Dreadrith", + "DreadScripts", + "DreadTools", + "Editor", + "Utility", + "Selection" + ], + "author": { + "name": "Dreadrith", + "email": "dreadscripts@gmail.com", + "url": "https://github.com/Dreadrith" + }, + "legacyFolders": { + "Assets\\DreadScripts\\Selection Helper": "6ec3e159e94175241a20166127b7da81", + "Assets\\DreadScripts\\SelectionHelper": "e0c37a2eebed7f54eb05af2439a04f27" + } +} \ No newline at end of file diff --git a/SelectionHelper/package.json.meta b/SelectionHelper/package.json.meta new file mode 100644 index 0000000..abe1469 --- /dev/null +++ b/SelectionHelper/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: dccf082c009067847b60a2b9fa931dd8 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Text2Texture.meta b/Text2Texture.meta new file mode 100644 index 0000000..6d5320b --- /dev/null +++ b/Text2Texture.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 36d5d83ec3fce0541b5fe285a01cc0a0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Text2Texture/Editor.meta b/Text2Texture/Editor.meta new file mode 100644 index 0000000..3fdec38 --- /dev/null +++ b/Text2Texture/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2bd9e230c8fe4534da61a8da601c8b8e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Text2Texture/Editor/TextToTexture.cs b/Text2Texture/Editor/TextToTexture.cs new file mode 100644 index 0000000..dea2062 --- /dev/null +++ b/Text2Texture/Editor/TextToTexture.cs @@ -0,0 +1,596 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using UnityEngine; +using TMPro; +using UnityEditor; +using Object = UnityEngine.Object; + +namespace DreadScripts.TextToTexture +{ + public class TextToTexture : EditorWindow + { + #region Constants + + private const string POIYOMI_SHADER_NAME = ".poiyomi/• Poiyomi Toon •"; + private const string FALLBACK_SHADER_NAME = "Standard"; + + private const string DUMMY_PARENT_NAME = "(Temp) TTT_Objects"; + + private const string EDITORPREFS_SAVEPATH = "Text2TextureSavePath"; + private const string EDITORPREFS_DEFAULTSAVEPATH = "Assets/DreadScripts/TextToTexture/Generated Assets"; + + private const string RESOURCE_FONTPATH = "Assets/DreadScripts/TextToTexture/Resources/TTT_DancingScript TMP.asset"; + private const string RESOURCE_FONTGUID = "e7d6a5821a387564caacc9929e10eb22"; + + private const string RESOURCE_TEMPLATEPATH = "Assets/DreadScripts/TextToTexture/Resources/TTT_CanvasTemplate.prefab"; + private const string RESOURCE_TEMPLATEGUID = "2cd48bc473a380748ad104409753555e"; + + private readonly string[] DimensionPresets = + { + "128x128", + "256x256", + "512x512", + "1024x1024", + "2048x2048", + "4096x4096", + }; + + #endregion + + #region Automated Variables + + public static string savePath; + + private static GUIContent resetIcon; + private static bool showExtra; + private static bool isInCustomizing; + + private static Camera tempCamera; + private static TextMeshProUGUI tempText; + private static GameObject tempParent; + private static Material tempMaterial; + private static RenderTexture tempRenderTexture; + + #endregion + + #region Input Variables + public static string textInput = ""; + public static TextureGenerationType generationType = TextureGenerationType.GenerateMaterial; + + public static TMP_FontAsset customFont; + public static float outlineThickness = 0.075f; + public static float extraPadding = 5; + public static Vector2 offset; + public static int resolutionWidth = 1024; + public static int resolutionHeight = 1024; + + public static float verticalMargin = 100; + public static float horizontalMargin = 100; + + public static bool invert; + public static bool wrapText = true; + #endregion + + #region Declarations + public enum TextureGenerationType + { + GenerateNormalMap, + GenerateMask, + GenerateCustomTexture, + GenerateMaterial + } + #endregion + + [MenuItem("DreadTools/Utility/Text2Texture")] + public static void showWindow() + { + var title = GetWindow(false, "Text2Texture", true).titleContent; + title.image = EditorGUIUtility.IconContent("GUIText Icon").image; + } + + private void OnGUI() + { + EditorGUI.BeginDisabledGroup(isInCustomizing); + + GUIStyle iconStyle = new GUIStyle() {margin = new RectOffset(0, 0, 1, 1)}; + + using (new GUILayout.VerticalScope("helpbox")) + { + using (new GUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + GUILayout.Label("Text Input", "boldlabel"); + GUILayout.FlexibleSpace(); + } + textInput = EditorGUILayout.TextArea(textInput); + generationType = (TextureGenerationType)EditorGUILayout.EnumPopup(generationType); + } + + using (new GUILayout.VerticalScope("box")) + { + showExtra = EditorGUILayout.Foldout(showExtra, "Extra Settings"); + + if (showExtra) + { + + using (new GUILayout.HorizontalScope("helpbox")) + customFont = (TMP_FontAsset) EditorGUILayout.ObjectField("Custom Font", customFont, typeof(TMP_FontAsset), false); + + using (new GUILayout.HorizontalScope("helpbox")) + using (new EditorGUI.DisabledScope(generationType != TextureGenerationType.GenerateNormalMap && generationType != TextureGenerationType.GenerateMaterial)) + outlineThickness = Mathf.Clamp01(EditorGUILayout.FloatField("Normal Thickness", outlineThickness)); + + using (new GUILayout.HorizontalScope("helpbox")) + extraPadding = EditorGUILayout.FloatField("Padding", extraPadding); + + using (new GUILayout.HorizontalScope("helpbox")) + { + GUILayout.Label("Offset", GUILayout.Width(136)); + offset = EditorGUILayout.Vector2Field(GUIContent.none, offset); + } + + using (new GUILayout.HorizontalScope("helpbox")) + { + GUILayout.Label("Margin (%)", GUILayout.Width(136)); + + EditorGUIUtility.labelWidth = 10; + horizontalMargin = EditorGUILayout.FloatField(new GUIContent("X", "Width"), horizontalMargin); + verticalMargin = EditorGUILayout.FloatField(new GUIContent("Y", "Height"), verticalMargin); + EditorGUIUtility.labelWidth = 0; + } + + using (new GUILayout.HorizontalScope("helpbox")) + { + GUILayout.Label("Resolution", GUILayout.Width(136)); + + EditorGUIUtility.labelWidth = 0; + + EditorGUIUtility.labelWidth = 10; + resolutionWidth = EditorGUILayout.IntField(new GUIContent("X", "Width"), resolutionWidth); + resolutionHeight = EditorGUILayout.IntField(new GUIContent("Y", "Height"), resolutionHeight); + EditorGUIUtility.labelWidth = 0; + + + int dummy = -1; + EditorGUI.BeginChangeCheck(); + dummy = EditorGUILayout.Popup(dummy, DimensionPresets, GUILayout.Width(18)); + if (EditorGUI.EndChangeCheck()) + { + string[] dimensions = ((string) DimensionPresets.GetValue(dummy)).Split('x'); + resolutionWidth = int.Parse(dimensions[0]); + resolutionHeight = int.Parse(dimensions[1]); + } + + if (GUILayout.Button(resetIcon, iconStyle, GUILayout.Height(18), GUILayout.Width(18))) + resolutionWidth = resolutionHeight = 1024; + } + + using (new GUILayout.HorizontalScope("helpbox")) + { + wrapText = EditorGUILayout.Toggle("Wrap Text", wrapText); + + using (new EditorGUI.DisabledScope((int)generationType > 1)) + invert = EditorGUILayout.Toggle(new GUIContent("Invert Map"), invert); + } + } + } + + EditorGUI.EndDisabledGroup(); + + if (!isInCustomizing) + { + using (new EditorGUI.DisabledScope(string.IsNullOrWhiteSpace(textInput))) + using (new GUILayout.HorizontalScope()) + { + if (GUILayout.Button("Generate")) + { + switch (generationType) + { + case TextureGenerationType.GenerateNormalMap: + case TextureGenerationType.GenerateMask: + GenerateInit(); + break; + case TextureGenerationType.GenerateCustomTexture: + isInCustomizing = true; + GenerateInit(); + break; + case TextureGenerationType.GenerateMaterial: + + generationType = TextureGenerationType.GenerateNormalMap; + Texture2D normalTexture = GenerateInit(); + + generationType = TextureGenerationType.GenerateMask; + bool oldInvert = invert; + invert = true; + Texture2D maskTexture = GenerateInit(); + invert = oldInvert; + + generationType = TextureGenerationType.GenerateMaterial; + + Shader currentShader = Shader.Find(POIYOMI_SHADER_NAME) ?? Shader.Find(FALLBACK_SHADER_NAME); + Material newMaterial = new Material(currentShader); + #region Standard/Generic Property Set + newMaterial.SetTexture("_MainTex", maskTexture); + newMaterial.SetTexture("_MetallicGlossMap", maskTexture); + newMaterial.SetTexture("_BumpMap", normalTexture); + newMaterial.SetFloat("_Glossiness", 0.85f); + newMaterial.SetFloat("_GlossMapScale", 0.85f); + #endregion + + #region Poiyomi Propert Set + newMaterial.EnableKeyword("VIGNETTE_CLASSIC"); + newMaterial.SetTexture("_BRDFSpecularMap", maskTexture); + newMaterial.SetTexture("_BRDFMetallicMap", maskTexture); + newMaterial.SetFloat("_LightingMode", 1); + newMaterial.SetFloat("_LightingStandardSmoothness", 0.85f); + newMaterial.SetFloat("_EnableBRDF", 1); + newMaterial.SetFloat("_BRDFMetallic", 1); + newMaterial.SetFloat("_BRDFGlossiness", 0.85f); + #endregion + string newMatName = Regex.Replace(textInput, "[^\\w\\._ ]", ""); + if (newMatName.Length > 30) newMatName = "Generated TextMaterial"; + string newMatPath = AssetDatabase.GenerateUniqueAssetPath($"{savePath}/{newMatName}.mat"); + AssetDatabase.CreateAsset(newMaterial, newMatPath); + EditorGUIUtility.PingObject(newMaterial); + break; + } + + } + } + } + else + { + if (!tempCamera) isInCustomizing = false; + if (GUILayout.Button("Save Texture")) + GenerateTexture(); + } + + + DrawSeparator(); + savePath = AssetFolderPath(savePath, "New Textures Path", EDITORPREFS_SAVEPATH, false); + Credit(); + } + + private Texture2D GenerateInit() + { + GameObject canvasTemplate = ReadyResource(RESOURCE_TEMPLATEPATH, RESOURCE_TEMPLATEGUID); + customFont = customFont ?? ReadyResource(RESOURCE_FONTPATH, RESOURCE_FONTGUID); + + tempRenderTexture = new RenderTexture(resolutionWidth, resolutionHeight, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.sRGB); + + float resolutionRatio = (float) resolutionWidth / resolutionHeight; + + tempParent = GameObject.Find(DUMMY_PARENT_NAME); + if (tempParent) DestroyImmediate(tempParent); + tempParent = new GameObject(DUMMY_PARENT_NAME) + { + hideFlags = HideFlags.DontSaveInEditor | HideFlags.DontSaveInBuild, + transform = + { + position = new Vector3(420, 666, 69) + } + }; + + GameObject canvas = Instantiate(canvasTemplate, tempParent.transform); + if (generationType == TextureGenerationType.GenerateCustomTexture) EditorGUIUtility.PingObject(canvas.GetInstanceID()); + + tempCamera = canvas.GetComponentInChildren(); + tempText = canvas.GetComponentInChildren(); + RectTransform textRect = tempText.GetComponent(); + + tempCamera.transform.Translate(-offset); + tempCamera.orthographicSize = 80 + extraPadding * 2; + + tempText.enableWordWrapping = wrapText; + tempText.font = customFont; + tempText.text = textInput; + + switch (generationType) + { + case TextureGenerationType.GenerateNormalMap: + CreateTemporaryMaterial(tempText.fontSharedMaterial, true, true); + break; + case TextureGenerationType.GenerateMask: + CreateTemporaryMaterial(tempText.fontSharedMaterial, true, false); + break; + case TextureGenerationType.GenerateCustomTexture: + CreateTemporaryMaterial(tempText.fontSharedMaterial, false, false); + break; + } + + + textRect.sizeDelta = new Vector2(160 * resolutionRatio * (horizontalMargin/100), 160 * (verticalMargin / 100)); + + + return isInCustomizing ? null : GenerateTexture(); + } + + private Texture2D GenerateTexture() + { + isInCustomizing = false; + tempCamera.targetTexture = tempRenderTexture; + RenderTexture.active = tempRenderTexture; + + ReadyPath(savePath); + byte[] textureBytes = null; + + switch (generationType) + { + case TextureGenerationType.GenerateNormalMap: + { + + tempMaterial.SetFloat("_LightAngle", 0); + Texture2D bottomTexture = CaptureRender(); + + tempMaterial.SetFloat("_LightAngle", 6.28f / 4); + Texture2D rightTexture = CaptureRender(); + + tempMaterial.SetFloat("_LightAngle", 6.28f / 4 * 2); + Texture2D topTexture = CaptureRender(); + + tempMaterial.SetFloat("_LightAngle", 6.28f / 4 * 3); + Texture2D leftTexture = CaptureRender(); + + + Color[] bottomPixels = bottomTexture.GetPixels(); + Color[] rightPixels = rightTexture.GetPixels(); + Color[] topPixels = topTexture.GetPixels(); + Color[] leftPixels = leftTexture.GetPixels(); + + Color[] newColors = new Color[resolutionHeight * resolutionWidth]; + + Parallel.For(0, resolutionHeight, i => + { + Parallel.For(0, resolutionWidth, j => + { + int currentIndex = i * resolutionWidth + j; + float horizontalInfluence = 0.5f + leftPixels[currentIndex].r / 2 - rightPixels[currentIndex].r / 2; + float verticalInfluence = 0.5f + bottomPixels[currentIndex].r / 2 - topPixels[currentIndex].r / 2; + float blueColor = 1 - ((Mathf.Abs(horizontalInfluence - 0.5f) + Mathf.Abs(verticalInfluence - 0.5f)) / 2); + newColors[currentIndex] = new Color(horizontalInfluence, verticalInfluence, blueColor); + }); + }); + + DestroyImmediate(rightTexture); + DestroyImmediate(topTexture); + DestroyImmediate(leftTexture); + + bottomTexture.SetPixels(newColors); + bottomTexture.Apply(); + textureBytes = bottomTexture.EncodeToPNG(); + DestroyImmediate(bottomTexture); + break; + } + case TextureGenerationType.GenerateMask: + { + CreateTemporaryMaterial(tempText.fontSharedMaterial, true, false); + + tempCamera.backgroundColor = invert ? Color.white : Color.black; + Texture2D maskTexture = CaptureRender(); + textureBytes = maskTexture.EncodeToPNG(); + DestroyImmediate(maskTexture); + + break; + } + case TextureGenerationType.GenerateCustomTexture: + { + Texture2D newTexture = CaptureRender(); + textureBytes = newTexture.EncodeToPNG(); + DestroyImmediate(newTexture); + break; + } + } + + RenderTexture.active = null; + tempRenderTexture.Release(); + + Texture2D generatedTexture = SaveTexture(textureBytes); + EditorGUIUtility.PingObject(generatedTexture); + + if (tempParent) + DestroyImmediate(tempParent); + + return generatedTexture; + } + + private static Texture2D SaveTexture(byte[] textureBytes) + { + AssetDatabase.DeleteAsset(AssetDatabase.GetAssetPath(tempMaterial)); + string suffix; + switch (generationType) + { + case TextureGenerationType.GenerateNormalMap: + suffix = " Normal"; + break; + case TextureGenerationType.GenerateMask: + suffix = " Mask"; + break; + default: + suffix = string.Empty; + break; + } + string texturePath = AssetDatabase.GenerateUniqueAssetPath($"{savePath}/{Regex.Replace(textInput, "[^\\w\\._ ]", "")}{suffix}.png"); + try + { + File.WriteAllBytes(texturePath, textureBytes); + } + catch + { + texturePath = AssetDatabase.GenerateUniqueAssetPath($"{savePath}/Generated TextTexture.png"); + File.WriteAllBytes(texturePath, textureBytes); + } + + AssetDatabase.ImportAsset(texturePath); + + TextureImporter textureSettings = (TextureImporter)AssetImporter.GetAtPath(texturePath); + + if (generationType == TextureGenerationType.GenerateNormalMap) textureSettings.textureType = TextureImporterType.NormalMap; + if (generationType == TextureGenerationType.GenerateMask) textureSettings.sRGBTexture = false; + + textureSettings.maxTextureSize = 1024; + textureSettings.crunchedCompression = true; + textureSettings.compressionQuality = 100; + + textureSettings.streamingMipmaps = true; + textureSettings.SaveAndReimport(); + + return (Texture2D)AssetDatabase.LoadMainAssetAtPath(texturePath); + } + + private static Texture2D CaptureRender() + { + tempCamera.Render(); + Texture2D capturedTexture = new Texture2D(resolutionWidth, resolutionHeight, TextureFormat.RGBA32, false); + capturedTexture.ReadPixels(new Rect(0, 0, resolutionWidth, resolutionHeight), 0, 0); + return capturedTexture; + } + + private static void SetRequiredMaterialSettings(Material m, bool isNormal) + { + foreach (var key in m.shaderKeywords) + m.DisableKeyword(key); + + if (isNormal) + { + m.EnableKeyword("BEVEL_ON"); + m.SetFloat("_OutlineWidth", outlineThickness); + } + + m.SetFloat("_ShaderFlags", 0); + m.SetFloat("_Bevel", isNormal ? invert ? -1 : 1 : 0); + m.SetFloat("_BevelOffset", 0); + m.SetFloat("_BevelClamp", 0); + m.SetFloat("_BevelRoundness", 0); + m.SetFloat("_BevelWidth", 0.5f); + + m.SetFloat("_Ambient", 1); + m.SetFloat("_SpecularPower", 1); + m.SetFloat("_Reflectivity", 5); + m.SetFloat("_Diffuse", 0); + + m.SetFloat("_BumpFace", 0); + m.SetFloat("_BumpOutline", 0); + + m.SetColor("_FaceColor", isNormal ? Color.clear : invert ? Color.black : Color.white); + m.SetColor("_OutlineColor", isNormal ? Color.black : Color.clear); + m.SetColor("_ReflectFaceColor", Color.clear); + m.SetColor("_ReflectOutlineColor", Color.clear); + m.SetColor("_SpecularColor", new Color(1.498039f, 1.498039f, 1.498039f)); + } + + private static void CreateTemporaryMaterial(Material original, bool ForceSettings, bool isNormal) + { + ReadyPath($"{savePath}/Temp"); + string path = AssetDatabase.GenerateUniqueAssetPath($"{savePath}/Temp/(Temp) {original.name}.mat"); + tempMaterial = CopyAssetAndReturn(original, path); + if (ForceSettings) SetRequiredMaterialSettings(tempMaterial, isNormal); + tempText.fontSharedMaterial = tempMaterial; + } + + private void OnEnable() + { + savePath = EditorPrefs.GetString(EDITORPREFS_SAVEPATH, EDITORPREFS_DEFAULTSAVEPATH); + resetIcon = new GUIContent(EditorGUIUtility.IconContent("d_Refresh")) {tooltip = "Reset Dimensions"}; + } + + #region DSHelper Methods + + private static T ReadyResource(string resourcePath, string resourceGUID = "", string msg = "") where T : Object + { + T asset = Resources.Load(resourcePath); + if (asset) return asset; + + if (!string.IsNullOrWhiteSpace(resourceGUID)) + { + asset = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(resourceGUID)); + if (asset) return asset; + } + + if (string.IsNullOrWhiteSpace(msg)) msg = $"Required Resources Asset at Resource Path {resourcePath} not found! Execution may not proceed."; + EditorUtility.DisplayDialog("Error", msg, "Heck"); + throw new NullReferenceException(msg); + } + + private static void ReadyPath(string path) + { + if (Directory.Exists(path)) return; + + Directory.CreateDirectory(path); + AssetDatabase.ImportAsset(path); + } + + private static T CopyAssetAndReturn(T obj, string newPath) where T : Object + { + string assetPath = AssetDatabase.GetAssetPath(obj); + Object mainAsset = AssetDatabase.LoadMainAssetAtPath(assetPath); + + if (!mainAsset) return null; + if (obj != mainAsset) + { + T newAsset = Object.Instantiate(obj); + AssetDatabase.CreateAsset(newAsset, newPath); + return newAsset; + } + + AssetDatabase.CopyAsset(assetPath, newPath); + return AssetDatabase.LoadAssetAtPath(newPath); + } + + private static string AssetFolderPath(string variable, string title, string playerpref, bool isPlayerPrefs = true) + { + using (new GUILayout.HorizontalScope()) + { + using (new EditorGUI.DisabledScope(true)) + EditorGUILayout.TextField(title, variable); + + if (GUILayout.Button("...", GUILayout.Width(30))) + { + var dummyPath = EditorUtility.OpenFolderPanel(title, AssetDatabase.IsValidFolder(variable) ? variable : string.Empty, string.Empty); + if (string.IsNullOrEmpty(dummyPath)) + return null; + + if (!dummyPath.StartsWith("Assets")) + { + Debug.LogWarning("New Path must be a folder within Assets!"); + return null; + } + + variable = FileUtil.GetProjectRelativePath(dummyPath); + if (isPlayerPrefs) + PlayerPrefs.SetString(playerpref, variable); + else + EditorPrefs.SetString(playerpref, variable); + } + } + + return variable; + } + + private static void DrawSeparator(int thickness = 2, int padding = 10) + { + Rect r = EditorGUILayout.GetControlRect(GUILayout.Height(thickness + padding)); + r.height = thickness; + r.y += padding / 2f; + r.x -= 2; + r.width += 6; + ColorUtility.TryParseHtmlString(EditorGUIUtility.isProSkin ? "#595959" : "#858585", out Color lineColor); + EditorGUI.DrawRect(r, lineColor); + } + + private static void Credit() + { + using (new GUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + if (GUILayout.Button("Made By Dreadrith#3238", "boldlabel")) + Application.OpenURL("https://linktr.ee/Dreadrith"); + } + } + + #endregion + } +} diff --git a/Text2Texture/Editor/TextToTexture.cs.meta b/Text2Texture/Editor/TextToTexture.cs.meta new file mode 100644 index 0000000..09b6a9c --- /dev/null +++ b/Text2Texture/Editor/TextToTexture.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: efa3db7a402bc0e44a0ffbff1d95c11a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Text2Texture/Editor/com.dreadscripts.text2texture.Editor.asmdef b/Text2Texture/Editor/com.dreadscripts.text2texture.Editor.asmdef new file mode 100644 index 0000000..1aae7a3 --- /dev/null +++ b/Text2Texture/Editor/com.dreadscripts.text2texture.Editor.asmdef @@ -0,0 +1,18 @@ +{ + "name": "com.dreadscripts.text2texture.Editor", + "references": [ + "GUID:6546d7765b4165b40850b3667f981c26", + "GUID:6055be8ebefd69e48b49212b09b47b2f" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Text2Texture/Editor/com.dreadscripts.text2texture.Editor.asmdef.meta b/Text2Texture/Editor/com.dreadscripts.text2texture.Editor.asmdef.meta new file mode 100644 index 0000000..2d8e868 --- /dev/null +++ b/Text2Texture/Editor/com.dreadscripts.text2texture.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f40d54adece044a47a43729495c62653 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Text2Texture/LICENSE b/Text2Texture/LICENSE new file mode 100644 index 0000000..545aeca --- /dev/null +++ b/Text2Texture/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Dreadrith + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Text2Texture/LICENSE.meta b/Text2Texture/LICENSE.meta new file mode 100644 index 0000000..93b6ef2 --- /dev/null +++ b/Text2Texture/LICENSE.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 346c416569d58b04794129825a43a514 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Text2Texture/README.md b/Text2Texture/README.md new file mode 100644 index 0000000..67bfc62 --- /dev/null +++ b/Text2Texture/README.md @@ -0,0 +1,26 @@ +# Text2Texture +Easily generate a Normal Map, Mask, Custom Text Texture or a Material from given text input + +## Requires TextMeshPro! +Window > Package Manager > TextMeshPro. When prompted, Import TMP Essentials. + +## Features +- Supports custom font to use any font you'd like +- Generate a Normal Map to engrave or emboss text on a surface +- Generate a Mask to apply whatever masked effects you'd like in a text shape +- Generate a Material utilizing both of the maps. Uses Poiyomi and falls back to Standard. +- Easily generate any text image by customizing it in the intermediate stage in "Generate Custom Texture" +- Extra settings to generate the textures the way you want them + +![image](https://cdn.discordapp.com/attachments/1096063656447459490/1096063656632000512/brandeded.gif?ex=66343d13&is=6632eb93&hm=1decea93481aaa9b076fb86306b85d99616bbe21872ba82c8e5e9512074bc2f7&) + +## How to use a custom font +- Import your font asset into Unity +- Right Click Font > Create > TextMeshPro > Font Asset +- (Optional) You may change the settings on this asset if you'd like +- You can now Drag and Drop the new asset to the Custom Font field anytime +Done! + + +### Thank you +If you enjoy Text2Texture, please consider [supporting me ♡](https://ko-fi.com/Dreadrith)! diff --git a/Text2Texture/README.md.meta b/Text2Texture/README.md.meta new file mode 100644 index 0000000..f5b39f4 --- /dev/null +++ b/Text2Texture/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 44ba8f348e8b04c41920d455dc61e987 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Text2Texture/Resources.meta b/Text2Texture/Resources.meta new file mode 100644 index 0000000..3bc76ef --- /dev/null +++ b/Text2Texture/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1abe35cf9f775ad4fb2d5df09669fe92 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Text2Texture/Resources/TTT_CanvasTemplate.prefab b/Text2Texture/Resources/TTT_CanvasTemplate.prefab new file mode 100644 index 0000000..42a5cc5 --- /dev/null +++ b/Text2Texture/Resources/TTT_CanvasTemplate.prefab @@ -0,0 +1,310 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8085274800980037037 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8085274800980037038} + - component: {fileID: 8085274800980037039} + m_Layer: 0 + m_Name: Render Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8085274800980037038 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8085274800980037037} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -200} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 8085274801473204273} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &8085274800980037039 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8085274800980037037} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 90 + 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!1 &8085274801473204286 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8085274801473204273} + - component: {fileID: 8085274801473204275} + - component: {fileID: 8085274801473204272} + m_Layer: 5 + m_Name: Input Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8085274801473204273 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8085274801473204286} + 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: 8085274800980037038} + m_Father: {fileID: 8085274802494049708} + 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: 160, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8085274801473204275 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8085274801473204286} + m_CullTransparentMesh: 0 +--- !u!114 &8085274801473204272 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8085274801473204286} + 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_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: e7d6a5821a387564caacc9929e10eb22, type: 2} + m_sharedMaterial: {fileID: -567968814723445512, guid: e7d6a5821a387564caacc9929e10eb22, + 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: 36 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 0 + m_fontSizeMax: 999 + 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: 0 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &8085274802494049704 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8085274802494049708} + - component: {fileID: 8085274802494049709} + - component: {fileID: 8085274802494049706} + - component: {fileID: 8085274802494049707} + m_Layer: 5 + m_Name: TTT_CanvasTemplate + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8085274802494049708 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8085274802494049704} + 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: 8085274801473204273} + m_Father: {fileID: 0} + 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: 160, y: 160} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!223 &8085274802494049709 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8085274802494049704} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &8085274802494049706 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8085274802494049704} + 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 +--- !u!114 &8085274802494049707 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8085274802494049704} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 diff --git a/Text2Texture/Resources/TTT_CanvasTemplate.prefab.meta b/Text2Texture/Resources/TTT_CanvasTemplate.prefab.meta new file mode 100644 index 0000000..e6cf026 --- /dev/null +++ b/Text2Texture/Resources/TTT_CanvasTemplate.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2cd48bc473a380748ad104409753555e +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Text2Texture/Resources/TTT_DancingScript Font.ttf b/Text2Texture/Resources/TTT_DancingScript Font.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5ddb3b757f4feb9b27041668f00994fd966ec755 GIT binary patch literal 130480 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 literal 0 HcmV?d00001 diff --git a/Text2Texture/Resources/TTT_DancingScript Font.ttf.meta b/Text2Texture/Resources/TTT_DancingScript Font.ttf.meta new file mode 100644 index 0000000..ccccfa0 --- /dev/null +++ b/Text2Texture/Resources/TTT_DancingScript Font.ttf.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 2dedba84ce1ce5c4c8bfb2b6ae52aabc +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontName: Dancing Script + fontNames: + - Dancing Script + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Text2Texture/Resources/TTT_DancingScript TMP.asset b/Text2Texture/Resources/TTT_DancingScript TMP.asset new file mode 100644 index 0000000..8bb7a9f --- /dev/null +++ b/Text2Texture/Resources/TTT_DancingScript TMP.asset @@ -0,0 +1,1656 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!28 &-3630272914525870158 +Texture2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DancingScript-VariableFont_wght Atlas + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + serializedVersion: 2 + m_Width: 1024 + m_Height: 1024 + m_CompleteImageSize: 1048576 + m_TextureFormat: 1 + m_MipCount: 1 + m_IsReadable: 1 + m_IgnoreMasterTextureLimit: 0 + m_IsPreProcessed: 0 + m_StreamingMipmaps: 0 + m_StreamingMipmapsPriority: 0 + m_AlphaIsTransparency: 0 + m_ImageCount: 1 + m_TextureDimension: 2 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 1 + m_MipBias: 0 + m_WrapU: 0 + m_WrapV: 0 + m_WrapW: 0 + m_LightmapFormat: 0 + m_ColorSpace: 0 + image data: 1048576 + _typelessdata: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030709091012100c070604000000030608090f12100c070604000000030608090f11100c07060400000000000000000000000000000003080b0d0e100f0d0c0a0908070603000002010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080b0d0e0d0707050100000000000000000000000000000000000000000000000000020507080d100e0e0c080300000000000000000000000000000000000000000000000000000000000000000002050708080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0d0f10111110100e0d0a08070502000000000000000000000000000000000000000000000000000000000000000000000000030608090b07060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090d0f0f0c080705020000000000030709090d0e0f0e0c080806020000000000000000000000000000000000000000000000000000000000000000000000010507070a0c0d0e0d0c0a07060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070b0d0f101111100f0d0b0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080c0f11110f0c0808060200000000000000000000000306070a0e1011100e0a070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040707090807060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080a080806020000000000000000000000000000000000010407070c0f10100f0d09090703000000000000000000000000000000000000000000000000000000020608080d0c0a070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080c0e10101111100f0e0d0b0907060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1315161c1e1d191312100c070a0f1315161c1e1d191313100c070a0f1215151c1e1d191413100c07010000000000000000000001080e14171a1b1d1b1a181716141312100b060e0e0d0d0c0c0b0b0b0b0b0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a090909090909090909070605030000000000000000000000000000000000000000000001080e14171a1b1a1413110d080200000000000000000000000000000000000000000002090e121415191c1b1a18140f0901000000000000000000000000000000000000000000000000000000000003090e1214151514120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000307090e121415181a1c1d1d1e1d1c1b19171514120e09060300000000000000000000000000000000000000000000000000000000000000040a0f131516181413110d07010000000000000000000000000003050608080706050300000000000000000000000000000000000000000000000000000000000000040a0f1315161a1c1b191414110e080200040a0f1315161a1b1c1b191514120f0a030000000000000000000000000000000000000000000000000000000000000002080d11131417191a1b1a19171413110d0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080d111314171a1c1d1d1d1d1c1a181514120e090401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e121415191c1d1d1c191514120e090300000000000000060c101213171a1c1d1c1b171413100c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11131415151312100c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e111414171514120e09030000000000000000000000000002080d111314191c1d1d1c191615130f0a040000000000000000000000000000000000000000000000030a0f121415191916130d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090f121415191b1c1d1e1d1d1c1b1a18161413110d0706050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b1f2223292b2a25201f1c1812151b1f2223292b2a26201f1c1812151b1f2122292b2a26201f1d18120b030000000000000000020b131a1f2426272a282725242221201f1c171c1b1a1a19191818181817171717171717171717171717171717171716161616161616161616161616151413120f0b0607060401000000000000000000000000000000020b131a1f2426272721201e19130d0500000000000000000000000000000000000000050d141a1e20212629282724201a130b03000000000000000000000000000000000000000000000000000000060d141a1e212221211e1a140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f13151a1e2122252728292a2a2a2928262421201e1a13120f0b0600000000000000000000000000000000000000000000000000000000070f161b1f22232420201d18130c0400000000000000000000060b0f121314151413120f0b0604010000000000000000000000000000000000000000000000000001070d161b1f22232728282521201e19140c080d161b1f2223272829282522211f1a150f0b06000000000000000000000000000000000000000000000000000000040a0f13191d20212426272727262321201d1813100b0500000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f13191d2021242729292a2a2929272521201e1a14110d07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e151a1e212226292a2a292622211e1a150f0a04000000030a11171c1f202327292a292724201f1d18120d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c1113191d20212222201f1c17110e090300000000000000000000000000000000000000000000000000000000000000000000000000000000040b10141a1e20212322211e1a150e060000000000000000000000040c13191d202125282a2a292623221f1b16100b050000000000000000000000000000000000000000060e151a1f21222625231e19120a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b10151a1f21222527292a2a2a2a292826252321201d181613120f0b060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101921272c2f30363837322d2c28231c20272b2e2f363837322d2c28231d20262b2e2f353837332d2c29241d150d05000000000000010b141d242b30333437353332302f2e2d2b282329282727262625252524242424242424242424242424242423232323232323232323232323232323232221201f1b17171413100d0703000000000000000000000000010b141d242b303334342e2d2a251e170e060000000000000000000000000000000001090f171f252a2d2e33363534302b251d150b0100000000000000000000000000000000000000000000000000060f171f262a2d2e2e2d2a251f170f0700000000000000010406070a0a0a07070501000000000000000000000000000000000000000000000000000000000000000000050b10161b1f22262b2d2e31333536373737363533312e2d2a25201f1c17110d080200000000000000000000000000000000000000000000000109101920272b2e2f312d2c29241d160d0500000000000003090e11171b1f20212221201f1b1713110d080100000000000000000000000000000000000000000000040c121820272b2e2f343535322e2d2a251f18131921272c2f3033353534322f2e2b261f1c17110a02000000000000000000000000000000000000000000000000060b161b1e252a2d2e303334343332302d2c29241d1c160e0902000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f252a2d2e313335363737363533312e2d2a25201d18130c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a1f262b2e2f3335373735332e2d2b261f1b160d0801080c151c23282c2d303436373634302d2c29241d19130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171c1e24292c2d2f2e2d2c28231c1a140e060000000000000000000000000000000000000000000000000000000000000000000000000000070f161b1f252a2d2e302f2e2b261f180f06000000000000000000080e161e24292c2d3235363635332f2e2c27211c160c07010000000000000000000000000000000000070f1820262b2e2f33322f2a241c130a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171c20262b2e2f32343637373737363533312f2d2c292422201f1b1713110d07040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e19222b32383b3c4345433f3a38342e272b32373b3c4245433f3a38342e272a32373b3c4244433f3a38352f271f170e05000000000008131d262f363c3f414342403f3d3c3b3a38342e353534333332323231313131313131313131313130303030303030303030303030303030303030302f2f2e2d2b27222320201d18120f0b060000000000000000000008131d262f363c3f41403a393630292018100600000000000000000000000000000009131b212930363a3b404341403c372f271d1309000000000000000000000000000000000000000000000000030d17212931363a3b3b3a363129211910070000000001070d1013141617161413110d0803000000000000000000000000000000000000000000000000000000000003090e171c21272c2e31373a3b3e4042434444434341403d3b3a36302d2b28221c19130d070100000000000000000000000000000000000000000009131b222b32373b3c3e3a39352f281f170e0500000000060e151a1b22272b2d2e2e2e2d2b2722201d19130c070100000000000000000000000000000000000000040d161d242932383b3c4042423f3b39363028231e252a32383b3c404142413f3b3a37312b28221c140b06000000000000000000000000000000000000000000020a111720272b3036393a3d3f4041403f3d3a39352f2c272119140d0500000000000000000000000000000000000000000000000000000000000000000000070b141b22272b3036393a3e40424344444342403e3b3a36302c29241d17110a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e171f252a31373a3b3f424444423f3b3a37312c272119130c111a1e262e34383a3d41434443413d3a38352f29251e160e08020000000000000000000000000000000000000000000000000000000000000000000000000000020b121a22282d3035393a3c3b3a38342e2a261f180f0600000000000000000000000000000000000000000000000000000000000000000000000007111921272c30363a3b3d3b3a37312a21180c030000000000000008111a20283035393a3f42434342403c3b38322c282118120b03000000000000000000000000000000071019222a31373a3b403e3b352e251c0f060000000000000000000000000000000000000000000000000002020100000000000000000000000000000000000000000000000000000000020a111a21282d31373a3b3f4143434444434241403e3c3a39352f2f2d2b2722201d1813100c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16202b343d4348494f51504c4644403930343d4347494f51504c4645403930343c4347484f51504c47454039312920170b02000000030e1a242f3841474c4e504e4d4b4a494746443f4342414140403f3f3e3e3e3e3e3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3c3c3c3c3c3c3c3c3c3a3937332d302d2c29241f1c17110b0600000000000000030e1a242f3841474c4e4d4746413a322a22180e050000000000000000000000000009121b252d333b4246484c4f4e4d4841392f251a0f03000000000000000000000000000000000000000000000009141f29333b4246484846423b332b22190e050000070c12181d202023242321201d19130f0b060000000000000000000000000000000000000000000000000000050d141a22282d32383b3c4246484b4d4f505051504f4e4c4a4846423d3938332d29241e18130c0400000000000000000000000000000000000000050e1b252d343d4347494b4745403a312920170d020000070f181f262b2d3337393b3b3a3937332d2c29241e18120b030000000000000000000000000000000000020b161f282f353d4347494d4f4e4c4746413b342e2930363d4348494d4e4f4e4c4847433c38332d261d17110a02000000000000000000000000000000000000020b141c222832373a4146474a4c4d4e4d4c4a4745413a38322a251f170e0700000000000000000000000000000000000000000000000000000000000000000810191d262d33373a4146474a4d4f505050504f4d4b4846423b39352f28231c150c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18202930363c4247484c4f50504f4c4847423c383229241e161b232c30383f44464a4d4f504f4e4a474540393530282019130c05000000000000000000000000000000000000000000000000000000000000000000000000000b141d242c33393a414547484846443f3836312a2117110a02000000000000000000000000000000000000000000000000000000000000000000071019232b32383b4246474a4847423c332a1e150b00000000000007101a232c323a4145474c4f50504f4c4948433d383329241d150d0500000000000000000000000000030c19222b343c4347484c4b4640372e21170d0300000000000000000000000000000000000000030608090d0f0f0e0b0706040000000000000000000000000000000000000000000000000a141c232c33393c4347484c4e4f505150504f4e4d4b494745413f3c3937332d2c29241f1c18120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323d464f54565c5e5d5853514a423a3d464e54565c5e5d5953514b433a3c464e53555c5e5d5953514b433b33291d140a00000008141f2b36414a52585a5d5b5a5857555453504a504f4e4d4d4c4c4b4b4b4b4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a49494949494949494949494949484746443f403d3a39352f2b28221c17110a02000000000008141f2b36414a52585a5a54524c443c342a20170c020000000000000000000000040e1b242d373f454d5254595c5b59534b41372b20140800000000000000000000000000000000000000000000020e1a26313b454d535554534d453d342b20170c030b12181d24292c2d3031302e2d29251f1c17110a020000000000000000000000000000000000000000000000080f171f252a33393d4348494d5355585a5b5c5d5d5d5c5b595754524d4946443f38353029241d160d070100000000000000000000000000000000020d17202d373f464e54565753514b433b32291e140800071119212a3137383f444647484746443f3a39352f29231d150d06000000000000000000000000000000000a141d28313940454e54565a5b5b5854524d454039323a41464f54565a5b5c5b5855534e46443f382f28231c140c0400000000000000000000000000000000020b141d262d333d43474c525457595a5a5a595654514b48443d3630292018100700000000000000000000000000000000000000000000000000000000000008121a222a2f383f44464c5254575a5c5c5d5d5c5c5a5854524d4745403a342e261e18100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18212a333b42464d5355595c5d5d5c5955534d48433d352f281f252d353e424a5053565a5c5d5c5a5753514b46413a322a251e170e07000000000000000000000000000000000000000000000000000000000000000000000008121d262f363e45494c5254555553504a46423b3327221b140b0200000000000000000000000000000000000000000000000000000000000000040f19232b353d44484d52545655534d453c30271c120700000000040f19222c353e444c5254585b5d5d5c5956544e48443e352f271f160e050000000000000000000000000b151e2b343d464e5355595752494033291f14090000000000000000000000000000000000030a0f1215151a1b1c1a171413100c0701000000000000000000000000000000000000000008121c262e353e44494e5355585a5c5d5d5d5d5c5b59585654514b4c4946443f3a39352f2c28231c1a140f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a444f596063696b6a65605c544c44434e586062696b6a65605c554c44424e585f62686b6a66605d554d453b2f261c110600000b1724303c47525c64676a686665636261605c545d5c5b5a5a5959585858575757575757575757575757575757565656565656565656565656565656565655545350494d4a4745403938332d27221b140b04000000000b1724303c47525c646767615e564e463c32291e130800000000000000000000020c16202d363f4951575e61666968645d53483c3024180c0000000000000000000000000000000000000000000005121e2a36424d575f61615e574e463d32291e140c151c23282f35393a3d3d3d3a3935302b28221c140b0600000000000000000000000000000000000000000008111a212931363e44494e5456575f61646668696a6a6a69686664615e575653504a46413a352f281f18120b0300000000000000000000000000000008141e29323f495158606264605d554c443b3025190b040d19232b333c42474950535455545350494745413a342f271f181008000000000000000000000000000006111c262f39434b5158606267686865615e56514b433b444c525960636668686765625f5853504a423d342e261e160d040000000000000000000000000000000a141d262f383f444e54565e6163666767666563605d55544f46423b322a22180f060000000000000000000000000000000000000000000000000000000007101a242c343c41495053565e61646668696a6a69686664615e5753514b443f38302a221a12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2a333c454d52575f6266686a6a6866615f57544e45413a312a2d373f474f545c606367696a696763605d55524c443f3630292019100800000000000000000000000000000000000000000000000000000000000000000005101a242f3841485055565d606261605c54534d453f332d261d140a000000000000000000000000000000000000000000000000000000000000000a16212b353d474f54575e6163625f574d42392e23180c030000000a15202b343e4750565d60656869696866626058554f454039312820160e050000000000000000000007121c27303d474f585f6266635b52453b31261a0e01000000000000000000000000000000070c151b1f21222628282724201f1d18120c0701000000000000000000000000000000000005101a242e3840474f55585f626567696a6a6a6a6968666462605d5558555350494745403a38342e2a251f1b150e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c56606b6f767876726d665e564c4b55606a6f757876726d675e564c4b545f6a6f757776726d675e574d42382d22170b00000d1a26333f4c58646e7476757372706f6e6d666a6968686766666565656464646464646464646464646363636363636363636363636363636363636363626261605b53595653514b46443f38332d261d160d040000000d1a26333f4c58646e74736d685f584e443a3025190d0400000000000000000008131e28323f48515b62696e7376746f64594d4034271a0e010000000000000000000000000000000000000000000714212d3a46535f696e6e6960584e443a30261c151e272e3439404547494a494746413a38332d261d180f090000000000000000000000000000000000000008121a232b333b4246505558606267696e71737576777776767473706e696763605b54524c45413a3129231d150d0500000000000000000000000000010d1925303b44515b626a6f716d675e564c41362a1d140c161f2b353d454d53535b60616161605b5354514c454039312a221a1209010000000000000000000000000b17222d38424b555d606a6f737575726e68605c554c444c565e616b6f73747574726e6a64605b544f443f3830281f160e040000000000000000000000000006111b262f38424a50586062686d707273747372706d67636059524d443c342a21180b020000000000000000000000000000000000000000000000000000040f19222c363e464e535b6064686d717375767777767573716e6965605d55504a423c342c241b13090000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303c464e575e61696e7275777775726e69626058514c433c34363f49515961666d707476777674706d67615e565046413a322b221a120a01000000000000000000000000000000000000000000000000000000000000000c17222c36414a535a6164686d6f6e6d66615f5751443f382f261b11060000000000000000000000000000000000000000000000000000000000030f1b27323d474f596063696e706e695f544a4034281f14090000030f1b27323d46505a61686d7275767675736f6a636159514b433a322820160d030000000000000000000c18232e39424f59606a6e736d63574d42362a1e130800000000000000000000000000030b121820262b2e2f33353534312d2c29241d18120b03000000000000000000000000000000000b17222c36404a525961646a6e72747676777776757473716f6d67686562605b5353514b4644403936302b26201a150d0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525d686f7d8284837f786d685e52515d676f7c8284837f796d685e52515c666f7c8284837f796e695e544a3f33281c0f03000e1b2734414e5a6774808381807e7d7c7a797877767574747373727271717171717070707070707070707070707070707070707070706f6f6f6f6f6f6f6f6f6d6c65686663605d5553504a443f382f281f160c0100000e1b2734414e5a677480807a6f6a5f564c41362a20160a0000000000000000010d1925303a44505a626d727b7f828174685b4e4135281b08000000000000000000000000000000000000000000000815222e3b4855616e7b7b6f6a60564c42382e231d27303940444b515356575654524c46443f382f2a221b120a010000000000000000000000000000000007111a242c353d454d535a61646a6f74787b7e80828383848382817f7d7b7774706c66615d56514b433e342f271f170e0500000000000000000000000005111e2a36414c56626d727c7e796e685e52463e2f261c131d28313d474f575f61656c6e6e6d6c6565605d55514b433c342c241b13090000000000000000000000030f1c28333f4a545d676d757c8082817f7b736d675e564d545e686d767c808182817f7b77716c666059504a423a312820160d040000000000000000000000000b17222d38414a545b606a6f757a7d7f8081807f7d7a75706b615e564e463c33291d140e09030000000000000000000000000000000000000000000000000a15202b343e4850585f656c71767a7e80828383838382807e7b77726d67605c544e463e362d251b12090000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424e585f696e757b7f828383827f7b766f6a605d554e463e3e48515b626b70787d80828382817d79736d68625a524c443d342c241c130a01000000000000000000000000000000000000000000000000000000000004111c28333e48535c646c71767a7b7b79746e69625b504941382d221711070000000000000000000000000000000000000000000000000000000007131f2c38434f59606b70767b7d7b6e665c51443b31251a0d040006131f2b37434e58616c707a7f828383827f7c77706b605d554c443a32281f150b010000000000000004101c2834404a54606b6f7c7f73695f53463a2f24190d000000000000000000000000030c151c232831373a3c404242413e3a39352f29241d150d07000000000000000000000000000004101c28333e48525c636c70777b7f8182838483838281807e7c7a7775726f6c6564605d5553514a46423b37312b261f18130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a868f91908b837a6d615853606d79858f91908c837a6d615853606d79858f91908c837b6e665b5044382b1f1206000b1724313e4a5764717d8a8e8d8b8a888786858483828180807f7f7e7e7e7e7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7c7c7c7c7c7c7c7c7c7c7c7c7c7b7a79777573706d6764605b545049413a31281e130800000d1a2633404d596673808c857c6f685e52463d32271b0f040000000000000005111d2935414c56626c727f868c8f84776a5d51443025190d01000000000000000000000000000000000000000004111e2b3744515e6a7783867c6f685e544a3f3428262f39424a51555d60636463615e5653504a423c342c241c130a020000000000000000000000000000050e19232c363e474f575e616c70777c8084888b8d8e8f9090908f8e8c8a8784817c78726d68605d5550454039312920170e0500000000000000000000000714202d3946525e68727f898a847a6e615a5042382d2218242f3a434f5960696e74797a7b7a7976726d67605c554e463e362d251b12090000000000000000000006121f2b3844505b666d7981898d8e8e8b8680796e685e575c666d7a83898d8e8f8e8b88837e786f6b605c544c433a32281f160c0300000000000000000000030f1b27333f49535b666c737c82868a8c8d8d8d8c8986827d766e695f584e453b2f261b1a140f0a04000000000000000000000000000000000000000000030f1b27323d46505a616a6f787d83868a8d8f8d8c8c8c8e8d8b87837f79726d665f5850483f372d241b11070000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b545f6a6e7b82878c8f90908f8c88827c746d675f584f4745505a626d727d84898d8f908f8d8a85807a716c615e564f463e362d251c130a01000000000000000000000000000000000000000000000000000000000814212d3945505a646f747e8386888885817b726d605b53493f332723190e040000000000000000000000000000000000000000000000000000000915222f3b4854606b707d83878983786d60574d42362a1f160c010815222e3b4754606a707e858b8e90908e8c89837d756d675e564c443a31271d12070000000000000006121f2c3844515c666f7d86877b6e61554c4135291c110600000000000000000000000b151e272e343c4347484d4e4f4d4a47454039352f271f191008000000000000000000000000000814212d3944505a636e737d83888b8d8f909090908f8e8c8b898684817f7c7875716d6764605c54524d47433c373129241d160d070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89989e9d958f82766a5f55626f7b88979e9d959082766a6055626e7b88979e9d959083786c605346392d201306000a1723303c4955616c75818d9299969599929190908f8e8d8d8c8c8b8b8b8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a89898989898989898989898989898989898887858482807d7a75706c66605b534c433a2f24190d0100091623303c4956636f7c8991857a6d61584e43372b20150a000000000000000713202d3946525e68717e8b92999184786b564c4135291d1105000000000000000000000000000000000000000004111e2b3744515e6a778491847a6d665c50443e332d38414a545c60676d7070706d6864605b544e463e362e251c140a01000000000000000000000000020d17202b353e48505960696e767d83898d919697989892908f8f8f90919396918d89847f7a736d67615a514b433a322920170d03000000000000000000000814212e3b4754616e7a8692968f82766c61544a3f33281d2935414b55606b707b818587888785827e7a726d675f5850483f372d251b1108000000000000000004101d2935404b55606c78828e939a999392928d837a6e695e606d7883909499928c8786898d8b837c736d665d554c443a31281e150b000000000000000000010c161f2b3744505b656c7880878f9296918f8d8f9297928f89827b6f6a5f574d41382d2a261f1b150c07010000000000000000000000000000000000000006131f2b37434e58616c717c838a8f928d8683807f7f808284898f908b857f786f6a615a51493f362d23190e0400000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c666e7c858f939a9792898686898e89817a6f6a6159504955616c727f8a91969a938e8786878b8c857e766d68605950483f372e251c130a010000000000000000000000000000000000000000000000000000000a1723303c4955616c74818a90918f92928e867f746c655b50443f352b20160c020000000000000000000000000000000000000000000000000000091623303c4956636f7c879095958c7f72695e53463e31281d1207111d2935414c56626f7c879298969185818183888a81796d685e564c43392f23180d040000000000000713202d3a4653606d7984918d8073675d5145382e23170b0000000000000000000007121c27303940444e5355595b5b5a5753514b454039312a221a11080000000000000000000000000a1623303c4955616c73808a9095989a9c9d9d9d9d9c9b99979a93918e8b8885817e7a75706d66615e57534e47423c352f281f18130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8592989f9f94887b6f6255606d798592989f9f94887c6f6255606d798591989fa095897c706356493d3023160a000814212d3945505a606c7880878d9297999c9e9d9c9b9b9a9999989898979797979797979797979797969696969696969696969696969696969696969695959892918f8c8986827d78716c655d564c4135291d1104000713202d3a4653606d7985928e81756a6054473c31261b0f010000000000000714212e3a4754616d7a85929f9f928679685e5246392d2013070000000000000000000000000000000000000000000c1926333f4c5966727f8c8f82786d605a50453c333f49535c666d737a7c7d7c7a76716c665f58504840372e261c130900000000000000000000000008141e29323d47505a616b707b828a90959a9d94908b888584838282838486898c9093918c868079706c605c554c443b32291f150b01000000000000000003101c28343f4a5466727f8c989f948a7d70665b5044382b202c3945515d67707d868e9297928b898a8b857f796f6a615a51493f372d231a0f060000000000000006131f2c3845515d67727f8b949e94908785878d90847b6e6865727f8b959f92877f7a7a7c80858e8780786d675d564c433a30271c1207000000000000000007121d2b37434e58606c77818d9396918a84828182858a9196948f857c6f695f53493f3a36312b262018120b030000000000000000000000000000000000000815222e3b4754606a717e8690959388807a767372727375787c828991928c837c716c625b51483f352b20160c0200000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798390979f9e92857d79797c81878e847c706c615a515764717e8a919da0998e807a797b7f848b8b827a6f6b615a514940372e251c130a0000000000000000000000000000000000000000000000000000000b1724313e4a5764717e8a938f8483869095928b80776c605b51473d32281e130800000000000000000000000000000000000000000000000000000916222f3c4955626f7c88959f9f92867b6e615a5043392f24180c13202d3946525d6876828f999e91847b7574777c838e837a6d685e554b4034291f160c0100000000000a1723303d4a5663707d899692857a6d60544a3f34281c10030000000000000000000c18232e39424a51585f626668686764605d55514b433c342c231a12080000000000000000000005111e2a36414d5664717e8a929da0a7a7a9a9a9a9a9a8a7a6aca49f9e9b9897928e8a86827d79736e69625f58534d45413a3129241d160d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d68707e868e929894897c6f62565d67707d868e929895897c7063565c66707d868e9298958a7d7063574a3d3024170a0004111c28333e44505b666c737b8185898d90929897999a9b9d9e9fa2aaa1a2a2a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a2a2a1aaa29f9e9d9c9b9a99989695949993928f8a847e776d685d5245392c2013060006121f2c3844515c6675828f93897c6f62584e43372b1e1308000000000004111d2935414c5666727f8c98a2a399877a6d6154473a2e2114070000000000000000000000000000000000000000000714202d3a4753606d7984918d80736c61574e433a44505b656d788086898a8986837e786e6a615a524940382e251b110800000000000000000000010d1925303b444f59616c717d858f949d9c959089837f7b79777675767678797c7f83878d92928c847d746d675e564c443b31271d1207000000000000000006121f2b3844505c6676828f9ca69d9184786c6053463c32272d3a4754606d798592989f92857f7c7d81868c837c716c625b51493f352c21180b020000000000000714202d3a4753606d7985929e9990827b787b808790837a6d657683909c9a8d80746e6d6f747a81888d82796d685d554c42392e23180e05000000000000010d18242f3a47535f6a737f8c939590847d79757475797d8491969792857b6e655b504846423b373229231d150d050000000000000000000000000000000006121e2b37424e57626f7c86929893887e746d6867666566656c70757d848f9490867e726d625a50473d32281e130800000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a95a0a9998c7f736b6d6f747b838d867e716c625b5e697784919da39f92867a6d6c6e72787e868f847d716c635b524940372e251c120900000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e8f8278767b838f94928d80746d62594f443a3025190c03000000000000000000000000000000000000000000000000000815222e3b47545f6a7784919da2988f82756c61554b4035291e1514212e3a4754616d7a86939f998c807369676a6f78818e837a6d675c51453e31281e130800000000000d192633404c5966737f8c99988b7f72665c5044382b1f160a000000000000000004101c2834404a545c606a6f73757574716d67605d554e463e352c241a10070000000000000000000714202d3946525e687783909d9f9e9d9c9c9c9c9d9d9e9fa2a9a2a4a6a8a9a19e9b98928f8a85807b756f6a625f57514b433e352f281f180f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56616c707c8286888882796d605355616b707b8186888883796d605354606b707b8185888883796d6053473a2d20140700000c172228333f4a545b60696e74797d808386888a8c8d8f90919298949495969697979798989898989898989898989797979695959494989291908f8e8d8c8b8a898887868585848483807a6d6054473a2d2114070004101c2834404a5465727f8b988f82766a5f53473a2f24190d01000000000613202c3945525d687783909daaab95887c6f6255493c2f22160900000000000000000000000000000000000000000006131f2c3845515d67707d89928a7e706a5f554b414c56606c77818d9298979792908a837c716c635b524a40372d231a0f0500000000000000000005111e2a36414c56606b717e8792989f9b928c837c76726e6c6569696969676d6f72767b80858d92918a81796d685e564c43392f24180c03000000000000000713202d3a4653606d7985929faaa0958a7d7164584e43372b323f4c5865727f8b97a1988a7d726f70747b828c867e726d625b51473e332a1d140a0000000000000b1824313e4b5764717e8a979f92867b6e696e737d868f82776c7985929f96897c70636062686d747d858f837a6d675d544a40342820170d02000000000004101d2935404b55626e7c86929890837a706c6667666d707a84919e979082776c605555534d47433c342f271f170e050000000000000000000000000000000814212e3a47535f6a76839098988d80736c615e565959535b60636b707a828f9392887f726c62594f443a3024190d04000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b6875818e9ba7a396897d706360636a6e78808c877e726d62616e7b8795a0aa9d918477686061666d727b838e877e726d635b524940372e241b110800000000000000000000000000000000000000000000000000101d2a3743505d6a768390887c6f696e79828f94928b7f726b60564c4135291e150b0000000000000000000000000000000000000000000000000006131f2b37434e5865727f8c99a39e948a7d70675d51453d30271d16222f3c4955626f7c8899a4978b7e71645860666d77818e82796d605a50433a2f24190d04000000000c1926333f4c5966727f8c999e9184786d6053463d32271b0f03000000000000030d17212c3844515c666d747c808182807d79736d675f5850473e362c22190e0500000000000000000814212e3b4754616e7a879599929190908f8f9090909192979496989a9c9ea2a9aaa39f9b97928d86817c756e69605d554f45403a312a21191108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a44505a616a6f757a7b7b766d665c514f5961696e75797b7b786d675d514f5960696e75797b7b786d675d5145392c2013060000050b17222d38424a50575f61666d707376797b7d7f818283848586878888898a8a8a8b8b8b8b8b8b8b8b8b8b8b8b8b8a8a8989888787868584838281807f7e7d7c7b7a797878777777746d685d5245392c20130600000c18232e3b4855616e7b889694887c6f62554c4135291d1104000000000714212d3a4754606d7a86939faca3978a7d7064574a3d3124170a00000000000000000000000000000000000000000004101d2935404b55616b74818d92867c6e675d5349525d68727f8c939f95908885868a90867e736d635c52493f352c21170b0200000000000000000714202d3946525e68707d879299a29b918b80786f6b6561605b535c5c555c606265696e737a808791938e837a6e685e554b4035291e150a000000000000000915222f3c4855626f7b8898a2a298929083766a6054473a2f35424f5b6875828e9b9f9285786b6264696e757f87887f726d62594f453c2f261b110600000000000f1b2835424e5b6875818e9b9b8f8275695e616b707d878b7f727a8798a395887b6e6255565e616b707b839083796d665c51443e32291f140900000000000613202c3945515d6774818e9992867b6e68605b545c6068717e8a969f948a7e716766615f57534e454039312920170f0500000000000000000000000000000815222f3b4855626e7b88949f92857a6d605a524c4c4c4950535960686d78818f94938b7e716b60564c41352920160c01000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683909ca9a295887c6f6255575f666d747f8b887f726c636f7c8996a8a99c9083766956545c60696e79818d887f736e635c52493f362d231a0f06000000000000000000000000000000000000000000000000101d293643505c6976838f86796d60676d78828f9592877d6f685e52463e30271d1207000000000000000000000000000000000000000000000000030f1b26323c4754616d7a86929fa69e9184796d60584e42392e2318222f3c4955626f7c8895a9988b7e716558545c656d78828e81746c61564c41352920150a000000000b1824313e4b5764717e8a97a0968a7d7064584e43372b20150900000000000009141f2c38444f59606d7881888c8e8e8d8a857f796f6a615a50483e342b20170b02000000000000000916232f3c4956626f7c898b8886848383838383838484858687898b8d8f9297989b9fa2a9a19e99928e87817b736d676159514b433c332b231a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323e4850585f62676d6f6e69605c544b474f575f62676d6e6e6c655d554b474f575f61676d6e6e6c665d554b4035291d110400000006111c262f383f444d53545c606366666d6e70727475777879797a7b7c7c7d7d7d7e7e7e7e7f7f7f7f7f7e7e7e7e7d7d7d7c7b7b7a797978777675737271706f6e6d6c656b6b6a6a67605d564c4135291d110400000714212d3a46535f697784919a8e8174675d5145392c201409000000000a1723303d4a5663707d8999a4afa5988c7f7265594c3f32261908000000000000000000000000000000000000000000000c18242f39434f59606d7983919183796d655b5054606d7a85929f9890837c78797d838c8a7f736e635b51473e33291d140a0000000000000006121f2b37434e58616e7a859299a39c928b7f736d666059555350494f4f4b515356575e61676d747d85919590837a6e675d51453e30261c11060000000000000a1723303d4a5663707d8996aa9f928592887c6f62564c41353643505c6976838f9c9d9184776a59575e616d727e878b7f726b61574d41382d22170b0300000000111e2b3744515e6a7784919d988c7f72655759606b717e8b867b7a8799a395897c6f62564c525961696e7a838f82786d605a50443b3025190b02000000000714202d3a4753606d7a8692988c7f72695e565961636a6f747884919e9d90837976736e69625f58514b433b322921170d03000000000000000000000000000b1724313e4a5764717d8a979b8e8174685d5246413f3f3f44464f565d666d78828f9692877d70685d52463e32281e1308000000000000000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909daaa396897c7063564e545c606d727f8b887e716c6f7c8995aaaa9d9083776a5d4a50575f676d77808d8c80736e635b51483e352c21180e0400000000000000000000000000000000000000000000000e1b2834414e5b6774818e877a6d615d666d7983909791847a6d61594f43392e23180c020000000000000000000000000000000000000000000000000a15202d3946525e6875828e9ba8a1968d80736a60544b4034281f212e3b4754616e7a8797a1998c807366554b535c666d79838a7e71685d52453c32261b0f040000000815222e3b4855616e7b8896a09c9083766a6054473c31261a0f0300000000020e1a25303c4855616b74818e93999b9b9a97928c847c706c615a50463d32291d140a000000000000000815222f3b4855626e7c817e7b79787776767676767777787a7b7c7e808285888b8e92979a9fa2a39f9a938e868079706b605d554d453d352c231a11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16202c363e464e53555d6062625f57514b423e454d53555c606262605b534b433d454d53555c606262605b544b433a2f24180d01000000000a141d262d333b42464a505356545c6062646667686a6b676d6e6e6f6f707071717172727272727272727171717170706f6f6e6d6d666b6a696867666563626160605b5e5e5e5d5a54524c433a2f24190d01000005121e2a36424d576773808d9a92867a6d6054473b31261a0e020000000c1926323f4c5965727f8c98abb5a79a8d8174675a4e413025190d0100000000000000000000000000000000000000000007121d27313d45515d676f7c86928f82776c605a5665727f8c989f92867a6e6a6d7078808a8c80736d62594f453b2f261c11060000000000000815212e3a47535f6a75818e97a2a0958d80736d605c544f4846443f4243404546494d52555d606b6f7b8491959083796d60594f42382e23170c0000000000000b1824313e4b5764717e8a97a49a8d80878e8174685d52453935424f5c6875828f9b9e918578665c51535b636c717e87877d70695f53493f33271f140900000000121f2c3945525f6c7885929f978a7d7064574f59616c74808d837886929f968a7d7063574a464f575f686d7a838d80746c61564d42362a1d140a000000000a1724303d4a5763707d8a9892867a6d60575e616b70777c80838e939d9f959087837f7b756f6a605c554d443b33291f150b010000000000000000000000000c1926323f4c5965727f8c98988b7e7165564c4136302d33373d444c545c666d7a84919991857a6d615a50443a2f24190d020000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9a4978a7d7164574a4a505b626d737f8c877e706e7b8798a2aa9e9184776b554c444d555d656c74808d8c80736d635a50473d332a20160b02000000000000000000000000000000000000000000000b1824313e4b5764717e8a897d7063575d676e7b8592968e81756b61554b4034281e130800000000000000000000000000000000000000000000000005111d2a36414c5663707d8996a1a89f92877c6f665c51453d3128202d3946525e687885929e9b8f8275675d514a545d676f7c86857a6d60584e43372b21160a0000000714212d3a46535f697784919e9f94897c6f62584e43372b1f14090000000005121e2a36424d5763707d89939da59e938f8a8b8e91867e706c61584e443b2f261c11060000000000000814212e3a47535f6a6e74726f6c666a696969696a6a6b676d6e6f717375797b7e8185898e92989d9fa49f99928d847d746d675f574f473e352c231910060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e1a232c343c43474b51535555534d454039333c42474b515355555350494139333b42464b5153555553504a423a31281d13070000000000020b141c22283136383f44464a4a51535557595a5c5d555c60616162636364646465656565656565656565656464646362626161605c545d5c5b5a5958575655545350495151514d4745413a31281e1308000000020e1a26313d495663707d8997988b7e7165574d42362a1e1205000003101c28343f4a546875818e9ba8b4a99c8f837669564c41362a1d1105000000000000000000000000000000000000000000010b151f2935404b555f6a717e8b938c80736c615e687783909d9a8d8073685f60666d737e878c7f726b61574d42382d22170b0200000000000915222f3c4855626f7c88939ea89d9183786d605a504a423d3937332d2e34383a3c42464c515960696e7b8591958e81746b61544a3f34281c100300000000000c1925323f4c5865727f8b98a5988b7f818f867a6d6054473d33414d5a6774808d9a9f9386796d605346515a616c717e8b857b6e655b50443b31261a0e0400000013202c3946535f6c7986929f96897c6f635649505a606d79838b7e84919e998c7f7266544a3f454d565e686e7b848a7e71695e52463d2f261b11060000000d1a2733404d5a6673808d998e8175675d60686d757d83898683818e9aa79b8f81808486827c736d675e564d453b31271d12070000000000000000000000000c1825323f4b5865727e8b9896897d7063564a3d2f2522272b323a424b545e68707d8993978e81756c61564c4135291e130800000000000000000000000000000000000000000000000000000000000000020f1c2935424f5c6875828f9ba8a5988b7f7265584c3f44515b636d74818e867d6f7985929fab9f928578675d5145434b535b606c77818e8c7f726c62594f453c32281d140a000000000000000000000000000000000000000000000714202d3a4753606d79858e8174695f555e69717e8a93938a7d70675c51453a3025190d020000000000000000000000000000000000000000000000010d1925303a4653606c7884919eaba3999083796d60584e433a2f242a36414d566875828e9b9f9285796d6053474b555f6a727f8c80746a5f53473d32271b0f04000005121e2a36424d576673808d99a69b8f82756a5f53473b30251a0e020000000714202d3a46525e6976828f9ca59e938f817d7e818791877e706a60564d42382d22170b03000000000006121e2b37424e575f626765626a6f73746d665c5d5d555c6061636567656c6e7175797d81858a90959c9fa39f97918a81796e6960594f473e352b22180d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a222a313739404547484847423c342e2a313739404547484846443f382f2a313639404547484846443f382f281f160c01000000000000020a11171f262a2e34383a3d404446484a4c4e4f504b515354555556575757585858585858585858585858585757565655545453504a504f4e4d4c4b4a49484746443f444444413a39352f281f160c01000000000913202d3a4653606d7985929c908376695f53463a2d211409000006121f2b3844505c667783909daab6ab9e928578685e5246392d201307000000000000000000000000000000000000000000050c1319242f39434e58626c74818e93887e706a616d7a86939f98897c6f6256545c606c717e87887d70695e544a3f33281e13080000000005121e2a36424d576774808d9aa5a1968a7d70665c51443f38302d2b272223282c2d30363a41454f575e69707d8a93938a7d70665c5044382c1f140900000000000c1925323f4c5865727f8b98a4988b7e7d8a8b7f7265594f44383e4b5764717e8a97a49a897c7063544a485059626c73808d82776c60574d42362a20160a000000121f2c3845525f6b7885929e96897c6f63564945515c676f7c8785828f9c9c8f8275665c50443b444c565e696f7c86857b6e61594f41382d22170b0000000f1c2935424f5c6875828f988b7f7265606a6f7a828a857f7a767b8799a39b8e8175797d848680796e685e574d43392f23180c0300000000000000000000000916232f3c4956626f7c899695897c6f6256493c2f23171b20283039424c56606b75818e97938a7e70685d52453a3024190d02000000000000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6a79a8e817467544b403f49515b606d788290857b76838f9ca9a297877a6d6054473a4149505b656d78828f8b7e716b60574e443a2f261b11060000000000000000000000000000000000000000000613202c3945515d67727f8c867b6e675c57616c75828f989184796d60564c4135291e130800000000000000000000000000000000000000000000000008131f2b3844505b6673808d99a7aba0958c80736a60554b41352925303e4b5865717e8b99a2988a7d7164574d434e58606c7783877c6f62594f44382c20150a0000020e1a26313b4855626e7b88949f9f93877b6e62574d42362a1e13080000000815212e3b4854616e7b87939fa99b8f81757071757c8490867c6f685e544a3f33281f14090000000000020e1a26313c454e53555d676d757c7f81786d6053514b5153545658535b606265666d7074797e83898f949da0a19e938e837b706b61594f473d342a1f160c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008101820262b2f35393a3c3b3a3731282320262b2f34383a3b3b3937332d261d262a2f34383a3b3b3938332d261d160d04000000000000000000060b141a1c23282c2d2e34383a3b3d3f414244404546474849494a4a4a4b4b4b4b4c4c4c4c4c4b4b4b4b4a4a4a4948484746443f444342403f3e3d3c3b3a3937332d3737342d2c29241e160d04000000000006121f2c3844515c6675818e9b94887b6e6155483b31261a0e02000713202d3a4653606d7986929facaeaca197877a6d6154473a2e2114070000000000000000000000000000000000000000050e171e252a2d313c46505a606d79839092867c6e68707d8a9a9f9285796d60534a505a616c717f8b857b6e665b50443a3025190d020000000714212d3a46535f697885919eab9e9184786c60544a40342e26201f1b17181c1f20252a2f353d454d57616b75828f9b9184786d6053463b30251a0e02000000000b1825323e4b5865717e8b98a4988b7e78849184776b6054483b3b4754616e7b8795a09a8d8073665b504447505a606c78828b7f72695f53463d32271b0f040000111e2b3744515e6a7784919d968a7d7063574a404b55606a74808d86929f9f9285796d6053463a3a444d57606a727f8b82756b6053493f33271b0f030000101d2a3643505d69768390978a7d70646b707c8487807a726d687986929f9d9083776d71788087837a6e695e554b40342920150a00000000000000000000000613202d394653606c78849196897d7063564a3d3023170f161e27303a444f59616d7a85929e92857a6d60564c4135291e1308000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a9aa9d908377665c5145384044515c666e7a859083797f8c99a9a996897c706356493d383f49535c666d798390877d706a5f564c41382d22170e05000000000000000000000000000000000000000004101d2935404b55606c78828f83796d665d5a616e7b8692968c7f72685e52463a3025190d020000000000000000000000000000000000000000000000030f1c28333f4a54626f7b8895a0aca29792877c6f675d51453e342a2e3a4754616d7a86939f9c8f8276695f534644505b656f7c8783766b6054483c32271b0f0300000914212e3a47535f6a7683909ca49a8e8174695e52463a3025190d0100000b1825313e4b5864717e8b9aa4a197887c6f64646a6f798290847a6e665b50443b31261a0e0400000000000915202a333c434e58606d7981888c897c6f63564940454748494b49505355545c6063676d71767d828990959fa39e9591867d706b61594f463c31281d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1d24292c2d2f2f2e2b261f18151a1d23292c2d2f2f2d2b27221b141a1d23292c2d2f2f2d2b28221c140b04000000000000000000000003090e11171c1f2023282c2d2f313334352e34383a3b3b3c3c3d3d3e3e3e3f3f3f3f3f3f3f3f3e3e3e3e3d3d3c3c3b3a3a38342e3635343332302f2e2d2d2b27222b2a2721201d19130c0400000000000004101c2834404a5464717e8a99998c7f7266574d42362a1e1205000815222f3b4855626e7b8898a3aaa29fa296897c706356493d3023160700000000000000000000000000000000000000020b1720293036393a393f45515c676e7b859291847a6d73808d9a9d908376665c504444505a626d74808d83786c60564c41362a1e14080000000815222e3b4855616e7b8897a1a79a8d8074665b5042392e231c14120f0b0c1013131a1e2429333b454f59636f7c8997968b7e7164574d42362a1e1105000000000b1724313e4a5764717d8a97a4988c7f73808d897d7063574d423a46525e697784909d9e9184786c6053463e44505b666e7b85867b6e61584e43382b20160a0000101c2936434f5c6976828f9c988b7e7265584b3f434e58606d7a849198a2a298897c7063544a3f343b454e58606c7782897d70655b5044372b1f14090000101d2a3743505d6a76839096897d706b707d86857d736d67616b7885929e9e9184786b666d737e86847b6e675c51453c31261b0f030000000000000000000005121f2b3744505b65707d8a938a7e7164574b3e3124180b0c151e28323d46525e68727f8c97978c8073685d52463a3025190d010000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8897a1ac9f9286796d6053463a34404a545e68707d888e817c8997a1a5988c7f7265594c3f3238414a545d676e7b8592857c6e685d53493f332720160c0200000000000000000000000000000000000000010d18242f3944505b666d7a848f82786d675f5f6973808d9892867a6d61564c41362a1e14080000000000000000000000000000000000000000000000000b17222d3847535f6a7784909daa9f92858e84796d605a50463c322d3946525e687683909c9f93877b6e61544b4049535f6a7480897c6f63584e43372b1f1306000006121e2b37424e5764717d8a96a09f92867b6e61564c4135291d130700010e1b2834414e5b6774818e9aac9e9285786a60585f676d79839082786c60574d42362a20160a0000000000030e18222e3b4754606a75828e93998d807366574d42383a3b3c3e3f4446484a5153555d60646b70767d838c9298a0a09892867d706b60584e43392f24180d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0f12181d1f202222211e1a150c090e12181c1f202222201f1b17110a0e12181c1f202222201f1c17110a02000000000000000000000000000000060c101213181c1f20222426272923282c2d2e2e2f30303131313232323232323232323232313131302f2f2e2e2d2b2823292827262524232221201f1b171e1e1a1413110d080100000000000000000c18232e3a4754606d7a86929d908377695f53463a2d211408000b1724313e4a5764717d8a97aaa2989298988b7f7265584c3f2e23180c000000000000000000000000000000000000000a141d29323a4146474641404b555e69707d87928f827876838f9c9b8e817468544a3f3e48505a606d78838b7f72685e52463b3025190e0000000b1724313e4a5764717d8a97a9a3978a7d7064544a3f30271c110a050300000406090e13192129333e4854606b7885929d908376695e52463a2d201407000000000916232f3c4956626f7c8995aa998c80737b878f8275695f53463a424d566673808d99a196897d7063564c413f4a545e69717e8a82756a6054473d32271b0f03000d1a2733404d5a6673808d999a8d807467554b403d45515d67717e8a959faa9a8d8174665c504438333d44505b656e7b8683786c6053463b31261a0e0200101d293643505c6976838f978b7e71707d86857c706b605d556b7885919e9f9285786c5c606c707d8783796d60584e43372b1f140900000000000000000000030f1b27333f4953616b727f878d8073665a4d4033271a0d030c16202a36414c56606d7985929e92857a6d61564c41362a1d11050000000000000000000000000000000000000000000000000000000000000714212d3a46535f697885919eaba398897c6f6356493c2f39424d56616b73808d8b7e85929ea89b8e817568584e43372f38424b555e69707d8791847a6d655b50443d32281e1308000000000000000000000000000000000000000007121d28333f4a545e686e7b848f82796f6a60616d7a8692988d8073685e52463b3025190d01000000000000000000000000000000000000000000000006111c2b37434e5866737f8c99a79f9286818e81746c61584e443a3136414c5666727f8c99a49a8d8073665c5145414e58606d7a8582766a6054473b2e2215080000020e1a26313c4653606c7884919ea3998d8074685e52463a2f24180d0103101d293643505c6976838f9ca99c8f837669584e555d676e7a848b7f72695f53463d32271b0f0400000000000916222f3c4955626f7c88939e9d908477695e53463a2d2e302d3337393b4044464b51535960636b70787f8690959ea29892877d706a5f554b40352921160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c101314151514120e09030001070c101314151513120f0b060001070c101314151513120f0b06000000000000000000000000000000000000000306070c1012131517191b1c181c1f20212222232424242525252525252525252525252524242323222121201f1c171c1b1a19181716151413120f0b06110e07060401000000000000000000000713202c3945515d6776828f9c95887b6e6155483b3025190e020d192633404c5966737f8c99a69f9285929a8e817467544b4034281c1004000000000000000000000000000000000006111b262f3a444c5254524c44434d57606b717e8b928d807885929e998c807366594d40363f45515c666e7b86857a6d61564c41362a1c110600000c1925323f4c5865727f8b98a5a195887b6e6255483b2d22150b000000000000000001080f17212c38434f596875828e9b93877b6e6154473b2e211408000000000815212e3b4854616e7b8798a29a8e817476828f877b6e61564c413c4956636f7c8997a29b8e8175685d524538424d57616c7581897c6f62584e43382b1f1306000b1724313e4a5764717d8a979c908376675d514538414c55606c7883909da69e9185796d6053463a30333f49535e6973808a7d7064574d42362a1e1205000e1b2835414e5b6874818e9b8f82787b86857c6f6a605951556b7885929e9e9285786b5f5a616b727f8b80746a5f53473b31251a0e02000000000000000000000b17222d38414f59626d727d838276695c504336291d1000050e1925303a45515d67737f8c98988d8073685e5246392d20160b00000000000000000000000000000000000000000000000000000000000005121e2b37424d576875818e9babaa998c807366564c4135303b444f59606d7883908683909daa9e9185786a5f53473b2e303a434d57606b737f8c8f82776c60594f443a3025190f0500000000000000000000000000000000000000010b17222d38424c565e696e7a838d847c736d666873808d9892867a6d61564c41362a1d12070000000000000000000000000000000000000000000000000f1a26313c4855616e7b8895a0a2988a7e848b7e716a5f564c433a313c4855626f7c8898a29e9285796d6053463c45515d67727f887c6f6255493c2f22160900000009151f2b3844505b66727e8b96a19f92867a6d61554b4035291d130700121e2b3845515e6b7884919ea79b8e8174685b4e4c555e686f7c87867b6e61584e43372b21160a00000000000b1825313e4b5864717e8b97a6a095877b6e6154483b2e232322272b2d2e34383a4045474f545960666d727c838e939ca39992867c6f675d51453d32271b0f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004060709080806020000000000000406070808060503000000000000040607080806060300000000000000000000000000000000000000000000000000040607080a0c0e070c1013131415161617171718181818191919191918181818171717161515141312100b060f0d0c0b0a09080706050300000401000000000000000000000000000004111d2935414c5565727e8b9a988c7f7265564d41362a1e11050f1c28333f4a546875818e9ba89b8e828e9b908377665c5145382c1f130600000000000000000000000000000000000b17222d38414c565e615e564e46454f59626d74808d928c808c97a1988b7e7265584b3f3234404b545f69727f8b8074685e5246382e23170b00000d1a2633404d596673808c99a6a094877a6d6154473a2e21140700000000000000000000050f1b2732404d5a6773808d9a9a8a7e7164574b3e3124180b000000000613202d394653606c7985929f9b8f8275707d8a8d8074685e52463a4653606d7985929f9f92867a6d6054473a3b45505a616e7b8682766a6054473b2e221508000815212e3b4854616e7b87969f9286796d6053473a3a44505b656f7d89949ea1978a7d7063564c41362d38414d57606d79848376695f53463a2d211407000b1825323e4b5865717e8b97948f8384887d706a5f584f515c677985929f9e9184786b5e5059626d7581867c6f62574d42362a1e12050000000000000000000006111b262f3e47515b626b6f777c6e6255483b2f221508000008131e2935404b55606d7a86929f92867a6d6154473d32271b10010000000000000000000000000000000000000000000000000000000000020e1a26313e4b5864717e8b99a4a99c908376685d5245392c323e44515c666f7c87929095a0aca197887c6f6255493c3128313b454f59606c78828f8c7f736b60564c41362a21170d030000000000000000000000000000000000000006111c262f3a444d575e686d798087867f78706b6e7a8692988d8073685e5246392f24180d0000000000000000000000000000000000000000000000000a15212d3a46535f697784919daa9b8e817c87867c6f685e554b433a3a4653606d7985929fa197897d7063564a3d414c55606d79847f7265594c3f3226190c000000030f1c28333f4a54606d7984919ea2988c8073675d51453a2f24180d01121f2c3945525f6c7885929fa79a8d8074675a4d434c56606a737f8c82756a6054473d32271b0f02000000000a1724313d4a5764707d8a97a8a7988b7e7265554b4034281c171b1f2023282c2f35383d44484f545c606a6f79818c929ca2989184796d60594f44382c21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000040607080809090a0a0b0b0b0c0c0c0c0c0c0c0c0b0b0b0b0a0a0909080707060300000201000000000000000000000000000000000000000000000000000000010d19242f3b4754616e7b87939d908376685e5246392d201407121f2b3844505b667783909da9978a7e8a989286796d6053463a2d20130700000000000000000000000000000000030f1b27333f49535e686d6860584e4347505a606d78828f928c929ca9978a7d7064574a3d312e39424d57606c7783867a6e61544a3f34281c1003000d1a2733404d5a6673808d99a6a093867a6d6053473a2d20140700000000000000000000000a1926333f4c5966727f8c99998d8073665a4d4033271a0d0000000005121f2b3744505b657683909d9d9083776c788390867a6d61564c4144505c6675828e9ba3988b7f7265564c41353e46535e697480897c6f6256493c2f231609000714212d3a46535e697784919e98897d7063544a3f343f4953606b75828f9aa49b8e8275685e5246382e2f3b45515d67727f887b6e6155483b2e221508000714212d3a4754606d7a85919995908d80746b61584e4653606d798698a29d9083776a5d50515b616d7a858275695e53463a2d21140700000000000000000000000a141d2c353f49515960636a6e6a5f53473a2e2114080000020d18242f3a45525d6875818e9b988c7f7265594f44382c1d13070000000000000000000000000000000000000000000000000000000000000914212e3a4754616d7a86939fac9f92867a6d6054473a2e2834404a545f6a73808c95a0a7b1a9998c7f7266574d42362a29333d44505b666e7b8592877d70685e52463f33291f140900000000000000000000000000000000000000000a141d28323b454d565e676d737d848c847d756e74818e9a92867a6e61554b4035291b110a020000000000000000000000000000000000000000000005121e2a36424d576673808d99aa9e9285787f8c847a6d675d554c443c44505c667683909da99a8d8073675a4d403a45515c676f7c786d6053463a2d201307000000000b17222d3845515c67727f8b96a19e9285796d60554b4035291d1207121f2b3744505b657986929fa69a8d8073675a4d40444e58606d7883897c6f62594f43382c1e1408000000000815212e3b4854616e7b8796a0a89c8f8275675c5145382c1f130f1213181c1f24292c32383d424a50585f676d75808c929ca0968e81746b6054483d33271c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070b0e1011121211100d0a0706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202d3a46525e697783909d93877b6e6154473b2f24180d13202d394653606c7985929fa197877a869299887c6f6255493c2f2216080000000000000000000000000000000005121f2b3744505b656d7a6f6a6054473f44505c666d798390969ca4a296897c6f6356493c3027303c44505b656f7c878073665c5044382b1f1206000d192633404c5966737f8c99a6a194877a6e6154473b2e21140600000000000000000000000d1a2633404d596673808c999b8e8175685b4e4235281b0f02000000030f1b27333f49536774818e9a9f92857969717e8b8d8073685e52463f4a5465727f8c98aa9d908376685d52453936424d57616d7a858073665a4d4033271a0d0005121e2a36424d576774808d9a9a8e8174665c50443838414f59626f7c87939f9f92867a6d61544a3f342935404b55606d797d70695f53463a2d211407000613202c3945515d67707e87929792857a6d60594f464854616e7b8794aa9b8f8275685c4f46525d68717e877b6e6154483b2e2115080000000000000000000000020b1a232d373f474f54585f625f584e43372b1f120600000007131d2935414c5663707c89969d9184776b6054483a2f24180d0100000000000000000000000000000000000000000000000000000000000713202d3946525e687683909da9a3998a7d7164544a3f34282e39424e58606d7983919aa4afa99c908376695e53463a2d2128333f4a545e69717e8a91857a6d615a50453b31251a0e0400000000000000000000000000000000000000020b162029333b444c555c606b7079808689827b737b8894988d8073675d5145382d221b140b08020000000000000000000000000000000000000000020e1a26313c4956636f7c8998a2a197887c75818e83796d675e564e45404a546975828f9ca89d9083776a53493f34404b55606a6f6d665c5044382b1f12060000000006111c2834404b55606d7984919ea2978c7f72675d5145392f24180d13202d394653606c798699a3a79a8d8074675a4d413d44505c666f7c8782766b6054483b3025190d010000000714212d3a46535e697784919eaa9f9285796d6053463a2d20130805070c1012181d1f272c30383f444e555c606e737f8c929d9d93897d6f63594f44382c1d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d111314181b1d1e1f1f1e1c1a171413100c0701000000000000000000000000000000000000000000000000000000000000000000000000010202000000000000000000000000020507080c0d0b080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36424d5766737f8c999a8b7e7165554b4035291d1115222e3b4855616e7b8898a29e9185788390988b7e7265584b3f2f24190d010000000000000000000000000000000613202d394653606c78837c6f625a50433f4a545d676e7a849197a2ab95887b6e6255483b2f2227333f49535f6a748185796d6053463a2d201307000c1825323f4b5865727e8b98aba295887c6f6255493c2d22170b0000000000000000000007101d2935404b556774808d9a9c8f8275695c4f4236291c0f03000000000b17222d3e4b5865717e8b98a298877a6e6d788491867a6d61584e424956636f7c8996a29f92867a6d6054473a313b46525e68707c786d6053463a2d20130700020e1a25313d4a5763707d8a979e9285796d6053463a2f3d47535f6a75818e99a3998c7f72665c5044382b2f3945515c676d706b61574d42362a1e12050004111d2935414c55616c717e858c91847a6d675c5145495663707c8996a3998d8073665a4d414c56606c78837f7265584b3f3225180c00000000000000000000000008111b252d353d44484e5355534e463c31261a0f02000000010d19242f3a4854606b7784919e96897c7063554b4035291d1104000000000000000000000000000000000000000000000000000000000005111d2a36414c5666727f8c99a8ab9b8e8175665c5044382b27303c45515c676f7c88939faaac9f93877b6e6154483c3126222d38424d57616c75818e8f82756c62574d42362a20160c0200000000000000000000000000000000000000050e172129323a434b515960676d737b818786807a838f9c9285796d6053493f332d261d19140d0500000000000000000000000000000000000000000913202d3a4653606d7985929fa9998c7f7279839082796d685f58514b49536875818e9ba89e918578655b50443739434e586062605c544a3f34281c100300000000000c18232e3945515c67717e8b95a09e9285796d60554b4035291d12121f2b3744505b657986929fa79a8d8174675a4e41343f4a545f6a7481897c6f63564c41362a1e110500000005121e2a36424d576773808d9aa9a298897d706356493d3025190e02000004070c10161b1e262e343c434b515b636d74808d949f9d9083766b605448392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c13191d202124282a2b2c2b2b292724201f1c18120f0a04000000000000000000000000000000000000000000000000000000000000030608090d0f0e0c08070502000000000002090e1214151819181514120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303c4855626f7b88969c8f8275675d5145392c20131724303d4a5763707d8a96aa9c908376818e9a8e817468554c4135291d11040000000000000000000000000000000713202d3a4653606d798483766c61554b40424b555e686f7c85929fa399877a6d6154473a2e21222d38414e58616e7b867b6f6255483c2f221509000a1623303d495663707c8999a3a4978b7e7164544a3f33281c0f030000000000000000071019232c3945515d677683909c9c8f8376695c504336291d1003000000000615222f3c4855626f7b8897a296897d7066717e8a8d80736a5f544a4754616e7a8794a1a3998a7d7064574a3d3136414c56606b706d665c5044382b1f120600000913202d3a4653606d7985929f97897d7063564c413637434e58616e7b87929f9e9184786d6053463c322834404b555c606361594f453b31261a0e0200010d19242f3a43505a616c717a80858f82796d605b514b5865727e8b98a7978a7d7164574a3e44505b656e7b786d6053463a2d2013070000000000000000000000000009131b232b32383c43474847433c342a20150a000000000008131e2c38444f596673808d999b8e8175675d5145392c2013070000000000000000000000000000000000000000000000000000000000010d1925303c4855626f7b8896a0ab9e9285796d6053463a2d202834404b55606b74818e98a2aea49a8c7f7265584e43372b1d262f3b45505a616d7a85928b7e71695e53463f32281e13080000000000000000000000000000000000000000050f172029303940454f555d60696e757c828985828f9c978b7e72655b50443f382f2a251e170e070100000000000000000000000000000000000006121f2b3844505c6676838f9ca99c8f82766e7b8690837a6f6a605c55555b6575828f9ba89f9286796c60534639303d464e545653504a42382e23170b00000000000007121d2834404b55606d7884919da1978c7f72675d5145392f24180f1b27333f495f6c7885929fa89b8e8275685b4f422e38424e58606d7a858175685e5246392d201407000000020e1a25313c4956636f7c8997a1aa9a8d807367564c41362a1e11050000000000040b0c141c232831394045525b606d78828f979f95897d7063544b4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e24292c2d313437383938373633302d2c29231d1b160f0a040000000000000000000000000000000000000000000000000000040a0f1315161a1c1b191414110e09020000050d141a1e202125262522211e1a140f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212e3a47535f6a7784919e92867a6d6053473a2d22171926323f4c5965727f8c98a59b8e81747e8b98918477675d5145392c20130600000000000000000000000000000006121f2b3844505c66727e8a7e71675c51453a434d565f6a75828f9b9f9286796c6053463d342b21262f3c46525e696f7b6f6a5f53473a2e211508000714212d3a4754606d7a86929fa79a8e8174665b5044382b1f140a00000000000001081019222834404a54606d7a85929f9c8f8275695c4f4236291c0f03000000000613202d394653606c7985929e998c7f72666c768390877c6e665c504653606d798693a0ab998c7f7366594c4033303a444f596063605c544a3f34281c1003000006131f2c3845515c6674818e9a9b8e8175685e524638313c47535f6974818e99a1968a7d7064584e43372b2e39434b515357554f473e33291f140900000008131e28313e48505a61686d737a838e81756d63594f556774818d9aa095877a6e6154473b3f49535f696e6d665c5144382c1f1206000000000000000000000000000109111921272c31373a3b3a37312a22180e03000000000001101b27323d4955626f7c88969f92867a6d6053473a2e23180c0000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a7784919eaaa297897c706356493d3227232e39434f59616e7b86929fa8ac9d9083776a5f5347392e231d29333e46525e68717e8b92867b6e615a50443a3025190d040000000000000000000000000000000000000000050e171e272e343d434b51575f616a6f767d838990959d9184786c60545049413d3630292018120c04000000000000000000000000000000000003101c28343f4a546673808d99a69f9285796d707d8790847c726d676362636c7884919eaba29886796d6053463a2d343d43474946443f3830261c1106000000000000000c18232e3944505c66707d8a949f9e9285796d60554b4035291d1217222d45525e6b7885919ea99c8f8276695c4f432f303c45525d68727f867a6e6154473b2e211408000000000913202d394653606c7985929eaa9d908377685e5246392d20140600000000000000020a11171f272f344044505c666e7a85929f9b8e8174665c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151d23292f35393a3e41434445454443403d3a38342f2c27211b160d08020000000000000000000000000000000000000000000001070c151b1f22222728282521201e19140c07090f171f252a2d2e3233322e2d2a261f1b160b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e586773808d9a988a7d706453493f33271b1b2734414e5a6774818d9aa6998c7f737c899893867a6d6054473a2d21140600000000000000000000000000000003101c28343f4a54606d798584796d60564c413b444e586a7783909d9e9285786c62594f463c332a202a36424d575f6a6f6a5f584e43372b1f1206000713202c3945525d6876828f9ca69e9184786c6053463d2f261c110600000000040c1319222b343c44515c66717e8b98a29b8e8174685b4e4135281b0e020000000006121f2b3844505b6675828e9b9b8f827568626f7c879083786d605b5253606d798693a0a79a8d8174675a4e413428323d474f545653504a42382e23170b00000004101c2834404b5463707d89969f92867a6d61544a3f3437424d57616e7b87929f9c8f82766a5f5347392f2730394045464a48443e352c21170d03000000010c161f2c363e4850565e61686e7b858c7f726b60565d677783909d9d908477685e52463938414d575f62605c544a4034281c1004000000000000000000000000000000070f161b20262b2e2f2e2b2620180f06090a0b0b0b09070b16212e3b47535f6a7784919e988a7d7164544a4034281c1004000000000000000000000000000000000000000000000000000000000006121f2b37434e586774808d9aa9a99a8d807467584e43372b1d27303d46525e69737f8c96a1aca095887b6f62544b4034281c212a36414c56616c76828f8f82766c62564c41352920150a000000000000000000000000000000000000000000070d151d2429313940454d53585f626b70767d83909a968a7d7066605b534f46413b3229241d160d0600000000000000000000000000000000000b17232e3d4a5764707d8a97a3a298887b6f6b717e8891867f7973706e70747e8a96a1ab9f928578665c5144382c2b32373b3c3a38342e261e140a000000000000000007121d28343f4a54616c76829099a1978c7f72675d5145392f24181e2a3744515d6a7784909daa9d9084776a554b40342935414c56606d79847e7265584b3f3225180c0000000006121f2b3844505b6674818e9baa9f93877a6e6154473b2d22170b000000000000000000060d151d2329343f4a545e68727f8b969f9285796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f272f343a4145474b4e50515252514f4d4a4745403938322c272119130d050000000000000000000000000000000000000000030b121820272b2e2f343535322e2d2a251f1812121b212930363a3b3f403e3b3a36312b272017110a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26313c4956636f7c89979b8e8174655b5044372b1f1d2935414b556976838f9ca4978a7e7179869299897d7063564a3d2e23170b000000000000000000000000000000000b17232e3845515c67727f8c7f72685e52463c45525d687885929ea1978b7e716b61584e453b322925303b454e585f625f584e463c31261a0f030004111d2935414c5663707d8a949ea196897d7063584e42382d22170b050002080d161e2429343d464f59606d7984919daa998c7f7266594c3f3326190c0000000000030f1c28333f4a5465717e8b989e9184786a606a74808d8d80746d615e59616e7b8794a1a89b8e8275685b4f4235282b353d44484946443f3830261c1106000000000c18232e3a4653606d7984919e988c7f72665c504438313c46535f6974818e999f94887c6f62554b403529272e34383a3d3c38332c231a0f060000000000040d1a242c363e444c52565e696f7c86877d70685e606d7a86929f998d807366564c41362f3c454d535553514a42392e23180c0000000000000000000000000000000000040a0f151a1f2122211f1a150f12131517181817161413131f2b37434e586773808d9a9b8e8175665c5144382c1f12060000000000000000000000000000000000000000000000000000000000030f1b26313d495663707c8997a2ab9e9184786a6054473b2e221e2a36424d56606d7984919ea7a79a8d8074665c5145382c1f1925303a44505a616e7b86928b7e71685e52463c32261b0d04000000000000000000000000000000000000000710191f272f35383a3f4446474e545960636b707b87939c8f8278706c656059524c443f352f281f180f07000000000000000000000000000000000616232f3c4956626f7c8995abaa978a7e71646c717e88928c84807d7b7c8087929fa8ab9d9083766a544a40342820272b2e2f2d2b28231c140c020000000000000000000c17232e3842505a626f7c87939f9e9285796d60554b4035291e1c2936434f5c6976828f9ca99e928578675c5145382c303a45515c676f7c796d6053463a2d20130700000000030f1c28333f4a5463707d8a98a2a49a8b7e716453493f33271b0f03000000000000000000030b1218232e38424c56606d7884919e98887c6f6255493c2f22160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d172029313940454c5254575b5d5e5f5e5e5c5a5753514b48433d38322a251e170e06000000000000000000000000000000000000030d151d242932373b3c4042413f3b3a363028231d1b242d333b4246484b4c4b4846423b373228231c140c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a13202d394653606c7985929e9185786c605346392d20202c3945515d677885919eaa95897c6f768390998c807366544a3f34281c100300000000000000000000000000000006111c2934404b55606d7a85857a6d61584e434754606d7a8797a1a79f92877d706a60574d443b322829333c464e5355534e463c342a20150a0000010d19242f3a4855616b76828f96a09c8f82756a60544a3f332821160b060b13191f282f353e464e58606b737f8c95a0a298897d7063564a3d3023170a0000000000000b17222d3b4854616e7b8796a096887b6e62606d7984918c7f746d68676b717e8b98a4a79b8e8174685b4e413528232b32383b3d3a38342e261e140a000000000007121f2b3844505c66737f8c989e9184796d60544a3f3336424d57616e7b86929f9a8e8174675d5145392c2023282c2d302f2c28211a11080000000000000008121a242c323a41464d57606a717e8a857a6e6163707d8999a197897c6f6256493c302a333c4247484644403930271c120700000000000000000000000000000000000000030a0f121415141211171b1f2022242525242321201d1b26323d4a5663707d89989f9285796d6053463a2d2013090000000000000000000000000000000000000000000000000000000000000a13202d3a4653606d7985929eaba196897c6f6256493c31261a25303b45515c67717e8a95a0ab9e9285796d6053463c31261a1e29323e47535f6973808d92857a6d61584e43372b1f160c010000000000000000000000000000000000060f19222b31394045474950535453504f5459606976838f9c948f837d78706b615e5650454039312a211910070000000000000000000000000000000815222e3b4855616e7b8899a1a8998c7f7366626c717e8792918d8988898d9299a3afa3998c807366594d402e23181b1f2223201f1c17110a020000000000000000000006111c26303e47535f6a74818e97a1978c7f72675d51453a2f24192835414e5b6874818e9ba79f93867a6d6053473a2d2834404b55606a6f6d675c5145382c1f130600000000000b17222d3a4753606d7985929fac9b8e8175655b5044372b1f1205000000000000000000000107111c26303b44505c66727f8c99988b7e7265584b3f3225180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f29323b434b51565d6064676a6b6c6b6a696663605c55544f48433d3630292017110a02000000000000000000000000000000020b151f272f353c4347494d4f4e4c4746423b342e27212d363f454d525458595855534d47433d342e261e150d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b6674818e9a97897c6f6256493c3025212d3a4754606d7a8797a1a298877a6d73808d9a8f8276665c5044382b1f1206000000000000000000000000000000000c18232f3945515d6773808d81746a60554b4956636f7c8996a9a0959092867c6f695f564d443a31282a343c43474847433c342a22180e0300000008131e2c38444f59616d7a8491959f93877c6f665b50443d33271c1011171e2529313a41455058606a707d87929fa89f9285796d6053473a2d2014070000000000000614212d3a46535e697784919d988b7f72655d676f7c86928c817a7674767d85929eabaa998d8073665a4d4033271921272c2f302d2b28231c140c02000000000003101c28343f4a54616e7a86929f968b7e71665b50443a313b46535e6974818e999f92857a6d6053473a2d20181c1f202423201c16100800000000000000000008121a202830363b454e58616c74808d82766d6673808c999e9184786c605346392d202a31373a3b3a38342e271e150b000000000000000000000000000000000000000000000206080d141a1b22272b2d2f30313231302d2c2924202d3a4753606d7986929f97897d7063564a3d30251a0e02000000000000000000000000000000000000000000000000000000000006121f2c3844505c6674818e9baaa8998d807366584e43372b1f1f2934404b55606c7883919da7a1978a7e7164574d42372b1d17202b37424d57606d7a85928d81746a5f53473e31281d130700000000000000000000000000000000020b18212b343d434b5153535b6060605b5454525765717e8b999f95908a837d756e68625a514b433c332b2219100700000000000000000000000000000714202d3a4753606d7a8691969a998c8073665a626c717d8590959695969a9fa3aba79f92867b6e6155483b2e22150f1315161312100b06000000000000000000000000000a151e2b37434e58616d7a85929f9e9285796d60564c413529202633404c5966737f8c99a6a49a887b6e6255483b2f232e39434e586062605c554b4034281c1004000000000006131f2c3845515c6775828e9bab9e9185786c605346392d2013070000000000000000000000000a141e28343f4a54616e7b8796998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313b444c555c60686d717476777878777673706d67636059544f46413a3227221b140b0300000000000000000000000000000a141d27313940454e54555a5b5b5854524d454039302a333f4850575e61656665615f57544e443f3830271f160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a5463707d8a98998c807366564d41362a222f3c4955626f7c8895a99f92857868707d8a979285796d6053463a2d2013070000000000000000000000000000000007121d2935414c55616e7a86877c6f675c514b5865727e8b98a89d90838e91857b6e685e564c433931272a31373a3c3a37312a221810060000000001101c28333e46525e686e7b838d92999083786c60594f44382c20141c222830353d434c515a616a6f7c859299a3a3998e8174675c5145382c1f130600000000000005121e2a36424d576774808d9a9c8f8276685e606a717e8b928e86828183879297a1ada2988a7d7063574a3d302417161c202223201f1c17110a02000000000000000b17232e3846525e6874818e989d9184786c60554b403536424d57616e7b8692928e867a6d6053473a2d2014101313171614100b050000000000000000000000080e161e252a333c46505a606d79838b7f726976828f9c9a8d8174655b5044372b1f1f262b2e2f2d2c28231c150c030000000000000000000000000000000000000000000000090e171f252a2d3337393c3d3e3e3e3c3a3935302d2c3845515c6776828f9c9a8d807467574d42362a1e1205000000000000000000000000000000000000000000000000000000000003101c28343f4a5464707d8a98a2aa9d9184776a5f53473a2e2118232f3944505b66717e8a95a0a99c8f8276695f5347392f24181a26313c45525d68727f8b93877c6f625a50433a2f24180d020000000000000000000000000000000a141d2a333d464e555d6065656c6d6c6666615e56606d7a86929f9287808589817a716c605d554d453d342b22191007000000000000000000000000000613202c3945515d67707d848a8d8e897d7063565a616b707b838c92989d9fa4a9a29f958d8174695f53463a2d21140706080907060300000000000000000000000000050b10141b26323c46525e68727f8b95a0978c7f72685d52453b302d2e313e4b5764717e8a97a4ac968a7d7063574a3d302427303d464e545653514b43392e23180c00000000000004101c2934404b5564717e8a99a3a197887c6f6255493c2f24180d010000000000000000000000020c17232e3846535e697884919a8e8174675b4e4134281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f39434c565e676d737a7e81838485858482807d79756f6b636059524c443e332d261d150c0300000000000000000000000006111b262f39434b5158606267686865615e56514b433a323c46505a62696e7273716e69626058504a423931281f160d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3a4753606d7985929d908377685e5246392d24313e4b5764717e8a97a49d9083776a6d7a879698887c6f6255493c2f22160a00000000000000000000000000000000010d19242f3a46525e6874818d83796d605b51586774818e9aa095877b818e91847a6e685d554b43393128262b2e2f2e2b26201810060000000000000b17212935414c565e696e7980868c908c7f726b6055483c2f231d262d333a41464f555d606c717d859297a2a89f92877b6e62554b4034291c1004000000000000020e1a25313d4a5763707d8a979f92867a6d6158626c73808c92928f8e8f9399a1a9a79f9285796d6053473a2d20140b101316161312100b0600000000000000000006111c2a36414c56616e7b86929f968b7e71675d514539313b46535e6974818985817c6e675d5145392c20130606070a0907040000000000000000000000000000050c1319212b343e45515c676e7b86867b6e7985929f97897d706353493f33271b151a1e2122201f1c18120b03000000000000000000000000000000000000000000000009121a20293036383f4446484a4b4b4a494745413b3a3634404b5566737f8c999d918477695e52463a2d2014060000000000000000000000000000000000000000000000000000000000000c17232e3a4753606d7a86929faca096887b6f6255483c31251a1d28333f4a54606c7883909da79f93877b6e62554b4035291d151f2935414c56606d7884919083766c61554b4035291e1308000000000000000000000000000006111b262f3c454e5860676d7276797a7977736e68625d6875828f9c998a7d7a8086857e756d675f574f473d342b22190f0600000000000000000000000004111d2935404b55606b70797e81817d706b6054505960696e787f868c90939a9697928d83796d60574d42362a1e12050000000000000000000000000000000000000810171c2023242a36414c56606d7883919d9f92857a6d60564c4138393b3c3e4956626f7c8995a8a5988c7f7265594c3f2d221e2b343d4348494645403930271d1207000000000000000c18232f3a4754606d7a86929fa9998c7f7266554b4035291d100400000000000000000000000006111c2a36424d576875828f9b8e8175685b4e4235281b0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b555e686e7980858a8e9091918f8f8f8d8a85817c766f6b615e5650443f382f271e150d0300000000000000000000000b17222d38414b555d606a6f737574726e69605c554c443a434e58626c717b7e7f7e7b766f6a605c544b433a31281f150b020000030606080908070502000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c6775828f9b93877a6e6154473b2e2333404d596673808c99a69b8f82756868778491988b7f7265584c3f31261a0f020000000000000000000000000000000008131e2a36414c56616e7a868d80746d605c5f6a7784919d9d91847778818e90837a6d675d554b433a3129212122211f1b150e0600000000000000050d1925303a444d575e676d747b7f8386877d7063564a3d30252a2f383f444c525960676d747e869297a1a9a0968d8074695f5343392f23180c00000000000000000913202d3a4653606d7985929f998b7f726a605b636e73808b92989a9c9fa4aba79f958c8073675d5145392c1f13060407090a0706030000000000000000000000000d1925303b46525e6973808c959b91847a6d6053473a2d36424d57616e7a7c79746e6a5f554b4035291d110400000000000000000000000000000000000000000002080f19222834404b555f69727f8c82777c88989e9285796d6053463a2d22170b0e1214151312100c0700000000000000000000000000000000000000000000000008121a242c333b424649505355575858575654524c4846423b3d495663707c8999a095877b6e6154483b2d22170b00000000000000000000000000000000000000000000000000000000000006131f2c3945515d6775828f9caca8998c7f7366574d42362a1e17222d3844505b65707d8a95a0a49a8d8073675d5145382c1f1619242f3a44505c66707d8a948a7e71675d51453a3025190d02000000000000000000000000000b17222d38414e57606a6f797f83868786847f7a726d6064717e8b999c8f8275737b828b81796e6960594f463d342b21170c030000000000000000000000010d18242f3a434f5960676d717474706c61594f474f575e666d727a7f83868889888580796d675d51453b31261a0e02000000000000000000000000000000000008111a22282d303133303a44505c66707d89939e978d8073685e5246444648494b4c54606d7a8796a1a79b8e81746853493f33271b222b32383b3c3a38342e271e150b00000000000000000713202c3945515d6775828f9cab9c8f8376675d5145392c201306000000000000000000000000000e1a2531414e5b6774818e9a8d8174675a4e4134271b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515d676e7a838c9297938e88848382828386898d89837c756d68615a5049413930271f150c03000000000000000000030f1b27333f49535d676d747c8082817f7b736d675e564c4447535f6a717e868b8c8b88827c736d665d554b433a31271d140a060b0f121315161514120e090501000000000000000000000000000000000000000000000000000000000004101c2934404b5564717e8b999a8b7e7165544a40342835424f5b6875828e9ba69a8d8073676774818e9a8e827568584e43372b1f120600000000000000000000000000000000010d1925303b46525e6873808c8c7f736d67666f7c8896a0998d80736c78818e9082796d675d554c433b332b262018120f0a0400000000000000000008131e28323b454d555d60696e73777a7c7d706356493d3030363d424a50565e616b707a818a9298a1a9a2989184796d60574d4231271d1207000000000000000006131f2c3845515c6674818e9b9e91847c736c665d636d737e868f94999c9d9c9b959083796d60554b4035291d10040000000000000000000000000000000000000008141e2a36424d57606d78838e8e8981796d6053473a2d313b46525e686e706d67625f584e433a2f24180d010000000000000000000000000000000000000000000000071018232e39434d57606d78838b7f7e8b989a8e8174665c5044382c1b11060206080807060400000000000000000000000000000000000000000000000000040e1a242c363e454d52535b60626364656463605d5655534d46424753606d7a86929f988b7e716553493f33271b0f03000000000000000000000000000000000000000000000000000000000004101d2935404b5565717e8b9aa4aa9d908377695e53463a2d21141c27333f4953606c7884919da99f9285796d6053473d32271b131e28343f4a54616b7683909184796d60564c41362a1e1308000000000000000000000000030f1b27333f49535f6a6f7c848b90929892908c857f746d666d7a86929f92867a6d6e787f87837b6f6b60584e463d33291e150b00000000000000000000000007131d28313d474f555c6064676764615a50473d454d545c60686d72777a7c7c7b79736d675d554b4033291f1409000000000000000000000000000000000005101a232c33393c3d4040403f4a54606b75818e979f92867a6e61574d5053545658595b5d687884919ea99d908376655b5044372b1f1921272c2e2f2d2c28231d150c03000000000000000004111d2935414c5565717e8b99a39f92867a6d6053473a2d2014090000000000000000000003060a10192734414e5a6774818d998c7f7366594c403326190d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d57606d798390959f918c817c7876757677797c80858c89817a706c605b534b433931271e150b00000000000000000005121f2b3744505b656d7981888d8e8e8b8680796d685e564c4855626e7c8792999997948f8780786d675d554b43392f261b1111171c1f20222322211e1a14110d0802000000000000000000000000000000000000000000000000000000000c18232f3a4754616d7a86929b8f8275665c5144382c36424d576a7783909da5988b7e726564717e8b979285786a5f53473a2e211406000000000000000000000000000000000008141e2a36414c56606d7983908c8079747478828f9c9f92877b6e666c78818d8f82796d675d564d453d37312a21180e0300000000000000000000020c162029333b434b51575e6166686d6f706b6054483b333b41464f545b60686d747d848e939fa2a9a29892867c6e675d51453c311f150b01000000000000000004101c2834404b5464707d8a98a196918780786d685e636c717b82888c8f90908e8a837a6d675d5143392f24180c0000000000000000000000000000000000000000020e1a25303b45515c666d7a81827d756d675c5145382c2a36414c565e6163605c55534e463c31281d13070000000000000000000000000000000000000000000000000007121d27303c44505c666f7c8785828f9b988a7d7063544a3f34281c0a0000000000000000000000000000000000000000000000000000000000000000020c16202c363e4850575e61656c6f707171716f6d6866615f57534d45515d677783909d9b8e8275655b5044372b1f12050000000000000000000000000000000000000000000000000000000000000c18242f3b4754616e7a87939faca095877b6e6154483b2f241917222d3844505b65717e8b97a1a2978b7e7165594f44382c1e1317232e38424f5963707d89958c8073685e52463a3025190d02000000000000000000000005121f2b3744505b656e7c8591969d98928e8d8e928b81786d6876828f9c998b7f72666c727d85867d6f6a60584e453b30271d12070000000000000000000000010c161f2b353d434b5153575a5b575550483e353b424a50565d6066686d6f706f6d66605d554b43392f21170d0300000000000000000000000000000000000b17222c363e44494a4d4d4d4d4d4f59616d7a85929f988d8074695e545b6061636466686a6875828f9ca89f9285796c605346392d2013161b1f2223201f1c18120b03000000000000000000010d19242f3a4754616d7a86929fa3998a7d7063574a3d31251a0e0202020000030607080a0f12161b222b37424d576875828e9a8a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212d3a47535f6974818d959e938c7f756f6a696869666d6f74797f858e857d736c655c554b433930271c12070000000000000004101d2935404b55606c77818e939a999292928d837a6d685e554d576774818e999a938a868a908c82796d675d554b41382d22191c22282b2d2e2f2e2d2a26201d19130c050000000000000000000000000000000000000000000000000000000713202d3946525e6876838f9c9285796d6053463a2d3a46525e697985929fa3968a7d7063616e7b889697887b6e6255483b2d22170b0000000000000000000000000000000000020e1925303b45515c676e7b86928d858180838f949f978e8174695e666c77808c8f82796d685e574f47423c332a2015090000000000000000000000040e172129313940454d5354565d60636360594f44383f444c525960666c727a818991969da5a8a09792867d706a5f554b40332a200d03000000000000000000000c18232e3a4653606d7985929fa199928c827a6e695e62696e757b7f828383817e786d685e554b4031271d120700000000000000000000000000000000000000000009141f2834404b545e686d7575706b605c554b40342925303b444c52545653514b47433c342a1f160c0100000000000000000000000000000000000000000000000000000b151e28343f4a54606a74818e8f939f9286796d6053473a2e23170c000000000000000000000000000000000000000000000000000000000000000008131e28323e48505a61696e74787b7d7e7e7d7c7a77736e69615e57514b556774818d9a9e9285786c605346392d2013060000000000000000000000000000000000000000000000000000000000000714202d3946525e687683909da9a7988b7f7265554c4135291d111b27333f4953606d7985919ea99d9083776b6054483a302519111c26303e4854606b77839092867a6d61564c41362a1e130800000000000000000000000613202d394653606c78839097a0989285818081858d8e82786d727f8b989d90837769606b707c84867c6f6a60574d43392e23180c030000000000000000000000040d19232b31394045474b4e4e4a49443e362c30383f444c5254565e61626362605c54514b433931271d0f06000000000000000000000000000000000004101c28333e485055575a5a5a5a5a5a5b5e68727e8b959f92867b6e6769666c6e6f71737476787a818e9ba8a298877b6e6154483b2e21150a0f1315161313100c070000000000000000000000000813202d3946525e6876828f9cab9a8d807467574d42362a1e120e0f0f060b10121315171b1f21272c343d47535f6977849193877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b87939f9b8e81756d625f585c545c6063676d727a818a8a80776d675d554b42392e2318100700000000000006131f2c3845515d67727e8b939d948f8685878d90837a6d675d535f697885929e93887e7a7d838e8f82796d675c53493f332724292d3338393b3c3b3a36312d2a251e170e08000000000000000000000000000000000000000000000000000005111d2935414c5665727f8c9898897c706356493d313b4854616e7b8798a2a995887b6e625f69788491988b7e726553493f33271b0f03000000000000000000000000000000000008141e2934404b555f696f7d8591928e8d90959d9791857a6e61575b656c74808b8f827a6e696059534e453c31261a0e020000000000000000000000050f171f272f353b4246484c52545656544f473d414950565e616b6f787e858e939ea1a8a49d9691857d706b60574e43392f21180e000000000000000000000007131f2c3845515c6775818e9b9f9387878f837b6e695e5e616a6f7375767674716d665e564c433a2f1f150b01000000000000000000000000000000000000000000030c18232e39424c565e616868636059514b43392f231e29323b414647494745403937312a22180d04000000000000000000000000000000000000000000000000000000030c17232e38424e58616e7b86929f9c908376675c5145382c1c110600000000000000000000000000000000000000000000000000000000000000010d1925303a44505a616c717b8185888a8b8b8a898684807b756e69625b515864717e8b97a197887c6f6255483c2e23170b00000000000000000000000000000000000000000000000000000000000005111e2a36414c5666737f8c99a8a99c8f8276675d5145392c201317222d3845515c67737f8c98a3a095897c7063564c41362a1e11151e2c38444f5964707d8a958d8073685e52463a3025190d0200000000000000000000091623303c4956636f7c8995a09f92857b7473757a80888e81776e7b8795a095887b6e61606a6e7b84857c6f695f554b4034281f14090000000000000000000000000711191f272f34383a3e41413d3c39332c23262e343a4145474c525455565553514a45403931271f150b0000000000000000000000000000000000000814202d3944505a61646666666767676868696c77839099998e8174747677797b7c7e7f818385878e939eabaa978a7d7064574a3d3124170903070909070604000000000000000000000000000005111d2935414c5665717e8b99a39d918477695e53463a2d211b1b1b1c1c171c1f202224262b2e32383f464f59616e7b88968f8276685d5245392c20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c566774818d99a095887b6e625b534e4f4b5153555d60686d757e868d81796d675d544a40342822190d0400000000000714202d3a4753606d7985929e988f827a787b81889083796d605b616e7b88979c8f83766d7079818e8f82796d655b50443d323035383f444648494846423b39363029201a120901000000000000000000000000000000000000000000000000010d1925303b4855616e7b88959a8d807367574d42363d495663707c8996aaa197867a6d60576874818e9b8e8275655b5044372b1f12050000000000000000000000000000000000020c18232f39434d57606b6f7c848a8f919292908c857c6f685e52535b606e737f8790837b706b625f574e42372b1e1206000000000000000000000000050d151d242931363a3b414547494948443f454d535b60686e747c838b92979da5a9a19e928d847b706b60594f453c31271d0f06000000000000000000000004101c2834404b5564707d8a97a1998c7f8690847b6e685e585f6266696a696864605c544c443a31281d0d03000000000000000000000000000000000000000000000007121d27303a444c52545b5b56544f45403931271d1720293036393b3d3a38342f2b2620180f06000000000000000000000000000000000000000000000000000000000006111c26303c46535e6974808d9a9a8d807367554b4034291c10040000000000000000000000000000000000000000000000000000000000000005111d2935414c56616c717e868d9197969798979a93908c87817b726d605c54626e7b8898a2988c7f7265544a3f34281c10030000000000000000000000000000000000000000000000000000000000020e1925303c4855626f7c8896a1ac9f92867a6d6054473a2e2317111b2834404b55616d7a86929fa79b8e8175685e5246392d20150c1c27333d4653606c78839092867a6d61564c41362a1e1308000000000000000000000d192633404c5966737f8c99a79a8d80746966686d747d868c80737784909d998c7f7266575f696e7c85857b6e675c51453b31261a0e02000000000000000000000000070d151d23292c2d31343431302d28221a1c23283035393a41464749494846444039352f271f150d030000000000000000000000000000000000000a1623303c4955616c7073737373747474757676777c86929f9387808183848687898b8c8e909297939399a4a6998c807366594d4031261a0e020000000000000000000000000000000000000000010d1925303a4754616d7a86929fa096877b6e6154483b2e23282828282923282b2d2e3032373b3d43485058606b74818e938a7d7063564c4135291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e687784919e9d9184776a5f534743424045464b51565e616c717b848f82796d665c51443f342b1f160c01000000000b1824313e4b5764717e8a979f92867a6d696e747d868e81756d6263707d8a96998d807366676d78818e8e81776c60594f443b3a41454a5053555655534d4746413a322c241b1309000000000000000000000000000000000000000000000000000814212d3a46535f697784919d908477695e53463a3f4b5865727e8b98a59e918578675d5865717e8b989285796c605346392d20130600000000000000000000000000000000000007121d27313c454f59606a6f787e82848585837f7a6f6a60564c49505c636d727d8690857d746e6a5f53473a2e21140800000000000000000000000000030b12181f252a2d3035393a3c3d3a414551575f656c727a818790959ea2a9a49f97928a81796e6960594f473d332a1f150b000000000000000000000000000c18232e3a4653606d7985929e998c7f7d8691847a6d675c5355595c5d5d5b5753504a423a32291f160c000000000000000000000000000000000000000000000000000b151e29323a4146474f4f4a48443d342f271f150e171e252a2d2e302d2c29231d1a150e06000000000000000000000000000000000000000000000000000000000000000a151e2a36424d57626e7b8895988b7e7265584b3f2f23180c00000000000000000000000000000000000000000000000000000000000000000713202d3946525e68717e8792989ea198928e8a89898a8d918e867f756d665c606c7985929f9c8f8275665c5044382b1f12060000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a7884919eaba3998a7d7164544a3f34281c1018232e3946525e6875818e9ba89f92867a6d6154473c32261b0f161f2b3744505b65717e8a968d8073685e52463a3024190d000000000000000000010e1b2834414e5b6774818e9aa4978b7e7164575d606b707c85887e73808d999d908377695e575f6a707d8a83796d60574d42362a1f140800000000000000000000000000030b12181c1f202427282423201c171011171e24292c3036393a3c3d3c3a38342e29241d150d03000000000000000000000000000000000000000a1724313d4a5764707e8080808080818182828384859299a399938c8e8f91929996979795918d8a8687939fa99c8f827669574d42362a1e12050000000000000000000000000000000000000000000813202d3946525e6876828f9ca8988b7e7265544a3f343434343535352e34383a3b3d3f4347484f545a626a707d87938f82756b6155443a2f24190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8796a09b8e817568574e42373134383a40454c525a61696e7a838f82786d605b51463d31281d1307000000000f1b2835424e5b6875818e9b9b8e8275685e616b707d878b7e726965727e8b98988b7f72655c666d78828f8c80736b61564c41444c52545b606162615f5754524c443e362d251b110800000000000000000000000000000000000000000000000005121e2a36424d576673808d9995877b6e6154483b404d5a6773808d9aa69d9083766a5555616e7b889697887b6f6255483c2e23170b000000000000000000000000000000000000010b151f2a333d474f585f666d717578797877736d6860584e443f44525b626b707c838c87807c6e6255483b2f221508000000000000000000000000000001070c141a1e2124292c2d323b434c515b62696e777f858e939aa0a7a7a09a938e857d746d675f574f473d352b21180d030000000000000000000000000007131f2c3845515c6674808d9a9d9084777d869082796d605b524c4f50504e4a46443f38302920170d0400000000000000000000000000000000000000000000000000030c1720293036393a42423d3c383329231d150d050d14191e202123201f1c18120f0a030000000000000000000000000000000000000000000000000000000000000000030c1a25313b4854616e7b8794978a7d7064574a3d312417070000000000000000000000000000000000000000000000000000000000000004101c2834404a54616d7a859299a2a1969186817d7c7c7d80848b918b81786d665c667683909c9f9285796d6053463a2d20130600000000000000000000000000000000000000000000000000000000000006121f2b37434e586774818e9aabab9b8e8175665c5044382b1f12121d2935414c5663707d8996a0a3998c7f7266584e43372b1f130f1b27333f4953606d78849192867a6d61564c4135291c12070000000000000000010e1b2834414e5b6774818e9aa4978a7d7164575259616a6f7c86867b7d89999f95877b6e615458616b73808c7f73695f53463b3025190e020000000000000000000000000001070c101314181b1b171614100b05060b13191d20252a2d2e2f302f2d2c28231c18120b0300000000000000000000000000000000000000000916232f3c4956626f7c868d8d8d8d8d8e8f8f90919297a2aba49f999a9c999992908d8a8784817d7a828f9ca99e928578695f53463a2d21140700000000000000000000000000000000000000000005111d2935414c5665717e8b99a39b8f8275665c504441414141424242433f4446484a4c4e53555960636c717c859291847a6d61594f4432281e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a89a8d8073675a4d443f3b3a3630353a414650575f686d79838e81746d63584e433a2f24180d03000000111e2b3744515e6a7784919d988c7f72655659616b717e8b867b6e65727f8c98988b7e7165545c666d7a8491887d70685e52464d565d60666c6e6f6e6966615e5650483f372d231a0d040000000000000000000000000000000000000000000000020e1a26313c4956626f7c8997988b7e7165544a403f4a546975828f9ca89b8e8275685b535f69788491988b7f7265544a3f34281c1003000000000000000000000000000000000000030d18212b353d464e545c6064686b6c6b6a66615d564e463d3340495159616a6f797f84827d7063564a3d3023170a0000000000000000000000000000000003090e1214191f29323b444c555d606d727b828b92979fa4a9a19e959087817a706c605d554d453d352b23190f06000000000000000000000000000004101c2834404b54626f7c8895a095887b717e888e81756e63594f444343413e3a38342e261e170e05000000000000000000000000000000000000000000000000000000050e171e252a2d2e3535302f2c272118120b030002080e111414161413100c070100000000000000000000000000000000000000000000000000000000000000000000000914212e3a4754616d7a8798968a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000006121f2c3844515c6673808d97a1a39991847c74716f6f7174797e858f8e82786d666774808d9aa298897c6f6256493c2d22170b000000000000000000000000000000000000000000000000000000000000030f1b26313e4a5764717d8a99a3ab9f9285796d6053463a2d20130d1925303a4653606c7884919eab9d9184776a5f53473b2e21150b17222d3844505c66727f8c988d8073685d5245392e23180c0000000000000000010d1a2734404d5a6773808d9aa5988b7e7265584b4f58606a707d87837a86929f988c7f7265564f59606d7984867b6e61564d41362a1e1105000000000000000000000000000000000406070b0e0e0a0a080400000002080d1113191d2021222322201f1c18120c07010000000000000000000000000000000000000000000815222e3b4754606a737f8b92979a9a9b9b9c9d9e9f9e9c9a9ea0a096918c898683807d7a777471727f8c99aaa297887b6e6155483b2e221508000000000000000000000000000000000000000000010d1925303a4754606d7a86929f9f9285796d60534e4e4e4e4e4e4f4f504a5053555759585f62666b6f767e86928f847b6e685d52473e3320160c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c8996a3998d8073665a53504a4746423b3833363e454d565e676d7a838c7f726a60554b41352920150a000000121f2c3945525f6c7885929f978a7d7064574f59626c74818e82766c727f8c99988b7e726558545d686f7c8692857a6e615a50575f686d73797b7c7b78736d68615a51493f352b1f160c0100000000000000000000000000000000000000000000000913202d394653606c7885919b8f8275665c514444505c667784919da6998d8073665a4d576774818e9a8f8275665c5044382b1f120600000000000000000000000000000000000000060f19232b343c424a5153575c5e5f5f5d5954524c443d3427373f474f585f676d737775706b6054483c2f2216090000000000000000000000000000000000000207121d27313a444c565e676d757f8690949fa2a9a39f97928b837c746d686159514b433c332b23191107000000000000000000000000000000000c18232e3947535f6a7783909d998c8073737f8c8c80736b61564c41382d312d2c28231c150c050000000000000000000000000000000000000000000000000000000000050c13191d202128282322201c160c070100000000020507080a07060400000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c798592978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929ea99f92877c6f6a64626364666d717a828d8f81786d64717e8b97aa988c7f7265544a3f33281c0f030000000000000000000000000000000000000000000000000000000000000a14212d3a4754606d7a86929faca297897c6f6256493c2f24180d131f2b3744505b65737f8c99a7a096887c6f6255493c2f221606111b28343f4a54616d7a869292867a6d60544a4034281c100400000000000000000c1926333f4c5966727f8c99a5998d807366544a464e58606b717e8b8083909c9c908376685d52515c67707d8a8174685e5246392d201407000000000000000000000000000000000000000001010000000000000000000104080d1113141616151312100c0700000000000000000000000000000000000000000000000006131f2b37434e58636d737e858b8e91939a94949992918f8e91969e91847f7c7a7774716d6867646f7c8998a2a9978a7e7164574b3e3025190d010000000000000000000000000000000000000000000813202c3945525d6875828f9ca298897c6f635b5b5b5b5b5b5b5b5c5d545c60616365686a6f72777c828b918a827a6e695e564c41352c210d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895aa9a8d81746762605b5454524d46443f38353c444c555d686e7b85877c6f675d51453c31261b0f04000013202c3946535f6c7986929f96897c6f635649505a606d79838a7e71727f8c98988b7f7265584c565f6a727f8c8f82756c61575f696e7a808588898885807a716c625b51473d31281d1207000000000000000000000000000000000000000000000005121f2b3744505b6574818e9a9285796d6053464653606d7986929fa5988b7e7265584b5764717e8a9a9285796d6053463a2d2013070000000000000000000000000000000000000000071119222a30394044464b4f515252504c4746413a322b252d353e464e555d60666a696360594f44382c201407000000000000000000000000000000000000000c18232f39434c565e686e79818b92989fa6a69f99928d857e786f6a615d564f454039312a2119110b020000000000000000000000000000000007121d2b37434e5865727f8b989e9184786c77828f887d70685e53493f3327201f1c17110a030000000000000000000000000000000000000000000000000000000000000002080d1113141c1c171613100b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b66768390998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8997a1a99a8e81746a5f585656545c60686d77808c8e81746d6f7b8898a29c8f8275665b5044382b1f12060000000000000000000000000000000000000000000000000000000000000613202c3945525d687683909ca9a9998c7f7366554b4035291d110f1b27333f4953616e7b8895a0a8998c7f7266594c3f3326190c0b17232e3846525e6874818e988c7f72665c5144382c1f150a00000000000000000a1724313d4a5764707d8a97a99c8f8276665c5044464f59626c748186818f9b9f92867a6d60544b55616b7682867b6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000000001050707090a090706040000000000000000000000000000000000000000000000000000030f1b27323d46515b636c717a7e828486878887868684838184919992857a706d676764615e56606d7985929fa79a8d817467564c41362a1e110500000000000000000000000000000000000000000004111d2935414c5664717e8a98a2998c807368686868676767686868696a666d6e707274787c7f8389908b847e756d685e574d443a30231a100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8898a29c8f8275716e6c6665615e5653504a4540393a434c565e69707d8784796d60584e43372b20160a0000121f2c3845525f6b7885929e96897c6f63564945515c676f7c878479727e8b98998c7f7266594c4e58606d7883908b7e71695e686e7b848d8c8481818388857e726d62594f43392f24180d0100000000000000000000000000000000000000000000030f1b27333f495364707d8a9898897c706356494855616e7b8899a3a3968a7d7063574a54616d7a879398897c6f6256493c2f24180d0100000000000000000000000000000000000000000710181e272e34383a3e4245464544403a39353028201b232c343c434b5153595d5c56544f473d33271c100400000000000000000000000000000000000004101c2934404b555e686e7a838f939fa2a9a19e948f87807a716c666058524c443e352f33302b251d140b00000000000000000000000000000000000f1b26313c4754606d7a86929f968a7d706d7a8591857a6d655b50443b31251a100c060000000000000000000000000000000000000000000000000000000000000000000000010507070f0f0a090704000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a5464717e8b938e8275685b4f4235281c0f020000000000000000000000000000000000000000000000000000000000000c1926323f4c5965727f8c98a9a297897c6f62584e49494a50565d656c737f8c8c7f726d7985929f9f9285796c605346392d20130600000000000000000000000000000000000000000000000000000000000004111d2935414c566673808c99aba99c908376675d5145392c20130b17222d3846535f697783909da89b8e8275685b4f4235281c0f06111c2935414c56636f7c89969184796d6053463c31261a0f00000000000000000815212e3b4854616e7b8797a19f9285796d6053463d47505a606d798386929fa3998a7e7164574b4f59636f7c897f7265594c3f3226190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202b344049515a62676d7175787a7b7b7a7a797776747c8792978d80746a5f55575452515c6676838f9ca99d918477685e5246392d201307000000000000000000000000000000000000000000010d1924303a4753606d7985929f9d90837675757574747474757575767778797b7d7f8185888c8c88837e79716c615e564d453b32281e11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c7985929f9e92857f7d7b7975726e6964605b54514b433e3a444d57606b727f8c80736a5f53473d32271b0f0300111e2b3744515e6a7784919d968a7d7063574a404b555f6a73808d80737e8a97998d8073665a4d44505c666e7b8692857b6e616d7a84918c80787474767c838a7f726b60554b4035291e130800000000000000000000000000000000000000000000000b17222d3a4753606d7a8692998d807366564d4a5763707d8a96aba995887b6f625548525e68778390998c7f7366554b4035291d1004000000000000000000000000000000000000000000060c151c23282c2d313538393837332e2d29241e16111a222a31394045474c514f4a48443d352b21160b000000000000000000000000000000000000030e18212c3845515c676d7a8490959ea5a59e97918a827c736d67605b544e46413a3b4241403c362f261d1007000000000000000000000000000000000a15202c3945525d6874818e9b9c8f82766a707d888f82776c60574d42362a1f150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d394653606c77818a8c8276695c504336291d10030000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa79f9285796c6053463c3c3f444c535b606d73808d877d707683909da297887c6f6255483c2d22170b000000000000000000000000000000000000000000000000000000000000010d19242f3d495663707d8999a3ac9f92867a6d6053473a2d201408111b2b37424d576673808d99a89b8f8275685c4f4235291c0f000d1925303a4854606b778491968a7e7164584e43372b1c1207000000000000000714202d3a46525e697885919ea297897c6f6256493c3e45515c676e7c86929fa79b8e817468574e4854606b76838276695c504336291d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19222e37404850555d606468676d6e6e6e6d676b696a73808d9592877b6e62594f47464b5466737f8c99a9a095877a6d6154473a2e2114080000000000000000000000000000000000000000000008131f2c3945515d6775818e9b9f9387828281818181818181828283848586888a8c8b8986837f7b77716d66615a524c443b332920160c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b667683909da197928c8a8885827f7b76706c66605d555046423b454f59606c7782867c6f62584e43372b1f130600101c2936434f5c6976828f9c988b7e7265584b3f434e58606d7984867b7d89969a8e8174675b4e3f4a545f6a737f8c8f82756b74818e9083786c65676a6f7982877d70675d51453a2f24190d010000000000000000000000000000000000000000000006131f2c3945515d6775828f9c908377695e524c5865727f8b98a5a297877a6d6054474c566773808d9a908376675d5145392c20130600000000000000000000000000000000000000000000030b12181c1f2024292b2c2c2a2621201d19130c0810181f272f35383a4044423d3c38332b231a0f0500000000000000000000000000000000000009141f2c38434f59606d79839096a0a7a39f938e857e766e6a605d55504a423d4246484f4e4c4841392f22190f0400000000000000000000000000000004111d2935414c56626f7c88949f94887b6e6b74808d8b7f72695e53463e31271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000004060706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3744505b656c777d807c6e6255483b2f221508000000000000000000000000000000000000000000000000000000000000020f1c2835424f5b6875828e9ba89c908376655b5044372e343a4149505b606c78828f857a74818d9aa9988b7f726553493f33271b0f030000000000000000000000000000000000000000000000000000000200000814202d3a4753606d7986929faca3998a7d7063574a3d3025190d0e1a26313d495663707c8999a0958b7e7265584b3f3225180c0008131e2c38444f5966737f8c999083766a5f5347392e23180c0000000000000005121e2a36424d576875828e9ba9998c807366574d4236404b555f6a737f8c95a09e9184786a5f53474f59626f7c7a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101c252e363f434b515458555c60616161605d5558606d798390998f82766c61554b404956636f7c8997a2a7978a7d7164574a3e3025190d0100000000000000000000000000000000000000000004101d2935404b5563707d8a97a199938f8c8d8e8e8e8e8e8e8e8f909185838281807e7c7976736f6a64605c545046413a322921170e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a546673808c99a89b8e8181868c8f8b87827d78726d67615a534d453f44505b656e7b8682766a6054473b2e221508000d1a2733404d5a6673808d999a8d807467554b403c45515d67707d8a817c88959c8f8275695c4f42424e57606d7984918a7d707b87928b7e72665b5860676d7a8484796d60564c4135291d11040000000000000000000000000000000000000000000004101d2935404b5565717e8b9a95877b6e61544e5a6774818d9aa79f928578675d51454a5663707d899892867a6d6053473a2d201409000000000000000000000000000000000000000000000000070c101213181c1e1f1f1d191413110d080200060d151d24292c2d333736302f2c27211a1108000000000000000000000000000000000000020e1a26313b4854606b74818d959fa8a399928c817a716c625f58514c443f3b454d53555c5b59534b41342b21160a000000000000000000000000000000010d19242f3a4754606a7683909c9a8d8174686d798491867b6e61594f43392f24180c0100000000000000000000000000000000000000000000000000000000000000000000030709070c10131313100c070a07060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f49535b656c71736e6a5f53473a2e211408000000000000000000000000000000000000000000000000000000000000020f1c2935424f5c6875828f9ba89b8e82756853493f3327282f383f44505b666d7a848f82757e8b97aa9b8f8275655b5044372b1f120500000000000000000000000000000000000000000000020507080c0e0b0a06131f2c3845515d677683909ca9ab9a8d807467564c41362a1d110914202d3a4753606d7a8692959083796d6053473a2d20140700020f1b27323d4855616e7b889594887b6e62544a4034281c1004000000000000020e1a25303e4b5864717e8b99a49d908377695f53463a39434e58606d7883909da196887b6e6255484754606a6f6d685e5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c242d313a4145474b4b515354555453514b515c666f7c8792948a7d70675c51454653606d7985929fa79a8d817467564c41362a1e1105000000000000000000000000000000000000000000000c18242f3a4653606d7985929e9d90837f808182838587898a8d8f928683807e7b7774706c65625f5853514a423e35302820170f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3c4956626f7c8996a09d9083767a7f848b918f8a847e79716c615f5750443f49535e69737f897c6f6256493c2f231609000b1724313e4a5764717d8a979c908376675d514539404b55616c7682877c89979d9083776a564c413c45515c67707d8a918479808c99887b6e62544e555d686f7d898073685d5245392c201307000000000000000000000000000000000000000003090e1218242f3b4754616e7b8793988b7e7165544b556976828f9ca99d9083776a554b414653606d798592998a7d7063574a3d31251a0e02000000000000000000000000000000000000000000000000000406070b0f121312110d0707050100000000030b12181d1f20262a292322201c160f080000000000000000000000000000000000000005121e2a36424d57636f7c89929da7a39992877f756d68615a534e45413a3a434d575f616868645d53463d32271b0f0500000000000000000000000000000008131e2b37434e5864717d8a969f92857a6d67707d8a8f82756b61554b4035291e13080000000000000000000000000000000000000000000000000000000000000000040a0f131516181c1f201f1c181a171312100b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d384149535b606466625f574e42372b1e1206000000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba79a8e8174675b4e412d221d262d333f4a545d68707d898b7e7b8898a29e9285796c605346392d201306000000000000000000000000000000000000000003090e121415191b181714101d2935404b556673808c99a6aa9d918477685e5246392d201307131f2c3945515d6777838c89837b6e675c5145382c1f130600000b16212d3a46535f697783909a8d8074665c5144382c1f1207000000000000000914212e3a4754616d7a86939fa095887b6e6155483d313c44505c66717e8b97a9988b7e7265584b434e586062615e564c41362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a121b1f282f35393a3e4045474848474745404b545f6a737f8c959184796d60574d44505c6675828f9ba89d918477685e5246392d2013070000000000000000000000000000000000000000000007121f2c3844505c6674808d9a9e91847873747576787a7c7e808385898d8e8b8884807c78726d68605d555049413a322921180e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000615222e3b4754606a7784919d9f93877b6e72797e848d92918b847e766e69625a504a424d57606d79848175685b4f4235281c0f000815212e3b4854616e7b87969f92867a6d6053473a39434f59626f7c878285929f928578685e524639404b55616b76828f8c7f83909386796d6053464c56606b7581857a6d6054473a2d21140700000000000000000000000000000000000000050d141a1e21212d3946525e687783909b8e8275665c515c677884919ea89b8f8275685c4f4245515c6775828f9a8d807467574d42362a1e1205000000000000000000000000000000000000000000000000000000000002050605040000000000000000000001070c101314191e1c171614100b0500000000000000000000000000000000000000000714212d3a46535f6976838f9ca4a49a92877e726d615e565047433c3535414c555f696e75746f64584e43382c21160b000000000000000000000000000000010f1b27323c4653606d7884919e988c7f73676c75828f8a7d70675d51453a2f24190d02000000000000000000000000000000000000000000000000000000000003090e161b1f222323282c2d2c28232723201f1c17110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f3841495053575955534e453c31261a0e02000000000000000000000000000000000000000000000000000000000000010e1a2734414d5a6774808d9aa79b8e8174685b4e413528141b222d38424c56606b74818e857a85929fa197887b6f6255483c2f22150a00000000000000000000000000000000000000060e141a1e212226282423211d18242f3d4a5764707d8a97a9aca095877a6d6154473a2e211407101d2935404b5564717e7f7c786e695f554b4034291c1004000005121e2b37424d5766727f8c999285796d6053463a2f24180c000000000000000713202d3946525e687683909ca7998c7f7266584e4338343f4a54616e7b8897a19b8e817568574d42464e545654524c443a3025190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090d161d24292c2d2f34383a3b3b3b3a3939424e58606d788390968c7f73695f53464a5465717e8b98a8a095877a6d6154473a2e2114080000000000000000000000000000000000000000000003101c28343f4a54626f7c8895a096887c6f676869686d6f717376797c8084898e918d89847f7a736d67605b534c443b332920170d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e5865727f8c97a29a8c7f73676d727980868f94918a827b716c605b544a45515c676f7c7b6e6154473b2e211408000714212d3a46535e697784919e998a7d7063544a3f343e47535f6a74818d87929f98877a6d6154473a39434f59626f7c8792859095928578675c5145434f59616e7b847c6e6255483b2f221508000000000000000000000000000000000000090f171f252a2d2e3236414d5666737f8c999285796d6053606d7986939fa79a8d8074675a4d41404b5565727f8b98918477695e53463a2d21140600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070d110f0a090704000000000000000000000000000000000000000000000815222e3b4855616e7b88949fa89f93887e716c625b524c443e37312c3945515d676e7b8281746a6054483e33281c10050000000000000000000000000000000a151f2b3844505c66727f8c989e9285796d616e7b869184796d60554c4135291e130800000000000000000000000000000000000000000000000000000000060d141a21272c2f302e34383a38342e34302d2b28231c19130c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262f383f44464a4d4847423c332a20150900000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a69b8f8275685c4f422d2217111c262f3a444f59606d7a848d8083909ca9988b7e7265584b3f31261a0f0200000000000000000000000000000000020a0f181f262a2d2e323531302d2822212e3b4754616e7b8797a1ada7968a7d7063574a3d302417080c18242f394956616c7172706c665f574d43392f23180c000000020e1a26313c4855626f7b8896978a7d7063554b4035291d100400000000000005111d2a36414c5665727e8b99a39d9184776a6054473a303846535f697885929e9e918478695e52463d4347494746413a32291e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181d202123292c2d2e2e2e2d2c303c44505c666e7c869292867b6e615a504854616e7b8795a0a7978a7d7164574a3e3025190d01000000000000000000000000000000000000000000000c17232e384754606a7784909d998c7f736657565d60626466666d7073787d81878e93918c86807a716c655e564d453b33291f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d4754606d7a85929f9e9285796d60676d737b828c92948f867e746c665c544a4b55606a6f6e695e52463a2d2014070005121e2a36424d576774808d9a9a8e8174665c50443837434e58616d7a869299a395897c6f6256493c313e47535f6a75818e92989e9285786b554b403d46535f696e7a6e6a5f53473a2e211408000000000000000000000000000000000009121b212931363a3b3f413d4955626f7c889697897c6f6256626e7b8899a4a5988c7f7265594c3f3b4855616e7b889695877b6e6154483b2e23170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a6a0968d80736c615a5146413a322b262d3a4754606d7a848f897c6f62594f44382c21160b00000000000000000000000000000003101c28343f4a54606d7a85929f978c7f72676973808d8c7f72675d51453a3025190d010000000000000000000000000000000000000000000000000000070f181f262a32383b3c41404546454043403d3a38342e2a251e18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141d262d3337393e403b3a37312a21180e0300000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97ab9c8f837669544a3f33281c0f141d28323d45515d67717e8a87828f9ca89b8e827568584e43372b1f1206000000000000000000000000000000010a141c212a31363a3b3f413e3d39332c242d3a46525e697885919eaba6998d8073665a4d403025190d07121d2d3945505a61646563605b544d453b31271d1207000000000915212e3a47535f6a7784919b8e8175675d5145392c1f1306000000000000010d1925303a4754606d7a86929fa095897c6f62564c413636424d576976828f9ca196877b6e6154473b373b3c3a3936302920170d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d111314181c1f20212221202028343f4a545f6a727f8b938f82756c61554c535e697784919da79a8d817467564c41362a1d11050000000000000000000000000000000000000000000006111c2b37434e5866727f8c999d908377695e5252545657545c6063656c70757b81879095928d857e776d685f574d453b31271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202c3945525d6873808c97a1978c7f72675d60696e777f869196928b80786d665c50444e586062615e574d42362a1e110500020e1a25313d4a5763707d8a979e9285796d6053463a313c46525e6873808c97a1978a7e7164574b3e3137434e58616e7b87929f9f9285786c564c4137424d575f676d675f584e43372b1f120600000000000000000000000000000000060f1b242d333b4246484c4e4a48535f6a788491998c8073665664707d8a97aba4978a7d7164574a3e3a47535f69778491988b7e7165544a3f34281c10030000000000000000000000000000000000020507080c101111100d0909070300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba79e9184796d605a50483f3630282025323f4b5865727e8b969083766b6155483e33281c10040000000000000000000000000000000b17232e3845525d6873808d989e92857a6d606d7a8592857a6d60564c41362a1d120700000000000000000000000000000000000000000000000000071119212931363d4348494d4b5153514b504d4a46443f38363029241d150d0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141b22272b2d31332f2e2b2620180f060000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8899a39d908477665b5044382b1f120b16202935414c55616c76839086929fab9e9285786a5f53473a2e2114060000000000000000000000000000000a131c262e333b4246484c4e4b49453e362c2a36424d576975828f9ca8a99c8f837669564c41362a1d1105111d28343e48505658595653504a423b33291f150b010000000006121f2b37434e586774818d9a9286796d6053473a2d22170b000000000000000813202c3945525d6875828e9ba79b8e8174685e52463a313f4c5966727f8c99a3978a7d7064574a3d312e2f2e2d2a251e170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070c1013141515141417232e38424e58626d75828f948a7e71675d514d576773808d9aa99d918477685e5246392d20130600000000000000000000000000000000000000000000000f1b27323c4754616e7b87939f95877b6e61544847494b4a5053535b6063696e747c838d9397918b827a6e695f574d43392f23180c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56606d7a85929e9e9184796d60585f656c727c849095928d81786d605b51464e545654524d453b30251a0e0200000913202d3a4653606d7985929f97897d7063564c413636414c56606d7a85929e998c7f7366594c402e323c46535f6974818e999f928679685d5246393c454d555d605d554e463c31261a0f02000000000000000000000000000000030e18212d363e454d5354595b57554f586774818d9a908376685e65727f8c98a5aa95887c6f6255493c37424d576774808d9a8e8275665c5044382b1f120600000000000000000000000000000002080e111414191c1e1e1d1a1615130f0b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9caa988c7f72665c51483e362a251e162734414d5a6774808d9a958a7d7063594f44382c20150a00000000000000000000000000000006111c2935414c56616e7a86929f978c7f736867727f8c8c8073685e5246392f23180c000000000000000000000000000000000000000000000000060f19232b333b42464f54565a545c605c545d5a5653504a46413a352f271f17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f20242622211e1a150e06000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86929f9f9285796c605346392d2013060e19242f3a43505a636f7d899299a3ada197887b6e6255483b2d22170b0000000000000000000000000000050e1c252e3840454d5355595b575550483e332830404c5966737f8c99a6ab9e928578685e5246392d2013070c17222d363e45494b4c4946443f382f2921170d030000000000030f1a26313e4a5764717e8a97988a7d706453493f33271b0f0300000000000004111d2935414c5663707d8995a09f92867a6d61554b41353b4854616e7b86929f998c807366594d4033262321201e19130d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004060708080806111c26303c46515b616d7a849191847a6d60584e56636f7c8997a1a095877a6d6154473a2d22170b00000000000000000000000000000000000000000000000a15202d3a46525e6976828f9c988b7f7265564c413c3e3f4446495053575f616a6f7880889299948f847b6e695e554b40342920150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a45525d68717e8b959f978d80736a5f545b606a6f7b839094938e81746d62584e4347494746423b33291f140900000006131f2c3845515c6674818e9a9b8e8175685e524638303a45515d67727f8c9a9b8e817468554b40342a36424d57626e7b87939f99877a6d6154473a333c434b5153514b433c342a20150a000000000000000000000000000000000915202a333e4850575e6165686361595763707d8a9893867a6d616774818e9aa7a298877a6d6154473a313d4a5663707d89989285796d6053463a2d2013090000000000000000000000000000050d14191e202126292a2b29272322201b16100b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2a3744505d6a7783909da298887b6e61544b40362c2419131a2734414d5a6774808d9a9d9083776b6155483c31261b0f010000000000000000000000000000000d19242f3a46525e6874808d989f92867a6d616d798491867a6d61554b4034291c100400000000000000000000000000000000000000000000020b18212b353d454d53596063676a666d666b696763605c54524c4540393128221c140b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1213171a1514120e0903000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515d677784919da398887b6e6155483b2e22150608131e28313e4854606b75828f9ca6b0a9988b7e726553493f33271b0f03000000000000000000000000020c16202e37404a52575f61656864615a5045392d313e4a5764717d8a97a4ada197877a6d6154473a2e21140706101b242d34393d3e3f3d3938332d261d170f06000000000000000a14212e3b4754616e7a87969b8e8174655b5044372b1f1205000000000000010d1924303a4854606b7783909da3988c7f73675d51453b3a46535e6974818d969b8f8275685c4f4235291c1413110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e2a333f46525e68707d88938d80746a605453606c7985919ea7978a7e7164544a3f33281c0f030000000000000000000000000000000000000000000005111e2a36424d5664717e8a979c8f8276685d5245392e34383a3f44464d53585f666d737e87929a9691847b6e675c51453c31261a0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2935414c56606c788390989f92877c6f665b50585f696e79829096938b7f726a5f53473d3c3b3a36302920170d0200000004101c2834404b5463707d89969f92867a6d61544a3f3435414b55606d7a87939d908377675c5145382c313b47535f6a76828f9c95897c6f6256493c313139404547454039312a22180e03000000000000000000000000000000020f1a26313c46505a61696e7274706b6153606d798592998a7e71646976838f9ca99f928579685e5246392d3a4653606d79859297897c6f6256493c3025190e02000000000000000000000000080e171e252a2d2e323637373634302f2c27211c170e08020000000000000000000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683909c9f928578695f5342392e241a12081926333f4c5966727f8c99a0958a7d7063584e43372b1d130700000000000000000000000000000008131e2a36414c56616e7b86929f988d81746a67727e8b8c8073675c5145382c1f160a000000000000000000000000000000000000000000000a141d2a333d474f575f616b6f7477797979787673706d66615e56514b433d332d261d150d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000305060b0d080806020000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b556874818e9baa978a7d7064574a3d2e23170c010c161f2c38444f59626f7c88949faba89b8e8275655b5044372b1f120500000000000000000000000008131e28323f49525c63696e7274716c6155493d302f3c4955626f7c8895a9b3a996897c706356493d3023160a0009121b22282d303132302d2b28221c140b0600000000000000000714202d3946525e687884919e9285786c605346392d2013060000000000000008131e2c38444f5964717d8a959f9e92857a6d60564c4136424d57616d7a848c8f8f83776a5d5144372a1e1107050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18212935414c56606b73808d93877c6f665c515b6674818e9aaa9b8e8175665b5044382b1f120600000000000000000000000000000000000000000000020e1925303b4653606d7985929e92867a6d6054473a30282c2d33373b42464e545c606c717e88939f969083796d60574d42372b1d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a44505b666e7b86929f999082786c60594f565e676d7a84919792867c6f62594f44382e2d2a251f170e0500000000000c18232e3a4653606d7984919e998c7f72665c5044382f3a45515d677784919d9286796d6053463a2d2b37424e576875828e9b988b7f7265574d42362a2f35393a39352f281f180f060000000000000000000000000000000006121f2b37434e58616c717b7f817d7063575c6775828f9b8e817468677885919eaa9d9184776a564c41362c3845515c6675828f998c807366564d42362a1e1105000000000000000000000008121a20293036393b3f43444443403c3b38322d282219140d05000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9c9e9184776b574d4234281d10080a1623303d495663707d8998a29c8f82766a5f53473a2f24180d010000000000000000000000000000010e1925303b46525e6974808d989f92877c6f626d79849185796d6053473d32271b0f00000000000000000000000000000000000000000006111c262f3c454f5960696e767c80848586868583807d79736d68605d554f443f382f271f160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a0d0f0c18242f3e4b5864717e8b97a8998c7f7366544a3f34281c1003040d1b27323d4754606a76828f9ca7ab9e9285796c605346392d2013070000000000000000000000010d1925303a44515b636e737b7f817e7164574b3e312d3a4754606d7a8797a1ada4978b7e7164584b3e3125180b00000910171d2124252623201f1c17110a0200000000000000000005111e2a36414c566875828f9b97887c6f6255493c2f2216090000000000000002101c27333d4653606c78839099a2978c8073685e5246393b46525d686d7a7f8282807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1925303a444f59606d7883909083796d60585463707d8a98a29e9285796c605346392d201309000000000000000000000000000000000000000000000009141f2c3845515c6674808d9a998b7e7164564c4135291f22272b31363c424a505a616c737f8c949f958d8073695f5347392f24180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28333f4a545f69717e8b939d948c7f736b60574d555d686e7b8592998f82766b6054483b2f221e1a140d0500000000000007121f2b3844505c66737f8c989e9184796d60544a3f3335414b556874818e9b99897c6f6256493c2e2631424e5b6875818e9b9c8f8276695e53463a2f24292c2d2c29241d160d0600000000000000000000000000000000000814212e3a47535f6a717e868c897c6f63565565717e8b9a9185786a6d7a8697a1a89c8f8275695c4f42302834404b5465717e8b9a908377695e52463a2d2014070000000000000000000007111a242c323b4146474c4f5151504d4948443d39332a251e170e070000000000000000000000000000000000000000000000000000000000000000000000000000010e1a2734414d5a6774808d9a9e918478665c5044382b1f12060713202d3a4653606d7986929f9f94887c6f62554b4035291d110400000000000000000000000000000008141e2a36424d57616e7b86929f998f82766c66727f8c8b7e7165594f43382c1c120700000000000000000000000000000000000000000b17222d38424d57606b707b82898d9192989292908d8985807a736d676059504a423931281f160d04000000000000000000000000000000000000000000040607090908060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b101316161a1b1415212e3b4854616e7b8796a09c8f8276665c5044382c1f1206000b16212b37434e5863707d89959faba197887c6f6255483c2e23180c000000000000000000000005111d2a36414c56636d7380868c897c706356493d302c3945525d687885929eaba6998c7f7366594c403326190d000000060c11151718191613120f0b060000000000000000000000020e192530404d596673808c99988c7f7265594c3f3025190e02000000000000000b161f2b3744505b656f7c87939c9a92857a6e6154473b35414c565d686d737576736e63574b3f3225190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323d44515c666e7b85928c80736a5f55606d7985929fa197897c6f6256493c31251a0e020000000000000000000000000000000000000000000004101c2834404b54626f7c88959c8f8275685d5245392c20171b1f262a30383f44505a606c778390999f92877b6e62554b4035291d100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b17222d38424d57626d74818e949f93877d70695e554c565f69717e8a9594897c6f6356493c3025190e09020000000000000003101c28343f4a54616e7a86929f968b7e71665b50443a2f3f4b5865727e8b98988c7f7265544a3f342834414e5a6774818d9a9f93877b6e61554b4035291d2020201d18120c040000000000000000000000000000000000000815222f3b4855626e7c879299877b6e615454616e7b879397887c6f6f7c8895a9a79a8d8074675a4d4134232e3b4754616e7a879395877b6e6154473b2e23180c000000000000000000020b19232c363e444c5254595c5d5e5c5a56544f49443e3630292019100800000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b979f9285796d6053463a2d20130906131f2c3845515c6775828f9ca69a8e8174675d5145392c201308000000000000000000000000000000020e1a25303b46525e6873808d979f948a7e71686d7a859184776b605448392e23180c00000000000000000000000000000000000000030f1c28333f4a545f69707d858f949a97928e8c8b8b8c8f928d868079706b605b544b433a31281f160c03000000000000000000000000000000000000070c10131315161513120f0b06000000000000000000000001020201000000000000000000000000000000000000000000000000000000000000000002080d161c20222327282120212d3a46535e697784919e9f9285796d6053463a2d20130700040f1b27323c4854606b7683909da9a9988b7f7265544a4034281c1004000000000000000000000713202d3946525e68727f8c9293867a6d6053473a2d2935414c566a7683909da9a79a8d8174675a4e4134271b0e010000000005080a0b0c0a0606030000000000000000000000000000081825313e4b5864717e8b979c8f827569564d42362a1e110500000000000000030f1b27333f4953606a737f8c908d8781786d6053463a303a444c565d6066696966635c52473b2f23160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16202834404a545f69717e8a92877c6f675c5c6675818e9ba9998c807366574d42362a1e120500000000000000000000000000000000000000000000000c18232e3947535f6a7783909d92867a6d6054473a3025190f141a1e262e343e44505b656f7c87939f998e8174675d5145392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3c45505a606d798290959991857b6e675d554d57616c7683909b8e817468564c4135291d11050000000000000000000b17232e3846525e6874818e989d9184786c60554b40353c4855626f7b88979c8f8275665c5044382b33404d5a6673808d99a4998c8073675d5145392c20131413100d0701000000000000000000000000000000000000010e1b2734414e5a6774818d9994877a6d6154525e68778390988c7f72717d8a97a4a5988b7f7265584c3f32252d3946525e68778390988b7e7165544b4034281c100400000000000000000a141d2b353e4850565e6165696a6a6967636059555046413b322b221a1209000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8795a098887b6e6255483b31251a0e04101c2834404b5564717e8a97a29f92867a6d6053473a2f24190d0100000000000000000000000000000009141f2a36414d56606d7a85929e9e92857a6d6874808d897c6f63544a4034281c100400000000000000000000000000000000000006121f2b3844505b666e7b8692979d928d85817f7e7f808285898e8d847d736c665d554c433a31281e150b00000000000000000000000000000003090e12181c1f20222321201f1b17110e0903000000000305060a0d0f0f0e0b080705020000000000000000000000000000000000000000000000000000050c131921272c2f3033352e2d2a2a36424d576774818e9aa298897c6f6256493c2e23180c00000a15202c38444f5964717e8a96a1a89c8f8275665c5144382c1f1206000000000000000000000714212e3a4754616d7a86929e918578675d5145392c242f424f5c6975828f9ca8a89b8e8275685b4f4235281c0f020000000000000000000000000000000000000000000000000000000a1623303d495663707c89969e918578695e52463a2d20140700000000000000000b17222d38414e58636d737f83807b756d665c5044382c323a434c5254595c5c5957524940352a1f130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18232e39424d57616c74818d9083796d605963707d8a97a19d908377695e53463a2d211408000000000000000000000000000000000000000000000007121d2b37434e5865727e8b98998b7e7165564c4135291d11090c151c2328333f49535f6a76828f9c9f9285796d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2a333f45515c676d7a839096979083796d675e56505a64717e8a99918478685e5246392d20130700000000000000000006111c2a36414c56616e7b86929f968b7e71675d514539394653606c7885919e9285796d6053463a2d323f4b5865727e8b98ab9f92857a6d6053473a2e23170c060401000000000000000000000000000000000000000004111d2a3744505d6a7783909d95887b6e62554d566673808c998f8276737f8c99a6ab968a7d7063574a3d30242a36414c5666737f8c998f8275665c5145382c1f13060000000000000006111c262f3d47505a61686e7276777776736f6b64615a524c443d342c241b120a0a09070705010000000000000000000000000000000000000000000000000000000000000714212d3a46535e697784919d988b7f7265574d42362a1e13080c18232e3a4653606d7985929fa2988a7e7164564c4135291d1104000000000000000000000000000000020e1925303b45525d68727f8b96a0978e81746b6f7c888d8174665c5144382c1f12060000000000000000000000000000000000000613202d394653606c788390989e938d807a757271727375797d82878f8780786d675d564c433930271c120700000000000000000000000000060e141a1d23282c2d2f2f2e2d2b27221b1a150c0701060b0f1213171a1c1c1b181514120e09030000000000000000000000000000000000000000000000050e161e252a33383b3d40423b3a3630313e4b5764717e8a97a8988c7f7265554b4034281c10040004101b27323d4653606d7984919eab9f9285796d6053463a2d201308000000000000000000000c1825323f4b5865727f8b989d9184776a554b4035292835424f5b6875828e9ba8a89c8f8275695c4f4236291c0f030000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a197877b6e6154473b2e211408000000000000000006111b262f3d46515b636d7276736e69605c544a3f342828313a4145474c4f4f4d4b4740372e24190e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c27303c45505a606d7983908d80736b60606d7985929e9f95877b6e6154483b3025190d0100000000000000000000000000000000000000000000000f1b26313c4754606d7a85929c8f8276685e5246392d201409030a1117222d38414e5864717d8a97a2988a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b18212834404b555d686e7b849095959083796e68605954606d7a869396877a6d6154473a2e211407000000000000000000000d1925303b46525e6973808c959c91847a6d6053473a3744505b6574808d969286796d6053463a2d303d495663707c8999a3a2978c7f7266544a3f34281c10030000000000000000000000000000000000000000000005121e2b3845515e6b7884919e96897c6f63564956626f7c899792867a74818e9ba7a399887b6e6255483b2f2225303c4955626f7c88969285796d6053463a2d22170b000000000000000b17222d38424f59616c717a7f82848483807c77706c615e564e463e362d241b1617161413110d08050200000000000000000000000000000000000000000000000000000005121e2a36424d5766727f8c999c8f8276695e53463a3025190d07131f2c3845515c6774818e9aa89c8f8275685d5245392c2013070000000000000000000000000000000008141f2935414c56606d7884919d9d938a7d706a77839085796d6053463a2d201308000000000000000000000000000000000004101c2834404a5464707d8a95a0998e81756d6766656566666d70757b828a8c82796d685d554b42392e23180f060000000000000000000000080f181f262b2e34383a3c3c3b3937332d2b261f18120b11171b1f2023272828272522211e1a14100b050000000000000000000000000000000000000000020b16202830363d4448494d4e4746423b333b4754616e7b8796a09c8f8276675c5145382c1f130600000b161f2c3844505c66737f8c99a4a298897c6f6356493c3025190d010000000000000000000f1b2835424e5b6875818e9b9d9184776a5e514430252834414e5b6774818e9aa7a99c8f8376695c504336291d10030000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a996897d7063564a3d3023170a0000000000000000000a141d2b344049515b63666966615f57504a42382e231f282f35393a404243403f3b352e251c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2a333e45515c676e7b8592887d70685e6674818d9aa7988b7f7265564c41362a1d110500000000000000000000000000000000000000000000000a15202c3945515d6774818e9a92867a6d6154473b31251a0e020006111b262f3c4754616d7a8796a0998c7f7366594c403326190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18232e39434c565e696e7a838f949590837a706b615e5d6877849195887b6e6255483b2f2215080000000000000000000008141e2a36424d57606d78838e8f8b857b6e6154473b333f4953616e7b8488867f73675c5145382c2d3a4753606d7a86929fa99e918478665c5044382c1f12060000000000000000000000000000000000000000000004111e2a3744515d6a7784909d988b7f7265544a53606c788591998a7d7683909da99f9286796d6053463a2d20202d394653606c78849198897d706353493f33271b0f030000000000030f1c28333f4a54606b717e858c8f90918f8d89837d756e68605850483f362d2223242321201d1914110e090200000000000000000000000000000000000000000000000000020e1a25313b4754616e7b86929f93877b6e61564c41362a1f150b101c2834404b55636f7c8996a09f92867a6d6054473a2d21140600000000000000000000000000000000020d19242f3a44515c66707d8a939e9e91857a6d727f8c8a7d7063574a3d3025190d010000000000000000000000000000000006121f2c3844515c6676828f9c9f92867b6e615d555858545c60636a6e757e858f827a6d675d544a40342821180b0200000000000000000008111a212a31373940454648494846443f38373129241d151b22272b2d3034353534322e2d2a261f1c170e09030000000000000000000000000000000000000a141d28323a41464f54565a5b54524d453b3a46525e697784919e9f9286796d6053463a2d201308000003101c28343f4a54616e7a87939faa998c807366564c41362a1e1105000000000000000000101c2936434f5c6976828f9c9e9185786b564c41362a2734414d5a6774808d9aa7a99d9083766a5d5043372a1d10040000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8793a0988b7e7265584b3f3225180c000000000000000000020b19222e3740495157595d5a55534d443f3830261c161e24292c2d33363633322f2a241c130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18212934404b555f69707d8a91847a6d65636f7c8996a19c8f8376685e5246392d201409000000000000000000000000000000000000000000000004111d2935414b55626f7c8895998b7e7165574d42362a1e120500000a14202d3946525e687784919e9b8e8175685b4e4235281b0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303a444d575e686d79828c929590847d746e69666677839099887b6e6155483b2e22150800000000000000000000020e1a25303b45515c666d7a81827e7a6e685e5246392d3846525e696e797b7a736d63554b4034282c3945515d6776828f9ca69f9386796d6053463a2d20130700000000000000000000000000000000000000000000020f1c2835424f5b6875828e9b9b8f8275665c50505b6574818e9a8d807885929eaa9d918477665c5044382c1f1f2b3744505b6574818e9a8d8174655b5044372b1f1205000000000006121f2b3844505b66707d8792989c9d97929192908a827a6f6a615a51483f362f3031302e2d2925201e19140d08010000000000000000000000000000000000000000000000000914202d3a46525e6974818e99998d8073685e52463d31271d120c18232e394653606c7884919ea3998a7d7164574a3e2e23170c000000000000000000000000000000000008131e2834404a54616b75828f98a1978f82756e7b888d817467564c4135291d1105000000000000000000000000000000000713202d3a4653606d7985929f9b8f8275695e524b4b4c4a5053575f626c707b838f83796d665c51443e332a1d140a0000000000000000060f1a232c333c42464b515355565453504947423c352f271f262d3337393d404242413e3b3a36312d28211a150e060000000000000000000000000000000006111b262f3a444c525960636668615e574d4236424d576774818d9aa298897d7063564a3d3025190e0200000c17232e3846525e687783909daa9d908377685e5246392d2013070000000000000000000f1c2936424f5c6975828f9c9f928579685e5246392d2633404d596673808c99a6a99c908376695d5043362a1d10030000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0998d8073665a4d4033271a0d0000000000000000000007101c252e3740464b4c504d4846423c342e261e150c13191d20212629292625231f19120a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18232f39434d57616c73808d8f82776c606c7884919e9f92867a6d6154473b3025190e020000000000000000000000000000000000000000040a0f1318242f3a47535f6a7683909c8f8376695e53463a2d21160b000005111d2a36414c56697683909c9c8f8275695c4f4236291c0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e28323b454d565e676d777f8790959187817b75727278859293867a6d6053473a2d201407000000000000000000000009141f2834404b545e686d7575726d685e564d41362a36424d575e666d6e6d67635b5143392e232935404b5564707d8a949d9d908377665c5044382c1f120600000000000000000000000000000000000000000000000c1825323f4b5865727f8b999e9285796d6053495364707d8a9991847a8797a1a89b8e817568544a3f34281c1b27333f495363707d8a989184786c605346392d20130900000000000613202d394653606c78839199a299938b8584868c928f857c716c625b51483e3b3d3d3c3a3935302d2a251f19130c04000000000000000000000000000000000000000000000005111e2a36424d56616e7b87929f92867a6d61584e43392f241812121f2b3744505b6573808c99a79a8e817467544a3f34281c100300000000000000000000000000000000010c18232e39424f59616e7b86929f9e938c7f727884918477685e5246392d201307000000000000000000000000000000000916222f3c4955626f7c8898a2988b7e7165574d423e3f3f44464e535a61696e79828e82786d605a50453c2f261b1106000000000000030e18212c353e454d53555c60626261605b53534d45403931292f383f44464a4d4f4f4e4b4846423b39332b2620180f060000000000000000000000000000000b17222d38414c565e616b7073756e695e52463a3e4a5764717d8a99a39a8d807367564c41362a1e1105000006111c2a36414c566773808d9aab9f93877a6d6154473a2e23180c0000000000000000000e1b2834414e5b6774818e9aa298877a6e6154473b2e2633404d596673808c99a6a89c8f8275695c4f4236291c0f030000000000000000000000000000000000000000000000000000020a15212e3b4854616e7b8794a19a8e8174675b4e4134281b0e00000000000000000000000a131c252e353b3e3f43403b3a373128231c150c03080d111314191c1c1a1916130e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313b45505a606d78828f8c7f726b6573808c99a3998b7e7165564d42362a1e110500000000000000000000000000000000000000070f161b1f22232b37434e5865717e8b9793877b6e6154483d32271b100200010d192530424f5c6875828f9b9c8f8376695c504336291d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c162029333b444c555d656c737c838b91938d86827f7f828f97908376675d5145392c2013060000000000000000000000030c18232e39424c565e61686965605d564d443b3025303b454d545c6062605d5551494030271d242f3a4955616c75828c90908a7e7164544a3f34281c100300000000000000000000000000000000000000000000000714212e3a4754616d7a86929f97897d7063564c53606d7a8692968a7e8a97a9ac998c7f7266594c3f2e231717222d3a4753606d79859296897c6f6256493c31261a0e02000000000a1723303d4a5663707d8995a09f93877e78777a7f858f91877e726d625a504648494a494746413b3a363029241e160d0700000000000000000000000000000000000000000000020e1925303b46535f6973808d96988d81746a60554b4035292418121b27333f4953616e7b88959f9d908377665c5044382c1f1206000000000000000000000000000000000007121c27303e46535e69727f8c949f9f92877d75828f877a6d6154473a2e211407000000000000000000000000000000000a1724313d4a5764707d8a97aa95897c6f6256493c302e34383c424750575e676d78818d80746c61574d41382d22170b0100000000000915202a333e474f575f61676d6f6f6e6c65625f57514b433b333b41495053565a5b5b5a5855534d49443e37312a2117110a02000000000000000000000000030f1b27333f49535e686d767d80817b6e6154473b3a4754606d7a86929f9d908377685e5246392d2014070000000e1925303d4a5763707d8a99a4a49a8b7e7164544a4034281c100400000000000000000c1925323f4c5865727f8b98a796897c6f6356493c2e2333404d5a6673808d99a6a89b8e8275685b4f4235281c0f0200000000000000000000000000000000000000000000000000020b141b222f3c4955626f7c8895a29b8e8275685b4f4235281c0f0000000000000000000000010a131c232a2f323336332e2d2b261f17110a030000010406070d0f100d0c0a070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f29333e44505c666d7a8491877d70696e7b88949f9c8f8376695e52463a2d20160a00000000000000000000000000000000000109101920272b2e2f33323c4753606d7985929a8c7f7366594f44382c1e13080000081c2835424f5b6875828e9b9c8f8275695c4f4236291c0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e172029323a434c535b606a6f787e858a8f928f8c8b8f9490877d7063554b4035291d110400000000000000000000000007121d27303a444c52545b5c5854524c443b32291f29333b424b51535554514b4340372e1e151d2d3944505a606d787f83837e716c615542382e23170c0000000000000000000000000000000000000000000000000713202d3946525e6874818e989b8e8175685e52515d6776828f9c9083909da9a49a897d7063564a3d302317131f2c3845515c6775828f998d807366574d42372b1e1206000000000e1a2734414d5a6774808d9aa79a8d80746c686d727a828c92877f726c6259535556575654524c4746423b352f281f1910070000000000000000000000000000000000000000000009141f2b37424d57606d7984919a93877c6f675d51453f3628231d17222d3847535f697683909d9f9286796d6053463a2d2013070000000000000000000000000000000000000b151e2a36424d57606c78829098a29992867d828f897c6f6356493c30231609000000000000000000000000000000000b1825323e4b5865717e8b98a194887b6e6155483b2e23282c31373e454d555d666d78828b7e71695f53493f33271d120700000000020e1a26313c454f5961696e75797b7c7b79746e69605d554d453c454d535b60636768686765615f57554f47423c3328231c140c03000000000000000000000005121f2b3744505b656d7a82898d8578695e52463a3945525d687683909da095877a6e6154473b2e2114090000000814212d3a4754606d7a86939fac9b8e8275665c5144382c1f120600000000000000000815222f3b4855626e7c8895a0988b7f7265544b40342834404d5a6773808d9aa6a79a8d8074675a4d4134271a0e01000000000000000000000000000000000000000000000000000a141d262d343f4a5464717d8a97a49b8f8275685c4f4235291c0f000000000000000000000000010a12181e2225262a2722211e1a140c06000000000000000000030300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d182128343f4a545e686f7c8692857b6e697683909c9f93877b6e6154473d32271b0f020000000000000000000000000000000009131b222b32373b3c403c3b45515d6773808d999184776b6054483a3025190d0006101c2934404b556976828f9c9b8e8175685b4e4235281b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e172029313a4149505860666d72797e8286898a8b8a88837d706b6054433a2f24180d01000000000000000000000000000b151e29323a4146474f4f4b4745413a3229201720293039404546484745413a312e251c0c1c28333e44515c666d727776716d625a504530261c110600000000000000000000000000000000000000000000000005111e2a36414c56616e7b86929f92867a6e61564c5565727f8b989590959fac9f93867a6d6054473a2d2114101c2934404b5564717e8b99918477695f53473a2e21140900000000101d2a3643505d697683909caa95897c6f625d61686d77808b93887e716c616062636463615e5654524d45413a312b22191007000000000000000000000000000000000000000000020e1a26313c45515d67707d8893999184796d605b51483f342e271e1b2b37424d5765727f8b9aa399887b6e6155483b2e221508000000000000000000000000000000000000030c1a25313b44505b666e7b86929fa298928a8f948a7e7164574b3e3124180b000000000000000000000000000000000c1925323f4c5865727f8b98a195887b6e6255483b2f221c1f262b333b434b545c666d7984867b6e655b5044392f24180c0100000006121e2b37424e57616b707b818588898785817b746d675f574e464d575e656c7073757574716e69646159534d453f342e261e150c03000000000000000000000613202d394653606c778290948f827669574d423635414c566673808c99a7978b7e7164584b3e31261a0f0200000613202c3945525d687783909daa9f9285796d6053463a2e23170c00000000000000000814212e3a47535f6a7783909d9c8f8275665c5145382c34414e5a6774818d9aa7ab988b7e7265584b3f3225180c0000000000000000000000000000000000000000000000000006111b262f383f44505c6674808d9aa79b8e8175685b4e4235281b0f0000000000000000000000000000070d121618191d1a1514120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f17232e38424c56606a717e8a91837a6d717e8b97a2998c7f7265584e43372b1e130800000000000000000000000000000007101b252d343d4347494d4948444b55616e7b879396897c7063564c41362a1d120e1117202c3845515c677783909d998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f282f383f444e545c60676d7176797c7d7e7d7b766f6b60594f4431281d13070000000000000000000000000000030c1720293036393a42423f3a39352f2820170e171e272e34383a3b3a39352f281f1c130b17222834404a545c60666a6a65625a50483e331e150a00000000000000000000000000000000000000000000000000010d1925303a46535f69727f8b94988d8073685e5255616e7b88959f9d9fa7aa9d908477685d5245392c20130c18232f3a4754606d7a869295887b6e6255483b31261a0e02000000111e2b3844515e6b7784919ea398867a6d6053565e656c737f8892877e706a6d6e70706f6d6866615e56514c433d342b22190e0400000000000000000000000000000000000000000009141f2935414b55606b73808d93968e81756d635a5145403930292426313c4754616d7a87939f95897c6f6256493c2f2316090000000000000000000000000000000000000009141f28333f4a545f69717e8b939da29f979c988b7e7265584b3f3225180c000000000000000000000000000000000c1825323f4b5865727e8b98a295897c6f6256493c2f2316151a21293139424b545d676e7c8682776c60554b4035291d12070000000814212e3a47535f6a707d868e92989597918e8780796e695f584e555e696e787d808282817e7b76706c625f5751443f3830261e150b020000000000000000000a1724313d4a5764707d8a949b8e8175685b4e42302f3d495663707d8998a39b8e817568584e43372b1f1206000004111d2935414c566673808d99aaa298897d7063544a3f34281c10030000000000000006121e2b37424e5764717e8a959f9285796d6053463d3035424e5b6875818e9ba8a399897c706356493d3023160a000000000000000000000000000000000000000000000000000b17222d3841495058606d7984919ea79a8e8174675b4e4134281b0e00000000000000000000000000000002060a0c0c100d08070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303a444e58616c73808d8f82786d7985929f9d9083776a6054473a3025190d0100000000000000000000000000040e19222d373f464e54565956544f46535f6975828f9b8e8175685e5246392e2318191c2328323b4753606d7986929f97897d7063564a3d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d161d262d333c424a50555c6064666d6f7071716e696360594f473d321f160c01000000000000000000000000000000050e171e252a2d2e3536322d2c29241e160d050c151d23282c2d2f2d2c29241d160d0a050c18232e39424a5153595d5d585650483f362c220c03000000000000000000000000000000000000000000000000000008131e2a36424d57606c77828f9692867a6d615a535f697784919da9abb1aa9a8d807467564c4135291d110713202c3945525d6876828f998c7f7266574d42362a1e1205000000121e2b3845515e6b7884919e9f928679675d514c535b606d727f8b92867c74797b7c7d7c7a77736e69605d554e463d342b20160c020000000000000000000000000000000000000000030d18242f3a434f59606c78828f95938c7f726c625b514b423c35302b2d3946525e687784909d96897d7063564a3d3023170a00000000000000000000000000000000000000030b17222d38424d57626c74818e959fa8a3a9978a7d7164574a3e3124170b000000000000000000000000000000000b1824313e4b5764717e8a97a4978a7e7164574b3e2f24190d0f171f273039424b555f6a727f8b7e71675d5145392f24180c000004101c2834404b54626e7c8692989f99938e8c8e928d837b6f6a5f585d676e7b83898d8e8e8d8b88837d766e69625b504a423830261d140a0000000000000000000f1c2835424f5b6875828e9b9a8d8174675a4e41342d3a4753606d7986929f9e9185786a5f53473a2e2114080000010d19242f3d495663707c8998a2aa9a8e8174665c5044382c1f130700000000000000020e1a26313c4653606c7883909a978a7e7164594f4239333f4a546975828f9ca89f92867a6d6054473a2d211407000000000000000000000000000000000000000000000000030f1b27333f49535b606a717e8b96a1ab998c7f7366594c403326190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e28323c46505a606c78828f8f817874808d9aa095897c6f62564c4135291d1307000000000000000000000000000a15202b343f495158606266636059534d5763707d899592867a6d61544b40342824252a2e343b444f5963707d89999e9285796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b141b222730383f444b5153545c6062646564615f57544f473d352b210d040000000000000000000000000000000000050c13191d202128292521201d19130c0400030b12181c1f202221201d18130c04000007121c2730394044464c50504b4a453f362d241a10000000000000000000000000000000000000000000000000000000020e1a26313b44505b656e7b8491978e81756c6158576773808d9aa6b3aea2988a7d7063574a3d2f24190d04111d2935414c5665717e8b99908377695f53463a2d211509000000111e2a3744515d6a7784909d9f9386796d60534649505b626c727f8c9184818588898a8987847f7b746d6760584e463d32281e130800000000000000000000000000000000000000000007131d28313d44505b666d79839095918b7f726d605c544e45413a373236414c566774808d9a96897c6f6356493c30231609000000000000000000000000000000000000000006111c262f3c45505a606d79839096a0a7a297897c6f6256493c2f23160900000000000000000000000000000000091623303c4956636f7c8996a8998d807366564c4135291d110b0d151e27303a434e58606c778385796d60554b4035291d10040006131f2c3845515c6675818e98a29f9387817f81858c90857c6f6a5f606d7a8490959a99928d8b8c908a827b726d605c544a42382f261b11060000000000000000111e2b3844515e6b7784919e9a8e8174675b4e412d2c3845515d677683909ca197887b6e6255483b2f2215090000000813202d3a4653606d7985929fab9e9285796d6053463a2f24180d010000000000000009151f2b3744505b656f7c88939c8f82766b60544a403844505b667783909daa9c8f8276685d5245392c20130700000000000000000000000000000000000000000000000005121f2b3744505b656c717c86929fa8a3998a7d7064574a3d3124170a0000000000000000000000000000000000000000020608080b0e101011100f0d0a0707040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16202b343e44505b666d7983908e81787b88949f9b8e8174685e52463a2f24180d040000000000000000000000030f1b27323c46515b626a6f736f6b615e5754606b778390998c7f73665c51453830313036383f444d56606b75828e9b978d8073665c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171e262e34394045474b51535657585755534d48433d342b23190f0000000000000000000000000000000000000002080d1113141c1c181413110d080100000000070c101313151413110d0701000000000b151e272e34383a3f44433e3d3a342d241b12080000000000000000000000000000000000000000000000000000000009141f27333f49535e696e7c8592938a7e716a605864717e8a97a4b1ac9f9285796d6053473a2d201408010d1924303a4754616d7a869295887b6e6155483c31261a0e020000101c2936434f5c6976828f9ca499877a6e6154473f44515a636d74818e918e918a86848486898c86807a6f6a60584e443a3024190d040000000000000000000000000000000000000000010c161f28333f4a545d676d7a838f9493877f746d665f58524c4743403f3f4c5865727f8b9898887b6e6155483b2e2215080000000000000000000000000000000000000000000a141d2a333f45515c676e7a8491959f9f9285796d6053463a2d201307000000000000000000000000000000000714212e3a4754616d7a8796a19c908376685d5245392c2015171c20232428313c44505b656f7c877f72675d5145392c1f1306000713202d3a4653606d7986929fa49a8c7f7473747a808791857c6f696774808d969f9f9287817e80838a90867e746d665c544a41382d22170f0600000000000000121f2c3845525f6b7885929e9b8e82756853493f332935404b556673808c99a9988b7f7265584c3f31261a0e02000006121f2c3844515c6675828f9caca197897d7063554b4135291d110400000000000000030f1b27333f4953606a73808d9394897d70665c5147434653606c7985929fa2988b7f7265564c4135291d11040000000000000000000000000000000000000000000000000613202d394653606c777e859298a2ac9f92867a6d6154473a2e211407000000000000000000000000000000000000040a0f121415181b1c1d1d1d1c19171413110d0804010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e192228333f4a545d676e7b84918e827a83909c9f92867a6d61554b41352921160a000000000000000000000006131f2b37434e58626d727c807c756e69615e5964717e8b969184796d6053463e3d3d3f42464a50575f686f7c87939992857a6d60544b4034281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c151c23282f34383a404546494a4b4a4846423b38322b22191107000000000000000000000000000000000000000000010507070f0f0c0707040100000000000000000406070807060401000000000000030c151c23282c2d33373732312e29221b12090000000000000000000000000000000000000000000000000000000000030b17222d38414d575f6a6f7c859192867c6f6a6063707c8996a3b0a69b8e8175675c5145382c1f1306000813202d3946525e6875828f998c7f7266574d42372b1e120600000e1b2734414e5a6774818d9aab96897d7063564a3d44505b656d79828f9b91847e797878797c80858d847c6f6a60564c41352920150a000000000000000000000000000000000000000000040d17222d38424b555d686d7a828d92938b80796e6a605d56544e4d4c4b4b5764717d8a979285796c605346392d201306000000000000000000000000000000000000000000020b18212934404b555e686e7b838d92978e8175665c5044382c1f1206000000000000000000000000000000000713202d3946525e687884919e9f92867a6d6054473c32261b21282c2f303636333f49535f6a758185796d6053473a2d201407000916232f3c4956626f7c8998a39f93867a6d66676d737c8490857b6e6d7986929fa1978b7f747173777d848e8b80786d665c53493f332721180b02000000000000121e2b3845515e6b7884919e9d908376655b5044372b2f3d4a5764707d8a97a99b8f827568574d42362a1e1205000004101c2834404a5465727e8b9aa4a99b8e8175675d5145392c20160b00000000000000000b17222d38414e58606c77818f959183786d605c544e4f57626f7c8898a29f92857a6d6154473a2f24190d01000000000000000000000000000000000000000000000003101c2936434f5c6976828b9297a2aaa49a8f8276685e5246392d20130700000000000000000000000000000000070c10151a1f21222528292a2a2928262421201d1913110d080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071017222d38424b555e696f7c86928f84808d99a3988c7f73675d51453d32271b0f03000000000000000000000815222e3b4754606a727f878c89827b736d6862606d798491978b7e7164594f48494a4c4d52545c60696e7a84919992877d70685d5242392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171d23292c2e34383a3c3d3e3e3b3a36312c27211910070000000000000000000000000000000000000000000000000000020300000000000000000000000000000000000000000000000000000000030b12181c1f20262a2a2524211d1811090000000000000000000000000000000000000000000000000000000000000006111b262f3b454e585f6a6f7c859092857c726d666f7b8895a2ab9f94897c7063554b4034291c10040005111d2935414c5664717e8a97908377695f53473a2d21150a00000b1825313e4b5864717e8b97a8998c7f7366564c424d57606c77818e938f91857a6d66666d6f737a808a857c6f685d52463c32261b0f0300000000000000000000000000000000000000000006111c262f39434c565d686d78808991928d837c736d68626058595858585a65717e8b988f8275665b5044382b1f120600000000000000000000000000000000000000000000060f18232f39434c565e696e79818689857b6e61544a3f34281c10030000000000000000000000000000000005111d2a36414c566874818e9ba3998b7e7164584e43372b232c33383c3d4343403a414e58626e7b877e7265584b3f3225180c000a1724303d4a5763707d8a96aa9e928578675d5d606a6f7a8390847a707c8998a29e9285796d65666b7079818c8d81786d655b50443e332a1d140a000000000000101d293643505c6976838f9c9f9285796c605346392d2e3b4854616e7b8797a29e928578695f53463a2d2114070000000c18232e3b4754616e7b87939fac9f92857a6d6054473d32271b10040000000000000006111b262f3d44505b656d79838f938d80746e62605859606974808d9aa1978c8073685e5246392d1e130800000000000000000000000000000000000000000000000000091623303c4956636f7d87929ea1a39f93877c6f62564c41362a1d11050000000000000000000000000000030b12181c1f262b2e2f3234363737363533312d2c2924201d19130e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3a434d575f6a707d86929186939faa9e92857a6d60594f43382c1f1307000000000000000000000916222f3c4955626f7c888d92938f86807a746e6966727f8b979083776b615455565759565e61666d717b84919692877f716b61564c4130271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c12181c1f23282c2d2f3132312e2d2a261f1b160f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c101213191d1d181715110c060000000000000000000000000000000000000000000000000000000000000000000a141d29333c464e58606a6f7b838d92867f7975747e8a97a4a4999083766b605443392f23180c0000010d1925303a4653606d79859295887b6e6155483c32271b0f03000815222e3b4855616e7b8895a09c8f8376685d5246535f69727f8c938e828f8d80736a5f6063686d747d86847a6d61584e43372b1f1206000000000000000000000000000000000000000000000a141d28313a434c565d666d737d848d929087807a746f6a6866656465666c75818e93897d7063544a3f33281c0f03000000000000000000000000000000000000000000000007121d27313b444d575e676d747a7c796e695f5342382e23170c0000000000000000000000000000000000010d1925303e4a5764717d8a97a29c8f83766a5f53473b302c353e44484a4f504d474547535f6a768283766a5d5043372a1d10000b1724313e4a5764717d8a97a49e918578655b515860686e7a839082797e8a97aa9b8f8275675c5961676d757f888e81776c605a50453c2f261b110600000000000d1a2734404d5a6773808d9aa298887b6e6155483b2f2d3a46535e697885929ea197887b6e6155483b2e2215080000000714202d3a46525e697783909daaa2988b7e7265594f44382c20150a00000000000000000a141d27333f49535d676d79818d938d80766f6a69696b707b86929f9991857a6d60564c4135291d0c01000000000000000000000000000000000000000000000000000915222f3b4854606b727f8a919699928c7f736a6054443a3025190d0100000000000000000000000000060c151d23282c31373a3b3e414343444342403d3a39352f2c29241e1a140e080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d28313b454e58606b707e8792939aa4ada1978c80736b6054483b2f221509000000000000000000000815222e3b4754606a767c80858a8f928d86807b76726f798591958a7d7063616263646668696e72787e8591948f867e716d62594f443a2f1e150b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c1013181c1f202324252422211e1a140f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070c11100b0b09050100000000000000000000000000000000000000000000000000000000000000000000020b17202a333c464e5860696e788087908b85818085929ea49f93877c6f63594f4431271d120700000008131f2c3845515c67717e8b928c7f7366584e43372b1f1306000714212d3a46535f697784919d9f92867a6d61544d57616e7b86928e81798391877c6f6259565d606b707d8781756a5f53473b2e21150800000000000000000000000000000000000000000000020b161f28313a434c545c606b707a80868e928d86807c78757372717273767e88938f82756b605442382d22170b000000000000000000000000000000000000000000000000010b151f29323b454d555d60686d6f6d675f574d4230261c11060000000000000000000000000000000000000814202d3a4753606d7985929f9f94887c6f62564c4136343e474f55575c5d5a54524c4e57626f7c7c6e6255483b2f221508000a1723303d4a5663707d8996ab9f9285796c60534e565e686d7a838d807d8a96a39a8e817467554f555d606d727f888d80736c61574d41382d22170b01000000000a1623303d495663707c8996a0988b7e7165554c41352a36424d576a7783909da9978a7d7064574a3d3124170a00000005111e2a36424d5766737f8c99a7aa9d9084776b6054483c32261b0f0400000000000000020b17222d38414b555d676d788088908d827c787676787d8491989892877d70685d52443a3025190d000000000000000000000000000000000000000000000000000007131f2c38434f59626d727e848a8b877f736d63584e4332281e1308000000000000000000000000020a11171e272e34383c4347484b4e4f5050504f4c4a4745413a39352f2a261f19140b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b161f29333c464f59616c707e879298a0a8a59f92867c6f6356493c302316090000000000000000000006131f2b37434e58606a6f74797e82868b8f8d88837f7c797f8c989083766e6e6f70707275787b7f848b928e89827b716c625a50473d32281e0c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004070c101313161718171514120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e18212a343c464e575e666d737c838a8f8e8d92979c9a928d80736b6054473d321f150b0100000004101c2834404b55616c74808d9184776a6054473b2e2215080005121e2a36424d5766727f8c9aa3998b7e716457525e6975818e92867a707d898f82766b60545259616b727f877c6f6255483c2f2215090000000000000000000000000000000000000000000000040d161f28313a424a505960686d737b81868b8f8d888482807f7e7e80838b928d837a6d61594f442f261c110600000000000000000000000000000000000000000000000000030d172029333b434b51565e6162605d554d453b311e150a0000000000000000000000000000000000000006131f2c3845515c6774818d99a49b8e8174685e52463c3c464f596163696966605d564c54606a6f6e6a5f53473a2e211408000815222f3b4855626e7b8899a3a398877b6e6154474c565d686d7a848d808d9aa69c8f8276665c514b515b636d727f8b8a7e71695f53493f33271d1307000000000613202d394653606c7884919e9b8f8275675d5145382e31434f5c6976828f9ca5988c7f7265594c3f3226190c000000020e1a25303c4855626f7b8895a0aca095897c7063584e43372b20160a000000000000000006111b262f3a434b555d666c737c838b8f8985838384899196948f867e706b60564c4132281e13080000000000000000000000000000000000000000000000000000030f1b27323d47515b626c71797d7e7b736d635b51463c3220160c020000000000000000000000030b141c222830394045464e5355585b5c5d5d5c5b595754524c4745413a36312a251f17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d17212a343d474f59616c707d8691969c9b938f837b6e6154483b2e21150800000000000000000000030f1b27323c464e585f62676d71767a7e83868b8e8c898684919a958b7e7a7b7b7c7d7f8284878c8e8b86817c766e69615a50483f352c20160c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607090a0b0b0807050200000000000000000000000000000000000000000000000000000000000406070b0e100e0e0c080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f19222b343c454d545c606a6f767d83878b8e8f8f8d8980776c60594f43352b210d0300000000000c18232e3943505a606c778089887c6f6255493c2f22160900020e1a26313b4854616e7b87939f9c8f8276695e54616e7b87928e81756b75818e897c6f63584e4f59606d79847e7165584b3e3225180b000000000000000000000000000000000000000000000000040d161f2830383f444f565d60696e747a7f8286898b8d8c8b8b8b8d8d8a8680796d685e52473d331d140a000000000000000000000000000000000000000000000000000000050e172029313a40454c52545653514b433b33291f0c030000000000000000000000000000000000000004101c2934404b55616e7b87939f9f92867a6e61584e43434e58616b707676736d685d564e586062625f584e43372b1f1206000713202d3a4653606d7986929faa978a7d7064574a444c565e686e7b8586929fab9f9285796d60534645515a626d73808c867b6e655b50443a2f24180d0100000005121f2b3744505b65727f8b969f92857a6d60544a3f3435424e5b6875818e9ba79a8d8074675a4d4134271a0e010000000915212e3a47535f6a7783909daca79c8f82756a5f53473d32271b0d0400000000000000000a141d28313a434b545b606a6f787e83888b8e8f90908e8c88827c706c61594f443a2f20160c020000000000000000000000000000000000000000000000000000000a16212b353f49515a61676d70716e69635b514940342b200e050000000000000000000000030c151d262d333e434b5153585f626567696a6a69686664605d5654524c46423b363028221c140b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18222b353e47505a616b707c848c8f8e8a817a6e695e52463a2d20140700000000000000000000000a15202b343c464e53555c6064686d72767a7e818487898b8c8e8f8f8b878788898a8c8b8a8784827e7a75706b615f5750483f362d231a0d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c101314181b1d1b1a18140f0901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222b333b424b515860626b70767b7f818383817c746c655b50463d3223190f00000000000007121d27303e44505b656c737c817e7165584b3e3225180b00000914212d3a46535e6975828f9a9f93877b6e615566727f8c98897d70636e7c878f82756a5f5347515c676d7a716c62564a3d3124170b00000000000000000000000000000000000000000000000000040d161e262e343d434c52575e61686d72767a7c7e808282838382807e7a746d675e564c41352b210b0200000000000000000000000000000000000000000000000000000000050e171f282f353a414647494745403a312921180d0000000000000000000000000000000000000000000c18232f3946535f6975818e99a3988e81746a5f534747535f6a707d8283807a6d685d524e545655534e463c31261a0f020006121f2c3844515c667683909ca69a8d807367584e43434c565f69707d88939fa6a2978a7d7063594f4448515b606c77818f83776c60554b4135291d1307000000030f1b27333f4953606d7984919e988b7f72665c50443b31414e5b6774818e9aa79a8e8174675b4e4134281b0e0100000006121f2b37434e5866727f8c9aa4aa9e94887c6f62584e43382b1f160c0100000000000000020b161f283139424a505860666c71777b7f81828383817f7b766e6a615a50473d32281e0e0400000000000000000000000000000000000000000000000000000000040f19232d373f4850555d606465615f57514940372e22190f0000000000000000000000000a151e262f383f444f555c60656a6e7174767677767573706d6865605d56534d46413b332d261d170f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019232c353e485059616a6f797f83827d756d685e574d42362a1e12050000000000000000000000040e19222b343c43474b5153565e6165686e7175787a7c7e80818282838383838281807e7d7a7875716d67636059534d453e362d241b110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060708070706030000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181d1f20252829282724201a130b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000710192129303940454e54596163696e72757676746f6a605b53493f342b211107000000000000000b151e27333f49535b606b6f74716c62564a3d3124170b000005121e2a36424d57626f7c87939f998c8073675d677683909286796d606a75828f877b6e62554c4b555e686d68625a50453a2e2115090000000000000000000000000000000000000000000000000000040c141c2328313a41454d53565d6065676d707274757676767574716d68605d554c443a3023190f000000000000000000000000000000000000000000000000000000000000050d161d24293036393a3c3a39352f281f180f0600000000000000000000000000000000000000000007121d2b37424d57616e7b86929f9f93877c6f625a504855626f7b868f908d837a6d60564c48494847433c332a201509000004101c2834404a5466737f8c99a79d9184776a5f53473a444d57616b73808c949ea89c8f82766b6054483f44505b656d79848b7e71675d51453a2f24180d010000000b17222d3845515c66707d89929e9184786d60564d433a414c566875828e9ba6998d8073665a4d4033271a0d00000000030f1a26313c4854616e7b87939faca69b8f82756a6054473e31281d13070000000000000000040d161f272f383f444e545b6064696e727476767675726e6a625f5750483e352b20160c00000000000000000000000000000000000000000000000000000000000007101b242d363e434b5153575855534d4540372e251c1007000000000000000000000006111c263038424a505961676d72777b7e8182838383827f7d7a76726d68615f57524d443f382f29211a110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111a232c363e474f5860676d727675706b605d564d453b30251a0e02000000000000000000000000071019222a3137394045474c5254565e616468686d7072737475767676767675747372706e686865605d55544f46423b332c241b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306080d11131415141312100c060604000000000000000000000000000000000000000000000000000000000000000000000000070d151d24292c2d3135363534302b251d150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f171e272e343d43474f55575e616568696967626058504941382d22190f0000000000000000030c17222d384149505960636865625a50453a2e2115090000020e1a25313b47535f6a75828f979e9285796d606d7a8692908376665c626f7c898e8174675d51454c565e615e5650483f34291d1105000000000000000000000000000000000000000000000000000000020a11171f282f353b42464c5254555d6063656768696a69686764615e56514c433a32291e110700000000000000000000000000000000000000000000000000000000000000040c13181e252a2d2e2f2d2c29241d160d0600000000000000000000000000000000000000000000010e1a26313c46535f6973808d96a0998f82766c61574d535f6a717e8a93958e8174685e52463c3b3a37312a21180e030000000c18232e3b4855626e7b88959fa095887c6f62544b403c454f59606c78828f96a09f94897c6f63594f433f49535d676f7c87857a6d60554b4135291d110400000006111b2834404b54606b73808d94968b7f72695e554b4445525d687783909da8988b7f7265584c3f3225190c00000000000a15212d3a46535e6976828f9ca8aa9e93897c6f625a50433a2f24180d010000000000000000040d151d262d333d424a5053575f626567696a696866625f58534e453e362c23190d040000000000000000000000000000000000000000000000000000000000000009121b242c31394045474a4b4846423b332e251c130a0000000000000000000000061017232e38424a545b606b70797e83888b8e8f90908f8e8c8a86837f7a746e69615e56504a423b332c2317110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a242c353e464e555d60656968636159524c443b33291f1409000000000000000000000000000007101820262b2f34383a4146474c525458565e61636566676869696a6a696868666563615e565854514c48443d36312a211a12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1315191d20212121201f1c171312100c070000000000000000000000000000000000000000000000000000000000000000000711191f272f35393a3e414341403c372f271d130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c151d232832373e44484d5354585b5c5c5a56544e443f382f261b100700000000000000000006111b262f383f444f54565b585650483f34291d110500000009141f2b37434e58616e7b85929f978b7e72676f7c89998d80746754606a768390867a6d605447444c5254524c443f362d22170c010000000000000000000000000000000000000000000000000000000000060d161e242931363a4145474b515356585a5c5c5d5c5c5a5754524c45413a312920170c00000000000000000000000000000000000000000000000000000000000000000001070d13191d20212320201d18130c0400000000000000000000000000000000000000000000000009141f2a36424d57606d798491999f948a7e71695e554e58616c75818e9a92867a6d6154473a2f2e2b2620180f06000000000714212e3a47535f697683909da79a8d8074665c5145383e44505b666d7a849198a29c8f82766b6054483e414b55606a73808c7f73675d5145392c201306000000000c18232e39424f59606d78828f9492867b6e675d55504e56606d7a86929fa096887c6f6255483c2f221509000000000005121e2a36424d5764717e8a96a1aca59c9083766c61554b4135291d1104000000000000000000030b141c22282f383f44464d5355585b5c5d5d5b5955534e47423c332c231a110700000000000000000000000000000000000000000000000000000000000000000009121a1f272f35393a3d3e3b3a36312a211c130a0100000000000000000000040e182228343f4a545c666c737d848b90959899928f8c8a89898a8c8f8b86817b746e68605b544d453e3528221c140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a232c343c434b5153595c5b57554f45413a322921170d03000000000000000000000000000000060e151b1d23292c3036393b4146474b4c52545658595b5c5c5c5d5d5c5c5b59585754524c4b4745413a38322a261f180f080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b151b1f2224292c2d2e2e2d2c2823201f1c18120d07010000000000000000000000000000000000000000000000000000000000060f19232b31394045474b4e504e4d4841392f251a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b121820272b33383b4246484c4e50504e4948433d332d261d140a00000000000000000000000a141d262d333d4348494e4b4a453f362d22180c01000000030f1b26323c46525e69717e8b929e9184796d717e8b978c7f7366595865727e8b8b7e7165544a4041464746413a322d241b110600000000000000000000000000000000000000000000000000000000000000040c13191f252a2f35393a404547494b4d4f4f50504f4d4b4746413a352f281f170e05000000000000000000000000000000000000000000000000000000000000000000000002080d111314161413110d070100000000000000000000000000000000000000000000000000030e1a26313b45515c676f7c87929f9f92857b6e675c53505a616e7b8793998b7e7164584b3e31251f1a150e06000000000006121e2b37424d5764717e8a96a19e9285796d60544a3f333f4a545d686f7c86929f9f94897c6f635a50433a434e58606d7883857a6d6054473a2d2114070000000007121d27303d44505c666d79828d929083796d67605c585f68717e8b99a39e9184776a5f53473b2e2115080000000000020e1a25313b4653606d7984919ea8ab9f948a7e71675d5145392c20130600000000000000000000020a11171d262d33383c4247484c4e4f50504e4c4847433c37312a211a11080000000000000000000000000000000000000000000000000000000000000000000000080d151d24292c2d31322e2d2a261f180f0a0100000000000000000000000a15202a343c44505c666d78808a91969d9a938d86827f7d7c7d7e7f82858a8e87817b726c665e574f473f332d261d140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a222b31394045474c504f4a48443e35302820170f050000000000000000000000000000000000040a0f12181c1f252a2d3036393b3e414647494b4d4e4f4f505050504f4e4d4b4a4746413e3a39352f2c27211a140e0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a111720272b2e2f35393a3b3a3a38342e2d2c28231c18130c04000000000000000000000000000000000000000000000000000000030e18212b353d434b5153585b5c5b59534b41372b201408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c151b21282c31363a3b3f424343413c3b383227221b140b020000000000000000000000020b141b222732383b3c413e3d3a342d241b110600000000000a15202a36424d57626c74808d93968c7f72727f8c988b7e72655854616d7a878f8275665c514438393a39363029201b120900000000000000000000000000000000000000000000000000000000000000000001080d141a1e24292c2f35393a3d3f414243434342413e3a39363029241e160d0500000000000000000000000000000000000000000000000000000000000000000000000000000105070709070604010000000000000000000000000000000000000000000000000000000009141f2934404b55606a727f8b929d979083796d655b51535f697683909a8d8074675a4d4134271a0f0903000000000000020e1a26313c4653606d7984919ea1978a7e71665b50443838424c565f6a717e8b939e9d9083766c61554b403d44505c666f7c877f7265584c3f3225190c00000000000b151e28343f4a545c676d78808b928f8279716d66696a6f7a84919e9f948b7f7265584e43372b1f120600000000000009141f2c3844505c66727e8b96a0aba69e9184796d6054473a2d211407000000000000000000000000060b141c22282b31373a3b3f41434343423f3b3a37312b2620180f0800000000000000000000000000000000000000000000000000000000000000000000000000030b12181d1f20242522211e1a140e06000000000000000000000000030f1b26313c46515b606d78818d929ea0979288807b7672717070717275797d82898e857f786e69615951443f382f261d140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810191f282f35393a3f43423d3c383329241e160e05000000000000000000000000000000000000000001070c1013191d20252a2d2e3036393a3d3f40414243434343434241403f3d3b3936302d2c29241e1b160e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c141c232832373b3c414547484746443f3d3a38342e29241d160d0802000000000000000000000000000000000000000000000000000915202a333d474f555d6064686968645d53483c3024180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f171c1f252a2d2e32353636342f2e2c272117110a0200000000000000000000000000020a111721272c2f303532312e29221b1209000000000000040e1a25303b45505a606c77818c9292867b727f8c988b7e716558525e6877839085796d6053463a2d2e2d2a251e170e0900000000000000000000000000000000000000000000000000000000000000000000000003090e13191d2024292c2d303234353637363534312e2d2a251e19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18232f39434e58626d74808d939d958e81776c605c545765727f8b988e8174685b4e4135281b0e00000000000000000009151f2c3844515c66727e8b95a09d9184786c60544a3f343a444e58626c75818e969f958a7e71675c5145383f4a54606a748183766a5d5043372a1d100000000000030c17232e38424b555c666d747e868e8f847d797676777c8390969f959082786d6053463c32261b0f0300000000000003101c28343f4a54606d78849199a4a69f968d8073675a4d4034271a0d00000000000000000000000000020a11171c1f262b2e2f323436373635332f2e2b26201a150e0600000000000000000000000000000000000000000000000000000000000000000000000000000001070c10131417181514120e09030000000000000000000000000006121f2b37434e58636d74818e939ca29892857d746e69666463636466666d70767c838c8b827b706b625b504a42382f261d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d161d24292c2d323635302f2c282119130c0400000000000000000000000000000000000000000000000004080d1114191e2021252a2d2e3032333435363637373635353332302e2d2a2521201d1913100b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e262e343d4347494c5154545453504a4a46444039352f281f19130c040000000000000000000000000000000000000000000000020e1a26313c454f5960676d717476746f64594d4034271a0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b10141a1e2121252829292723221f1b160b060000000000000000000000000000000000060b161b1f2223282524211d181109000000000000000009141f29333f44505b656c777f868b8c83797f8b988c7f7266594c566774818e887c6f6255493c2f22201e19130d0500000000000000000000000000000000000000000000000000000000000000000000000000000001080d1113181d1f2023252729292a2929272421201e19130d08010000000000000000000000000000000000000001030200000000000000000000000000000000010406070a0b0b09060503000000000000000000000000000000000000000000000000000000000007121d27313d46515b606c77818d929f938d80746d665f5763707d89968e8174675b4e4134281b0e01000000000000000004101c2834404a54606d7884919da0958a7e71665c50443b323c46505a606d7a8491999e9184796d6053463a38424e58616d7a7c6f6255493c2f22160900000000000006111c263039434b545c606d727b81898e8a8583838488909598928d837a6d665c5044382a20150a00000000000000000c17232e3844505c66707d87939c9b9490857d6f6356493c30231609000000000000000000000000000000060b0f151a1e21222528292a2a282622211f1a150e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0b080705020000000000000000000000000000040f19222e3a47535f6a727f8c939ea59f92867d706b615e5757565657545c60646b6f787f878f857d726d605b544a42382f261c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c12181d20202629282423201c160d08020000000000000000000000000000000000000000000000000000000105080d111414191d2021232526282929292a2a29292826252421201e191413110d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2630383f444e5456555d606161605c545753514a45403a3129241e160e060000000000000000000000000000000000000000000006121e2b37424e57606b70797e81838174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e121415191b1d1d1b1615130f0a0400000000000000000000000000000000000000040a0f1315161b181715110c06000000000000000000020d172027333f49535b656c727a7e7f7d797d8a978e817467574d5965727f8c8a7e7164574b3e312418110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000104070c10131416181a1c1c1d1d1c1a181413110d08020000000000000000000000000000000000010407070e100e090907030000000000000000000001070d1113141718181613120f0b06000000000000000000000000000000000000000000000000000000010b151f2b343f44505b656c77808b9299928d81786e6963626e7b88958b7f7265584c3f3225190c000000000000000000000c18232e3944505c66707d89939e9d9183786d60574d4236343e45525d68707d87939f968b7e7265584b3f303d46525e686d6f6a5f53473b2e211508000000000000000a141e273139424a505b62696e757c81868a8d8f90908f8e8b8680796d685d544a3f3428180e04000000000000000006111c28343f4a54606b727f8a8f8e8a837b6f6b6054483b2f221509000000000000000000000000000000000003090e121415191b1c1d1d1b191514120f090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202d39444f59626f7c86929fa59e938a7e716b6159524d4a494a4b4a50535960666d737d8591877f746c665b544a42382d2217110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d101314191d1c171614100b050000000000000000000000000000000000000000000000000000000000000000010507080d11131416181a1b1c1c1d1d1d1d1c1b1a18171414110d080604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e38424a5058606268676d6e6d6d666864605c54514b433e353028201810070000000000000000000000000000000000000000000814212e3a47535f6a707d858b8e8f8276695c504336291d1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080c0f10100e090907030000000000000000000000000000000000000000000000030709090e0b0b0905010000000000000000000000050e17222d384149535b60686d7172706e7b8897908377695f535865717e8b8c7f7266594c3f3326190c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0c0e0f1010100f0e0b07070501000000000000000000000000000000000002080d1113141b1d1b1615130f0a0400000000000000070c13181d202124252422201f1b17110d080200000000000000000000000000000000000000000000000000030d192227333f49535b656c747f879195938e837b74706e6f7c8994887b6e6155483b2e2215080000000000000000000007121c28343f4a54616b75818e97a0958b7f72695e52463e3335414c56606b73808d959c8f8276695c4f433635414c565e61625f584e43372b1f130600000000000000020c151f2730383f4451565e616a6f757a7d8082838382817e7a736d675d564c42382e231706000000000000000000000c17232e38424f59636d727e83817d786e6960594f44382c1f130700000000000000000000000000000000000000020608080c0e1010100f0c08080602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323c4955616c76839099a3a4998f82756c61594f46423e3d3d3e3f44464f545c606b707b84918c80786c665b544a3f3328231a0e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070c100f0a0907040000000000000000000000000000000000000000000000000000000000000000000000000000010507070a0c0d0e0f10101010100f0e0d0c0a0807050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545c606a6f75787a7b7a797774706d66605d555045413a322a221910070000000000000000000000000000000000000004101d2935404b55626e7c8692979b8f8376695c504336291d08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f38414950565e616466646c78859295887b6e62585764717e8a8d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d2021272a2823221f1b160f0700000000030b12181d24292c2d3032312f2d2b27221b19130c0400000000000000000000000000000000000000000000000000071017222d384149535b606d727c838c92959087817d7b7c828f8f8275695f53473a2d21140800000000000000000000000c17232e38424f59616d7a8591999f92867b6e615a50453c313a444f59606d798391908a8073675a4d4032303a444c525455534e463c32261b0f030000000000000000030d151e262e343f444d52586062676d70737576767674716d68605c554c443a30261c11060000000000000000000006111c26303d47515b636c717675706c655f574f473d32271b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e5864707d8a959fab9f93877b6e625a50463e363030302e34383d424a505960696e7b84918d81786c665b50443f352b20170c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c666d747c81858787878684817d79736d67615a524c443c342b2219110700000000000000000000000000000000000006131f2c3845515d6775828e98a19d9083776a5d50442f24190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262f383f444c525458595b6574818d9a8d81746a605665727e8b8c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000020507080a0b0a09070603000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e161e24292c2d343635302f2c27211910080000030c151c23282f35393a3d3e3e3c3937332d29241e160e060000000000000000000000000000000000000000000000000006111b262f384149505b626a6f797f858b90928e8a88888f90857b6e61574d42372b1e1206000000000000000000000006111c26303d46525e68707d87929f988e81756c61574d4339323d45515c676f7c86837e776c60554d443b30323a4146474947433c342a20150a00000000000000000000030c141c2328323b42464e54555d60646668696a696765615e56514b433a32281e140a0000000000000000000000000a151e2b353f49515a6164696863605b534d453d352b21160a0000000000000000000000020507080c0f1006050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a7783909da7aa9b8e82756a5f53483e342a25232323282b30383f444f575f696e7b85928e81786c605b51473d32291e140a00000000000000000000000000000000000000000000000000000000010507070b0d0f10111110100e0c0a0707040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c38444f59606d7880898e9297949a93918e8a857f79716c605d564e463d342b2319100600000000000000000000000000000000000714202d3a4753606d7986929faa9d9184776a564c4135291d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c1013131514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141d262d333a4146474b4953626f7c889393877c6f68606674808d8b7e7265584b3f3225180c000000000000000000000000000000000000000000000000000002080e111414171717151312100b06030000000000000000000000000000000000000000000000000000000000000000000000000000020c1620283035393a4143413c3b38322b221a1208030c151e272e343a4145474a4b4b4946443f383530282017110a020000000000000000000000000000000000000000000000000a141d262f383f44515860666d727a7f8386898a8b8a88837c6f695f53453c31261a0e020000000000000000000000000a151e2a36414c56606b727f8c949e938a7e71695f554b413834404b55606a6f787674716d675e564d41362a3035393a3c3b37322a22180e040000000000000000000000020a1117202930363d43474c5154575a5c5d5d5c5b5854524c454039302820160c02000000000000000000000000030c19232e373f485055575c5b57535049413c332b23190f0400000000000000000002080e111414191c1d13120f0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a0aba2988a7d7063574e42362c221a1617171c1f262e343d454d575f696f7c86928d80746d62594f443b30261c11060000000000000000000000000000000000000000000000000002080d111314171a1c1d1d1e1d1c1b19171413110d0805010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3b4854606b74808d929b9e95918b8988898b8f8c857e756d685f584f473d352b22180e05000000000000000000000000000000000916222f3c4955626f7c8899a3ab9e928578685d5245392c20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f2022211e1a140e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141b22273035393a3e47535f6a75818e9691847a6f6a6c788491887c6f6255493c2f221609000000000000000000000000000000000000000000000000050b1014191e202123242322201f1c1712100c0600000000000000000000000000000000000000000000000000000000000000000000000008131e28323a4145474e504e4948433d342c241a0c0b151e27303940444b51545758575553504946413a3228231c140c030000000000000000000000000000000000000000000000020b141d262d333f464e545c60676d72777a7d7e7e7d7b766f6a5f574d42332a1f150900000000000000000000000000030c1925303a444f59606c77828f959f92867b6e675d53493f3839434e586066717e817e796e685e5246392d25292d2e2f2e2b26201810060000000000000000000000000000060e171f252a32383a4145474a4d4f50504f4e4b4746413a342e271e160e04000000000000000000000000000007111c252e363e45494b504e4a46443f382f2a21191107000000000000000000060b14191e202126292a201f1b17110a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e586774808d9aa7ac9f9285796d6053463c31201b1009060b10151c2328333c454d57606a717e8a928b7f726b60564d42382e23170b0200000000000000000000000000000000000000000000050b1013191d2021242628292a2a2a2928262421201d1914110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54636f7c89929d9e948f847f7c7c7d7f82868d8a827a6f6a60594f473d342a20170c020000000000000000000000000000000a1723303d4a5663707d8996abada197877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c151d23282c2d2e2d2b261f180f0b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171e25292d2e37434e58616e7a84919691847c7777808c9184776a6054473b2e2215080000000000000000000000000000000000000000000000080f161c1e252a2d2e3031302f2d2b28231f1c17110a03000000000000000000000000000000000000000000000000000000000000000000010d1924303a444c52545a5d5b56544f463e362c1e14121c273039424a51555d6063656462605b53524c443e342e261e150c030000000000000000000000000000000000000000000000020b141b2227343d424b51555d6065686d707171706e69625f584e453c3121180e03000000000000000000000000000008131e28323d44505b656d79839095989083796d655b504941393c464e5465717e8b8b847a6e6154473b2e211d202122211f1b150e0600000000000000000000000000000000050d141920272b2f35393a3d4042434343413e3a39353028231d150c04000000000000000000000000000000000a131c242c34393d3e43423d3937332d261d180f070000000000000000020a11171e252a2d2e3236362d2b27221b140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f6a7885919eaba99c8f8276665c5144382c1f1209000000030a1117212a333b454e58616c74818e93877d70695e544a3f34281d140a000000000000000000000000000000000000000003090e161c1e24292d2e31333536373737363533302d2c2924201e19140e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c6675828f9ba2988f827872706f7072757a80868f847c6f6b60594f463c32291e140a000000000000000000000000000000091623303c4956636f7c8996aab3a995887c6f6255493c2f2216070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e272e34383a3b3a37312a211d140b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b13191d2026323c46525e686f7c858f94918984848c928b7e7164584e43372b1f13060000000000000000000000000000000000000000000109111921272c3036393b3d3e3d3c3a38342e2c28231c150c08020000000000000000000000000000000000000000000000000000000000000004111d2935414c565d6067696863605950483e30261c18232e39424a545c60676d7071716f6c65615d5650443f3830271e150c030000000000000000000000000000000000000000000000020a1117222b303940454c5154565d6063646564615f57534e463c332a1f0f06000000000000000000000000000000020c162027333f49535d676d7a839096958e81776c605b534b433c3d4a5663707d89968d8073665a4d4033271a13141615130f0a0400000000000000000000000000000000000002090e161b1e24292c2d31333536373634322e2d29251e18120b030000000000000000000000000000000000010a121a22282d30313635302d2b27221b140b060000000000000000020b141c22283036393b3f42433937332d261d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8897a1ada5998c7f7266544a4034281c10040000000000060f182129333d46505a606d79849192857b6e665c50443c2f261b1106000000000000000000000000000000000000050d141a21282c3035393a3e40424344444343413f3d3a39352f2d2a251e1a150d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929f9f92867a6d6663626365686d737b828d867d706b60584e443b30261c110600000000000000000000000000000815222e3b4855616e7b8898a3aea4978a7e7164574b3e2e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17202930394045464846423c332f261d11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d1115202a36414c565f6a6f7b82888c8e8e8e8b867f736c6156463c32271b0f0300000000000000000000000000000000000000000009131b232b33383b4146474a4a4a4846443f3a38342e261e19130d050000000000000000000000000000000000000000000000000000000000000713202c3945525d686d7476746f6b615a5042382e231e2834404a545c666d737a7d7e7e7c78736d68615a504a423930271e150b000000000000000000000000000000000000000000000000000610191e272e343a4145474c52545657585755534d47433c342a21180e0000000000000000000000000000000000050e17222d38414c555e686e7a849195938d80746c655d554e47434956626f7c89958f8276695c4f4336291c10070908060300000000000000000000000000000000000000000000040a0f13191d20212427292a2a29282521201d19130c070000000000000000000000000000000000000000000810171d212324292824201f1b17110a020000000000000000000a141d262d333b4146474c4f5046443f382f261b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a9b3a3968a7d7063574a3d2e23180c00000000000000060f17212b343e45515d67707d89939082786d60574d41382d22170b0100000000000000000000000000000000070f171f252a33383a4146474a4d4f505051504f4e4c4a4745413b3936302b262019130c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8898a29b8e8275685e545556565e61696e78808b867d706a5f564c42382e23170c03000000000000000000000000000713202d3a4653606d7986929faca79a8d807467554b4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29323b424b515355534d4541382f23190f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001050e1925303b444e585f696e757c7f8182817f7b736d635a5045342b20150a00000000000000000000000000000000000000000007101b252d353d44484c52545657565553504a46443f38302a251e170e070000000000000000000000000000000000000000000000000000000005111e2a36424d56606d7a8183817c716c61544a3f342826303844515c666d7880868a8b8a8885807a716c605c544b433930271d120700000000000000000000000000000000000000000000000000070c151d23282f35393a4145474a4b4b4a4846423b37312a22180f0600000000000000000000000000000000000006111b262f3a434c565e686e7b838f94928d80776d676058534e4b5564717d8a978f8376695c504336291d10030000000000000000000000000000000000000000000000000000000001080d111314171a1c1d1d1c1b181413110d08020000000000000000000000000000000000000000000000060c111417181d1b1713120f0b060000000000000000000006111c262f383f444c5254595c5d53504941382d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2834414e5b6774818e9aa7b3a994887b6e6155483b2e2215070000000000000000060f19222935404b55606b74818e948c7f72695f53493f33271d1207000000000000000000000000000000071119212931363e44484c525457595b5c5d5d5d5c5b595754524c4746413b37312a251e160e070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996aa988c7f7265564c494a4c52575f666c737f88857c6f685e544a3f34281e150a0000000000000000000000000006121f2c3844505c667683909da9a99d908376675c5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303b444d545c60615f57524a41352b21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141e29323c464e575e616a6f72747574726e69635b52483e3422190e040000000000000000000000000000000000000000040f19222d373f474f54565e6163646362605c5453504a423e363029201911090000000000000000000000000000000000000000000000000000000714202d3a46525e6975818d908e887e71665c5044382b2e3842505a606d78828d9298989597918c857e746d665c554b42392e2318100700000000000000000000000000000000000000000000000000030b12181e24292c3035393a3d3e3e3d3b3a36312b262018100600000000000000000000000000000000000000000a141d28313a444c565e696e7a828d93928d81796f6a625f58555d6773808d998e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000010406070a0d0f1010100e0b0707050100000000000000000000000000000000000000000000000000000005080a0b100f0a0605030000000000000000000000000b17222d38424a50565e61656969605b53493f33271b0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9ada19786796d6053463a2d201307000000000000000000071018242f3a434f59616d7a859292867b6e655b5044392f24180c0100000000000000000000000000071119232b333b42464f55565d61646668696a6a6a69686663605d5654524c47423c3630282018120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a3978a7d7064574a3d3d41464d545b606d727f8b847a6e665c50443c30261c110600000000000000000000000003101c28343f4a546773808d9aaaac9f9286796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36424d565e666d6e69645c52473d32271c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17202a343c454d53585f626668686765615f57524940362d2210070000000000000000000000000000000000000000000a15202b343f4951596063686e7071706f6d6664605c545046413a322b231b120901000000000000000000000000000000000000000000000000000814212e3b4754616e7b86929c9a9184786d6053463a2e343f4a54616c74818e949f938e8886878a8f8a80786d675c544b40342822190d030000000000000000000000000000000000000000000000000000070c13191d2024292c2d303132312e2d2a261f1b150e06000000000000000000000000000000000000000000020b161f28323b444d575e686d78808891938e837c746e6a6867676d798592958a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a545b60686e7275766c655b5044372b1f1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b556b7884919eabab9e928578675c5145382c1f13060000000000000000000007131d28313d46525d68727f8b969083776c60554b4035291e1308000000000000000000000000050f19232b353d454d53596163686d71737576777776767472706d6865615e56534e46413a3229231d150d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a396897c706356493d30363b424a505b626d727f8c82786d60584e42382e23170c010000000000000000000000000c17232e3d4a5663707d8998a2aea398897c706356493d2f24180d01000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e696e797b746e64594f44382c20150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e18222a333b42464e5355595b5b5b5855534d4540372e241b10000000000000000000000000000000000000000000030f1b27323d46515b626b70767a7d7d7d7b7975706d66615a524c443d352d241b1309000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a99a3a196897d7063554b40343844505c66717e8a939c918c817b797a7d82898d82796d665c51453f342b1f150b01000000000000000000000000000000000000000000000000000001080d1113191d20212324252422211e1a140f0a040000000000000000000000000000000000000000000000040d162029323b454d565d666d737d848c929187817b777574757a818e969083786c605346392d20130600000000000000000000000000000000000000000000000000000000000000030506080b0e0f101110100f0d0a080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b666c737a7f8282776c605346392d201308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c677986929facaa9e9184776b554b4034281c100400000000000000000000010c161f2935414c56606d798491948b7e71675d51453a2f24190d0000000000000000000000030d17212b353d474f575e616b70767a7d80828383848382817f7d7a77726e68625f57524c443e342f271f160e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a296897c6f6356493c302a2f383f44515b636d75818c80736a60544a3f34281e13080000000000000000000000000613202d3a4653606d7985929fabaa998c807366554b4035291d100400000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e58616e7b848880746b6054483c31261a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061018212931363c4347484c4e4f4e4c4846423b332e251c120900000000000000000000000000000000000000000006131f2b37434e58626d727d8387898a898885827d78716c615e564f473e362d251b12090000000000000000000000000000000000000000000000000d192633404c5966737f8c99aba89b8e8174675c5145383a4653606d7884919d948c7f746e6d6e70757d858f82786d605b51463d31271d1207000000000000000000000000000000000000000000000000000000000104080d111314171818171514120e09030000000000000000000000000000000000000000000000000000040e172029333b444c545c606b70797f868c918e8884818182858e938e847b6e665b5044382b1f12060000000000000000000000000000000000000000000000000000000000060b0f121315181b1c1d1d1d1c1b19171414110e08050200000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d57606c787f868c8f887c6f6255493c3024190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798699a3afaa9d9184776a5e51442e23180c000000000000000000000000040d1924303a44515c66717e8a969184796d60554c4135291d12070000000000000000000009141f29333d474f5960696e767d82868a8c8e8f9090908f8e8c8a86837f7a756e6a615e5650454039312820170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a996897c706356493d3023262d333f49515b606d7983877c6f665c50443a2f24190d01000000000000000000000006131f2c3845515c6775828e9baba99c908376675d5145392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a76828f92897d7063574e42372b1c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f252a31373a3c3f4142413f3b3a363129211c130a000000000000000000000000000000000000000000000815222e3b4754606a727f88909596979892928f8a847e756d68605950483f372d241b110800000000000000000000000000000000000000000000000d1a2734404d5a6773808d9aa6ab9f9285796d6053463a414c5664717e8a95998f82776c626061646b707b838e81746d63584e43392f24180c03000000000000000000000000000000000000000000000000000000000000010407070a0b0b0a080705020000000000000000000000000000000000000000000000000000000000050e172129323a424a505960676d737a8085898c8f8e8d8f8f8c87817a6e695e544a3f33281c0f03000000000000000000000000000000000000000000000000000002080d11171b1f2022252729292a2a2928262421201e1914110e0902000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f6974808c9298998c7f7366564c4135291d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0b5aa9d9084776a5d5144372a1e070000000000000000000000000008131e2834404a54606c788491968c7f73675d5145392e23180c000000000000000000020e1a25313b454f59606b707b828a8f929995908c888787888b8e9293908c86817b746d68615a514b433a322920170d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8797a2968a7d7063574a3d30241c2228374045515d676f7c8783786d60554c4135291d1207000000000000000000000004101c2834404b5564717e8a99a3ac9f92867a6d6053473a2d2014090000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c89949c8f82766a5f5347382d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a20262b2e2f33353534322e2d2a261f170f0a01000000000000000000000000000000000000000003050916232f3c4956626f7c87939a9f9691898585878b908a827a6f6b625a51493f362d231a0f06000000000000000000000000000000000000000000000e1a2734414d5a6774808d9aa7a79f988a7d7064554b4046525e6876828f9c92867b6e655b53545960696e7a848c7f726a60554b4035291f1509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f17202830383f444f555d60686d73787c8082838483827f7b746d685e574d42382d22170b0000000000000000000000000000000000000000000000000000040c13191b22272b2d2f313435363737363533302e2d2a25201e1a140e090300000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b87939fa29d908376685d5246392d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1adaa9e9184776b5e51442f24180c00000000000000000000000000020c18232e3944505b66717e8b9692857a6d60544b4034281c1004000000000000000005121e2a36424d57606b707d858f949c98928b837f7c7a7a7b7e81868d9399928e87817a716c605c554c443a32291f160b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525d687885929f988b7e7165584b3e32251817252935404b555f6a73808b7f72675d5145392f24180d0100000000000000000000000c18232e3a4754606d7a86929faca3998a7d7063574a3d30251a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a999f94887b6e62544a3f33281c0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e151b1f2122262828282522211e1a140d060000000000000000000000000000000000000000060b0f12131c2835424f5b6875818e9aa49e91847c79797b7e838a8f857d716c625b51483f352c21180d030000000000000000000000000000000000000000000e1b2834414e5b6774818e9aa79f95908e8175675d51454754616d7a86929a8e8174695f5349474f575e686e7b85877c6f675d51453c31261a0e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d161e262e343d434b51565e61666c6f737577777775726e69615e564d453b2f261c110600000000000000000000000000000000000000000000000001070e161e24292d3337393b3e41424344434342403d3b3936302d2a251f1a140d07010000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a9aa4ac9f93867a6d6154473a2d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0b5ab9e9185786b554b4035291d10040000000000000000000000000007121c28333f4a54606d798491988c7f72665c5145382c1f140900000000000000000714212d3a46535e69707d8692979f9892867e78726f6e6d6f71757b8087919699938e857e746d675d564c443a31281d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c56697683909c998c7f7366594c402e23181318242f3a434e58606d7984857a6d60554b4035291d100400000000000000000000000713202c3945525d6875828f9caaab9a8d807467574d42362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a86939f9a8d8073665b5044382b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f121515191b1c1b191514120e090300000000000000000000000000000000000000020a11171b1f201f2b3845525e6b7885919eac978a7e716a696e71787e858f877e726d625a50473e332a1f150b0100000000000000000000000000000000000000000e1b2835414e5b6874818e9ba79d908390867a6d6053474b5864717e8b9995887b6f62574d413d454d565f69707d8884796d60574d42372b20150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c141c2328313940454c52545b606366686a6b6a6966615f57524c443b33291d140a000000000000000000000000000000000000000000000000030b121820283035383f4446484b4e4f5050504f4e4c4a4746413b3a36302a261f18130c0400000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a9aa4afa4998a7e716453493f33271b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8699a4afab9f928578675d5145392c1f130600000000000000000000000000000b17222d3844505c66727f8c989184796d6053463c31261a0e0200000000000006131f2b37434e58616e7b859298a29992867d716c656261616264686e747c8490959f97928a81796d685e564c433a2f261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d192430414d5a6774808d9a9b8e817468544a4034281c10131d28313c45515c67707d898073675d5145392c201306000000000000000000000004111d2935414c5664717e8a98a3aa9d918477695e52463a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e687683909d9e9184786c605346392d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090c0e0f0e0c080705020000000000000000000000000000000000000000020b141b22272b2d2b273946535f6c7986929fa295897c6f625e61656c717a828d887f726d62594f453c31271d120700000000000000000000000000000000000000000e1b2834414e5b6774818e9aa5988b7e8b8b7e7164574d4b556774818e9a9083776a5f53453b333b444d57616b74808d8073695f53473c31261a0e0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171f272f353a41464a505356595c5d5e5d5c5955534d46413a322921170b020000000000000000000000000000000000000000000000040d151d2429323a414549505355585a5c5c5d5d5c5b595754524c4746423b363129241d160d07000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a86939facab9b8e8174655b5044372b1f120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c677986939facada297867a6d6053473a2d201407000000000000000000000000000006111c28343f4a54616d7a8692968b7e7164574d42372b1e12050000000000000815212e3b47535f6a75828e97a19f92877d706b605b53545455565e616a6f7a839095a09e938e827a6d685e554c42382d22170c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081824313e4b5764717e8a979d908377665c5144382c1f120c161f2834404b55606b768285796d6053473a2d2014070000000000000000000000010d19242f3a4754606d7a86929faca095877b6e6154473b2e21140a000000000000000000000000000000000000000000000000000000000000000000000000000005111d2a36414c5666727f8c99a196897c706353493f33271b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262d33373937332d45525f6c7885929fa396897d706356535b60686e77808b8b7f716b61574d43392f24180c02000000000000000000000000000000000000000e1a2734414d5a6774808d9aa296897d838f8276695e53515d67778491998c7f7266584e433834323c454f59606d7984867b6e61574d42372b1d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d151d24293036383f4446494d4f5051504f4c4846423b35302820170f050000000000000000000000000000000000000000000000040d161f272f353e444c52535b6062646768696a6a69686663615e5654524d46423b352f281f18120b0300000000000000000000000000000000000000000000000000000000000000000713202d3946525e687783909daaab9e9185786c605346392d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2934404b556b7885929eabb3a995887b6e6255483b2f2215080000000000000000000000000000000c17232e3846525e6874818e9b908376695f53463a2d21150a0000000000030f1c28333f4a54626f7c88939ea1978d80746b605950494747484d525860686e7a839097a19d9490837a6d675d544a3f33281e140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87969f9286796d6053463a2d2013080d18232e39434f59626f7c897e7164574b3e3124180b0000000000000000000000000813202c3945515d6775828f9ba9a7978b7e7164584b3e31261a0f0300000000000000000000000000000000000000000000000000000000000000000000000000010d1925303c4855626f7b8896a09a8d8174655b5044372b1f120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080a0b0a080400000000000000000000000000000000040600000000000000000000000000000000030608090e10100f0d0a060603000000000000000000000000000000000000000000000006111b262f383f4446443f3844515d6a7784909da5998c7f7266574d50565e656c737e87877d70695f554b4035291e140a000000000000000000000000000000000000000d1a2633404d596673808c99a4978a7d7e8b877b6e615453606d7a869397887c6f62554a46443f38343e45515d67717e8a8175695f5347392f24180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e252a2d3338393c4042444444423f3b3a363129251e160e050000000000000000000000000000000000000000000000030c161f283139404550565d60656c6e717475767776767573706e6865615e57534d45413a3128231d150c050000000000000000000000000000000000000000000000000000000000000005111d2a36414c5666737f8c99a7ada197887c6f6255493c2f24180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f44505d6a7783909daaafa396897c706356493d3023160600000000000000000000000000000006111c2a36414c5663707d899694887b6e6155483c31261b0f030000000006121f2b3844505b6674818e9aa59e91847a6d60594f443f3b3a3c41464e565e686e7b85919ea59f959083796d665b50443c30261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e697884919e99897c6f6356493c3025190d07121d27303d4754606a707d776c605346392d20130600000000000000000000000004111d2935414b5564717d8a97a2a89b8e817568584e43372b1f120600000000000000000000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a7784919d9e9184786c605346392d201309000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e11141417171614100b05000000000000000000020608080d10120d0d0a0702000000000000000000040a0f1315161a1c1d1c1a1713120f0b060000000000000000000000000000000000000000000b17222d3841495053504941414e5b6874818e9baa9c8f8376695f53464c535b606c717e88867b6e675d51453d30261c11060000000000000000000000000000000000000b1825323e4b5865717e8b98a4988b7f79858d8073665c55626f7b889a9285796c60575653504a443f38404b55616c7683867b6e62554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c13191c22282b2d30333537383736332e2d2a261f19130c040000000000000000000000000000000000000000000000000a151e28313a434b515a62686d72787b7e818283838382817f7d7a76726e69615f57514b433e342e271e170e06000000000000000000000000000000000000000000000000000000000000010d1925303b4855626e7b8895a0aca9998c7f7266554b4135291d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c2935424f5c6875828f9ba8b1a5988b7e7265584b3f2e23170b000000000000000000000000000000000d1925303a4653606c788491998c807366584e43372b1f1206000000000613202d394653606c7985929ea8998c7f72675d51473d332d2e30363d444c565e69707d8a939ea7a0958f82786c60584e42382e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d576774818e9a998c7f7366564c41362a1e11050b151e2b37434e58616b706c655b5044372b1f1205000000000000000000000000010d18242f3a4653606d7985929fab9e9185786a5f53473a2e211507000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e586673808c99a197897c6f6256493c31261a0e020000000000000000000000000000000000000000000000000000000000000000000000000000050b1014191e2021242423211c17100800000000000003090e1214151a1d1f1a1917130e0800000000000000060b161b1f222327292a292723201f1c17110a02000000000000000000000000000000000000030f1b27333f49535b605b534f474b5764717e8a98a29f93877b6e61554b4149505a626c727f8b83796d60594f42382e23170b0000000000000000000000000000000000000a1723303d4a5663707d8996aa9a8d80737f8c85796d605764707d8a978f82756e696863605c54504a423b43505a626f7c878074675d5145392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11171c1f202326292a2b2a292622211e1a140d080200000000000000000000000000000000000000000000000006111c26303a434c555d606c717a7f84888b8d8f8f90908f8e8c8a87837f7b746e69605d5550454039302920180f070000000000000000000000000000000000000000000000000000000000000814212e3a47535f6a7784919daaa99c8f8376675d5145392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6b3a79a8d817467544a3f34281c100300000000000000000000000000000008131f2b3744505b6573808d999184786a5f53473a2e211508000000000915222f3c4855626f7b8897a1a096877b6e61554b4135272221252a323b434d57616b74818e98a3a79f948c7f736a60544a3f34281c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303d4a5764707d8a999c908376685e5246392d201308030c1b27323d464f596163605b53493f33271b0f030000000000000000000000000007131f2c3845515c6774818e9ba9a197887b6f6255483c2f24180c0000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26313c4855626f7c8896a0998d807366574d42362a1e1205000000000000000000000000000000000000000000000000000000000000000000000000000810161c1f252a2d2e3131302d28221a120800000000060e151a1e2122262a2c2726231f19120a02000000020a111720272b2e2f3436373634302d2b28221c140b08020000000000000000000000000000000005121f2b3744505b656c6560594f4753606d7a85929fa49a8d8073675d51453f44505a626d74808d80746b60544a3f34281d120700000000000000000000000000000000000815212e3b4854616e7b8798a29b8f82757a868a7e71645965717e8b938f827d7b7874706d66605c544d453e47535f6a758285796d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f1213161a1c1d1e1d1c191514120e090300000000000000000000000000000000000000000000000000030c17232e38424c555d676d757e858c91969797928f8c8a89898a8c8e908c86817b746d67615a514b423b322a21191007000000000000000000000000000000000000000000000000000000000006121f2b37434e586673808c99a8ac9f92867a6d6054473a2d2114090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97aab4a99c908376665c5044382b1f1206000000000000000000000000000000030f1b27333f4953626f7c889696887c6f6255483c3025190d010000000b1824313e4b5764717e8a97a99e918477695e53433a2f231714192029313b454f59616e7b86929faca69f92877c6f665c5044382e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914212d3a4754606d7a86929f93867a6d6154473a2f24190d100a15202b343e474f555753504941382d22170b000000000000000000000000000004101c2834404b5563707d8996a1a9988c7f7265554b4035291d100400000000000000000000000000000000000000000000000000000000000000000000000000000a15212e3a47535f6a7784919d9d908477695f53463a2d21140700000000000000000000000000000000000000000000000000000000000000000000000008111a21282c30363a3b3d3e3c39332c241a0e050000060f1820262b2e2f33373933322f2a241c140a0000020b141b222732383b3c41434342403d3938332d261d19130c040000000000000000000000000000000613202d394653606c786f6b605349515d6774818e9aa79e9285796d6053473d3f48515b606d7882877d70665c5044392e23180c00000000000000000000000000000000000613202d394653606c7885929f9d91847774818d83776b6164717e84868a8e8a8885817d78716d665f574f47434e58626f7c887d7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030606090d0f1111110f0c080705020000000000000000000000000000000000000000000000000000000a151e28343f4a545d676d79818b92979e97928b85827f7d7c7d7e7f8284898d8e878079706c605c544d443c332a22190f0600000000000000000000000000000000000000000000000000000000020f1a26313c4855626f7c8896a0aca3998a7d7064574a3d31261a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8898a2aeab9f9285796d6053463a2d201307000000000000000000000000000000000b17222d3847535f6a778491998c7f7366564c4135291d11050000000c1925323f4c5865727f8b98a59b8f827568574d4231281d11080e171f29333e46525e6973808d9aa4afa3999083786d60544a3f34281c100300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d6776838f9c998b7e7165564c4135291d1e1d1c1b19222c353e44484a46443f382f261b11060000000000000000000000000000000c18232e394653606c7884919ea99c8f8276675d5145392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e586673808c99a095887b6e6155483b2e23180c0000000000000000000000000000000000000000000000000000000000000000000000050e1a232c33383b4246474a4a49443e362c20170c02060f18212a31373a3b404345403f3b362e261c0e04000a141d262d333d4347494d4f504f4d4a46443f382f29241e160e0500000000000000000000000000000c1825323f4b5865727e7d6f655b504b55626f7c88959fa2978b7e7165594f43383f44505c666d7a8583786d60554b4034281c10040000000000000000000000000000000005121f2b3744505b657683909d9f9286796e7b868a7d7063616c71787a7d81858b918e89847e786e6960594f4647545f6a76828174685b4e4135281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303844505c666d79828f939f9e948f857f7a7572717070717275787c80858c8d847d746d665e564d453c342a21180f05000000000000000000000000000000000000000000000000000000000a15212e3b47535f6a7784919eaaab9a8d807467574d42362a1e120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c7985929facaea298887c6f6255493c2f24180c0000000000000000000000000000000006111b2b37434e586773808d9a908377685e5246392d2013070000000c1825323f4b5865727e8b98a59a8d8174675a4e413127160c00050d17212a36424d57616e7b87939facaba0958b7e71665c5044382b1f1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414b5566727f8c999c8f8276685d5245392c2b2a2a29282726252c33383c3d3937332d261d140a0000000000000000000000000000000007121f2b3844505b6673808d9aa79f92867a6d6053473a2d2014090000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26313c4855626e7b8895a0988b7e7265554b4034281c100a0a0a09070604000000000000000000000000000000000000000000000000000000020d17202c353e44484d525457575550483e32291e13080e18212a333c4247484d50524d4b4740382e20160c06111b262f383f444e54565a5c5d5c5a5653504a423e35302820170f0500000000000000000000000000101d2a3743505d6a768383786c60544a535f6a7683909da99d9083776b60544839343f4a545e68717e8a7f72675c5145382c1f130600000000000000000000000000000000030f1b27333f49536773808d9aa399897c6f74808d83766b606164686d7074797f848d93918b837b706b60584e434e58626f7c7b6e6155483b2e2215080000000000000000000000010507080a0d0f101110100f0e0c0a07070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e38424f59606d78828f949e9e948f827a726d67656463636465686a6f747a7f858e8a80786e685f574e463c332a21170d0400000000000000000000000000000000000000000000000000000006121f2b37434e586673808d99a8aa9e918477695f53463a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b6676828f9ca9b4aa988c7f7265554b4035291d1004000000000000000000000000000000000f1b26323d495663707c899893867a6d6154473a2e2114060000000a1724313d4a5764707d8a97a99a8d8174675a4e412e23180c0000050f1a25303b46535f6976828f9ca9b1a79e9184786d6053463a2f24180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3b4855626e7b88959f92867a6d6054473c313837373635343332312f2e2d302d2b27221b140b0200000000000000000000000000000000030f1c28333f4a54626f7c8895a0a3988a7d7063574a3d31261a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000a15212e3a47535f6a7784909d9c8f8275675c5145382c1f16171717161413100c070603000000000000000000000000000000000000000000000008131e29323e474f55565e616464615a50443a3025190d151f2a333c454d5355595d5f5a58524a4032281e130b17222d3841495058606267696a696763605b545045413a322921170e050000000000000000000000000b1824313e4b5764717e8a7d71665b504e5864717e8a97a1a095897c6f63554b403538424c56616c758285796d6053463a2d20130700000000000000000000000000000000000b17222d3e4a5764717d8a97a7988b7e726e7b86897d70665c565d6063676d72798088929590867d706a5f554c4754606a6f6e695f53463a2d21140700000000000000000002080d111414171a1c1d1d1d1d1c1b19171413110d08060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54606b74808d949fa0958f82796e68605d555756565759586062686d737a81898d837a6e695f584e453c33291f160b020000000000000000000000000000000000000000000000000000030f1b26323c4955626f7c8896a0aca096887b6e6155483b2e23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a5466727f8c99a9b3a89c8f8275675d5145382c1f1307000000000000000000000000000000000a13202d3a4653606d7985929a8a7d7064574a3d2e23170b0000000915222f3c4855626f7c8897a19b8e827568554b4034281c1004000009141f2a36424d5765717e8b98a8b2aca0968a7d7064554b4035291d100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a47535f6a7784909d998b7e7165584e4345454443434241403e3d3c3b3a38342e261e1a12080000000000000000000000000000000000000b17222d3847535f6a7784909daa9a8d807467574d42362a1e1205000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e5866737f8c999f9285796d6053463a2d212324242322201f1c1815130f0a040000000000000000000000000000000000000000010d1925303a444f596163696e70716c61564c41362a1b111a26313c454d575f62666a6c66635c52443a3025190f1b27333f49535b606a6f7476767573706c66615a524c443b332920170d0400000000000000000000000613202d394653606c788484786c60534953606d7985919ea79b8e8175675d514538303a44505a626f7c857c6e6255483b2f22150800000000000000000000000000000000000614212e3b4754616e7a8795a09a8e81746873808d83786d60565254555d60676d747e87929892867c6f675d51454e586062615f574d42362a1e120500000000000000040a0f14191e2021242729292a2a292927252321201d191312100c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c66707d89929da3999183796d675e56514b4a494a4b4c4e54565d60686d757d858f847b6f6a5f574e453b31281d140a0000000000000000000000000000000000000000000000000000000a15222e3b4754606a7784919eaaa8988b7e7265544a4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3c4955626f7c8897a1adac9f9285796d6053473a2e23180c0000000000000000000000000000000006131f2c3845515c6675828f998d807366544a3f34281c100300000613202d394653606c7885929e9c908376675c5145382c1f13070000030e1a26313b4854616e7b8796a1acb2a89c8f8275675d5145392c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e5866737f8c999d9083766a5f5352525151504f4e4d4c4b4a494746443f38302c241a1005000000000000000000000000000000000006111c2b37434e5866727f8c99a49e918477695f53463a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000020f1a26313c4855616e7b8895a098897d706356493d302e303131302f2d2c2923221f1b15100b0500000000000000000000000000000000000005111e2a36414c56616b70767b7d7e71685e5246382d22171e2b37424d575f696e737678736e63564c4135291d121f2b3744505b656c747c80828382807d78716c605d564d453b32291f160c010000000000000000000006121f2b3844505b66717e8a7e71655b50515c6673808c99a49f9285796d6053473a2d323e4754606a6f7a6e6a5f53473a2e21140800000000000000000000000000000000000714202d3946525e687784919d9d918477686d7a858b7f72685e52474b51555d606c717e8b939891847a6d605447464e545555534d453b31261a0e02000000000000060e151b1e252a2d2e31333536373736353432302e2d2a25201f1c18120f0a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7883919da49f92877c6f675d554c45403e3d3d3e3f43474c52565e616b707a828d857c6f6a5f574d433a2f261b1106000000000000000000000000000000000000000000000000000006131f2b37434e586773808d9aa8a89b8f8275665c5144382c1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c7885919eabaea2988a7d7064544a4034281c100400000000000000000000000000000004101c2834404b5465727f8c98908376665c5044382b1f1206000005121f2b3744505b6574818e999f9286796d6053463a2f24180d0300000914212d3a46535e697884919eabb7ac9f92867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222c363e4855626e7b88959f95887c6f62555f5f5e5d5d5c5b5a595857565453504a423e362c22170c0000000000000000000000000000000000000f1b26323c4754616e7b87939fa096887b6e6155483b2f24180d0100000000000000000000000000000000000000000000000000000000000000000000000000000a15212d3a47535f697783909d9a8d807367564c41393a3c3d3d3d3c3a38342f2e2b26201c160e0903000000000000000000000000000000000713202d3946525e68707d83878a877a6d6153493f33271b212e3a47535f696e7b8083858073685e5246392f241d2935414b55606c7780898d8f908f8d89847e756d685e574d443b31281d130700000000000000000000030f1c28333f4a54606d798483786c60534a54616e7b87939fa298897d7063564a3d302b37434e5860686d685f584e43372b1f1206000000000000000000000000000000000005111e2a36414d566774808d9aa096877a6d68717e8b857a6d615b5147454b515a616c75828f9b968d807366574d424347494846423b33291f140900000000000009101820262b3036393b3d40424344434342413f3d3a3936302d2c28231c1b16100c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e5865717e8b95a0a3998d81746a5f554b433b352f30303132373a41454c525960686e78808c857c6e695e554b41382d22170d0400000000000000000000000000000000000000000000000000030f1b27323c4956626f7c8996a1ab9f9285796d6053463a2d201308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b6574808d9aa8b2aa9a8e8174665c5144382c1f1308000000000000000105070709080603000c18232e3c4956626f7c89989286796d6053463a2d2013070000030f1b27333f4953626e7b87939f98897c6f63554b4035291f1409000005121e2a36424d576975828f9ca8b5aea3998a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c28333e4850565f697783909d9a8d8074676c6c6b6b6a6a6968676665646261605c5450483e33281c110500000000000000000000000000000000000a15202d3a46525e6976828f9ca8988b7f7265554b4035291d1104000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d5766727f8c999d908377685e52464647494a4a4a494745403c3b37322c27211a140d050000000000000000000000000000000714212e3a4754616d7a879095998b7f72655b5044372b1f222f3b4855626e7b868c9092867a6d61554b403529202c3945515d67727f8c929a9c938f8b8b8e8b827a6e695e564d433a2f24180e05000000000000000000000b17222d3844505c66727f8a7d7064584e525e6976838f9caa998c7f7366594c403327323c464e565e615e564e463c31261a0f020000000000000000000000000000000000020e1925303d4a5763707d8a98a2978a7d70646c78838e81756d62594f474045505a63707c899a9e918578695f53463a3b3c3b3a36312921170d03000000000009121b222a31373b4146474a4d4f505050504f4e4c4a4746413d3a38342e2c271f1c17110b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4754606a7783909da79f92877b6e61584e4339302924232324272b2f353a41464f565e666c747f8b847b6e675d53493f33271f160c01000000000000000000000000000000000000000000000000000a15222e3b4754606a7884919eaba298897c6f6356493c3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f4953636f7c8996a1adab9e9285796d6053463a3024190d000000000002080d1113141615130f0a0713202d3a4653606d79869298887b6e6155483b2e2215080000000b17222d3847535f6a74818e959a8d8073675d51453b31251a0e0200020e1a2531414d5a6774808d9aa7b3b4ab998c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212d3944505a61686d727f8c999f928579797978787877767675747371706f6e6d66615a5045392d211408000000000000000000000000000000000005111e2a36424d5764717e8a98a29c8f8276675d5145392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313c4855626e7b88959f93877a6d61544c5254565757565553514b4947433c38332a251f170f0800000000000000000000000000000613202d394653606c7985929e9d9184786c6053463d3227222f3b4855626e7b88969d988c7f73675d5145392f232d3a4754606d7a85929f9d938e827e7f82868f837b6e685e554b40352920170d0200000000000000000006111c28343f4a54606d798583766a60544d5765727f8c98a59b8e8174685b4e4135282b343c444c5254524c443c342a20150a000000000000000000000000000000000000000814202d3a4753606d7985929f9a8d817467656f7c878b7e726b60595047434653606d7986939f97887b6e6155483b2e2f2e2d2a261f170f06000000000009121b242d343c43474c5254575a5c5c5d5d5c5c5a585654524c4a4644403938322c28231c17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a0ac9c8f8275695e52463c31271e181617181b1e242930363d444c545b606d727f8b83796d655b50443d31281d13070000000000000000000000000000000000000000000000000006131f2b37434e586773808d9aa8aa998d807366564c41362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d394653606c7884919eabada1978a7d7064564c4135291c1106000001080d13191d202122211f1b150e131f2c3845515c66768390968a7d7063574a3d3024170a00000006111b2b37434e58606d79828f949285796d60574d42362a1e12050000091925323f4c5865727f8b98a5b2b5a89b8e8275685b4f4235281c0f020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303c4955616c717a7d808d9aa2979287868585858484838281807f7e7d7c7a79716c6155493c3023170a0000000000000000000000000000000000020e1a25303b4753606d7985929f9f92867a6d6053473a2d22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000915212e3a47535f697784919d9a8a7e716457565e616364646362605c5555544e48443d363029211a11060000000000000000000000000005121f2b3744505b6574818e9aa0968a7d7063594f44382c212e3a47535f6a7884919e9e9285796d60554b403429313e4b5764717e8a98a29a8e81757272757b828e847a6e675d51453f32291f1408000000000000000000000c17232e3845515d677380897c6f62574d56636f7c8996a29b8f8275685c4f423529222b323a41464746413a322a22180e030000000000000000000000000000000000000006131f2c3845515d6775828f9b9e9184786a5f6a73808d877d706b625a534e4a525e687985929f96897c706356493d302322211e1a140d06000000000006101b242d363f464e53565e61646668696a6a6968676563615e565753514a48433d38342e27221b140b080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36424d566773808d9aa7a49a8a7e7164564d42342a1f150c070a0a0f13191e252a323b424a505b636d727f8c81776c60584e433a2f24180c03000000000000000000000000000000000000000000000000030f1b27323d4956636f7c8996a1aa9d908377685e5246392d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3744505b6573808d99a4afa99b8f8275685d5246382e23170b00040c13191e252a2d2e2f2e2b262018101c2834404b546774808d998c7f7266594c3f3326190c000000000f1a26313c45515c676d7a82898d8d8073695e53463a2d21140700000b1825323e4b5865717e8b98a4b1b6a99d9083766a5d5043372a1d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d878a8c8e939da299928c8888888888888989898a8a8a8987877e7164574a3e3124170b00000000000000000000000000000000000009141f2c3945515d6774818e9ba3988a7d706453493f33271b0f03000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d576773808d9a9a8e8174676164686d6f7070706f6d6766625f58554f46423b332c2417110a020000000000000000000000030f1b27333f495363707d8997a19c8f82766b6054483d2f262b37434e586673808d99a1978b7f72675c51453b3134414d5a6774808d9aaa95897c6f6565696e78818e83796d605a50443b3025190e0400000000000000000006111c2935404b55616e7b868275695f5354616e7a8794a19b8e8275685b4f4235281920293036393a3936302920180f06000000000000000000000000000000000000000004101d2935404b5565717e8b99a196887b6f62606d788390867d716c625f58545c616e7a8798a296897c706356493d30231614120e09030000000000000c17222d363f4850585f62686e70737576777676757472706d686763605c54544f46443f38332d261d19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e697784919daa9f93867a6d6154473b3021180d0300000001080d131920292f383f44515b636d74808c7f726a60554b4135291e150a000000000000000000000000000000000000000000000000000a13202d394653606c7884919eab9f93877a6d6154473a2d22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f4953616e7b87939facac9f92867a6d61544a3f34281c10040d161e24293036393a3c3b37322a221818232e3e4b5865717e8b988e8174675b4e4134281b06000000000915202934404b555e686d757c8081817b6e6154483b2e21150800000b1824313e4b5764717e8a97a4b1b7aa9d9184776a5e5144372b1e11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d828180818e98a2998c7f7c7b7b7b7b7c7c7c7c7d7d7e7f80817d706356493d3023160a00000000000000000000000000000000000004101d2935404b5563707c8996a19a8e8174655b5044372b1f12050000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313d4a5663707d89989e918478696c71777a7c7d7d7d7c7977736f6a636059524d453e3627221b140b0200000000000000000000000b17222d3a4653606d7985919e9f94897c6f63594f42382d26313c4855626f7c8895a09e9184796d60574d423635424e5b6875818e9ba194877b6e61575f666d78828e81756c62564d41362a20150a000000000000000000000d18242f3946525e697581867b6e615554606d7a8793a89a8d8073675a4d4034271a171e252a2d2e2d2a251e170e06000000000000000000000000000000000000000000000c18242f3a4754616d7a86929f998c7f72665c666e7b8592867e756f6a6867666d73808d99a197887b6e6255483b2f22150805020000000000000005111d28343e48505a626a6f757a7d80828383838382817f7d7a7774706d6663605953504a443f382f29241e160d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7b8795a0aa9d918477685e5246392d20130600000000000002080e171d262d333f49515b606d7882877c6f675d51453d30261c110600000000000000000000000000000000000000000000000005121f2b3744505b6574808d9aa9a49a8a7e716453493f33271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3846535e6975828f9ca7aea3998c7f72665c5044382b1f160c161f282f353a4146474947433c342a2016232f3c4956626f7c899a8f8276695c4f432d22170b00000000030c18232f39434c565e616b6f7375756e695e53463a2d21140700000b1724313e4a5764717d8a97a4b0b7aa9e9184776b5e5144382b1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4855616b707574737985929f9d9083776f6f6f6f6f6f6f6f707171727374706b6054483b2f221609000000000000000000000000000000000000000c18242f394653606c7884919e9e9185786c605346392d2013090000000000000000000000000000000000000000000000000000000000000000000000000000000914202d3a4753606d7986929f96887b6e717e8387898a8a89888684807c76706b615e57504840332d261d140a000000000000000000000006121f2b3844505c6674808d9aa69c8f82766b60544a3f33282e3b47535f6a7784909da1978c7f72695e53463e32414e5b6874818e9ba295887c6f6255545c666d7a848b7e71685e52463c31261b0f0400000000000000000007121d2a36424d5763707c898074675d54616e7b8894a1968a7d7064574a3d3124170d13191e2021201e19130d0500000000000000000000000000000000000000000000000713202d3946525e6876828f9c9d908377695f5f69707d87928b827c77747374797f88939f9e9285796c605346392d2013060000000000000000000815212d3945505a626c717c82868a8d8e8d8d8d8e8f8d8b898684817d79746f6b64605c545049413d352f281f17110a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a8a89b8e817568564c41362a1e11050000000000000000050b141c2228373f44505c666d7a8484796d60594f42382e23170c010000000000000000000000000000000000000000000000030f1b27333f4953636f7c8997a1ac9b8e8175655b5044372b1f1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b2a36424d5763707d8a95a0acab9e9184786d6053463d33271c151e28313a41454c525455534e463c32261b202d3a4753606d7a86939083776a53493f33271b0f030000000007121d27313a444c52596063666868615e574d42362a1e120500000c1825323f4b5865727e8b98a5b1b6aa9d9083776a5d5044372a1d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f59616368676774808d9aa0958a7d70636262626262636364656566686360594f44382c2013070000000000000000000000000000000000000007121f2b3744505b6573808c9aa197897c6f6256493c31261a0e02000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c6776828f9c988b7e71788182838485888b9092908d88837d756e69615a52443f382f261b11060000000000000000000003101c28343f4a54636f7c8996a19f94897d70665b50443b302b37434e5866727f8c9aa49f92867b6e615a50443b404d5a6773808d9aa4978a7d7164574a545e686f7c87857b6e61584e43372b21160b000000000000000000010e1a25303b4854606b7784857a6d605c66717e8b979a9184796d6053463a2d201307080d11131413110d080200000000000000000000000000000000000000000000000005111d2935414c5664717e8b989f95887b6e6157606b717e87928f8884818081848c939aa1978d8073665b5044382b1f12060000000000000000000a1724303d4956616c717e878f9286838180808081828486898d918d8a85817c76716d66605b534f45413a3128231c140c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6a5998c7f7266594c3f3025190d01000000000000000000020a11172528343f4a545d686f7c8781746b60544a3f34281d13070000000000000000000000000000000000000000000000000b17222d394653606c7884919eab9e9285786c605346392d2013080501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313b4653606c7883909da8aca1968a7d7064594f44382c1d1d27303a434c51565e61625f584e43372b1e202c3945515d67788591918578655b5044372b1f120500000000010b151f28323a41464f54565a5b5b54534d453b31251a0e0200000c1926333f4c5966727f8c99a5b2b5a89b8f8275685c4f4235291c0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c28333e474f55575c55626f7b88949f9d9083776b615555565656575758595a5b56544f473d32271b100300000000000000000000000000000000000000030f1b27333f4953616e7b87939f998d807366574d42372b1e1206000000000000000000000000000000000000000000000000000000000000000000000000000004101c2934404b5566737f8c999b8e81756c74757677787b7f83898f94949089827b706c635c504941382d22171007000000000000000000000b17232e394653606c7884919ea69d9083786c60564c41362a323c4854616e7b87939fa2988f82756c61564d423e4b5865717e8b98a99a8d807467574d4c565f6a73808c81746a5f53473d32271b100300000000000000000009141f2c38444f5965727f8b7e7265666d7883909d93887d70665c5144382c1f120600010507070705010000000000000000000000000000000000000000000000000000010d1925303a4754606d7a86929f998c7f72665859616c717e879296918e8d8e91969fa19892857a6d61544a3f33281c0f030000000000000000000b1825313e4b5864717e8b9299918477747473747475777a7c8084898e928e89837e78716c656059524c433e342e261e170e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1c2835424f5b6875828e9ba8a4978b7e7164584b3e31251808000000000000000000000000061317232e38424c56606a737f877c6f665c50443a2f24180d01000000000000000000000000000000000000000000000006121f2b3844505b6674808d9aa9a197887c6f6255493c30251913110d080b090706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b3744505b65717e8a96a0aca89d9083766b6054483d2f26232e39434c555d60686d6f6a5f53473a30251d2935404b55697683909286796c605346392d2013060000000000030d16202830353d4348494d4e4f4846423b33291f14090000030f1b27333f49536773808d9aa6b3b5ab998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212c353e44484a4f535f6a7683909c9f958a7d70635a504949494a4a4b4c4d4e4948443d352b21160b0000000000000000000000000000000000000000000b17222d3846535e6976838f9c9d918477695f53473a2e2114090000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3c4956636f7c89999e9185786a6869696a696e72767c828a9297938f857e736e605b53493f332722190d0400000000000000000006121f2b3744505b6573808d9aa9a0958b7f72685e52463d312d3a46535e697683909caa9e948b7e71695e52463f4855626f7b8897a19d908477695e53464e58606d7983877c6f62594f44382c1f150900000000000000000002101b27323d4754616e7a8683776a6e78818e95928c7f726c61544a4034281c100400000000000000000000000000000000000000000000000000000000000000000000000813202c3945515d6775818e9b9d9184776a60545a626c717d858f949b9a9b9ea09d9691867d6f685e5242382d22170b00000000000000000000111e2b3844515e6b7784919ea096877a6d6766676869676d7073777c81868e92908a847e78706b605d564f443f38302920180f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2a3744505d6a7783909daaa396897d7063564a3d3023170a0000000000000000000000000006111c26303a434e58606d798483786d60554b4035291d11040000000000000000000000000000000000000000000000030f1c28333f4a5463707c8997a1a9998c7f7366564c41362a21201d191a18161413100c070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f4953606d7884919ea7ab9f95897d7063594f42382d2834404b555d676d747a7c6f62564c41362a1d242f424e5b6875818e99877a6d6054473a2d211407000000000000040e161e252932383b3c4042423b3a36312921170d03000005121f2b3744505b6576838f9ca9b6afa3998a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a232c33383c3d434e5864717e8a96a19d9083766c61544b403c3d3e3e3f40413d3b38322b23190f0400000000000000000000000000000000000000000006111b2a36424d5764717e8b98a095887b6e6255483b3025190e0200000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986929f97887b6e625c5c575f61656a6f767e85909497928a80746c655b50443f342b1f160c010000000000000000030f1b27333f4953636f7c8997a1a79f92857a6e61594f433a2f36424d5765727e8b99a4a69f92857b6e615a50454653606c7985929ea095877b6e61544845515c67707d8982756b6054483c31261a0e020000000000000000000b16202d3946525e687582897c707b838e93928a7f736d63594f42392e23180c00000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5563707d8996a095897c6f6256505a626b707b82898e92979495908c847c6f6b60564c412f261c1106000000000000000000000f1c2835424f5b6875828e9ba8978a7d70645a5a5b555d6063676a6f757b81878f94918a837d746d686159504a423a322a2119110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3845525e6b7885919eaba295897c6f6256493c2f23160900000000000000000000000000000a141e28313d45515c66707d897f72675d5145392c2013060000000000000000000000000000000000000000000000000b17222d394653606c7884919ea99d908376685e5246392f2e2d2a25272523201f1c181413110d0705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3844505c66717e8a959faba79c9083766b60544a3f332c3845515c676d7981868377685e5246392d202734404d5a6773808d94877a6d6154473a2e21140700000000000000040c131921272c2f303335352e2d2a251f170f050000000613202d394653606c7985929fabb8ac9f92867a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a21282c2f313c4653606d7884919e9f958a7e71665c51453a2f3132323335302f2c272119110700000000000000000000000000000000000000000000000e1a25313b4753606d7985929f998c7f7266564d42362a1e1105000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c677683909d988b7e726558504d53555860626c717a828e939f928c80776c605b51473d31281e13080000000000000000000b17222d394653606c7885919eaba2978e81756b60554b4035313b4754616e7a86939faca2978f82756c62574d44505b6674818e9ba7988b7f7265564c414b55606b7582897d7063574d42372b1e120600000000000000000005111e2a36414c5664717e8a817d85909590867e736d635b51473e30271c1207000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a4653606c7884919e9a8e8174686159515961696e767d8185878786847f796f6a60594f443a301d140a00000000000000000000000c1926323f4c5965727f8c98ab9a8d807367554b4e4b515356586062696e747c828b92959087817a706b605c544c443c332b231a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3946525f6c7985929faca295887c6f6255493c2f2216090000000000000000000000000000020c161f2834404b54606b758285796d6053473a2d20140700000000000000000000000000000000000000000000000006121f2b3844505b6674808d9aa99f93867a6d6154473c3c3a39363034322f2d2c292320201d1813110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b28343f4a54606c7883909da5ab9f94897d70665b5044392f3a4653606d79838d92877a6d6154473b302526333f4c5966727f8c94877b6e6154483b2e211508000000000000000002080d161b1f222327282821211e1a140d05000000040e16222f3b4855626e7b8897a2adb2a99c8f8276685d5245392c201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810161c20232b3844505c66727f8b97a29e9184796d60564c413529252627282322201b160f0700000000000000000000000000000000000000000000000009141f2c3945515d6774818e9a9d908376695e52463a2d201408000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b556773808d9a9b8e827568584e4346484e545a61686e78818e939c928d80746d62594f433a2f24190d04000000000000000006121f2b3744505b6574818e9aaaa99e93897d70675d51453e333946525e687683909ca99f92858b7e71695f544a4a5464707d8a98a39c8f8276685d5245434f59626f7c878275695f53473a2d211408000000000000000000010d1925303b4753606d7985868692928d837c716c635b52493f352c1e150b000000000000000000000000000000000000000000000000000000000000000000000000000008131f2b3844505b66737f8c999f92867a706b605d55575e616b7075797a7b7a77726d6760584f473d32281e0b020000000000000000000000091623303c4956636f7c8999a39d908376675d5145404547494e54565e616a6e767e859095938e847d736d665e564e453d352b231a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b657986939faca295897c6f6256493c2f231609000000000000000000000000000000040d18232e39424f59626f7c887e7265584b3f3225180c000000000000000000000000000000000000000000000000030f1c28333f4a5463707c8997a1a4998a7e7164544a494847464143413e3c3a38342f2d2c2924201e1913100b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3844505b65707d89939eaaa69d9083786c60554b40353f4c5865727f8b959a8b7e7164574d42362a25323e4b5865717e8b94887b6e6155483b2e22150800000000000000000000040a0f1315161a1b1c1514120e0903000002080d16202b37434e5865727e8b98a9b3ada1968a7e7164564c4135291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b10141c28343f4a54606d7a85929fa0968b7f72685d52453c31261a1a1b161613100b040000000000000000000000000000000000000000000000000004101d2935404b55626f7c89959f93877b6e6154473b3025190e0200000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3e4b5764717e8a979e9285786a5f53473a3d434750565e666d78818e949d928b7f726b60554c41352920150a0000000000000000030f1b27333f495363707d8a98a2aea4999184796d605a50453b36414c5665727f8b98a89d918485867b6e665c504753606d7a86929f9f92867a6d6054473d47535f6a7481867b6e6155483b2e221508000000000000000000000815222e3b4854606a76838f93918b80796e6a615a524940372d231a0c030000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54616e7a86929f9892857d746d675f5753596063656c6d6e6d6766605d554e463d352b20160c0000000000000000000000000714202d3a4753606d7986929f9f92867a6d6053473a393a3d43474d52585f626c717b838e9397918880786d685f574f473d352b231a11070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c798698a3aea396897c706356493d3023160a0000000000000000000000000000000007121d27303d4754606a707d786c605346392d201306000000000000000000000000000000000000000000000000000b17222d394653606c7884919eab9b8e8175665b57565554524c4f4d4b494745403d3a39352f2d2a251e1c16100c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27333f4953606b75828f98a2aca0958b7e71675d51453c424f5c6975828f9c9c8f8276695e5246392e23313d4a5764707d8a95887b6f6255483c2f221509000000000000000000000000030709090d0f0f08070502000001070c13191f28323a47535f6a76838f9ca9b0a69e9184796d6053463a2f24190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b17232e3845515d6773808d98a29e92857a6d60574d42372b1e150a0a090703000000000000000000000000000000000000000000000000000000000c18242f394754606a7783909d9a8b7f7265564d41362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000715222e3b4855616e7b8897a197887b6e6255483b32373e444d545c666c78828f959f92877d6f675d51453c32271b0f0400000000000000000b17222d3a4753606d7985929fac9f93878e81746c61574d42383b4855616e7b8896a0a0968c808c82786d60584e515d6775828f9ca3998a7e7164574b3e434e58626e7b878174675a4e4134271b0e000000000000000000000916232f3c4956626f7c8994948b7f746d675f57504840372e251c1108000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3846525e6875818e9ba197928a81796e6960584f54535b606161605d5553514b433d342b23190e0400000000000000000000000006131f2c3845515c677683909ca399897d7063564a3d2f2d32373b42464e535a62696e79818b939a938d827a6e6a60594f473d352b23190f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b657985929faca3968a7d7063574a3d3024170a00000000000000000000000000000000000b151e2b37434e58616c706c665b5044382b1f12060000000000000000000000000000000000000000000000000006121f2b3844505b6674808d9aa89e9285796c64636362615e565c5a585653514b4a4745403a3936302c271f1c17110a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38414f59616e7b86929fa7a79e9184796d60584e42434f5c6976828f9c9f93877b6e61544b403428303d4a5763707d8a95887b6f6255483c2f221509000000000000000000000000000000000002020000000000030b12181e2429313a444f59626f7c88949faba99f948b7e71665c514538281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2935404b55616d7a86929fa1978d8073695f53463d30261c11060000000000000000000000000000000000000000000000000000000000000007121d2b38434e5865727f8b989c908376685e5246392d20140900000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535f697885929f988b7e7265584b3f312b323b424b545b666d798391999991847a6d60584e43372b21160a000000000000000006131f2c3845515d6776828f9ca99c8f82878a7e71695e544a3f3a46535f697784919ea8988c7f838c7f736a60564c5565727f8c98ab9b8e817568574d423c47535f6975818275695c4f4236291c0f000000000000000000000c1926333f4c5966727f8c998f82766d605c554e453e362e251c130a000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2a36414c56636f7c8995a0a196918e847b6f6a615950495053545453514b47454039312b221910070000000000000000000000000004101c2934404b556673808d99ab998d807366564c413529272b30363c434750575e676d747f8892999490847c6f6b60594f473d352b22180e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f495f6c7885929faba4988b7e7165584b3e3225180b0000000000000000000000000000000000030c1b27323c46505a6164605b544a3f33281c0f0300000000000000000000000000000000000000000000000000030f1c28333f4a54636f7c8996a1a197897c7171706f6f6d686b69676562605c555753514b4746413a38332c28231c150c09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f3d46525e69727f8c959faaa1968d80736a5f544a3f4e5b6774818e9aa4998c7f73665c5145382d303d495663707c8994887b6e6155483b2e2215080000000000000000000000000000000000000000000000030d151d242930353c434c56606b75818e9ba6aaa1978f82786c60544b403428160c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d18242f3a46525e6873808d98a29f92867b6e61594f42382e23170c01000000000000000000000000000000000000000000000000000000000000010f1b27323d4754616d7a86929f93877b6e6154473b3025190e020000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d576976838f9c9b8e817568574d42372b293039424a545d676f7c86929f968d81746a6054473d32271b0f020000000000000004101d2935404b5565727f8c98a99c9083808d857b6e665c50443f424d576774818d9aa79c8f827b86877c6f685d5455626f7c8895ab9e918478695e52463a424d57626e7b7a6d6054473a2d211407000000000000000000000c1926323f4c5965727f8c988d8174655b514b433c332c241c130a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303b4854606b7783909d9e91848591857c706b615a50444647484745403a39352f281f1910070000000000000000000000000000000c18232f3d4a5663707d8999a39d908376685d5245392c201f252a31373f454d555c606d727e8792999691857d706b60594f473d342a20170c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d45515e6b7884919eaba6998c7f7366594c40332619090000000000000000000000000000000000000a15202b343e4750555753504a42382d22170b0000000000000000000000000000000000000000000000000000000b17222d394653606c7884919ea99b8e817e7d7d7c7b7a79777674716f6d676763605d5554524c48443d38342e261e1a140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2a36424d57606d78839098a2a89f92877c6f665b50444b5764717e8a98a29e9185796d6053493f33303c4956636f7c8994877a6e6154473b2e21140800000000000000000000000000000000000000000000010b151f272f353a41454d555e68707d89939eaaa29892857b6e665b5042392e231804000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d2a36414c56616d7a86929fa3998f82756b60544a3f34281e1308000000000000000000000000000000000000000000000000000000000000000a16202d3946525d6875818e9b998b7f7265564d42362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000020e1a2631404d5a6773808d9a9e918578695f53473a2d21272f38424b555f6a73808c969f93877c6f62594f43382c1e130800000000000000000c18242f3c4955626f7c8897a19f92867b849082786d605a50473e4b5764717e8a97a99f9286797f8c847a6d665b54606d7a8799a3a196877b6e6154473b3c47535f696e6d685d5245392c201307000000000000000000000a1724303d4a5763707d8a979184786c60534639312a211a120a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141e2c38444f5965727e8b979f93867d8490867d716c61594f463c3b3a39352f2c29241d160d07000000000000000000000000000000000714202d3a4753606d7a86929f9f92867a6d6054473a2d21141920262b333b434b515b626c717e87929a9792867d706b60594f463c32291e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061d2a3743505d6a7683909da9a79a8e8174675b4e4130251a0e020000000000000000000000000000000000040e19222c353e44494a46443f382f261c110600000000000000000000000000000000000000000000000000000006121f2b3844505b6674808d9aa89e938e88888a898887858482807e7c797673706d6765615e56544f46443f38302a251f170f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b1a25303b44505c666e7b86929fa5a3999083786c60584e4753606d7a86929fa1978b7e71655b5044392e3d4a5663707d8998867a6d6053473a2d2014070000000000000000000000000000000000000000000007121d27313940454c52575f676d7a84919ea5a09892867d6f695e544a3f30271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303a46525e6873808d97a29e94897d70665c50443a2f24190d0300000000000000000000000000000000000000000000000000000000000005111d2935414c5663707c89969c8f8376695e52463a2d2014090000000000000000000000000000000000000000000000000000000000000000000000000000091824313e4b5764717e8a97a197887b6e6155483d2f261d262f3a434e58606d7984919e9a8f82766b6054483a3025190d01000000000000000713202d394653606c7985929ea3998a7d7c878d80746c62594f474855616e7b8897a1a398897c78828f82786c605c5d687986929fa896897c706356493d37424d575f62605d564c4135291d1104000000000000000000000714202d3a4753606d79859296897c6f6256493c2f23180f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b27323d4753606d7985929e998e817a8390877e716b60584e453b302c2924201d18120c0400000000000000000000000000000000000613202c3945515d677683909ca3998a7d7064574a3d30251a0e151a212930394045515a616c717e88939f9892867d706b60584e443b30271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1c2935424f5c6875828f9ba8a99c90837669574d42362a1e120500000000000000000000000000000000000007101a232c33393c3d3938332d261d140a00000000000000000000000000000000000000000000000000000000030f1c28333f4a54626f7c8996a09f92877c7c7d7f808285878a8d8b898683807d7a75716d6863605953504a423d363129211a110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f28343f4a545f69727f8b939ea89f958c7f726a5f554b515d6773808d97a29d9083786c60544a40343d4a5764707d8a928578675c5145382c1f1306000000000000000000000000000000000000000000000c18242f39434b51565d60696e79829096a19f9691867d706b60574d42382d1e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2a36414c56616d7a85929fa69d9183786d60564c4135291f1409000000000000000000000000000000000000000000000000000000000000010d1924303a4854606b7784919e93877b6e6154473b31261a0e02000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7c8899a3988b7e7165594f41382d221d28313c45515d67727e8b979f94897c6f63564c41362a1e11050000000000000005121f2b3744505b6576828f9cab9a8d80747f8c8b7e716b61594f46535f697885929eaa998c7f727b858d80746d66636d7a8799a3a4978a7d7164574a3e313c454d535554524c443a3024190d010000000000000000000006131f2c3945515d67727f8b928c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b161f2c3945515d67737f8c989f92867a7a8390877d706a5f574d43392e231813100d070100000000000000000000000000000000000004101d2935404b556673808c99aa9a8d807467574d42362a1e110a0f171e272e343f48505a616c727f8b929d9892867d706a5f564c42392e23180f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1a2734414d5a6774808d9aa7ab9f928578695e52463a2d2014070000000000000000000000000000000000000008111a22282d30312d2b28221c140b0200000000000000000000000000000000000000000000000000000000000b17222d384754606a7784919ea3998a7d7170727476787b7e8184888c908d8a86827e7a75706b65605c544f46423b332c231b13090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b17232e38424d57626d75818f96a0a79f92877c6f675d514b55616d7a85929fa0958a7e71665c51443a3e4b5864717e8b9184776b554b4034291c100400000000000000000000000000000000000000000004101d2935404b555d60686d737b8390959d98928c847c706b61594f453b2f261c0c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1925303a46525e68727f8c96a0a0958b7f72685d52453b31251a0e0300000000000000000000000000000000000000000000000000000000000008131e2c38444f5966727f8c99998b7f7265574d42362a1e1205000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986929f9d9083766b6053493f33271e1f2935404b55606d7985929e9b8f8275685e5246392d20130600000000000000030f1b27333f49536673808d99a69d90837777828f877d706b6059504d576a7683909da89b8e8275707d878d80787170737e8b97aba5988b7e7265584b3f32333c4247484745413a32281e1308000000000000000000000004101d2935404b55626d74808c8b7f7265584c3f3225190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b55616d7a86929f988c80737a8491867c6f695e554b40342820170d020000000000000000000000000000000000000000010d18242f3c4956636f7c8998a29d918477695e52463a2d201406050c151d2328363e48505a626d73808d949f9892857c6e685e544b40342821170d02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5ada297877b6e6154483b2e21150800000000000000000000000000000000000000000810171c202324201f1c17110a0200000000000000000000000000000000000000000000000000000000000006111c2b37434e586673808d99a79b8e817566656769696e7174777b7f84898e928f8b86827d77726d666059534d453e352d251b1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303c45515b606d7a849198a2a3999083796d605b51525e68717e8b949e9e9184796d60564c413f4c5966727f8c8f8275695c4f422f23180c0000000000000000000000000000000000000000000006131f2c3845515d676d747a8086909596918c8680796f6a61594f463d33291d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2a36414c56606d7984919ea69e92857a6d60574d42362a1f140900000000000000000000000000000000000000000000000000000000000002101b27323d4754616e7a86929d908376695f53463a2d21150a0000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c667784909d9f95897d70655b50443a302519242f3945515c6774808d9a9f92867a6d6154473a2e23170b00000000000000000b17222d3e4a5764717d8a97a49f93867a6d7a8491867d706b615a515c6975828f9ca89d9084776b717e8b8d837e7c7f86929faca7978a7e7164574b3e312a31373a3b3a3935302820160c020000000000000000000000000c18242f3943515b646e747f827b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f3946525d6874808d999e9285796e7b8591857b6e675c51453e32291e13080000000000000000000000000000000000000000000713202d3a4653606d7985929fa095877b6e6154473b2e23170b00030b1218242d363e48515b606d78828f96a09791847a6e665c51453e33291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c8996a8b2a9978a7d7064574a3d2f24190d010000000000000000000000000000000000000000050b1014161713120f0b060000000000000000000000000000000000000000000000000000000000000000000f1b27323d4855626f7c8895a09f9285796d605a575e6164676a6e72777c81878e93928f89847e78706b615e574f473f372d251b120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e2a333f45515d676f7c869299a3a0958e81756d62594f56626c75828f97a0968b7f72685e5246414d5a6774808d8d8073675a4d4034271a07000000000000000000000000000000000000000000000714202d3a4753606d7a81868c9296918a847f7a736d675f584f473d342b21170b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1925303a45515c67717e8a949fa1978d8073695e53463b31251a0e020000000000000000000000000000000000000000000000000000000000000b16202d3946525e6875828f9b95887b6e6155483c32261b0f0000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b546875828e9ba79d9083786c60564c413529221d2934404b55626f7c8997a2998b7f7265544a3f34281c1003000000000000000615222f3b4855626e7b8895aca49a897d706f7c8692867d716c605d556874818e9ba79f9285796c6c727f88918b898c9298a3aba095887b6e6255483b2f22262b2e2f2d2c29241e160e040000000000000000000000000007121d27313f49535c646d72766e695e52463a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2935414c56616e7b86929f978c7f726f7d879083796d60594f443a3025190b02000000000000000000000000000000000000000006121f2c3844505c6675828f9ca7978b7e7164544a3f34281c1003000007121b232c363f44505c666d7a849199a1969083786d605a50453b30251a0d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8796a0aca69a8d807367564c4135291d11040000000000000000000000000000000000000000000004080a0a06060300000000000000000000000000000000000000000000000000000000000000000000000a16212e3b47535f6a7784919da297897c7063564d525457575f62666b6f757b8187909495918b837d756e69615951493f372d241a0f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c18212935414c555f6a707e87929fa49e938b7f726b6058505a616e7b8591989e92857a6d615a50454d566976828f8b7e7165584b3e3225180b0000000000000000000000000000000000000000000006131f2c3845515d676d7a80869091847d77726d68605c554e463d352c22190f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2834404b55616c76828f98a39f92867b6e61574d42362a1e120500000000000000000000000000000000000000000000000000000000000005111e2a36414c5663707d8996998c7f7266584e43372b1c1106000000000000000000000000000000000000000000000000000000000000000000000000000c18232e404c5966737f8c99a69f958b7e71685e52463e342a20232f3a4653606d7985929f9c8f8275665c5044382b1f1206000000000000000714212e3a4754616d7a879aa4ac988c7f726a707e8792877e746d67626675828f9ca8a398877a6d606d727e869095999fa3a7a0999083776a5f53473a2e211a1e212221201d19130c040000000000000000000000000000010b151f2d37414a535b636669615e574d42362a1e1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a46535e6974818e999e9285796d727f8c8d80746b61564c41362a1d140a000000000000000000000000000000000000000003101c28343f4a5465727f8b98a89b8e8275665c5044382b1f120600000009111a2428343f4a545d686f7c87929f9f958d80746c61574d42362a20160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945525d687784919eaaaa9d908377685d5245392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e5866737f8c9aa49a8d807367574e46474a4e5355596063696e747c838c9298959189827b706c625b51493f362c21170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f19242f3a434e58616c727f8b929ca49f92877d706a5f57525e696f7c86929a978e81746c61574d525e69788591887b6e6155483b2e2215080000000000000000000000000000000000000000000004101d2935404b555d686d737b838d918a837d766f6a625b5049413930271c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c18232e3943505a626e7b86929fa3988e8174695e53463a2d211408000000000000000000000000000000000000000000000000000000000000010d1925303b4653606c7884919d9084776a5f5347382d22170b00000000000000000000000000000000000000000000000000000000000000000000000000071724313e4a5764717d8a97aba29791857a6d615a50463c32281f2b3844505c6676838f9c9f9285796d6053463a2d201307000000000000000713202d3a4653606d7986939fa39a8d8174676c717e8b928a8079726e6e7885929eabaa94877b6e61626c717c838a8f9298959591877d7063574e42372b1e121214151413110d080200000000000000000000000000000000030d1b252f3841495157595c54524d453b30251a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2a36424d57626e7b87939f978c7f726d75828f887d70685e52463d2f261b110600000000000000000000000000000000000000000c17232e3b4855616e7b8896a09f9285796d6053463a2d20130800000000091217232e38424c56606a737f8c959f9d928a7e71695e52463e32281e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c566874818e9ba7ac9f92867a6d6054473a2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26323c4854616e7b87939f9e9184776a5f53473b3e4247484f54575f616a6f787f8691979d938f857d726d625b51483e33291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313c464f59626d73808d929ca39992857c6e695e5756606a717e88939a938a7e70695f5654616e7b87918478695f53463a2d21140700000000000000000000000000000000000000000000000c18242f39434c565d606a6e78808b93908a827c726d605b534a42392e23181108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303e47535f69727f8c949f9f92867b6e6154483b3025190d0100000000000000000000000000000000000104060706040100000000000008141f2b3844505b66737f8c9995887c6f62544a3f33281c0f030000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8899a49e92858681756c61584e443a312828343f4a546774818d9aa298887b6e6255483b2f2215080000000000000006121f2c3844505c6677838d9298988d807367626c727f8c918d847f7b7b818e97a1ada894877b6e615a616a6f787d8286888887847d706b6054453c31261a0e060808070704010000000000000000000000000000000000000009131d262f373f464a4c4f4846423b33291f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b47535f6a75818e999e92857a6d6e7a8592857a6d61594f41382d22170b00000000000000000000000000000000000000000614212d3a47535f697784919ea297897c6f6356493c3025190d010000000006111c26303a444e58606c78839099a39f92857b6e615a50443a2f24190d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3e4b5864717e8b97a7afa3998a7d7164544a3f34281c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15212d3a46535e697683909ca096887b6e6255483b31373a3d43484d53585f666c727c8591959e9792887f726d625a50453b30251a0e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2a343e47515b636e73808d929fa29791847b6e695e5758616c727f88929992857b6e685e5965727f8b8d807467574d42362a1e1205000000000000000000000000000000000000000001050907121d27313a444c52575f666d747f87939490867f736c655c544a403428231a0e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2b37424d57606c78828f96a1998d807367564c41362a1d110500000000000000000000000000000001070d10131413100d070b09080706030f1c28333f4a54616e7a86929a8d8073665b5044382b1f13070000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986939f9f9286818b7e716a5f564c433a312a2e404d596673808c99aa968a7d7063574a3d3024170a0000000000000003101c28343f4a54606d7980868a8a867c6f625a626d727f8b92918c88888e939da9ada196867a6d6053585f666c7176797b7b7a77706b61594f44332a2015090000000000000000000000000000000000000000000000000000000b141d252d353a3e3f433b3a36302921170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b37424e57626e7b87929f978c7f7368717e8a8e81756b6053493f33271b0f030000000000000000000000000000000000000006121e2b37424d576774808d9aa9998c807366564c41362a1d110500000000000a141e28323d44505b666f7c87929fa2988f82756c62564c4135291f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7b8795a0acab9b8e8174665c5044382b1f12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d5765717e8b98a3998c7f7266564d41362b2e32383c42464e545b606a6f7b839196a09a938b7f726c61574d42362a21160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d18222c353f49525c636e73808c939aa19691847b6e695f585a626d727e87929791837a6e68626b768390887b6e6255483b31261a0e0200000000000000000000000000000000000000060c11151718151f28323a41454e545c606d717e889398928b80776d665c51443f352c20160c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c1a26313c44505b666e7a8491979e918478685e5246392d2013070000000000000000000000000000040c12181d2020201d18191716141312100c17222d3846525e6875818e9b9184786c6053463a2f24180d0b0b0a0a090706040000000000000000000000000000000000000000000000000000000006131f2c3845515c667884919ea3998a7d85867c6f685e564c433b33333f4c5966727f8c99a4978a7e7164574b3e3124180b00000000000000000c17232e3845515d676d747a7d7d7b6f6a5f535b636d727e87929795949a9da5afab9e918478675d514e545b6064676d6e6f6e686361594f473d3321180e03000000000000000000000000000000000000000000000000000000020b131c232a2e3133362e2d2a251f170f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a26313c47535f6974818e989f92857a6d6c76828f897d6f655b5044372b1f160b00000000000000000000000000000000000000020e1a26313d4a5763707d8a98a39d908376685e5246392d2013060000000000020c162028333f4a545f6a73808d97a19e948b7e71685d52453b31261a0e03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e697784919daaab9e9285796d6053463a2e23180c00000000000000000000000206080808070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b4754606d7a86929f9c908376685e5246392d21272c31373c424a505860696e7a849197a29f93887e70695e52463d32271b0f01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a232d37404a525c636e737f889298a09691847b6f6a615a5b626c717e86909590837a726f717d898f82766a5f53473a2a1f1409000000000000000000000000000000000000000911171d2124252b2923282f353c424a505a626c727f8c939f928d81786d605b51473e32281e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009152028333f4a545e686f7c85929796877a6d6154473a2e21140700000000000000000000000000040d161d24292c2d2c292426242321201f1c171c1c2a36414c56636f7c899596897d7063554b4035291d1818171716151413100c07070604010000000000000000000000000000000000000000000004101c2834404b546976828f9cab988b7f7e8b847a6d685d564d453e383f49536673808c99a4978b7e7164584b3e3125180b000000000000000006111c2935414c555d60686d70716e695f584e515b636c717d858f949ea1a9aaaaa59b8e817468554b424a5053555c606162615e56554f473e352b210f060000000000000000000000000000000000000000000000000000000000010a11181e2225262921201e1a140d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202b37424d57616e7b86929f978d8073696e7b879083786c6053463d33271c1002000000000000000000000000000000000000000914202d3a4753606d7986929f9f93877a6d6154473a2e23170c000000000000040d17222d38424e58606d7984919ea69e92857a6d60574d42362a1f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36424d576673808c99a8ada197897d7063554b4034281c1004000000000000000003090e1214151414110e090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202c3945525d6875828f9b9f93867b6e6154473b30251b1f262b2f383f444e575e686e7b85929aa49a92857b6e61594f43382c1d130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111b252e38404a525c636d727e8691969e9691847c706c605c5a616c707b838d9290857f7b7e8592867b6e61574e42372b180e0300000000000000000000000000000000000009121b22292e31323836302f2c2930383f44505a626d74818e959c938e81746d635a50443a3025190d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b17222d38424c565f6a6f7c858d8e85796d6053463a2d201307000000000000000000000000010c161f282f35393a39352f32312f2e2d2c2823292925303b4854606b7783909b8e8174675d5145392c25252524242322201f1d18171413110d08010000000000000000000000000000000000000000000c18232e414d5a6774808d9aa79b8e8175828f837a6d685f5750484344505b6575818e9baa978a7d7064574a3d3124170a0000000000000000000d19242f3a434c51565d606364615e574e4649515a626b707b828b91979b9d9d9c93897c6f6356493c3f44464b5153555554524c48443e352c23190f0000000000000000000000000000000000000000000000000000000000000000070d121618191c1514120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a26313c46535e6974808d979f92867b6e6974808d8a7d7164594f44382c1e13080000000000000000000000000000000000000006131f2c3845515d6775828f9ca49a8a7e7164544a3f34281c100300000000000006111c262f3c45515d67717e8b95a0a2978d8073695f53463b31251a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25303c4855626f7c8896a0aca99b8e8174675c5145382c1f150900000000000003090e151a1e212221201e1a140f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5664707d8a97a1998b7f7265564c41362a1e141a1d262d333d454d565f69707d88939fa2978f82756b6054483a2f24180d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121c262e38404a525b636c717c848f939e9691867e746d67605a61696e7980868d928b888a918a7e71695f53453c31261a0600000000000000000000000000000000000007101b242d343a3d3e44433d3c38332c2e343f48515b606d798390999e938c7f726c61564c41352921160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3b444e58606a6f7a80827d6f665c5044382c1f120600000000000000000000000007121d2831394045474540413f3e3c3b3a38342e3635353438444f5965717e8b9792857a6d6053473b313132313130302f2d2c29242421201d19130e090300000000000000000000000000000000000000071925323f4c5865727f8b98a59d9084777a8590837a6e69615a544f4c54606c7884919ea298897c6f6256493c2f23160900000000000000000008131e28313a41454c5254575754524d453c3f48505961696e777e858a8e90918f8b81746b6054483b33383940454648484746413b38332c231a11070000000000000000000000000000000000000000000000000000000000000000000106090c0c10080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009151f2a36424d57616d7a85929f988e81756b6e7a869083776b6054483a3024190d0100000000000000000000000000000000000004101d2935404b5565727e8b98a79b8e8175665c5044382c1f1206000000000000000a141d2935404b55606d7884919da89f92867b6e61574d42362a1e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212e3a47535f6a7784919dabab9f9285796d6053463c31261a0e0100000000050d141a1f262b2e2f2e2d2a251f1b150e060000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a4653606d7985929e9c8f8376685e5246392d20130b141c2228333b444d57616b74818e98a29e94897c6f63554b4135291d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141c262e384049515a616a6f7a818b929798928880796f6a615e5f666d737b8185888988847e716c62574d42332a2015090000000000000000000000000000000000040f19222d363f454a4b51504a48443d352e28363f45515c676f7c87929f9f93887d70685e52463d33271c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d29323c464e5860686e73756f6b60544a3f34281c10030000000000000000000000010d18242f39434b5153514b4e4c4a494746443f434342414140404753606d798592988b7e7164574d423e3e3e3e3e3d3d3c3a39352f312d2c29241e1a140b060000000000000000000000000000000000000a1724303d4a5763707d8a96ac9f928679707d8790837b716c636059565e66707d8996a19f9285796d6053463a2d201307000000000000000000010c161f282f353a4145474a4a4746423b33363f474f575e656c72797e818384827e776c60594f44382c2b2e34383a3b3c3b3936302c28211a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25313b46525e68727f8c969e93897d706874818d897d7063564c4135291d1105000000000000000000000000000000000000000c18242f3b4854616e7b8795a09f9285796d6053463a2d20130900000000000000020b18242f3944505c66717e8a96a0a3998e8175695e53463a3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e5866737f8c99a3ada2978a7e7164574d42372b1e1308000000050f171f252a31373a3b3b3a36302b2620181008000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2c3845515c6674808d9a9f92867a6d6154473a3025190d0a11172129323b454f59616e7b86929fa69b8f8275675d5145392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a141c262e373f48505860686d757e858e9299938d837c756e69636060696e74797c7d7c78716c625a50453b3121180e0300000000000000000000000000000000000a16212b343f485056585e5c56554f473f372e2934404b555f6a73808d97a19a92857a6d61594f44382c21160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b17202a343d464e565e6167686360594f42382e23170c00000000000000000000000004101d2935404b555d605d555a5957565453504a504f4f4e4d4d4d4c515c6773808c988f8276695f534a4b4b4b4b4a4a4948474540413e3a39352f2a251f17110a02000000000000000000000000000000000915222f3c4855626f7b889aa4a399887c6f717e8b90857e756f6b6968686d7883909da59c8f8275665c5144382c1f120600000000000000000000040d161e24293035393a3d3e3b3a3630292d353e454d535b60676d7175777776716c655b50473d32271f23282c2d2e2f2e2d2a251e1c161008000000000000000000000000000000000000000000000000000000000305060a0c0c0a07060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2935414c56606d7984919e9d9083786d6e7b888e8275685d5246392d201306000000000000000000000000000000000000000714202d3a46525e697783909da297897c706356493d31261a0f020000000000000007121d28343f4a54606c7884919ea99f92877b6e61564c4135291d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26313c4754616e7b86929faca99c8f8276695f53473a2f24190d0000030d17212930363c4247484746423b37322a221a11080000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b54626f7c8895a0998b7e7265564c41362a1d1105060f172029333e46525e6874808d9aa89f92867a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a141c252e363e464e565d606c717a81878e92959087817b75706d666765666d6f706f6c66615a50483f332a1f0f060000000000000000000000000000000000030f1b27323d46505a62656b6963615951493f342b2f39434e58606d7a85919ea1978e81746b6054483d32271b0f020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e18222b343d444c52545a5b56544f463d30261c11060000000000000000000000000613202c3945515d676d67696765646261605c545d5c5c5b5a5a59595855616d7a869293877b6e615457575858585757565553514b4e4a4745413a363127221b140b020000000000000000000000000000000714202d3a4753606d7a86939fab978a7e716c73808c928a827c787575767a818f959f9e93897d7063544a4034281c10040000000000000000000000040c13191e24292c2d30312e2d2a251f232c333b414950555c6064686a6a6965605b53493f352b2116181c1f20222221201e1914100b05000000000000000000000000000000000000000000000000000000060b0f1213171919171312100c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d1925303a45515c67707d8a949f958c7f726976838f867a6d6154473a2d22170b0000000000000000000000000000000000000005121e2a36424d576673808c99a99a8d807367584e43372b1f120600000000000000010b17232e3844505b66727e8b97a2a3998d8074685e5246392d20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202d3a46525e6975828f9ba7ac9f93877b6e61564c4135291d12070009141f29333b42464d535554524d47433c342c231a1007000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3947535f6a7783909d9c8f8276685e5246392d20130800050e17212a36414d56626f7c8896a1a3988a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a131c242c343d444c525a62686d747b81868b90938e87827d79767372716d686362605b5450483f362d21180e00000000000000000000000000000000000007131f2c38434f59626c717776706b635b51463c3227313c45515d67727f8b97a19e93897d7063594f43382c1e1408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019222b323b4146474d4f4948433d342b1e150a000000000000000000000000000714202d3a4753606d7978767472716f6e6d666a6a696868676766666565656874818e998d80736664646464656464636362605d555a5754524c46423b332d261d140b02000000000000000000000000000006131f2c3845515d677885919ea6998c8073666c77808a928f8985828183868f939ea0968f82756b605442392e23180c0000000000000000000000000001080d13191d2021242421201e1a141a20292f383f444b5153575b5d5e5c5853504941382d23190f0c10131315151414110d0802000000000000000000000000000000000000000000000000000000020a11171b1f2023262623201f1c17110c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2834404b55616c76828f989f92867b6e717e8b8b7e716453493f33271b0f03000000000000000000000000000000000000020e1a25303c4956626f7c8997a19e9184776a5f53473a2e211408000000000000000006111c28333f4a54606d7985929eab9f92867a6d6154473c32261b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36424d5663707d8a95a0aca49a8d8073685d5245392e23180c010e1a25303b454d52575f62615e57534e463d352c22190d0400000000000000000000000000000000000000000000000000000000000000000000000000000007121d2b37434e5865727f8b989f92867a6d6154473a3025190d0100060f1925303b47545f6a7884919eaa998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a121a222b323a414550565d61696e747a7f83878a8c8d898682807f7e7a6d605553504a423e362d241b0f060000000000000000000000000000000000000915222f3b4854606b717e84837d726d63584e43372b2935414b55606d7985929ea59c9083766b6054483b3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101920293036393b40423c3b38322b22190c03000000000000000000000000000f1c2835424f5b6875818583817f7d7c7a797877767675747473737272727171717b8693918478707071717171717170706f6d676a6764605d56534d443f382f261d140a000000000000000000000000000004101d2935404b556a7683909da89b8e817568656c737e869095918f8e8f92999e9e9590847a6d60594f4430271c120700000000000000000000000000000002080d11131417171414110e090e171d262d33394045474b4e50514f4b46443f382f261b11070004060708090807050100000000000000000000000000000000000000000000000000000000040b141b22272b2d303332302d2c28231c18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c18232e3943505a616e7b86929f989082786d7a878f8275655b5044372b1f1205000000000000000000000000000000000000000913202d394653606c7884919ea096887b6e6255483b3025190d0100000000000000000b17222d3845515c6774808d9aa7a2988b7f7265584e43372b1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303b4653606c7883909da8ac9f92857a6d60554b4034281d1207121e2a36424d575e61696e6e69625f584f473d342b1f160c010000000000000000000000000000000000000000000000000000000000000000000000000000000f1b26313c4754606d7a86929f998b7e7165564c41362a1d1105000008141f2b37434e586875828e9ba79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081019202830353e444c52575f61686e72767a7d7f81818281807e7a6d685d5246443f382f2c241b120900000000000000000000000000000000000004111d2935414c56636f7c88918f897f726a6054473b2e242f3a45515d6773808c99a79f94897c6f63564c41362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e171e252a2d2e3435302f2c272119100700000000000000000000000000000b1825323e4b5865717e8b908d8c8a8987868584838282818080807f7f7e7e7e7e7e8391968c7f7d7d7d7e7e7e7e7d7d7c7b7a787674716d68615e57504941382f261c110600000000000000000000000000000c18242f424e5b6875818e9ba89c908376695b606c717c838b90959798999897928c837a6e685d52473d321e150b000000000000000000000000000000000000010407070a0b0807050200050b141b22272f34383a3e424444433e3937332d261d140a0000000000000000000000000000000000000000000000000000000000000000000000000000040d161d262d3337393d3f3f3d3a38342e28231d150c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303e47535f69737f8c959f948c7f7377849185796c605346392d2013060000000000000000000000000000000000000005121f2b3744505b6574818e9aa8998c7f7266564c41362a1d1105000000000000000006111c2834404b55626f7c88959faa9d9083776a5f53473b2e2115090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b3744505b65717e8b96a1aca2988c7f72675c5145392f24180c14202d3a46525e696e777b7b766f6a60594f463c31281e13080000000000000000000000000000000000000000000000000000000000000000000000000000000a15202c3945525d6875818e9b9c8f8276685e5246392d2014090000020f1b26323f4c5966727f8c99a59b8f8275685c4f4235291c0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e161e2429323a41464d53565e6165686d70737475757573716d685e564c4138332d261d1a1209000000000000000000000000000000000000000713202c3945525d6876828f9a9c91887c6f6255493c2f222935404b55616e7b88959fa69b8f8275685e5246392d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e2021272823221f1b160f070000000000000000000000000000000713202d3a4653606d798491979897959a939291908f8f8e8d8d8c8c8b8b8b8b8a8a91959c918c8a8a8a8a8b8b8b8a8a8988868583817e7a746e69605b534a42382d22170b0000000000000000000000000000071a2733404d5a6673808d99a69d9083766a5d5a616a6f787e83878a8c8c8b89857f796e685e564c41352b210c03000000000000000000000000000000000000000000000000000000000000020a11171d23292c2d3135373736322d2b27221b140b0200000000000000000000000000000000000000000000000000000000000000000000000000010c161f282f383f44464a4c4c4a46443f38342e271e180f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2b37424d57606d798391999f92877d75828f887b6e6155483b2e22150800000000000000000000000000000000000000030f1b27333f495364707d8a98a39c908376685e5246392d2013080000000000000000000c18232e3947535f6a7683909da9a095887c6f6255493c31251a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f4953606d7984919ea8aa9e9184796d60554b4035291e1315212e3b4854616e7b838887837c706b60584e433a2f24190d04000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5663707d89969f92867a6d6154473b31261a0e0000000a1825323e4b5865717e8b98a49c8f8276695c4f4336291c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c1319202830353b42464c5254565e616366676868686664615e564c443a2f28221c140b0800000000000000000000000000000000000000000714212d3a4754606d7a86929f9f92857a6d6054473a2d21242f3946535f697683909da99f93877a6e6154473b2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e1114141a1c1615130f0a040000000000000000000000000000000006131f2c3845515c666e7c858f949b9fa29f9f9d9d9c9b9b9a9a99999898989797979da0a39c9997979797979897979696959791908d8a85817b726c655b544a3f33281c0f03000000000000000000000000000c1825323f4b5865727e8b98a49b8e8174685b505860666d71777b7e7f7f7e7c79726d665e564d443a3023190f000000000000000000000000000000000000000000000000000000000000000000060b12181c1f2024282a2b2925201f1b17110a02000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313a414950535659595653504a454039302a21191108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c1a26313c45515c666f7c87929f9992867d828f897d7063564a3d3023170a00000000000000000000000000000000000000000b17222d3a4753606d7a86929f9f93867a6d6154473a3024190d01000000000000000007121d2b37434e5866727f8c99a7a7998d807366574d42362a1e1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3844515c66717e8b95a0aca1968b7f72675d51453a3024191d293643505c6976838f959490867d706a60564c41352921160a0000000000000000000000000000000000000000000000000000000000000000000000000000030d19242f3a4653606c7884919d998b7e7265574d42362a1c110600000b1724313e4a5764717d8a97a49b8e8275685b4f4235281c0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e161e242931363b4146474c525457595a5b5c5b5a5754524c443a32281e17110a020000000000000000000000000000000000000000000a1723303d4a5663707d8999a39b8e8174675d5145392c201d2a36424d5766737f8c99aca4998b7e7265584b3f2e23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080d0f0909070300000000000000000000000000000000000004101c2834404b545f6a6e7a82898e92989a9d9fa2aaa4a5a6a6a6a5a5a5a4a4a4a4a9a9a8a8a5a3a3a4a3aaa39f9e9c9b9a9997969598928e867f776c665b5044382b1f1206000000000000000000000000000a1724303d4a5763707d8a969992897c6f6356494e545c6065696e717273716f6d66605c544d443b32281e11070000000000000000000000000000000000000000000000000000000000000000000001070c101314181b1d1e1c1813120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a434c535b6063666563605c54514b433c332b231a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009151f2834404b54606a73808c959f98928a8f938b7e7164584b3e3125180b000000000000000000000000000000000000000006131f2c3945515d6775828f9ca4998b7e7165564c4135291d11040000000000000000000f1b26313c4855616e7b8895a0aa9d918477695e53463a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b2834404a54606d7884919da6a99e9184796d60564c4135291d1426333f4c5966727f8c939e9892867c6f685d52453d32271b0f040000000000000000000000000000000000000000000000000000000000000000000000040a0f12151f2b3744505b65727f8c989d908376695f5346382d22170b00000b1724313e4a5764717d8a97a49a8d8174675a4e4134271b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191f262a3036393b4146474a4c4e4e4f4e4d4b4746413a322920160b0600000000000000000000000000000000000000000000000c1926323f4c5965727f8c98ab978a7e7164554b4135291d1a26313c4956636f7c899aa4ab9b8e827568544b4034281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424e575f686e757c81868a8d9092989697999a9b9b9c9c9c9d9d9d9c9c9c9b9b9a9998979695989291908e8d8c8a8988878685858480796c605346392d201306000000000000000000000000000815212e3b4854616e7b878d8c8880736b605448424a5053575e616465666563605c54514b423b322920160c00000000000000000000000000000000000000000000000000000000000000000000000000000406070b0f1111100b060503000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c565d656c707272706d66605c554d453d352c241a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18232e39424e58606d78839097a29f979b988b7e7165584b3e3225180b000000000000000000000000000000000000000004101d2935404b5565717e8b99a49c8f8276685d5245392c2013070000000000000000000a15212d3a46535f697784909daaa095877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3944505c66707d8a949faba1978c7f72685d52463c2f261b25323e4b57636d74818e95a09891847a6d60584e43382c21160a00000000000000000000000000000000000000000000000000000000000000000000060e151b1f212227333f4953616d7a86929f95887b6e61544a3f33281c0f03000b1825323e4b5865717e8b98a8988b7e7265584b3f3225180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d141a1e252a2d3035393a3d4041424242403e3a3936302920170d040000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a499887b6e6155483b2f241814202d3a4753606d7a86939faa9e918477665c5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080a0b0a0907060400000000000000000000000000000000000000000000000000000000000000000007121d27303c454e565e616a6f757a7d80838587898b8c8d8e8e8f909090909090908f8f8e8d8d8c8b89888786848382807f7e7d7c7a79797878736c665b5044382b1f1206000000000000000000000000000714212d3a46535e69717e807f7c736e63594f43383f44464d5354575959585653504a454039302920170e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945525d686d777d7f7f7d79726d675f574f473e362c231a1007000000030506080908060503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303d44505c666e7b859299a3acaa978a7d7164574a3e3124170b0000000000000000000000000000000000000000000c18242f3a4754616d7a86939f9f92867a6d6054473a2f24180d01000000000000000005121e2b37424d576773808d9aaba7988b7e7265584b3f3024190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c28343f4a54616c76829099a3a99e92857a6d61584e41382d22222e3a46515b606d79839098a1968e81746a6054483d32271b0f03000000000000000000000000000000000000000000000000000000000000000009101820262b2e2f332d3846525d6874818e9b998c7f73665b5044382b1f130806101c28343f4a5466737f8c99a096887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e14191e2025292d2e30333435353533312e2d2a251e170e05000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d999f9386796c605346392d2013131f2c3945515d677884919eab9f9386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e111414161717151313100c0704000000000000000000000000000000000000000000000000000000000000000b151e2a333c444c52586062676d707476797b7c7e7f808182828383838383838382828181807f7e7d7b7a79787675747271706f6e6d666b6b66605b544a3f33281c0f030000000000000000000000000005121e2a36424d57616c7173726f6a635c52463d3234383b4246484b4c4c4b4946443f38342e271e170e0500000000000000000000000000000000000000000000000000000000000000000002030404030100000000000000000000000000000000020507080d1012110f0b070604000000000000000000000000000000000000000000000005111e2a36424d57606d7a82898c8c89857f796e69605950483e352c22190f05060b0f121315161513120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e28343f4a545e69707d87929aa4a298897c6f6356493c302316090000000000000000000000000000000000000000000713202d3946525e687683909ca3998b7e7164554b4135291d11040000000000000000020e1a26313d4a5763707d8a99a3a89b8e817568564c4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3842505a626f7c87929fa8a2978d80746a5f53493f33271e2a353f45515d676e7c86929f9f93877c6f62594f44382c1f14090000000000000000000000000000000000000000000000000000000000000009121b222a31373a3c403d3b414c56626f7c89959e9184786c6053463a3025190d1018222c3844505c6675828f9c9d9184776a5f53473b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e1114191d2021242627282928272421201e19130d0500000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c999f928578665b5044382b1f12101d2935404b556a7683909da9a499877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b10141a1e202123242422201f1c1813100c070000000000000000000000000000000000000000000000000000000000030c18212a323b41464e54555d606467666c6e707172737475767676767676767676757574737271706f6d686b6968676664636261605c545e5a53504a42382d22170b0000000000000000000000000000020e1a25313b45505a61646766625f58524a40342b282c31363a3b3e3f403e3c3a38342e28231d150c050000000000000000000000000000000000000000000000000000000000030608090c0f101111100e0c0808060200000000000000000002090e1114141a1d1e1e1c181413100c070100000000000000000000000000000000000000000714202d3a46525e6974818e94999897928c837b706b615a50473e342b21170c11171b1f20222322201f1b17110e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c17232e38424d57606b717e8893999f9285796d6053463a2d20130700000000000000000000000000000000000000000005111d2a36414c5665727f8c98a79b8f8275675d5145392c2013070000000000000000000914212d3a4754606d7a86929faa9e918477685d5245392c201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303e47535f6a73808d96a0a99f92877c6e655b50443b3025232935404b555f6a727e8b949e9a9083766b6054483b31261a0e020000000000000000000000000000000000000000000000000000000000060f1b242d343c4347484d4948444854606a7783909d96897d7063564c41362a1c141a222a343c4653606d7985929e968c7f7265584e43372b1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205080d11131417191b1b1c1b1a181413110d08020000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a979f928679685e5246392d20161018242f43505c6976838f9ca9a994877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161c1f252a2d2e3031302f2d2c28231f1c18120c0600000000000000000000000000000000000000000000000000000000060f18202930363d43484c515457545b60616364666768686969696a6a6a6969696868676665646362615d565d5b5a595756555453514b514d46443f382f261c110600000000000000000000000000000009141f29333e485055575a5955544e4640382e221c1f252a2d2e31323332302d2b28231c18120b0300000000000000000000000000000000000000000000000000000000040a0f121515191b1c1d1d1d1b181514120e0904000000000000050d141a1e2021262a2b2b2825201f1d18120b06000000000000000000000000000000000000000814212e3b4754616e7b87939f948f87878b90867d706c61594f463d33291e181b22272b2d2e2f2f2d2b27221b1a140d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303b454f59626c727f8791968e8175665c5145382c1f1306000000000000000000000000000000000000000000010d1925303b4855616e7b8895a09f92867a6d6054473a2f24180d0100000000000000000613202c3945515d677784909daaa096877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e2b37434e58606d79849199a4a3998f82776c60564c41362a22242f39434e57626d75828f989f94897c6f63574d42362a1e120500000000000000000000000000000000000000000000000000000000030d18212d363f464e53555a56544f474e5865727e8b979b8e8275685e5246392e231f252a343c46505a64707d8a979e9184796d6053473c32261b0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070a0d0e0f0f0f0d0b0707050100000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8795a099877a6d6154473c31281f1c1d2935414b556a7683909da9a197867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009111921272c30363a3b3d3e3d3c3a38342e2c28231d17110a03000000000000000000000000000000000000000000000000000000060e171e252a32383a4145474a4a5053545658595a5b5b5c5d5d5d5d5d5d5d5c5c5b5a5a5958565554524c504f4d4c4b4a494746454045403938332d261d140a00000000000000000000000000000000030d17212c363e45494b4d4c4947433c342e261c10141a1e21212426262523201f1c17110c0700000000000000000000000000000000000000000000000000000000050b10151b1f21222628292a2a29282522211e1a15100c07000000080e171f252a2d2e3337383735312d2c29241d17110a0200000000000000000000000000000000000c1825323f4b5865727e8b999c8f827a7a7f8590877e706b61584e453b302723292d3337393b3c3b3937332d2a251f170f09010000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e29333d47505a626d727d8489857b6e61544b4034281c1004000000000000000000000000000000000000000000000814212d3a46535f697783909da3988a7e7164554b4135291d1104000000000000000004111d2935414c556875818e9ba8a896897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c1a26313c45515d676f7d87939fa79f948b7e71685e52463f342a1f27313c45515b616e7b85929f9b8f8275695f53463a2d2115090000000000000000000000000000000000000000000000000000000009141f29333f4850585f6266636059534e53606d7985929f92867a6d61544a4034282c31363e464e58616c7682909c928a7d70675c5145382a20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e697784909d978a7d7064584e433a312c28282c3945515d677784919eaa9e918578675d5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b232b33383b424647494a4a484645403a38342e28231c150c06000000000000000000000000000000000000000000000000000000050d141921272c2f35393a3d3f444648494b4c4d4e4f4f505050505050504f4f4e4e4d4c4b4a484746414342413f3e3d3c3b3a38342e332d2b28221c140b020000000000000000000000000000000000050f1b242c34393d3e403f3c3b37322a221c140a090e12141518191918161312100b060000000000000000000000000000000000000000000000000000000000070c161c20262b2e2f32353637373634322f2e2b261f1c18120b0308121a202930363a3b40434544423e3a38352f28231c140c02000000000000000000000000000000020f1b2835424e5b6875818e9b99897c6f6d727a8390877d706a60574d43392e2f34383f444648494846443f38363029211b130a020000000000000000000000000000000000000000000000000000000000000000000000000000000000030c17212b353f48515b626b70797c7a6e695e5342392e23180c000000000000000000000000000000000000000000000006121e2a36424d5766737f8c99a89b8e8275675d5145392c2013080000000000000000010d19242f3f4c5965727f8c98a5a4988b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202935404b55606b73808d95a0a69f92857a6e615b51463c31281f2a333f46525e69727f8b959f93877b6e6155483c31261a0e020000000000000000000000000000000000000000000000000000020e1a26313b45505a626a6f73706b625f58535d6773808d99998c7f73665c51443834383b42464f585f6a717e8b94938d80736b61554b403429180e04000000000000000000030506100c070704010000000000000000000000000000000000000000000000000306070a0e100606030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d5765717e8b959b8e81756a5f554b433d383434383f4754606d7a86929fa89b8f827568554b4035291d1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101b242d353d44484d52545657575553514b46454039342e261e18100800000000000000000000000000000000000000000000000000000002080e161b1e24292c2d2d3338393b3d3e3f404142434343434343434343424241403f3e3d3c3a39353035343331302f2e2d2c282327201f1c17110a020000000000000000000000000000000000000009121b22282d303134332f2e2b262019100a0200020507080b0c0d0b090706030000000000000000000000000000000000000000000000000000000000030b121821282c31373a3c3f4243444443413f3b3a37312c28231d150c111a242c333b4246474d5051514f4b47454039342e261e140a00000000000000000000000000000004101c2934404b556a7784909d9286796d61686e798290867d6f695e554b403439404549505355565553504946423b332d251c140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19232d363f49515961676d6f6d685e574d4230271d1207000000000000000000000000000000000000000000020a11171c26313b4855626e7b8895a09f92867a6d6054473a3025190d010000000000000000081723303d4a5663707d8996a3a6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18242f3a434f59606d79839097a2a2978f82756d62584e433a2f26212a36424d56606c7883909d998c807366574d42372b1e1206000000000000000000000000000000000000000000000000000005121e2a36424d57626c717c807c766f6a625f58616e7b87929e9184796d6053463e3f44464d5359616a6f7c8692938e81786c60594f43392f2318060000000000000000060b0f12131c191413110d08020000000000000000000000000000000000000000060b101213171a1d13120f0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b4653606d7883909893877c6f675d554e4644403f4446515a63707d8a99a3a0968a7e7164574b3e2f24180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18222d363f474f54575e6163646362605c5453514b443f38302a221a120900000000000000000000000000000000000000000000000000000000040a0f13191d202122282b2d2e303133343535363636373737363636353534333231302f2e2d292428272624232221201f1c181a13120f0b06000000000000000000000000000000000000000000000910171d212424272622221f1b150e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151d232833383c4347484c4e4f5050504e4b4847423c38342e271e181a232c363e454d5254595d5e5e5b5853514b443f3830261c1106000000000000000000000000000006131f2c3845515c677885929e918578665c5e676d7a8391857b6e675c51453e434b51535b60616262605b53524d453f372e261c120900000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b242d373f474f555c6062605d564d453b311e150b000000000000000000000000000000000000000000060c141c23282b2d3a47535f6a7784919da2988a7e7164564c41362a1d110500000000000000000915222f3c4855626f7b8895aaa79b8e8174685b4e4135281b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313d45515c676e7b85929aa49e948b7f726a5f564c41382d2225303b44505b66707d89949d908477695f53473a2e21140800000000000000000000000000000000000000000000000000000714212d3a46535f69717e868d89827c756e6a63606975828e9b978a7e7164594f4a4a5053575e616b707c8491928c81786d665b50473e31271d1207000000000000020a11171b1f20292621201d19130c040000000000000000000000000000000000020a11171c1f20242729201f1c17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2c3844515c666f7c8692989183796d67605853514a4a50535b626c76828f9ca49a9184796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a343f4850596063696e7071706f6d6664605c55504a423c342c241b1209000000000000000000000000000000000000000000000000000000000001080d111314171c1f2021232526272828292a2a2a2a2a2a2a29292827272625232221201d191c1a19181716141313100c0706060300000000000000000000000000000000000000000000000000060c111517181a191615130f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151e272e343e44484e5355595b5c5d5d5c5b5855534d464540393028231f2b353e4850575e61666a6b6a6864605d55504a42382e23170b00000000000000000000000000000714202d3a4753606d7a86989e9184776b54555d686e7b859083796d60594f444c555c60656c6e6f6e6c65615e57514940382e241b0e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b252d353e434b51535654524c433b33291f0c0300000000000000000000000000000000000000000610181e262e34383a3d434e586673808c99a89c8f8275685e5246392d20140900000000000000000714212d3a4754606d7a8798a2a99c8f8276695c4f4336291c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2834404b555f69707d88939fa49f92867c6f685d53493f33272428333f4a54606b75828f9c95887b6e6255483b2f22150700000000000000000000000000000000000000000000000000000815222e3b4855616e7b868d92948f87817c75706c666f7c89959d9083766b605557545c6063696e757d859190877f776d665c544a3f352c1f150b010000000000020b141b22272b2d36332d2c29241e160e08000000000000000000000000000000070c141c23282b2d3034362d2b28221c140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a545f6a707d8692959082796f6a63605c54545c60636d727e8b949f9f93887d70665c5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26313c46505a626b70777b7c7d7d7b7976716d67605c544e463e362d241b1209000000000000000000000000000000000000000000000000000000000000010406060b0f1213151618191a1b1c1c1d1d1d1d1d1d1d1c1c1b1b1a191817151413110d080e0c0b0a0908070604000000000000000000000000000000000000000000000000000000000000000005080a0b0d0c090806030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e27303940454f55585f626568696a6a696765625f5753514b423e342e28313d47505a61696e7376787775716d67605c544a3f34281c1003000000000000000000000000000714212d3a4754606d7a87939e9184776b5e4c565f69707d8a8d80746b61554c565e676d73787b7c7b78746e69625b524a40362c20170d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000009131b232c3039404546494745413a312921170d0000000000000000000000000000000000000000040d18222a30383f4446494c4a55626f7c8896a09f92867a6d6154473b30251a0e02000000000000000613202c3945525d687985929fa99c908376695d5043362a1d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d18232e39434d57616b727f8c929da29891847a6d655b50443f3728222d38424f59626f7c8995988b7f7265584c3f2f24180d01000000000000000000000000000000000000000000000000000714212d3a46535f696e7c80858a8f938e87827d78736f7783909d95897d7063626466666d70757b818a918b837c726c655c544a42382d231a0d030000000000000a141d262d333739433f3a39353028201a1209000000000000000000000000000710191e262e34383a3d41433938332d261d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424e58606b707d858f9490847c75706d666868666d70767f87929f99928b7f726b60544b4034281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e58626c717d8387898a8a8885827e79726d665f5850483f362d241b110800000000000000000000000000000000000000000000000000000000000000000000030606080a0b0c0d0e0f1010101010101010100f0f0e0d0c0b0a090707050100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d273039424b515961636a6f72757677777674726e6965605c544f444039303a434f59616c717b80838484827e79726d665c5044382b1f1206000000000000000000000000000714212e3a4754616d7a87949e9184786b5e514d57616b74808d8a7d70675d545e686d797f8488898885807b726d635c52483e32291e14080000000000000000000000000000000000000000000000000000000000000000000000000000000000000109111a1e272e34383a3c3a39352f281f170f0500000000000000000000000000000000000000010c161f2a343c424a5053565956545f6a7784919ea3998b7e7265574d42362a1e12050000000000000004111d2935414c566b7885919eaa9d9083776a5d5044372a1d110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303b454f59636d74808d939ea0968f82776c605b51493f332d262f3d4754606a7683909b8e817568554b4035291d10040000000000000000000000000000000000000000000000000005121e2a36424d575f6a6e74797e82878b8f8f8984807c797e8b979c8f82766e6f717275797d81868e8b847e786f6a605b534a42392f261c110800000000000006111b262f383f44464f4c4745413a322c241b12090000000000000000000000050f19222b30383f44464a4d5046443f382f261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c27303c464f59606b6f7b828a909187827d7976757576797d828b92999590877f726d62594f42392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a717e88909596979691918f8b857f786f6a615a50483f372d231a0e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070b0907060401000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39434b545c606b70777b7f8182838383817e7b77716d666159514a4239414c55606b717e858c9091918e8b857f786d6053463a2d201307000000000000000000000000000714212d3a4754606d7a87939e9285786b5f4a454f59606d798491847a6d605c666d7a838c8e8481818387867f736e635a50443b3025190d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000080c151d23282c2d2f2d2c29241e160d05000000000000000000000000000000000000000008131e28313c464e545c6063656360596673808c99a79c908376695e52463a2d20150a00000000000000010d19242f44515e6b7784919eaa9d9184776a5e5144372b1e1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e29333e47515b606c78818f949e9e948d80746d635b51443f382f2b37434e5864717e8a98918478675d5145392c20130600000000000000000000000000000000000000000000000000020e1a26313b454e585f62676d71767b7f83868a8d8d898583909b9b948a7d7b7c7d7f8285898c88837e79726d6660585049413930271d140a000000000000000b17222d38414950535c5954524c443e362d241b0f06000000000000000000020d17212b343c424a5053575a5c53504a42382d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2a343d474f5960696e767e83898e8f89858382818385899094928f8a837c726d625b51473d30271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c56626f7c87929a9e938e88858485888c8b837c716c625a51493f352c20170b020000000000000000000000000407090a0e090806030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070b0e100f0f0d090400000000000000000000000000000000000000000002080d11131417161413100d070e0d0d0d0c0c0c0c0c0c0c0c0c0c0c0c0c0b090706040100000000000000000000000000000000000000000000000004101c2834404b555c666d757d83888c8e8f90908f8e8b88837e79706b605c544b4345515d67707d8792979d969189837f7e7b6e6154483b2e211508000000000000000000000000000714202d3a4753606d7a86939f928578665c504445515d67707d898e81746b606d7882908e81787474767b828b80736c61564c41362a1f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f202321201d19130c040000000000000000000000000000000000000000010d19242f3a434e585f666d7072706b60626f7c8895a09f93877b6e6154483c32261b0f0000000000000000081e2a3744515d6a7784909daa9e9184776b5e5144382b1e110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c17212c353f44505b666d78828f949e9d928c7f726d625b504a423a31323d4753606d7a869296867a6d6053473a2d201407000000000000000000000000000000000000000000000000000009141f29333c464e53555c6064696e72767a7d808486898b8d8e8f8f908a88888a8b8885837f7b76716d66605c544e443f382f271e150b02000000000000030f1b27333f49535b606966605d5650483e362d21170d03000000000000000009141f29333c464e545c60636769605b544a3f33281c0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18222b353d474f575e616c71787d8185898b8d8e8e8f8f8e8c8a86827d776f6a625b51493f352b1e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e6875828f999f958e817b7877787b80858e867e716d625b51473e33291d140a00000000000000000000050b101316171b1615130f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000001070c101314181b1d1c1b1915100902000000000000000000000000000000000000050c13191d2021242220201d181c1b1a1a191919191919191919191919191818161413110d0806030000000000000000000000000000000000000000030e18212c3845515c676d78818a9095989b9b979291909192908b847d746d665d554b4a54606d7a859199a29791847c7672716e695e53463a2d211407000000000000000000000000000613202d394653606c7986989f9386796d605346404b55606b74818e887d7066727f8b9184796d66676a6e78818a7e71685e52463b31261a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c101313161413110d080100000000000000000000000000000000000000000004111d2935414c555f6a6f787c7f7d70635f6a7784919da49a8c7f7265584e43372b1c120700000000000004111e2a3744515d6a7784909daa9d9084776a5d5144372a1e11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f1a2328333f4a545c666d78828e939c9f93887f726d605b544c433d373945515d6775828f94877b6e6154483b2e2115080000000000000000000000000000000000000000000000000000030d18212a333c43474b5153565e6165686d7174777a7c7e8081828383838281807e7c7976726e6965605c54504a423d332d261d150c030000000000000005121f2b3744505b656c76726d68615a50483e33291f140900000000000000020e1a25303b454e5860666d7074766c665b5044382b1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019232b353d454d535a61656c7074797c7f818283838381807d7a75706b625f5851493f372d231a0c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a86939f9d9083786e696a696e737a818b887f726d62594f453b2f261c11060000000000000000080f161c2022232822221f1b150e070000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f20242829292825211b140c0300000000000000000000000000000000050e161e252a2d2e312f2d2c2924282827262626262626262626262626262625242321201d1915120f0a0400000000000000000000000000000000000009141f2c38434e58606d79828e939da09b938f8985848384868a8f918a80786d675d54505c6673808c97a19f92857b6f6b6664615e574d42362a1e12050000000000000000000000000005121f2b3744505b657985929f9a877a6d6154473a434f59616d7a859184786d7984918c8073675d575f666d7883857a6e61574d42362a1e12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607090706040100000000000000000000000000000000000000000000000613202c3945515d676f7c84898b7e71645866737f8c99a79d9083776a5f5347392e23180c00000000000005111e2b3844515e6b7784919ea99d9083766a5d5043372a1d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081117222d38424b545c666d78818c929f9a938b7f736c665d554f47433c404b556673808c95897c6f6256493c2f231609000000000000000000000000000000000000000000000000000000060f18212a3137394045474d5254565e616467676d6f71737475767676767473716f6d6666625f5753514b443f383027221b140b0300000000000000000613202d394653606c78827f7a716c625a50453b31261a0e0100000000000005121e2a36424d57606a6f787d8082786c605346392d2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071119232b333b424650535b6063666d6f7274757676767573706d68636159544e463f372d251b11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a99a4988b7f72665f575f62686e757f87887f726b61574d42382d22170b0100000000000008111921272c2f30352f2e2b262019100a010000000000000000000000000000000000000000000000000000000000000000000000070d151d23292c2d3134363635312c261e150c020000000000000000000000000000020c1620283036393a3e3c3a39352f353433333333333333333333333333333332312f2d2c2924211f1b150e0903000000000000000000000000000000020e1a26313b4854606a73808d949ea49b918b827c797776777a7d8287908d82796d665c54606d7984919ea8998c7f736960595754534d453b31251a0e0200000000000000000000000000030f1b27333f495f6b7885929e95887b6e6255483b3d46525e68727f8c8b7f727d8996897c7063554e545c666e7b868174695f53463a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a849196897c6f6256616e7b88959fa095887c6f62544a4034281c1004000000000004111d2935414c566b7885919ea99c8f8276695c4f4336291c10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f39424b545c666d75808a92989f918b80786d676059534e48474b5865717e8b95897c6f6256493c2f23160900000000000000000000000000000000000000000000000000000000060f1820262b2f34383b4246474c525457555d606264666868696a696968666462605c5455534d46454039342e261e17110a0200000000000000000005121f2b3744505b6576838c857e716c62574d42362a1d12070000000000000714202d3a46525e696f7c848a8d8578665b5044382b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071119212931363e41495053545c6062656769696a69686663605d56554f47433c342d241b1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98ab96897c6f63544d53565e616d727e87887d70695e544a3f33281d12070000000000050f19232b33383c3d413c3b37322a221c130a010000000000000000000000000000000000000000000000000000000000000000000710191f272f34383a3e414342413d3730271e1409000000000000000000000000000008131e28323a4146474a494745404342414040403f3f3f3f3f3f3f3f3f3f3f3f3f3e3c3a39352f2e2b26201a140d05000000000000000000000000000005121e2a36424d57626f7c87939fa69d928b7f756f6c656a676d70757c838e8f82786d665b626f7c8896a1a196877b6e61574f4a4846423b33291f14090000000000000000000000000000000b17222d44515e6b7784919e96897c6f6356493c36414c56606d798491857a808d94877b6e6154484b545f697380867b6e6155483b2e22150800000000000000000000000000000000000000010507070b0d0f101111100f0e0c0907060400000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b9695887b6e62555f697683909da79a8d8074665c5144382c1f140900000000000713202c3945525d687885929fa79a8e8174675b4e4134281b0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d273039424b545c606e737e8690959f928d827a706b625f585554535765717e8b97887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000060e151a1d23292c30363a3b4146474a4b515356585a5b5c5c5d5d5c5b5a585553514a4847423c38342e28231c140c060000000000000000000000030f1b27333f49536774818d92887e71695f5346392f24180d0100000000000815212e3b4854616e7b8591969184786b544a3f33281c0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f171f252a2f383f44464a505356585a5c5d5d5c5b595754524c48443e37322a221b120901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a195887b6e625548474c525b626c717e8a857b6e665b5044392f23180c00000000000b16212b353d44484a4e4947433c342e251c130a0000000000000000000000000000000000000000000000000000000000000000050e19222b31394045474b4e504f4d49423930261b1004000000000000000000000000010d1925303a444c5254575553514b4f4f4e4d4d4c4c4c4c4c4c4c4c4c4c4c4c4c4b4b494745413c3a37312a251f170f05000000000000000000000000000714212d3a46535f6975828f9aa4a2988d80746d63605b555d60646a6f79818c8e81786c6065727e8b98a89e918478695e53453e3b3a36312921170d03000000000000000000000000000000061e2a3744515d6a7784909d978a7d7164574a3e303a45515c66717e8a8c80829093867a6d605347424d57616d7a857d6f6356493c30231609000000000000000000000000000000000003080d111314171a1c1d1d1d1d1c1b18161313100c070400000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9c95887c6f62555765727f8b99a39e9285796d6053463b3025190e00000000000714212d3a4754606d7a8798a2a5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b151e273039424b515c636c717b838c9298948f847d756e6a65626060616974818e9285796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000003090f12181c1f252a2d3035393a3e404547494b4d4e4f5050504f4e4d4b494644403b3a37312c28231d17110a02000000000000000000000000000b17222d3f4b5865727e8b9a92867b6e61554b4035291d10040000000004111d2935414c566774808d989e9184776b5e51442d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a1d262d3337393f4446494c4e4f5050504e4d4a4745413a38332b26201910090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a194887b6e6155483b4146515a616c73808d82786c60554b4034291d120700000004101c27333d474f54565b55544e4640372e251c1208000000000000000000000000000000000000000000000000000000000000020d17202b343d434b5153575b5c5c5a544c42372c21150900000000000000000000000005111d2a36414c565e616462605d555c5b5b5a595959595959595959595959595958575654524c4847433c36302921170d030000000000000000000000000815222e3b4855616e7b87939fac9f92857a6d605b53504c51545860666d74808c8d80736c6673808d99a69c8f827569574d42332e2d2a251f170f0500000000000000000000000000000003101d2a3643505d697683909c988b7f7265584c3f3234404b54606c7883908586929386796c6053463c46525d686d7a6f6b6054483b2f221509000000000000000000000000000000060c1013191d2021242628292a2a2929272523201f1c1812100c07000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909d96897d70635654616e7a86929fa1978a7d7064564d42362a1c1106000000000916232f3c4956626f7c8995aaa9978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151e2730394045525a61696e7980868f94969189817b76726f6d6c6e717b86928e8275665c5044382b1f1206000000000000000000000000000000000000000000000000000000000000000001070c1014191e2025292d2e2f35393a3c3e4041424343434341403e3c3a38342e2e2b261f1c18120b060000000000000000000000000000000616232f3c4956626f7c8999988e8174675d5145392c201306000000000713202c3945525d687884919e9e9184786b5e51452f24180d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090b141b22272b2e34383a3c3f414243434342403d3a39352f2c28211b150e07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c8996a995887c6f6255493c363f48505a606d78838b7e71675c5145392e23180c0000000713202c38444f59606368625f58514940372e241a0e05000000000000000000000000000000000003060707060401000000000009141f29333d464e555c6064676969655e54493d3125190d0000000000000000000000000713202d3946525e686d716f6d676a696867666666666666666666666666666666656462605d5655534e46423b33291f14090000000000000000000000000c1825323f4b5865727e8b9aa4aa9a8d8074685d5246444145474e545c606e73808d8a7d706974818d9aa79a8d8174675a4e413127211e1a140d0500000000000000000000000000000000030f1c2936424f5c6975828f9c998c7f7366594c40332e3944505b65707d8a9292989386796d6053463a414c565d676d6760594f44382c1f130700000000000000000000000000030a11171c1f25292d2e313335363737363534322f2d2c28231f1c18120d0701000000000000000000000000000000000000000000000000000000000000000003101c2936434f5c6976828f9c988b7e716558525e6876828f9ca99c8f8275695e5246382d22170b000000000b1824313e4b5764717e8a97a4a197887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151e272e34404850575f676d737b82898f94938e87827f7b7a797a7e859193877c6f62544a3f34281c1003000000000000000000000000000000000000000000000000000000000000000000000004090e1114191d202124292c2d2f31333535363736363533312f2d2c2823211e1a15100c0700000000000000000000000000000000000713202d3a4653606d7986929f92857a6d6053473a2e23170b000000000714212d3a4754606d7a8796a19e9285786b554b4035291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f23282b2d2f3234363637363533302d2c29241e1c160f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8796a1978a7d7064574a3d30363e44505c666e7b8684796d60544b4034281c100400000916222f3c4854606b70746f6a635b524940362c20170d020000000000000000000000000000060c1012131413110d07010000020e1a25303b454e5860676d7174767570655a4d4135281b0f0200000000000000000000000714212e3a4754616d7a7e7c7a787776757473737372727272727272727272727272716f6d6867625f58524d453b30251a0e0200000000000000000000020f1b2835424e5b6875818e9baca398897c6f63564c413735393d424b515c606c77818e857b6e74808d9aa6998c807366594d4033261a120e09030000000000000000000000000000000000020f1c2835424f5b6875828e9b9a8d8074675a4d413427333f4953616b7683909da294877a6d6154473a3a444c555d605d554f473d32271b0f03000000000000000000000002080c151c23282c3035393a3e40424344444342413f3c3a38342e2c28231c18130c0400000000000000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9a9a8e817467584e5664717e8a97a19f92867b6e61544a3f33281c0f03000005111e2a36414d566774808d9aa79e918578695f53463a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151d2328363e454d555c60696e767c82888c91938f8b888786878b9190887f716a5f5342382e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000205080d111314181d20202325272829292a2a2928272522201f1c1814120e09040000000000000000000000000000000000000006131f2c3845515c677783909d988a7d7164544a3f34281c10030000000815222e3b4855616e7b8894a89f928679675d5145392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12171c1f20232527292a2a2928262421201d1913100b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e687885919e998c7f7366564c413529343f4a545f69727f8c7f72665c5145382c1f130800000a1723303d4a5663707d817c736d635b52483e32291e1408000000000000000000000000070c11171c1f2020201d18130c040005111e2a36424d57606a6f797e81838275695c4f4236291c0f0300000000000000000000000713202d3946525e6876828886858382828180807f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7c7a77746f6a615e574d42362a1e12050000000000000000000004111d2a3744505d6a7783909daa9f9286796d6053463a30292c30394045505b656d79848f827673808c99a5988c7f7265594c3f3226190c0200000000000000000000000000000000000000010e1b2834414e5b6774818e9a9a8e8174675b4e4134222d38414f5963707d8a95a095887b6e6255483b323a434b5153514b433d352b21160a0000000000000000000000050d13191e262e34383a4146474a4d4f505050504f4e4b494645403a38342e29241d160d09030000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a969d9184776a605453606d7985929ea3998c7f73665b5044382b1f140900010b14202d3946525e687784909daa9b8e827568574d42362a1e120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b1218242c333c434b51575f626b6f767b8084878a8c8e8e8e8e8b88837d716c62584e4330261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070d11131416181a1b1c1d1d1d1c1b1a18161312100c07060200000000000000000000000000000000000000000004101c2834404b556774818d9a9b8e8174665c5044382b1f12060000000815222f3b4855626e7b8895a1a399867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060b10121316191b1c1d1d1d1b1a171413110d080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414d566875828e9b9c8f8376685d5245392c2e38424d57606d788385796d6053463a3025190d01000713202d3a4653606d7985877f736e635a50443b3025190c02000000000000000000030b12181c23282c2d2d2c29241d160d0a0714202d3a46525e696f7d848a8e8e8174685b4e4135281b0e02000000000000000000000005111d2a36414c56606d7981878d908f8e8e8d8c8c8c8c8c8c8c8c8c8c8c8c8c8c8b8a898784807c756e695e52463a2d2014070000000000000000000005121e2b3845515e6b7884919eaa9d908377665c504438281e20272e343f49535d676f7c878a7e727f8b98a5988c7f7265594c3f3226190c0000000000000000000000000000000000000000000d1a2733404d5a6673808d999b8e8175685b4e423528262f3e4855616b7783909d968a7d7063574a3d313139404547454039312b23190f0400000000000000000000060e171e252a30383f44464c525457595b5c5d5d5c5c5a585653514b46444039352f281f1a140e0600000000000000000000000000000000000000000000000000000000000713202d3a4653606d7884919e95897c6f6257515c6773808c97a19e9184786c6053463b31251a0e0007121d28333f4a54616e7b8795a0a2988a7e7164574b3e31261a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121a212a303940454d535960636a6e73777b7d80818282817f7c766f6b625a50463c321e140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040607090b0d0e0f101010100e0d0b0907060400000000000000000000000000000000000000000000000000000c18232e3e4b5764717e8a979e9285796d6053463a2d2013090000000815222e3b4855616e7b8894aaab94887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607090c0e0f1010100f0d0a070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303e4b5865717e8b989f92867a6d6054473d3326303b44505c66707d897d7164564c4135291d11050006131f2c3845515c67737f8c8c80736c61564c41362a1e140a0000000000000000030c151c23282e34383a3a39352f281f1c130814212e3b4754616e7b859196998a7d7064574a3d3124170a000000000000000000000000010d1925303a45515d676d747b808487898b8d8e8f909191919292929292919190908f8f8e8d8c88827b6e6154483b2e2115080000000000000000000005121f2c3845525f6b7885929ea89c8f827569544a3f342816151d232d38414b55606a74808d857a7d8a97a3988c7f7265594c3f3226190c0000000000000000000000000000000000000000000c1925323f4c5865727f8b989b8e8175685b4e4235281d2c38444f5964717e8a97998c7f7366584e43372b2f35393a39352f281f19110700000000000000000000060f18202930363e424a5053565e61646668696a6a6968676562605c5453514a45403a312a261f180f060000000000000000000000000000000000000000000000000000000006121f2b3844505c66727f8b959a8e81746a5f5355606d7a85929ea1968a7d7063574d42362a1d12081118242f3844505b66727f8c99a79f92867a6d6053473a2d2014090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f181e272e343c42474f54585f6266696e717374757574726f6a63605950483f342a200c0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3b4754616e7b8796a097897c6f6356493c31261a0e0200000714212d3a4754606d7a8798a3a296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8796a0998b7e7165594f44382c28343f4a54606b75828276685e5246392d2013070004101c2834404b55616d7a86928a7e71685e52463d30261c1106000000000000000b151e272e34383f44464745403a312e251c111d2a36414c566774808d979f92867a6d6054473a2d2114070000000000000000000000000008131e2935404b555d60696e73777a7d7f80818283848485858585858585848483828281807f7e7d7b6e6155483b2e2215080000000000000000000005121f2b3845525e6b7885919ea89b8e8275685b4f422e23170b121b262f3a434e58606d7a858d807c8995aa998c7f7366594c403326190d0000000000000000000000000000000000000000000a1723303d4a5663707d8997988e8174675b4e4134281c28333e4955626f7c88959d9083766a5f53473b3126292c2d2c29241d160d0700000000000000000000060f18212a323a414650545c6064686d717375767777767574726f6d6664605c54514b433e36312a2117110a02000000000000000000000000000000000000000000000000000003101c28343f4a54606d7883909892877b6e625b515d67727f8c95a09b8f8275695e5346392e23181319232935404b55606c7884919ea69b8e8175675d5145392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c151d232831373d43484e5355575e6164666768686765625f58544f473f362d22180e0000000000000000000000000000020507080907070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070604000000000000000000000000000000000714202d3a46525e697784919e9a8d807367574e42372b1e120600000713202c3945525d687985929fa4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e697784919d9d9083776b6054483c32272e38424f59626f7c877a6d6154473a2e21140700000c18232e3946525e6874818d92857a6e61594f42382e23170b00000000000007121c27303940444a505353514b4340372e1d14202d3946525e687884919e9d908377685d5245392c2013060000000000000000000000000008131e28323a434b51575f6266686d707273757676777878787878787878777776767574737271706e695f53463a2d2114070000000000000000000004111e2b3744515e6a7784919da89b8e8275685b4f4235281c070a141d28313d45525d68727f8c867c8898a2998d8073665a4d4033271a0d0000000000000000000000000000000000000000000714202d3a4753606d79858a8b897e7164584b3e312518222f3b4855626e7b88959f95887c6f62574d42362a1c2020201d18120c0400000000000000000000040e18212a333c444c525a61666d71767a7d80828383838382817e7c7975716d66605d555046423b3328221c140b0300000000000000000000000000000000000000000000000000000b17232e3844505c666e7c8692998f82766d625955606d798391989f92877b6e61554b4034281c1e2429353d45515d67717e8a96a19e94897c6f62554b4035291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181f262b32383c4347484d535457595b5b5b5b5855534e48433d352d241b100600000000000000000000000003090e121415151413110d0805010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c10121312100c07000000000000000000000000000005111e2a36424d576774818d9a9e9184776a5f53473a2e211409000004111d2935414c566b7784919ea5988c7f7265594c3f32261907000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d576673808d99a095897d7063584e43372b26303d47535f6a6f7c6f685e5246392d201307000007121d2a36414c56626e7b87938f82756b60544a3f34281c120700000000000c18232e39424a51545c60605d555149402f261b212e3a4754616d7a8796a19c8f827569564c4135291d1104000000000000000000000000010d1925303a444c5254575555565e6163656768696a6b6b6b6b6c6c6c6b6b6b6a6a69686767666563615f574d42362a1e12050000000000000000000003101d293643505c6976838f9ca89c8f8275695c4f422e23180c020b161f2935414c56606d79848d8086929f9a8e8174675b4e4134281b080000000000000000000000000000000000000000000613202c3945515d676d7a7d7e7c716c6156493d302414212e3a4754616d7a8799a39a8e8174695f5346392e23181413100d070100000000000000000000020c16202a333c464e565e616c71787e83868a8c8e8f90908f8f8d8b8985817d79726d67615a534d453e332d261d150d040000000000000000000000000000000000000000000000000006111c28343f4a545f6a707e8793948c7f726b60595c666f7c869298998d8073675c5145382c24292f353e47505a606d7984919ea3998f82766a6054433a2f24180d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c151a21272c31373a3b4246484a4d4e4f4f4e4c4847433c38322b231b12090000000000000000000000060b0f141a1e20212221201e1913110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f201f1c18120b03000000000000000000000000020e1a25303e4a5764717d8a99a096887b6e6255483b3025190e0200010d19242f434f5c6976828f9ca79a8d8174675a4e412e23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313c4955626f7c8896a09c8f82766a6054473e30262b37434e58606b6f6b60564c4135291d11050000000d1925303a47535f6975828f93897d70665c5044392e23180c0000000004101c2834404a545c60666d6d67635b5141382d22232f3c4956626f7c8995a89b8e8175685b4e422f24190d0100000000000000000000000005111d2a36414c565e616462605d555c5b5b5a5b5c5d5e5e5e5f5f5f5f5f5e5e5d5d5c5c5b5a59585755534d453b31261a0e0200000000000000000000010e1b2834414e5b6774818e9aa79d9083766a544b4034281c1004040d1924303a45515c66717e8b8585929e9c8f8275695c4f423024190d01000000000000000000000000000000000000000004111d2935404b555e686d71716f6b615a5045392d2113202d394653606c7986929f9f92867b6e61544a4034281c1006040100000000000000000000000008131e28323c454e585f686d757e848b8f92999995918d8b8a898a8b8d8f8e8a847f79716c615f5750443f382f271f160d04000000000000000000000000000000000000000000000000000b17232e38424e58616c717e889292877d706b625a5f6a707d868e918f85796d6053463a2d2f353a41455059616c73808d96a19f92877c6f62584e4331281d1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e161b20262b2e31363a3b3e40414242413f3c3a37312c272119100900000000000000000000020a11171c1f252a2d2e2f2e2d2a25201d19130c050000000000000000000000000000000000000000000000000000000000000000000000000000090c151c23282c2d2c28231c150c030000000000000000000000000914212e3a4754616d7a86939f998c7f7266564d42362a1e11050000081a2734414d5a6774808d9aa79c8f827669544b4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212e3b47535f6a7784919e9f94887c6f62594f42382e26313c464f59606360594f443a3025190d0100000008131e2b37424d57636f7c89959083786d60544a4034281c110600000006121f2c3844515c666d74797a736d6353493f332724313d4a5764707d8a97a39b8e8174685b4e4135281b08000000000000000000000000000713202d3946525e686d716f6d676a696867666666666666666666666666666666656462605d5655534e46423b332a1f14090000000000000000000000000c1926323f4c5965727f8c98a59e918578665c5145382c1f13060008131e2834404b54606d7984919297a19d9084776a564c4135291d11040000000000000000000000000000000000000000010d18242f3a434c565e61646563605950483e34281d121f2b3744505b657784919ea3998e8174665c5144382c1f120600000000000000000000000000010d1924303a444d575f6a6e7a828a91969c9f95908984807e7d7c7d7e8082858a8f8c857e766e69615a504a423931281f160c0300000000000000000000000000000000000000000000000006111c26303c46505a626c717e879192867d716c605d606b707c8184827e776c605346393a3b41454c515a616b717e8a929d9f958c80736a5f54463d321f160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f151a1f21252a2d2e313334353534322f2e2b26201b160f0700000000000000000000020b141c22282b30363a3b3c3a3936302d2a251e170e0900000000000000000000000000000000000000000000000000000000000000000000000009121b1e272e34383a38342e271e150b0000000000000000000000000713202d3946525e687783909d9d908376695e52463a2d20140800000b1825313e4b5864717e8b97ab9e918477665c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2b37434e5866737f8c99a39c8f82766b61544a3f34282a343d474f5456544f473d32281e130800000000020e1a26313c4854606b768390958b7e71665c5144382e23170b000004101c2834404b54606d788186867f73655b5044372b25313e4b5864717e8b97a49b8e8175685b4e4235281b0f020000000000000000000000000714212e3a4754616d7a7e7c7a787776757473737372727272727272727272727272716f6d6867625f58524d453b30251a0e0200000000000000000000000a1723303d4a5663707d8996a89f9386796d6053463a2d20130700020c18232e3945515c66737f8c98a1a99f928578685d5245392c20130700000000000000000000000000000000000000000007131d28313a444c5254575856544f473e362d22170f1b27333f49536875828f9bab9f9286796d6053463a2d2013070000000000000000000000000005111d2935414c565f696e7c848f949ea19c928c837c777471707070717376797d82878e8b827b716c605b544b433931281e150b020000000000000000000000000000000000000000000000000a141e2a333e48505a626c717d858f92867e746d6760606a6e757776716c655b50444246484c52555d606c707d86929fa0959083786d60584e43342b200d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090f12141a1e21212426282828282522211f1b150f0a0400000000000000000000000a141d262d33383b424648484746413a39363029201b120a02000000000000000000000000000000000000000000000000000000000000000000020b1b242d303940444644403930271c1207000000000000000000000005111d2935414c566673808c999f93877b6e6154473b2f24190d01000916222f3c4955626f7c8899a39f9286796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26323c4754616e7b86929f9f948a7d70665c50443b30252b353d43484948433d352b20160c02000000000009151f2c38444f5964717d8a969184796d60544a3f34281c10030006131f2c3845515c6673808c929184786c605346392e23323e4b5865717e8b98a49b8e8275685b4f4235281c0f020000000000000000000000000713202d3946525e6876828886858382828180807f7f7f7f7f7f7f7f7f7f7f7f7f7e7e7c7a77746f6a615e574d42362a1e120500000000000000000000000714212e3a4754616d7a8796a0a499887b6f6255483c2f221508000007121d2834404b54616d7a86929faca297877a6d6054473a2d211407000000000000000000000000000000000000000000010c161f28323a4146474a4b4948443d352d241b100b17222d3f4c5865727f8b99a3a197877b6e6154483b2e211508000000000000000000000000040f19222d3946525d686e7b8591969ea59c918c80786f6b67646363636466676d71757c818790857e746c665c554b433930271d140a000000000000000000000000000000000000000000000000020c18212c363f48505a616b707a828b928b8179716c666062686a6964605b53494f4d5354565d60676d747e8692989e9691837a6d665c50463c3222190f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206090e121415171a1b1c1c1b191515120f0a0400000000000000000000000006111c262f383f44464d52545554524c4746413a322d241c140a0200000000000000000000000000000000000000000000000000000000000000000a141d2d363f424a5153514a42392e23180c0100000000000000000000010d1925303c4956636f7c8997a29a8b7e7265564c4135291d1104000713202d3a4653606d7986929fa399887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202d3946525e6875828f9ba69d9183786d60564c41362a232b32383b3c3b38322b23190e04000000000000030f1b27323d4653606c788491968b7e71665c5044382b1f160b000713202d3a4653606d7985929e96897c6f63554b403428323e4b5865717e8b98a49c8f8275695c4f4236291c0f0300000000000000000000000005111d2a36414c56606d7981878d908f8e8e8d8c8c8c8c8c8c8c8c8c8c8c8c8c8c8b8a898784807c756e695e52463a2d20140700000000000000000000000713202d3946525e687784919eab978b7e7164584b3e2f24190d0100000c18232e3946525e6874818e9ba9a995897c6f6256493c2f23160600000000000000000000000000000000000000000000040d1620283036393a3e3e3c3b38322b231b12090614212e3b4754616e7b86929d9d9285796c605346392d2013060000000000000000000000000a16202c38444f59616d7a849197a1a89e938c7f736c6660595857565758555c60646a6e757c838c8a80786d675d554b43392f261c1106000000000000000000000000000000000000000000000000060f1a242d363f48505960686e777e858d8e857e78726d676562605c545c5b5b5c575e6164686d727a818a92989f948f847b6e685e544a3f342a20100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0d0e0f0f0e0c0908060300000000000000000000000000000b17222d38424a5053575e6162615e5654524c443e362e261c140a0100000000000000000000000000000000000000000000000000000000000006111c262f3f4850545c605c544a4034281e130800000000000000000000000813202d3a4653606d7985929f9c8f8276685d5245392c2013070006131f2c3845515c677783909dab978a7d7164574a3e3124170800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414d5663707d89949fa0958c7f72685e52463d2f2621272c2f302f2c272119100700000000000000000a161f2b3844505b66727f8b979184786d6053463d33271c10030916232f3c4956626f7c8997a29a8d8174675c5145382c313e4b5864717e8b97a49c908376695d5043362a1d0800000000000000000000000000010d1925303a45515d676d747b808487898b8d8e8f909191919292929292919190908f8f8e8d8c88827b6e6154483b2e211508000000000000000000000005111d2935414c566874818e9ba79a8d807467564c4135291d1104000007121d2a36414c5663707d8997a1a4978b7e7164584b3e2d22170b0000000000000000000000000000000000000000000000050e161e252a2d2e3132302f2c2721191109000714202d3a46525e69727f8b90908c7f72665b5044382b1f12060000000000000000000000030f1b27323c4854606b75818e96a0a9a2978e81756d605b544f4b4a494a4b4b5153585f626a6f7880878d81796d675d554b42382d2217100600000000000000000000000000000000000000000000000008121b242d363e474f565e656c717a80868d8b847f7a75726e6d6669686868696a696e71757a7f858e939f98928c827a6e695e564c42382e22190e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a545b6065696e6f6d6866615e56504840382e261c13090000000000000000000000000000000000000000000000000000000000000b17222d3842505a62666d665c51443a2f24190d000000000000000000000006121f2b3844505c6675828e9b9f92867a6d6054473a2f24180c0004101c2834404b556773808d9aa6998c807366594d403025190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303b4854606b7683909ca69f92857a6e61584e41382d221b1f2223221f1b160f07000000000000000000030f1c28333f4a54606d798592968a7e7164594f44382c2015090c1825323f4b5865727e8b98a99f9285796d6053463b30313e4a5764717d8a97a49d9084776a5d51442f24190d010000000000000000000000000008131e2935404b555d60696e73777a7d7f80818283848485858585858585848483828281807f7e7d7b6e6155483b2e2215080000000000000000000000010d1925303e4b5864717e8b97a89d908377685d5245392c2013060000000d1925303a4653606d7985919ea79a8d80746753493f33271b0f030000000000000000000000000000000000000000000000050c13191d202124252322201b160f07000005111e2a36424d56636d727f83837f776c60544a3f33281c0f03000000000000000000000006131f2b37434e5863707d89939ea8ab9e92857a6d615b504a423e3d3d3d3e4045474e535860666d737d858f82796d675c544a3f332822180d0300000000000000000000000000000000000000000000000009121b242c353d444c535b60686d737b80858b8b85827e7b7977767575757676787b7e82858c919799928d867f776d685e564d443a30261c100700000000000000000000000000000000000000000000000000000000000000040607090706040100000000000000000000000000000000000000000000000000000000000000000000000000000106090b0c1112100a0a08040000000000000000000000000000000000000000000000000000000000000006121f2b3844505b666c72777b7b7a78736d68625a524a40382e251b110700000000000000000000000000000000000000000000000000000000030f1c28333f4a54626c71796d60554c4135291d12070000000000000000000003101c28343f4a5464717e8b9aa3998a7e7164554b4035291d1004000c18232e3d4a5764707d8a97a79c8f827569564c4135291d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2c38444f5963707d89949fa2988e81746a6053493f33271c11151615130f0a0400000000000000000000000b17222d3845515d6773808c989083776b6054483c31261a0e0d1a2734404d5a6773808d9aa6a2978a7d7164564d4236313d4a5764707d8a97a39e9185786b564c4135291d110400000000000000000000000000020c18242f39434b51575f6266686d707273757676777878787878787878777776767574737271706e695f53463a2d2114070000000000000000000000000815212e3b4854616e7b8796a09f92867a6d6054473a2d21140900000008131f2b3844505c6674808d9aa99c908376655b5044372b1f120500000000000000000000000000000000000000000000000002080d11131417181615130f0b04000000020e1925303b44515b636d727777726c655b5042382d22170b0000000000000000000000000815222e3b4754606a7683909ca5afa3998c7f73685e52443f382f3030302f34383c43474e545c606b707b838f82796d665b50443e342a1f150b0100000000000000000000000000000000000000000000000009121a232b323b414950565e61696e73797e83868b8b88868483828182828385878b8e9298928f8b86807a726c655d564d443b32281e150a000000000000000000000000000000000000000000000000000000000001070c101314151413100d07010000000000000000000000000000000000000000000000000000000000000000000000060d121518191d1e1c171614100b05000000000000000000000000000000000000000000000000000000000814202d39444f59606c787e8487888784807a716c635c524a40372d23190e0500000000000000000000000000000000000000000000000000000006121f2b3844505b66717e8074675d5145392e23180c01000000000000000000000b17232e3b4754616e7a87939f9b8e8275675d5145382c1f1306000714212e3a4754616d7a8795a09e918478685e5246392d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002101c27323d4854606b7683909aa49f93877c6f655b5044382d22170b090907030000000000000000000000000006111c2935404b55616d7a869295897d7063574e42372b1e13081b2835424e5b6875818e9ba8a99c8f8275695e5246382d3d4a5663707d8996a39f928679685d5245392c201306000000000000000000000000000007121d27313940454d5355565e6163656768696a6b6b6b6b6c6c6c6b6b6b6a6a69686767666563615f574d42362a1e12050000000000000000000000000714202d3a46525e697784919ea3998a7d7063574a3d31261a0e02000003101c28343f4a54626f7c8997a19f9285796c605346392d2013060000000000000000000000000000000000000000000000000000010507070b0b0909070300000000000009141f29323f49515b62656a6a66605b53493f2f261c11060000000000000000000000000916232f3c4956626f7c89949fabac9f92867a6e61564c41332d2624232423292c31373d424a515960696e79828f81786c605a50463c31271d12070000000000000000000000000000000000000000000000000009111920292f383f444c52575e61676d71767b7e8285878a8c8d8e8e8f908f8f8e8d8b8886827e7a746d68605b534c443b322920160c0300000000000000000000000000000000000000000000000000000000030b12181d1f202220201d18120b060000000000000000000000000000000000000000000000000000000000000000010911181e2224252a2b292423201c170b060000000000000000000000000000000000000000000000000000000a1623303c4955616c75818b91919092918d857e736e635c52493f352b20160c0200000000000000000000000000000000000000000000000000000613202d394653606c7885867a6d60554b4034281d1207000000000000000000000614202d3946525e687683909d9f9285796d6053473a2e23170b000713202d3946525e687784909da196877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212c38444f59626f7c87939fa49a9083786c60544a3f33281c0f0300000000000000000000000000000000000c18242f3946525e6874818e9a8f82756a5f53473a3024190d1c2936434f5c6976828f9ca9a29e92867b6e61544a3f333c4956636f7c8996a2a398877a6d6054473a2d2114070000000000000000000000000000010b151f272f353c4247484c525456585a5b5c5d5e5e5e5f5f5f5f5f5e5e5d5d5c5c5b5a59585755534d453b31261a0e0200000000000000000000000005121e2a36424d576774818e9aab9a8d807467574d42372b1e12060000000b17232e394653606c7985929ea298887b6e6155483b2e221507000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17202e373f495156585d5d5953504941382d1d140a00000000000000000000000004111d2935414b556773808d9aa6b0a99c8f8376685e52443a30221c141617181c1f262b303940444f565e676d79828d80736c61584e43392f23180c0300000000000000000000000000000000000000000000000000070e171d262d333a41464d52555d6065696e7175787b7d7f8082828383838281807e7c7976716d68615e565049413a322920170e0400000000000000000000000000000000000000000000000000000000070d151d24292c2d2f2d2c29241d17110a0200000000000000000000000000000000000000000000000000000000000009131b23292e313237383631302d282217110a02000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a938f8483868f94928b80736e635b51473d32281e130800000000000000000000000000000000000000000000000000000815222e3b4855616e7b888c7f72675c5145392f24180e0500000000000000000005111e2a36414c5666737f8c99a2988a7d7064544a3f34281c100305111d2a36414c566773808d9aa896897d7063564a3d302317080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333d4754606a74808d96a09f958a7e71665b5044382b1f1206000000000000000000000000000000000007121d2a36414c56626e7b879393877b6e62564c4135291c111d2a3743505d6a7683909da29792938c7f72665b5044383b4855626e7b8895abaa95887b6e6255483b2f221508000000000000000000000000000000030d151d242931373a3b4146474a4c4d4e4f505151525252525252525151504f4f4e4d4c4b4a4846423b332a1f140900000000000000000000000000020e1a25303d4a5764707d8a99a39e918477695f53473a2e21140700000006121f2b3844505b6675818e9baa978a7d7164574a3e2e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e1c252e373f464a4b50504c46443f382f261b0b020000000000000000000000000613202c3945515d677784919daab2a6998c7f7366564c4132281e110a0a070c10151a1e272e343d444d555d676d79828a7e716a5f554b4034291e150b0000000000000000000000000000000000000000000000000000050b141b222730353b42464b5153565e616568696e7072747576767676757473716f6d6765615d56524c443f382f2820170e05000000000000000000000000000000000000000000000000000000000710191f272f35383a3c3a39352f27221b140b020000000000000000000000000000000000000000000000000000000008121b252d343a3e3f4445433d3c393327221b140b020000000000000000000000000000000000000000000000000e1b2835414e5b6874818e8f8278767b828e93928d80736d62594f443a3025190d03000000000000000000000000000000000000000000000000000915222f3c4855626f7b889184796d60554b40352920170d030000000000000000010d1925303c4955626f7c8896a19b8e8174665c5044382b1f1206010d1925303d4a5663707d8998a3998c7f7366594c403025190e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b37434e58606d79849198a29d9184786c605346392d2013060000000000000000000000000000000000010d1925303a47535f6975828f9a8d8174685d5245382e23171d2a3744505d6a7783909d9e9285879184786c6053463b3a4754616d7a8799a3a396897d7063564a3d3023170a00000000000000000000000000000000030b12181f262b2e3036393a3d3f40424343444545454545454545444443434241403f3e3d3b3a36312a21180e0300000000000000000000000000000914212d3a4754606d7a86929fa096887b6e6255483b2f24180d010000030f1c28333f4a5464717e8a97a8998d807366554b4034281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c252d343a3d3f44443f3937332d261d140a000000000000000000000000000714212d3a4754606d7a86939facb0a396897d7063564a3d3023160c00000000040a0c151c2328323b434c555d676d7983867c6f675c51453d30271d12070000000000000000000000000000000000000000000000000000020a11171e25293036394045474d525458575e616465676869696a696868676462605c5554524c46413a332d261d160d0500000000000000000000000000000000000000000000000000000000030c19222b31394045474847454039332d261d140a00000000000000000000000000000000000000000000000000000006101a242d373f464a4c50514f4a49443e332d261d140a000000000000000000000000000000000000000000000000101d2a3643505d69768390887c6f696e78818e93928b7f726b60564c41362a1f150b010000000000000000000000000000000000000000000000000714212e3a4754616d7a87968b7e72675d51453d32291f150b0100000000000000000815212e3b47535f6a7884919e9e9285796d6053463a2d20130a000814202d3a4753606d7986929f9b8f827568564c41362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1b27323d45515d676f7c869298a096897d706356493d3023160a00000000000000000000000000000000000008131e2b37424d57636f7c899592867a6d60544a3f34281c1e2a3744515d6a7784909d9e91848390897d7063574d423946525d687986929fa4978b7e7164584b3e3125180b000000000000000000000000000000000001070c151a1e21252a2d2e303234353637383838383939393838383737363534343332302e2d2a261f180f060000000000000000000000000000000613202c3945515d6776828f9ca8988b7f7265554b4035291d10040000000b17222d3b4754616e7a8796a09c908376675c5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131b23292e31323737332d2b27221b140b02000000000000000000000000000916232f3c4956626f7c899aa4afaea194877b6e6154483b2e211508000000000000030b12182029313a434b555d676e7b8583796d60594f43392e23180c02000000000000000000000000000000000000000000000000000000060b13191f252a2f35393b4246474b4d525457595a5b5c5d5d5c5c5b5a585553514b4746413a363027221b140b0400000000000000000000000000000000000000000000000000000000000b151e2b343d434b51535553514b443f382f261b110600000000000000000000000000000000000000000000000000000c17222c363f495156585d5e5c575550443f382f261b11060000000000000000000000000000000000000000000000101d2a3643505d6976839086796d60666d77818e9492877d70685e52463e31271d12070000000000000000000000000000000000000000000000000713202d3946525d687885919184796d60584e443a31271d1207000000000000000006131f2b37434e586774818d9aa197897c706356493d32261b0f0306131f2c3845515c6776828f9c9e918478685e5246392d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202935404b555f6a707d8691969a8c7f7265594c3f3226190c000000000000000000000000000000000000020e1a26313c4854606b768390988c7f72665c5044382b1f1e2a3744515d6a7784909d9f92857f8c8f8275695e524639414c566b7884919ea6998c807366594d4033261a070000000000000000000000000000000000000003090e1214191d202123252728292a2b2b2b2c2c2c2c2c2b2b2a2a2929282726252422211e1a140e060000000000000000000000000000000004111d2935414b5565727f8c98a89c8f8276675d5145392c2013060000000614202d3946525e687784919e9f9286796d6053463a2d2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911181d2224252a2a26201f1b17110a0200000000000000000000000000000a1723303d4a5663707d8996acb6ada093877a6d6054473a2d2114070000000000000000070e171f283039434c555f69707d8780746b60554b4034281f14090000000000000000000000000000000000000000000000000000000002080d141a1d24292c30363a3b3e4246484a4c4d4f4f5050504f4e4d4b494745403a3935302a251e17110a02000000000000000000000000000000000000000000000000000000000007121d27303d464e555d6062605d55504941382d22170b0400000000000000000000000000000000000000000000000005111d28343e48515b62656a6b6964615a504941382d22170b00000000000000000000000000000000000000000000000f1b2835424e5b6875818e867a6d605c656d78828f9691857a6d615a5043392f24180c02000000000000000000000000000000000000000000000005111d2935414c566874818e968d80736a60564c43392f24180c0000000000000000030f1b26323d4a5663707d8998a29a8d807467584e43372b1f130604101c2934404b5565727f8c98a196877a6e6154473b2e2114060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d18242f3a434e58606b707d848a8c887c6f6256493c2f231609000000000000000000000000000000000000000915202c38434f5964717d8a969184786d6053463c31261a2a3744515d6a7784909d9f92867c8892877b6e61544a4044505d6a7783909da79b8e8174685b4e412e23180c0000000000000000000000000000000000000000000206080d11131417191a1b1c1d1e1e1f1f1f1f1f1f1f1e1e1d1c1c1b1a1918171514120e09030000000000000000000000000000000000010d18242f3b4855626e7b8896a09f92867a6d6053473a2d22170b00000005111e2a36414c566774818e9aa398897c6f6356493c2d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c121518181d1d1913120f0b06000000000000000000000000000000000b1724313e4a5764717d8a97a4b0ada093867a6d6053473a2d201407000000000000000000050d161e27313a434d57606b7380897d70675c51453b30251a0e02000000000000000000000000000000000000000000000000000000000002090e12181d20252a2d2e30363a3b3d3f4142434343434241403e3c3a38342f2d29241e19130b06000000000000000000000000000000000000000000000000000000000000000c18232e39434e5860676d6f6d67605b53493f332721160b0000000000000000000000000000000000000000000000000814212d3945505a626d72777876706c605b53493f33271b0f03000000000000000000000000000000000000000000000b1825323e4b5865717e8b897c6f63585c666d7a8491978e81756c61554b4035291f14090000000000000000000000000000000000000000000000010d1924303d4a5764707d8a9692877c6f685e554b4035291d100400000000000000000a13202d3a4653606d7985929f9e9184786a5f53473b2e211509000c18232f3b4855626e7b8896a0968a7d7063574a3d2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313c464f59606b6f797d7f7d6f6a6054483b2e22150900000000000000000000000000000000000000030f1b27323d4653606c788491968a7d7064584e43372b1e2a3744505d6a7783909da399867984918c7f73665c5144424f5c6875828f9ba89c90837669554b4034281c10040000000000000000000000000000000000000000000000010507070a0c0d0f1010111212121212121212111110100f0e0d0c0b0a0807050200000000000000000000000000000000000000000714212e3a47535f697784919ea3988a7d7064544a3f33281c0f030000010d1925303e4b5864717e8b97a8998c7f7266544a3f33281c0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106090b0c11110c0605030000000000000000000000000000000000000a1724303d4a5763707d8a96a3b0ada194877a6e6154473b2e21140800000000000000000000040c151f28313b454f59606d788384796d60574d42362a1f14080000000000000000000000000000000000000000000000000000000000000001070d1014191e2021252a2d2e3132343536363736353534312f2d2c2923201d19130d08020000000000000000000000000000000000000000000000000000000000000004101c2834404b55606a6f797b7a726c655b50443d32271b100500000000000000000000000000000000000000000000000a1723303d4955616c727f8384827d746c655b5044372b1f1205000000000000000000000000000000000000000000000714212d3a4754606d7a858d81746a5f565d68707d8993938a7e71675d51453b30251a0e0300000000000000000000000000000000000000000000000813202d3a4653606d7884919991847a6d675d5145392c1f1306000000000000000006131f2c3845515c6675818e9ba196887c6f6255493c31261a0e100714212e3a47535f6a7784919e998c807366544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2a343d474f5960676d71726f6b60584e43382c1f110e09030000000000000000000000000000000000000a161f2b3844505b66727f8b978f82766a5f53473a2f242a3743505d6a7683909dab94877a808d9184796d605346404d5a6773808d9aa69e918478675c5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d576773808d9aa99b8e8174665b5044382b1f12060000000815222e3b4855616e7b8896a19c8f8275665b5044382b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8996a9b3aea195887b6e6255483b2f2215080000000000000000000000030d161f29333d44515c666f7c878073695e52463b3025190e0200000000000000000000000000000000000000000000000000000000000000000104090e1114141a1e202124262728292a2a292928272522201f1c1813110d080200000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c676f7d8588857f776c60594f44382c21160b00000000000000000000000000000000000000000000000b1824313e4b5764717e8a90918f8a80776c605346392d201306000000000000000000000000000000000000000000000613202c3945515d67727f8c867c6e685e56606b74818e989184796d60574d42362a1f1509000000000000000000000000000000000000000000000006121f2b3844505c66717e8b94969083796d6053473a2d20140700000000000000030c151d2834404b5464717d8a98a3998c807366574d42362a1e1d1d1d1c1e2b37424e576774818d9a9c8f8376665c5044382b1f1207010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d18222b353d464f555c6064666360594f463d3228231c1a150e060000000000000000000000000000000000030f1c28333f4a54606d79859294887c6f62554c4135292a3643505d697683909ca194887b7c88958a7e7164584e434b5865727e8b98a59f9386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313d495663707c8997a29e9285796c605346392d2013090000000714212d3a46535f697884919e9f9285796c605346392d2013070000000000000000000000000000000000000000000000000000000000000000000003050607060300000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8797a1adb0a4978a7d7164574a3e3025190e000000000000000000000000040d18212834404a54606a7481867b6e61564d41362a1e11050000000000000000000000000000000000000000000000000000000000000000000000020507090e12141517191a1c1c1d1d1d1c1b1a18161413100c07050100000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d79849197928c80736b6054483d33271c1000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9a9e9c928b7f7265584b3f3225180c0000000000000000000000000000000000000000000004111d2935414c55606d78828f837a6d685f59616e7a8592968c8073695e52463c31261a0e030000000000000000000000000000000000000000000003101c28343f4a54606c77829097958c7f7265594c3f3226190c000000000000000b151e272e343a4753606d7a86929f9d908377695f53463a2d232a2a29292926313d4a5763707d8a989f9285796d6053463a2d2018120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a232b343d434b5153575956544f473d3a38342e2b261f180f0800000000000000000000000000000000000b17222d3845515d6773808c988d8174675d5145382d2236434f5c6976828f9ca295887c7783909083766a5f5347495663707c8996aaa49a887b6e6255483b2f22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000913202d3a4653606d7985929fa197897c6f6356493c31261a0e02000005121e2a36424d576875818e9ba297887c6f6255493c2f24180c0000000000000000000000000000000000000000000000000000000000000105060b0f12131312100b060000000000000000000000000000000000000000000000000000000000000000000713202d3946525e687885929eabb3a6998d807366564c41362a1b1106000000000000000000000000060f18232e39424e58616d7a858174685e5246392d201407000000000000000000000000000000000000000000000000000000000000000000000000000000020507080a0c0e0f101010100f0e0d0b090706040000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a19f92897d7063594f44382c1c1207000000000000000000000000000000000000000000000b1824313e4b5764717e8a939d9f9d9184776a5e5144372b1e1104000000000000000000000000000000000000000000010d19242f3a44505c666d798390837a6e69615e68737f8c9792867b6e61574d42372b1f150900000000000000000000000000000000000000000000000b17232e3844505b656e7b858e8f877c6f6255483c2f22150900000000000007121d273039404546515d6775828f9ca095887b6e6155483b342e373736363535353a4753606d7986929f98887c6f6255493c2f29241d1a140d050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a222b30394045464a4c494845464746443f3837312a211a12080000000000000000000000000000000006111c2935404b55616d7a869292867a6d6053493f332736424f5c6975828f9ca396897d727f8b94887c6f62564c4854616e7b8798a2ac968a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c6675818e9ba9998d807366574d42372b1e12050000020e1a26313f4b5865727e8b98a9998c7f7266554b4035291d100400000000000000000000000000000000000000000000000000000002080d1114171b1f20201f1c17110d080200000000000000000000000000000000000000000000000000000000000005111e2a36414c566875818e9baab4a99c908376685e5246382d22170b0000000000000000000000000007121c27303c46525e687380877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a197929083776b605448392e23180c000000000000000000000000000000000000000000000613202d394653606c77818a9095999185786b5e5245382b1f12050000000000000000000000000000000000000000000008131e28343f4a545d676e7a838f847b716c61606d798592988e8174695f53473c31261a0e020000000000000000000000000000000000000000000006111c27333f49535e696e7b81827e706a5f53473b2e2115080000000000000c18232e39424b5153575564717e8b99a3988c7f7265564c454044444343434242424145515d6775828f9c988b7f7265584c3f39352f2a251f170f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810191e272e34383a3e43484b51535453504a47423c332c241a1108000000000000000000000000000000000c18242f3946525e6874818e988b7f72655b5044372b35424f5b6875828e9ba4978a7d717a86928e8174685e524653606c7985929fa5988c7f7265594c3f32261908000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a5464717e8a99a39d918477695f53463a2d2114080000000915222f3b4855626e7b8897a19c8f8276675d5145382c1f13060000000000000000000000000000000000000000000000000002080d14191e2022272b2d2d2b28231c19130c050000000000000000000000000000000000000000000000000000000000010d1925303e4b5864717e8b98a2aeac9f93867a6e6153493f33271c1106000000000000000000000000000b151e2a36414c56616d7a7c6f685e5246392d20140700000000000000000000000003060708080605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2834414e5b6774818e9a9e928585897d7063544a4034281c100400000000000000000000000000000000000000000005121f2b3744505b656c747d838788877f7265594c3f3226190c0000000000000000000000000000000000000000000000010b17232e38424b555e686e79828c867e756e6867727f8c9792877b6e61574d42372b1f140900000000000000000000000000000000000000000000000b17222d38414d575e696e7476706c61584e43372b1f1206000000000004101c2834404b545c606462616d7a86929f9c908376685e53514b515050504f4f4f4e4e4e4b5565727e8b989b8e827568574d474540393630292119110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c151d2328333d474f54555c6061605c54534d453e362c23190f0500000000000000000000000000000007121d2a36414c56626e7b87939184786c6053463b3034414e5b6774818e9aa5988b7e7274818e92867a6d61554b505b657783909da79a8e8174675b4e413025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3a4754606d7a86929fa095887b6e6155483b3025190d0100000814212e3a47535f697885919e9f9286796d6053473a2d201409000000000000000000000000000000000000000000000000060b13191e252a2d2d3337393a38342e2a251e160e0500000000000000000000000000000000000000000000000000000000000814202d3a4753606d7a85929fabafa4998b7f72655b5044382e23170b02000000000000000000000000030c1925303a46525e686d6f6b60564d41362a1e110500000000000000000000060b101213151513120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1c2835424f5b6875828e9b978a7e7d8a8175665c5144382c1f1206000000000000000000000000000000000000000000030f1b27333f49535b606c70767a7c7a726d62574a3e3125180b00000000000000000000000000000000000000000000000006111c26303a434c565e676d787f878a817b726d6d7a8592998e8174695f53473b30251a0e010000000000000000000000000000000000000000000006111b262f3b454d575e61686964615a50463c32261b0f03000000000006131f2c3845515c666d706f6d6876828f9c9f93867a6d61605c545e5d5d5c5c5c5b5b5b5b5a5a616e7b87959e918578695f5653514b46423b332b23190c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a25303b454f596063676d6e6d66625f5750483e352b21160b000000000000000000000000000000010d1925303a47535f6975828f96897d7063574d423634414d5a6774808d9aa5998c7f726f7c89958c8073675d5149536774818e9aa79c90837669564c41362a1d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945525d6876838f9ca7988c7f7265564c41362a1d1105000006121e2b37424d576875818e9ba398897d7063564a3d30251a0e02000000000000000000000000000000000000000000020a11171e25293036393b3f444646443f3836302820160c02000000000000000000000000000000000000000000000000000000000613202c3945515d6774818d99a3aeab9d9184786c60544a3f34281d140a0000000000000000000000000008131e2935414c565e616360594f443b3025190e020000000000000000020a11171c1f202221201f1b17110b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1c2935424f5c6875828f9b95887c788585796d6053463a2d201307000000000000000000000000000000000000000000000b17222d384149505a6164686d6f6d68625b51463a2e221609000000000000000000000000000000000000000000000000000a141e28313b444c555d666c737c838c857f787073808d9992877b6e62574d42362a1d130a03000000000000000000000000000000000000000000000a141d29333b454d52545b5c575550483e342a20150a0000000000000713202d3a4653606d797d7c7a79777e8b98a4998b7e716e6d666b6a6a6a69696868686867676767697783909d97887b6e6462605d55524d453d352b1e150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d57606b6f76797a79756e69615a50473d33271c100200000000000000000000000000000008131e2b37424d57636f7c89958f8275695e5246392e404d5a6673808d99a69a8d80736a7683909285796d60544a5865717e8b98ab9e928578685e5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5665727f8c98a89c908376685e5246392d2013070000020e1a26313f4b5865727e8b98a89a8d807367574d42362a1e12050000000000000000000000000000000000000000060b141b222730353b41464749505353504a46413a32281e13080000000000000000000000000000000000000000000000000000000004111d2935404b55616e7b86929fa9aca0968a7d70665c50443b2f261c1106000000000000000000000000020d1925303a444c525456544f473d32291f14080000000000000001090c141c23282b2d2f2e2d2b27221b17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1c2835424f5b6875828e9b95887b7582897c6f6356493c302316090000000000000000000000000000000000000000000006111b262f383f445055565e6162615e5651493f35291e120600000000000000000000000000000000000000000000000000020c161f29323b434b545b606a6f797f858c847d767a8692998e8174695e52463a2f241c150c07010000000000000000000000000000000000000000020b172129333b4246484e4f4a49443e362c22180e040000000000000613202d394653606c79858887858483909dab9c8f827b7a797978777776767675757574747474747474808c99978b7e72716f6d67615e574f473d30261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e696f7d83868785817b716c61594f44382c1e1308000000000000000000000000000000020e1a26313c4854606b76839092877b6e61544a40343f4c5966727f8c99a59b8e817468717e8a968b7e72665c5055626f7c8899a3a297877a6d6154473a2e2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303b4855616e7b8896a09f92867a6d6154473a2f24180c0000000915222e3b4855616e7b8896a19d908377695e52463a2d20140700000000000000000000000000000000000000080f181d262d333a41464c5254535b60605c54524c443a3025190d01000000000000000000000000000000000000000000000000000000010d18242f3a46535f6974818d97a1ada89d9083786d60574d42382d2217120701000000000000000000000008131e28323a4146474948443d352b20170d02000000000000010a131b1e262e34383a3b3b3937332d27221b140b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2834414e5b6774818e9a95887c727f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000a141d262d333e44494c5254555a54524c443b3025190e020000000000000000000000000000000000000000000000000000040d1720293139424a50585f666d727a81868a837c818e9b92867b6e61554b40352e261e18130c040000000000000000000000000000000000000000050f17212930363a3b41433d3c39332c231a10060000000000000005121f2b3744505b6573808d9492919095a0ab9f948f8887868585848383838282828181818181808080828f9c9c90827f7e7c7a756e6960594f42382e23170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b86909398928e867e716b6054483a3025190d010000000000000000000000000000000915202c38444f5964717e8a968c8073665c5144383f4c5865727f8b98a59b8f8275686d7884919184786d605353606d7986929fa996897c6f6356493c30231606000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090d0f0814212d3a47535f697784919da3998b7e7164554b4035291d100400000814212d3a47535f697884919ea095877b6e6154483b2f23180c0000000000000000000000000000000000010a111a212a2f383f444c52565e6166656c6d66615e564c41362a1d11050000000000000000000000000000000000000000000000000000000007131d2a36424d57616d7a85929ea5aca0958b7e72695e544a3f33282418120b0300000000000000000000020c1620283035393a3c3b38322b23190e05000000000000000a131c252d30383f4446484846443f38332d261d150d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9a96897d707d8a8174675b4e4134281b070000000000000000000000000000000000000000000000020b141b2227333a444c555d6067615e564c41362a1e1105000000000000000000000000000000000000000000000000000000050e171f282f383f444e545c60686d747b81878984919e998d8073675d51453f383029241d160d070000000000000000000000000000000000000000050f171f252a2d2e353631302d28221a11080000000000000000030f1b27333f4953606d79828c92979b9ea1a9a69f9c95949892919190908f8f8f8e8e8e8e8d8d8d8d8d8f949e9f94908b8b8986817b706b60544a3f34281c100300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b989fa29f9892877d7063564c41362a1d1105000000000000000000000000000000030f1b27323d4653606d7884919185796d6053463c3e4b5864717e8b97a49c9083766966727f8b968a7e716459515c667783909da5988b7e7265584b3f2e23170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f131516191b16151e2b37424d576773808d9aaa9b8f8275675d5145382c1f1306000006121e2b37424d576774818e9aa7988b7e7265554b4034291c1004000000000000000000000000000000010a131c232c333b414950565e61686e72767979756d685e5246392d20130700000000000000000000000000000000000000000000000000000000010e1a26313b46525d68717e8a939da6a79e92857b6e665b50443f3629241d150d0903000000000000000000040e161e25292d2e302f2c27211911070000000000000006101c252e373f424a50535554535049443f382f271f150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99978a7e717b8883766a5d50432e23180c000000000000000000000000000000000000000000000000020a111e2a36414c565e676d746e685e5246392d20140700000000000000000000000000000000000000000000000000000008111a20283036393c424b51565e61696e757c82898f949f92857a6d6055504a423d352f281f1910060000000000000000000000000000000000000000050d141a1e202128292423201c171008000000000000000000000b17222d3845515d676d787f858a8e92979ca4aba8a09d9d9e9e9d9d9d9c9c9b9b9b9b9a9a9a99989796959fa39f96918f8e8d8c857d70665c5044382c1f120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a0a8aaa299918477685e5246392d201307000000000000000000000000000000000a161f2b3844505c66727f8b978a7d7164584e433e4a5764717d8a97a49d9084776a606d7a85929083776b6054546774818d9aa79a8e817467544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c151b1f2122262823221f26313d4a5663707d8998a29f9285796d6053473a2d20140a0000020e1a26313e4b5764717e8a9aa49c8f8275675c5145382c1f13060000000000000000000000000000010a131c252d353e454d535b60686d737a7f838686817a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000009141f2935414c56616c74818e949fa7a2978f82786c605b51483f352f271f1a140f0b060502000000000000040c13191d20212322201b160f0700000000000000030e18222e37404951545c606261605b535049413931271e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97988c7f727a8785786b554b4034281c10040000000000000000000000000000000000000000000000000713202d3946525e686d79807a6e6154473b2e211408000000000000000000000000000000000000000000000000000007101a232c323a4146474c4f504c52575f626a6f757c828f98978b7f7267605c544f45403a312b2217110a020000000000000000000000000000000000000003090e1214151b1c171614100b05000000000000000000000006111b2935404b555d666d72797e82858d929ca8a0969190919192929291919191908f8f8e8d8c8b8a898892999e9184828180807f7f796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798491969fa2a9a095877a6d6154473a2e2114070000000000000000000000000000000003101c28343f4a54606d7a85928f83766a5f53473d4a5763707d8a96a39e9185786b5d6773808d95897d7063585864717e8b97a89d908377665c5044382b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b121820262b2e2f33352f2e2c272d3a4753606d7986929fa2988a7d7063574a3d31261b0f0300000914212e3a4754616d7a87939f9f9286796d6053473a2d22170b00000000000000000000000000000a131c252e373f474f575f656c727a80868c90908a857e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000030d1924303a44505a606d79829095a0a79f948d80736d625a51454039312a251f1b1714120e0903000000000002080d1113141615130f0b0400000000000000000a15202a34404a525b62666d6e6e6c65605b534b433930271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001091623303c4956636f7c89969a8d807479868679675c5145382c1f13060000000000000000000000000000000000000000000000000714212e3a4754616d7a848b7f7265584c3f3024190d01000000000000000000000000000000000000000000000000030c19222c353e444c5254595c5d5c5a5753585f626a6f7986929d918479726d666059514b433d3428231c140c030000000000000000000000000000000000000000020507080e100a0a080400000000000000000000000000000c18242f39434b545c60676d717578808d99a79d9184838485858585858584848383828180807f7d7c7c87929b8e817574737372716d665c5044382c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c666e7b848c929799999286796d6053463a2d20130700000000000000000000000000000000000b17232e3845515d6773808d94887b6e62554b404956636f7c8996a29f928579675c616e7b86928f82756a5f55616e7b8896a19f9286796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c232832373b3c40423c3b38322c3845515c6776828f9caa9a8e817467584e43372b1f120600000713202d3946525e687783909da2988a7d706353493f33271b0f0300000000000000000000000007111c252e374049515961696e777f858d928e88837e79716c6256493d3024170b00000000000000000000000000000000000000000000000000000000000008131e28323e45515c676d7a8390959fa69c928b7f726c635b514b433c36312b2722211e1a140d060000000000000105070709090703000000000000000000030f1a26313c46525c636d72797b7b78726c655d554b42392e23180d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070b0e0f15212e3b4854616e7b87989c8f8275788586796d6053463a2d2013070000000000000000000000000000000000000000000000000d1a2733404d5a6673808d8f837669564c4135291d11050000000000000000000000000000000000000000000000000a151e2b343e474f565e6165696a696763605c5558606775818e9b9691857f78706b605d554e463e342e261e150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d273139424a50555c6064686e7b8895a09a8d807777787878787878787777767575747372717076828f9c9184786a67666665605c544a3f34281c1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b545f696e7980858a8c8c898074665c5144382c1f1206000000000000000000000000000000000006111c2935404b55616e7b86928d8074675d51454955626f7c8895a2a298867a6d605e6874808d94887c6f62575f697884919ea398887b6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e272e343c4347494c4e4948433d3434404b5565727f8c98a99e9185786a5f53473a2e211507000005111d2a36414c566773808d9aaa9a8d8174655b5044372b1f12050000000000000000000000040f19232e374049525b636b707b828b928d86817c76716d66625a5045392d211509000000000000000000000000000000000000000000000000000000000000020c16202934404b555d686e7a8390949da49f93877e726d605d554e46423b37332d2d2a261f180f060000000000000000000000000000000000000000000006121f2b37434e58636e737f848887847e776d675d544b40342820160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d111314181b1c1a202d394653606c7985929e9184777885877a6d6154473a2e211407000000000000000000000000000000000000000000000003101d293643505c6976838f928578685d5246392d201307000000000000000000000000000000000000000000000006111c26303d474f5961686d7275767674706d67605c5563707d8996a097928b847d746d67605850443f3830271e150c030000000000000000000000000000010407070e0e0b080300000000000000000000000000000000000000010b151f2730383f444b5153575f6a7784909d9d9184776a6b6b6c6b6b6b6b6a6a6969686766656465727e8b9a96887b6e6259595853504a42382e23170c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424d575f676d73797d7f7f7d746e64544a4034281c10040000000000000000000000000000000000000d18242f3a46525e6974818e9285796d6053474855616e7b8894a1aa94877a6e6156616e7b86928e8174695e576875828e9baa978a7e7164574b3e312418090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c27303940444e5355595b56544e463d323b4855626e7b8897a1a197887b6f6255483c2e23180c0000010d1925303d4a5663707d8998a39e9184786c605346392d20130a00000000000000000000000b16212b353f49525c636d727d85908e86817b746f6a64605c5450483f34291d110500000000000000000000000000000000000000000000000000000000000000040e18232f39434c565e686e7a828d929ea19993887f746d675f58534d46443f3b3a36312921180d030000000000000000000000000000000000000000000815212e3a47535f6a73808c919796918b82796d665c51453e32281e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181d202125272827242b3744505b657783909d93867a7884877b6e6154483b2e211508000000000000000000000000000000000000000000000004111d2a3744505d6a77839097877a6d6154473a2e21140700000000000000000000000000000000000000000000000c17232e38424f59616b707a7f828382817d79726d665e606c7884919e9c8f82898781796f6a615a504a423930271e150c03000000000000000000000002080d1113141b1a18140f0901000000000000000000000000000000000000030d151e262e34394045464e5866737f8c99a096887b6e625f5f5f5e5e5e5e5d5c5c5b5a595857616e7b8793988b7f7265544a4b46443f3830261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303c454d555d60676d707273706b645c5242392e23180c0000000000000000000000000000000000000007131d2a36424d57626f7c88948b7e7165594f4754616e7a8794a1a295887b6f62555e6974808d92867b6e615665727f8b98aa9a8d8073675a4d4030251a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424a51585f6266686260584e43383a47535f6a7885929ea9988c7f7265544a4034281c100400000814202d3a4753606d7a86929fa196897c6f6256493c31261b0f0300000000000000000004101b27323d47515b636e737f88918a817b746e69625f5853514a423f362d22170c01000000000000000000000000000000000000000000000000000000000000000007121d27313a444c565e686d78808a91969f9a938c81796f6a615e575350494846423b33291f14090000000000000000000000000000000000000000000915222f3c4855626f7c87929ea19b98948f82786d605a50443a2f24190d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090d161d24292c2d31343534312d333f49536874818e9b99887c7884877a6d6154473a2e211407000000000000000000000000000000000000000000000003101d2a3643505d6976839095897c6f6256493c2f2316070000000000000000000000000000000000000000000003101c28343f4a54606b707d858c8f908f8d8a857f786e69606574808d9a978b7e7c838c847c716c605c544a423930271e150a00000000000000000000040c13191d2021282724201a130b0200000000000000000000000000000000000a141c222a32373b3c40424855626e7b8895a0998c7f7266564c525252515150504f4e4d4d4c525e697683909c8f8275665c50443a38342e261e150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2a333c434b51555d60636666636059524a4130271c120700000000000000000000000000000000000000010e1a25303b47535f6a76828f9083776b60544753606d7a8699a4a296897c6f635656616e7b86928d8073685e626f7c8898a29c8f827669574d42362a1e1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a545c606a6f73756f6a6054483b37434e586875828f9ba89c8f8275665c5144382c1f1206000006131f2c3945515d6776838f9ca8998d807366584e43372b1f12060000000000000000000713202c38444f59636d73808c8e847d756e69615e57534e46444039302d241b1106000000000000000000000000000000000000000000000000000000000000000000010b151f28323b444c565d666d747d848d92989f938e837c746e6963605b5355534d453b31261a0e020000000000000000000000000000000000000003101c28343f4a546774818d99a39b918b89908d80746c61564c4135291f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a121b1f282f35393a3e4142413e3a393f4c5966727f8c99978b7e7885867a6d6053473a2d2014070000000000000000000000000000000000000000000000020f1c2935424f5c6875828f978a7e7164574b3e2f24180c0000000000000000000000000000000000000000000006121f2c3844505c666f7d8692979c9d999497928b837b706b636f7c89979c8f8276787f86867e736d665c544a423930261c11060000000000000000040e161e24292c2d3533302b251d140b0000000000000000000000000000000008121c262e343c4347494d4e48535f6a7784919d9c908376685e524645454544444342424140424d5666727f8c999285796d6053463a2d28231c150c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18212a313a40454b515357595956554f4741382f1e150b00000000000000000000000000000000000000000009141f2b37434e5863707d8a95897c6f63564c53606c7986939fa3978a7d706457525e6974818d92867a6d61606c7985929f9e928578695e52463a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844515c666d747c7f817c6f6256493c313f4c5865727f8b98aa9f9285796d6053463a2d201307000004101d2935404b5566737f8c99a99d9184776a5f53473a2e21150a0000000000000000000916222f3b4854606b727f8c8a817a706b615e57524d47433c38342e271e1b12090000000000000000000000000000000000000000000000000000000000000000000000030d162029323b444c545c606b707a80868d9298959187817b746f6c6564615f574d42362a1e12050000000000000000000000000000000000000006121f2b3844505c667784919d9f958b7f7c83908a7e70685d52453b31251a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c242d313a4145474b4e4f4d4b4745414a5763707d8a969a8d8079858579675d5145392c1f13060000000000000000000000000000000000000000000000010d1a2734404d5a6773808d998d807366554b4035291d10040000000000000000000000000000000000000000000713202d3a4653606d78839198a19a938c87888a9090857d706c6c7985919e93877b6e727c838b80786d665c544a42382e23171007000000000000020c1620283035393a41403c362f261d1108000000000000000000000000000005101a242e3840464e5355595b5553576673808c999f93867a6d6154473a2f38373736363534303b4855626e7b889698897c6f6356493c2f2418110a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f181f282f35394045474a4c4c4a48443d352f261d0c03000000000000000000000000000000000000000000020f1b26323c4653606c7884918e8175685e52505b657985929fa4978b7e7164584d57616e7b86928d8073685e6676828f9ca197877b6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d57606d7881888c877a6d6154473a2f3c4955626f7c8898a2a298887c6f6255493c2f2216070000000c18242f3c4956626f7c8997a1a096887c6f6255483c32261b0f000000000000000003101c28343f4a5463707d87857e756d686159534d46423b37322c28231c150c0900000000000000000000000000000000000000000000000000000000000000000000000000040e172029323a424a515961686d737b80868b8f92928e86817c7874716e695f53463a2d211407000000000000000000000000000000000000000713202d3a4653606d7986929f9d9083776f7a8491857a6d60574d42362a1e140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111c252e363f434b5154585a5b5a5754514b4854616e7b87979c9083788684776a554b4035291d100b0500000000000000000000000000000000000000000000000b1824313e4b5764717e8a9a908376675d5145382c1f13060000000000000000000000000000000000000000000a1724313d4a5764707d8a95a09f93887f7b7b7e838a92867e706c74818e9b998c7f726a6f79828d81786d665c544a3f342822190c03000000000008131e28323a4145474e4c4841392f231a1005000000000000000000000000000c17222c36404a52585f626668625f58626f7c8895a0998b7e7165554b4035292b2a292928272e3a47535f6a778491998c807366554b4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d161d24292f35393a3d3f403d3c38332c231d140b00000000000000000000000000000000000000000000010a151f2b3744505b65717e8b92867a6e61544a5e6b7885919ea5988b7e7265584b525e6973808d92867a6d6166737f8c99a9968a7d7063574a3d30241708000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535f6974808d93918578685e5246392d3a4653606d7985929faa988b7f7265584c3f2f24180d0100000713202d394653606c7985929ea8998c807366584e43372b1b11060000000000000006121f2c3844505c6677848f827b736d68605c544f45413a312b231c18120b03000000000000000000000000000000000000000000000000000000000000000000000000000000050e172028303940444f565d60696e747a7e8286898c8e8e8984817e7b6e6155483b2e221508000000000000000000000000000000000000000714212e3a4754616d7a8799a39a8d8074686f7c878d8073695e53463b3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19232e37404850555d606467686764605d5551525e697885919e92867b888276695c4f432f27201c160e09030000000000000000000000000000000000000000000814212e3b4754616e7a87939286796d6053473a2e23170b0000000000000000000000000000000000000000030f1b27333f49536875818e9ba7998d80736e6e71767e8590877e70717d8a999d9184776a676d78818d81786d665c50443f342b1e150b00000000010d1924303a444c52545b59534b41352c21160b00000000000000000000000005111c28333e48525c646a6f73756e6a5f5f6a7784919d9b8f8275675d5145392c1f1d1d1c1b1f2b37434e586673808d99908376675d5145392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181d24292c2d303333302f2c27211a110b02000000000000000000000000000000000000000000030b12181d27333f4953606d7985928c7f73665c505e6b7784919ea5998c7f7266594c4d57616d7a85928d80736863707c8999a3998c7f7366594c402f24190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b87939d9084776a564c41352b3844505c6676838f9ca89b8e817568554b4035291d1004000006121f2b3844505b6675818e9bab9d9184776a5f5347382d22170b000000000000000713202d3a4653606d7880868d86807a726d666059524c433d3528231d150c0300000000000000000000000000000000000000000000000000000000000000000000000000000000050e161e272e343e434c52575e61686d72767a7d80818390918d867e7164574b3e3124180b000000000000000000000000000000000000000815212e3b4854616e7b8794ab998c7f72666a74818e867b6e61564c41362a1e1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b354049515a62676d71747574716d67605d55576975828f9c988c808c8073665a4d4038322c27211a150e0600000000000000000000000000000000000000000714202d3946525e6876839099897d7063544a3f34281c10030000000000000000000000000000000000000005121f2b3744505b657784919ea197877b6e6161646c717b838f867d707a86929f95887b6f62666d74808d81786d605b51463c30271c120700000004111d2935414c565d6068645d53473e33281c100400000000000000000000000814212d3945505a646e737c80817c6e62586673808c999f92867a6d6053473a2d22170b0f0f1a26313c4956626f7c899792867a6d6054473a2d21140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d12181d1f202426262323201c160f0800000000000000000000000000000000000000000000030d151d24292c2d3845515c67737f8c9184796d60535d6a7783909da6998c807366594d46525e68737f8c92867a6d616d7a86929f9b8e827568564c4135291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c999c8f8376695c50433028343f4a546773808d9aa69e918477675d5145392c2013060000030f1c28333f4a5464717e8a99a3a096887c6f6253493f33271b0f0300000000000006121f2c3844505c666d737b81878d857f786f6b605d564f4740342e271e150c0300000000000000000000000000000000000000000000000000000000000000000000000000000000040c151c2328313a41454d53565d6065686d70737a828f938b7e716c6155493d302417090d0c07060401000000000000000000000000000814212e3b4754616e7a8794aa988c7f7265616e7b868d8174685e5246392d20160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c27333d47515b636c717a7e8182807e7a736d67605866737f8c999e91848a7e7164574a47433d38332b261f180f080000000000000000000000000000000000000005111e2a36414c5664717e8b968d8174665c5044382b1f150a000000000000000000000000000000000000000613202d394653606c7986939f9e928578695e555a61696e79828f867c76838f9c998c8073665c606e74818e81756d63584e42392e23180c0000000713202c3945525d686d746f64594f44382c21160a00000000000000000000000a1723303c4955616c7380888c877a6d6055626e7b8895a0988a7d7064544a3f33281c0f030913202d394653606c788491998a7d7063574a3d31251a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c101314171919171614100b0500000000000000000000000000000000000000000000030d151f272f35383a3f404b55616d7a86928a7d7164585d697683909ca79a8d8074675a4d414c56606d7985918d807369677683909d9e918477685d5245392c2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9b9d9083766a53493f33272e3e4b5764717e8a97a49f93867a6d6053473a2d2014070000000b17222d3a4754606d7a86929fa8998d8073655b5044372b1f120700000000000003101c28343f4a545c60686e747c838c8b837d746d6860595145403930271e150b0200000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181f282f353b42464c5254565d666d79828f948e81746c625a5045392d2115161a191413110d070100000000000000000000000714212d3a4754606d7a8798a3998c7f73665e6974818e867a6e6154473d32271b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c38444f59636d737e858b8d8e8d8a8680796f6a6263707d8a99a09691877b6e615b54544e48443d37312a211a120a020000000000000000000000000000000000020e1925303b4653606d7984919184796d6053463d32271b0f050000000000000000000000000000000000000714212d3a4754606d7a8799a49e9184786b574d50575e676d79828f847a7f8c999d9184776a5f5c606d78828c7f726a60544a4034281d120700000714212d3a4754606d7a81746b6155483d32271b0f0400000000000000000003101c28343f4a5464717e8a92928578675d535f6a7783909d9b8e8174665b5044382b1f120605121f2b3744505b6574818d9a8d807467574d42362a1e1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0c0d0a0907040000000000000000000000000000000000000000000000010b151f2731394045474c4d4b525e6874818d8f83766a5f5c6976828f9ca79a8e8174675b4e4145515d67727f8b92867b6e6673808d999f93867a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c6976828f9c9d918477655b5044372b2f3c4955626f7c8895a9a49a887c6f6255493c2f2216090000000613202c3945525d6876828f9ca99e9184786c605346392f24180d010000000000000c17232e38424a50565e616a6f7980879189817a706b635b514b433930271d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d161e242931363a41454e58606c78818f949185796d605a50483e34281f2223272521201d18130c04000000000000000000000613202d394653606c7986929f9a8d80736757626f7c888c7f7266584e43372b1d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4854606b737f8b92989a9b9a98928d847c716c606d7a86939f9d9184776f6c66626058554f47423c332c241c140a01000000000000000000000000000000000008141f2c3845515c67717e8a948a7d7064584e43372b21170b0200000000000000000000000000000000000714202d3a4753606d7a8699a39e928578675d51454d555d676d79828f827d8998a095887b6e62555c666d7984877c6f665c5144392e23180c00000d1a2734404d5a6773808a7d7063594f44382c20150a00000000000000000006121f2c3844505c667683909d9185786b564e5866737f8c999e9285796c605346392d201309030f1b27333f495363707d8997918477695e53463a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d273139434b5153595a585256626e7b8793887c6f62566875828e9ba89b8e8175685b4e42404b55606d7984918e81746a707d8999a39a897d7063564a3d302317090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2935424f5c6875828f9b9f9285796c605346392d2d3a4753606d7a8697a1ac978a7e7164574b3e3124180b00000004111d2935414c5665727f8b98a7a196897c7063554b4035291d100400000000000006111c2630383f444d525860666d737d85908e847d736d605c554b42392f261b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191f252a2f3a47535f6a727f8c93988b7f72675d51483f362c272b2e2f33322d2c29241d160d0600000000000000000005121f2b3744505b657884919e9b8e8175685b5f6a76839084776a605447392e23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c5663707d88939fa2a198928f8e9191877e726d687783909d9d90837e7c79746f6a636059534d453e362e261c130a000000000000000000000000000000000004101c2834404b55616c7683908f82766a6054473e33291d140a00000000000000000000000000000000000613202c3945515d677986929f9f93867a6d605447434b555d676d7a838c7f85929f998c7f736657545d676f7c8783786d60544b4034281c100400111e2a3744515d6a77839083766b6054483c32271b0f0600000000000000000713202d3a4653606d7986929f928679685e5255616e7b88959f97897c6f6356493c31261a0e020b17222d3a4653606d79859296877b6e6154483b2e23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f39434b555d606567635c535f6975828f8d8174685d6874818e9ba79b8e8275685b4f423944515c66707d8a92877c6e6d7a86929f998c7f7366594c4031261a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a2734414d5a6774808d9aa298887b6e6155483b2e2c3945515d677885929ea6998c7f7366594c403326190d000000010d19242f3b4854616e7b87959fa89b8e8174675d5145392c20150a000000000000000a151e262e343b41464e545c606b6f7a828d91877f756d675c544a41382d22170b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d141f2b37434e58626e7c86929f92867a6d60554b40362d2b32373b3c403f3a39352f281f180f060000000000000000030f1b27333f4953697683909c9c90837669565865727e8b897c6f62544b4034281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525d687683909aa4a19792868282848a918b7f726d73808d9aa095908b8885817c76706b615f57504840382e251c120900000000000000000000000000000000000c18232e3943505a626f7c8792897c6f625a50453b2f261c11060000000000000000000000000000000004101d2935404b556b7884919ea49a897c6f6356493d434b555d686e7b858685919e9d908377695e5255606a73808b7e72665c5145382c1f130600121e2b3845515e6b788491897c6f63584e43372b21180e05000000000000000714212d3a4754606d7a8799a399877a6d6154535f697783909d9a8d807367574d42372b1e120606121f2c3844515c6674818e988b7e7265544a4034281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2934404b555d676d72736e63585763707d8992867a6d606774818d9aa79b8f8275685c4f4234404a54616c76828f8f82756b7683909c9c8f827569574d42372b1e120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a99a3978a7d7064574a3d312935404b556a7784919da79a8d8074675a4d4134271a0e010000000814202d3a46525e697683909da99f92857a6d6053473c31261b0f01000000000000030c151c232830363c424b515960686e78808c938c81796d665c53493f33271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b47545f6a75828f989c8f8275685d52433a2f2d343d4347494d4c4745413a312a21180e0500000000000000000b17222d414e5b6774818e9a9e928578685d54606d7a868d8174665c5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a86939fac9e92857c7575787e85908c7f72707d8a999f92858284888c89837d756e69615a524a40372e241b0f050000000000000000000000000000000007121d27303e4754606a73808c8f82766c61574d42382d22170f06000000000000000000000000000000010d18242f424f5c6975828f9cac998c807366584e4339434c565e69707d879197a1a095877b6e61544e58606d788484796d6053463a2d20130700101d2a3743505d6a7683908f82766a6054473e332a20160c020000000000000613202d394653606c7986939f96897d7063564d5765727f8c9a9d918477695f53473a2e21140804101c2834404a5464707d8a988f8275665c5144382c1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c676d797f8073675a54606b7783908c7f72656773808d9aa69c8f8275695c4f422e3942505a626f7c8793897c6f73808c999e928578695f53463a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a86929f9a8d807467584e43372b2f43505c6976838f9ca79b8e8174685b4e4135281b0e0200000005121e2a36424d5765727f8c98a7a2988b7e7164584e43372b1e130800000000000000030a11171f252a303940454f565e666d747f8b928e82786d655b5044392f24180d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a54626f7c88949e998c7f7266564c41312d363f464e54565a5854514b433c332a20170d0200000000000000061926323f4c5965727f8c98a197877a6d61545d6875828f85796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8999a4ab998c7f726a656c717a828f8b7e717a86929f928579787b7f848a89827b716c635c52493f362d21170b02000000000000000000000000000000000b151e2b37434e58606d7882908a7e71695e544a3f332821180e0400000000000000000000000000000007192633404c5966737f8c99a89d9184776a6054483c3a444d57606b727f8c949ea7988b7e7265544a505c66717e8a7d7164574a3e3124170b000f1b2835424e5b6875818e94887c6f625a50453c32281e130800000000000006121f2b3844505b667784919d998d807366574d54616e7b87939f96887b6e6255483b3025190d010c18232e3a4653606d7985929285796d6053463a2d2013090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56606d79838c8276695c4f5964717e8a9184786c6673808c99a69c8f8275695c4f4236303e47535f6a74818e908378707c8998a197887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e6875828f9b9e9184776a5f53473a2f36434f5c6976828f9ca89b8f8275685c4f4235291c0f02000000020e1a25303b4854616e7b87959faa9d9083766a5f53473a2f24190d000000000000000000060c14191e272e343d444c545c606d737e87928e81776c60554b4035291d100400000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844515c6674818e9aa696897d7063564a3d2f343f48505860626665605d554e453c32291e1408000000000000000a1723303d4a5663707d8996a896897c7063565665717e8b897c706356493d2f24180d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a97aba399877b6e615b60686d79828f877d76838f9c98897c6f6e72787d848c867e736e635b51483e33291d140a00000000000000000000000000020507080c1b27323c44505c666e7b8592857b6e665b50443d332a20160d0300000000000000000000000000000915222f3c4855626f7c8895a0a095897c6f62574d42373b454f59626d75828f97a19b8f8275665c514a54606d79848175685b4e4235281b0f000b1825313e4b5864717e8b998f82766c62574e443a3025190d010000000000030f1c28333f4a546774818e9a9d908376695f53525e697683909c998c7f7266564c41362a1e110507131f2c3845515c6775818e98897c706356493d31261a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d6873808d8f8275685c4f53606d7984918a7d7066727f8c99a59c8f8276695c4f43362b37434e58616e7b86928b7e717986929f978b7e7164584b3e3025190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c56636f7c89949e96887c6f62564c413536424f5c6975828f9ca89b8e8275685b4f4235281c0f02000000000914212d3a46535e697683909daa9f95887c6f62564c4135291d120700000000000000000002080c151d2328323b424a505b636c717e87938b7f72675d5145392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929fa197877a6d6154473a313c46505a626a6f73726d675f574e443b3025190c030000000000000714212e3a4754616d7a8796a1988b7f72655854616e7a878c807366554b4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a39f9286796d6053565e676d79828f867c7f8b98998c807366666c70797f868a80736d635a50453b2f261b11060000000000000000000002080e111414191d2028343f4a545e69707d888f82786c60594f463c32281f150b02000000000000000000000000000815212e3a47535f6a7784919da79b8e8175695f53473d333d47515b616d7a85919e9f9285796d605346515c666f7c7a6d6054473a2d211407000814212e3b4754616e7a8692948b7e716a5f564c41362a1d11050000000000000b17222d3d495663707d89959f95887b6e62554d5765727f8b999c908376685e5246392d20130704101c2834404b5564707d8a978d807367574d42372b1e12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a86928f8275695c4f505c66727f8c8f827669727f8c98a59c8f8276695c4f433626323c46525e68727f8c92857a76838f9c9a8e817467564c41362a1d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303a4854606b75828f989a8d8174685d52453c333f49536976838f9ca79a8e8174675b4e4134281b0e010000000005121e2a36424d5765727e8b98a3a79a8d8174685d5245392e23180c0100000000000000000000030b1218202930383f44515a626c717e889285796d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c8997a29e928578685d52463937434e58626c717c807f796e6a5f564c41362a1e150a0000000000000713202d3946525e687884919e9b8e81756856525e687783908376675d5145392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c8996a99f9386796d60534c555c676d798390847c88959d908377695f60666d727c858c7f726c61574d41382d22170b000000000000000000050d14191e2021262a22232e38424d57616b73808c8c7f726b60584e443a31271d140a0000000000000000000000000006121f2b37434e5865727e8b97a19f93877b6e62594f4339353f46525e6873808d9aa298897c6f6356494a54606b6f6d675d5145392c201306000714202d3946525e6875818e9b92867c6e685e5246392d2013070000000000000613202d394653606c7883909d998d8073675c5154616d7a86929f93867a6d6154473a2f24180c000c18232e3a4653606d798592918477695f53473a2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b988f8376695c504a54606d7a8592877b6e727f8b98a59c8f8275695c4f4236292a36414d56606d7984918e81747f8c999d918477685e5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2c38434f59616e7b86929f92857a6d60584e443a44505b657784909dac998c807366594d4033261a0d0000000000020e1a25313b4754606d7a86929fac9f92867a6d60554b4034281d1307000000000000000000000000070e171e262e344048505a626c727f8b8a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a99d9184776a564c41353a47535f6a717e878d8b847c6e685e52463e30261c1106000000000005111d2a36414c566875828e9b9d918477685e52566773808d867a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8797a2a499877a6e6154474b555d676e7b858e8183909d95887b6e61545c606a6f7b848b7e71695e53493f33271c110600000000000000090e171f252a2d2e33362f2e2b303b454f59606c78828f877d706a5f564c43392f261c1106000000000000000000000000030f1b26313c4653606d7985919ea4998f82756b60554b403536414c5664717d8a97a8998c7f7366544a424f596063605d554c4135291d11040005111e2a36414c56626f7c89939891847a6d6154473a2e21140700000000000005121f2b3744505b65707d8a939e9184796d6055525e6876828f9c998b7e7165554b4035291d100407131f2c3845515c6674818e96887b6e6255483b3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b6875818e9b9084776a574d45525d6874808d8d8074727e8b98a59b8f8275685c4f42352925303b45515c66707d8a93887d7c8998a095877a6d6154473a2e2114090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b27323d46535e69717e8a92988d80746a5f564c454653606c7985929fa49a8a7d7164574a3e3124170b0000000000000914202c3945525d6875818e9ba7a2988c7f72675c51453a2f24180d01000000000000000000000000050c151c2328363f48505a626d74808b7e7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1c2835424f5b6875828e9ba89c908376695d5043303c4855626f7c8692999691847a6e615a5042382e23170c0000000000010d1925303f4c5965727f8c989f93867a6d61545663707d898a7d7063574a3d3024170809080603000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e697885929eab96897c6f635649434b555e69707d878e84919e998c7f736659515860696f7c86867b6e655b5044382e23170c00000000000009121a20293036393b40433c3b3732333e44505b666d7a8491857c6e685e554b42382d221711080000000000000000000000000a151f2c3845515c67717e8b949f9e93897d70675d51453e343b4854616e7b8796a19c8f8276665c5044474f545654514c433a2f24190d0100010d1925303b4754606a74818e96968f8275695c4f4236291c0f000000000000030f1b27333f4953616b75818e96978b7f72675d515665717e8b999b8f8275675d5145392c1f130604101c2834404b5463707d89968c7f7265564c41362a1d11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2a3744505d6a7783909d928579695e53464c56616e7b8792857a717e8b98a49b8e8275685b4f4235281f2834404b54616b75828f91847a85929f978a7d7164574a3e3025190e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212a36424d57616c73808d9292877c6f685e56514f58626f7c8898a29f93877b6e6154473b2e21140800000000000004111d2935414c56636f7c89959faa9e9184796d60554b4135291d110400000000000000000000000000030a1117242d363f48515b606d78837d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da89c8f8275695c4f42363e4a5764717d879399a0968f82766c61544a3f34281c100300000000000816232f3c4956626f7c8998a29a8a7d70645753606d7a868d8073665a4d40302519191515120f0a04000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d576875828f9baa998c7f7366564c41434d57606b73808c9196a09e9184776b60554e575f6a707e8a82776c60544a3f34281c10030000000007101a242c323b4146474c504847433c34333f4a545d686f7c8691847a6d675d544a3f3328231a0f05000000000000000000000004101c2834404b55606c77839098a29e9184796d605a50463d3a46525e697884919e9f9285796d6053463d4448494745413a31281e130800000008141e2b37434e58616d7a848f938e8174675b4e4134281b0e000000000000000b17222d38414f59616d7a8491989185796d605954606d7a86929f92867a6d6053473a2d201407000c18232e394653606c788491908376685e5246392d2013080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2b3845515e6b7884919e98877b6e61544846535e6975818e8b7f727e8b98a49a8e8174675b4e41342818232e39424f59616e7b86928e81828f9c9a8d817467564d42362a1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e1a25313b45505a636e74808b9291847a6d68605c59606a73808d9aa69c8f8376695e52463a2d201407000000000000010d1924303a4854606b7683909da7a1978b7f72675d5145392c20130600000000000000000000000000000006121b242d363f44505c666d7a796d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000004111e2b3744515e6a7784919da99c8f8276695c4f43363c4955616c717e8792999f948a7e71665c5044382c1f130800000000000713202d3a4653606d7986929f9a8d80736756515d6777838f827669564c413529272622211f1b15110c05000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313e4b5864717e8b98a39c8f8276685d52453b454f59606c78828f97a2a096897d7063584e4e58616c74818b7e71665c5044382c1f1206000000040f19222c363e444d5254595d55534e463c3238424c565f6a717e8b9082796d665b50443f352c21170c0300000000000000000000000c18232e3944505b656e7b86929fa0968e81746c61584e463c424d576875818e9ba298887c6f6255483c383b3c3a39352f281f160c01000000020f1b27323d46525d686e7b8286827a6d6154473a2e2114070000000000000006111b262f3e46525e686f7d8692978d80736b60565d6875828f9c988a7d7064574a3d312417070007121f2b3844505b6673808d92867a6d6154473a2f24190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2b3844515e6b7784919e978a7d71645349424d57626f7c899184777e8b98a49a8d8073675a4d4034271a1d27303e46535e69737f8c938e84919e9d918477695e52463a2d20140600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333e48525c646e747f879190837a716d66696b707c86929f9f948a7d7064574d42362a1e11050000000000000008131e2c38434f5964707d8a959fa99e9185796d6054473a2d2114070000000000000000000000000000000009121b2428343f4a545e686d6d675d5145392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000004111e2b3744515e6a7784919da99c908376695d5043303945505a626c717e87929f9e9184786d6053463a3025190d010000000006131f2c3845515c6676828f9c9d908376685d52556774818e8578685e5246393334322f2e2b26201c170e090300000000000000000000000000000000000000000000000000000000000000000000000914212d3a4754606d7a86929f9f92867a6d6054473c3d44505b666e7b85929fa59c8f82766a605447505a606d798484786d6053463a2d2013070000000a15202b343e4850565e616669625f584e43372f3a444e58626c74818e8f81786c605b51473d33291e150a000000000000000000000007121d27333f49535f69717e8b929c9d928a7e716a60584e463e4a5764707d8a96a0988b7e7165584b3e322f302d2c29241e160d0400000000000a16202935414c565e696e7679766d685e5246392d20130700000000000000000a141d2a36414c56606b717e879293877d6f685e5664717e8b979a8d8074675a4d412e23180c00030f1c28333f4a54626e7b88948b7e7165554c4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c2936434f5c6976828f9c9a8d8174655b50444754606a768390897d7f8b98a5998c7f7366594c40332619151e2a36424d57606d798491969196a0a095877b6e6154473b2d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212c36404a525c646d727d848d90847e797676787d8491989f958f82766c6155453b30251a0e0200000000000000020f1b27323d4955616c77839099a4a1978e8174685b4e4135281b0e0000000000000000000000000000000000091217232e38424c565e61605d554b4035291d1004000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da99d9184776a574d4236333e48505a626c727f8b929d968a7e7164564c41362a1d11050000000004101c2834404b5466737f8c999f92867a6d60545865727e8b877a6d6154473d3f403f3c3b37322d28221a140e06000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d6774818e9ba3988b7e7165584e43373f4a545e69717e8b939e9f94897c6f62594f45515d67707d8a7e7164584b3e3125180b0000030f1b27323d46505a61686e73766f6a5f53473b2e323c46505a606d7984918d80746d62594f453b30261c110600000000000000000000000b17222d38414d57616c73808d939d9f92867c6f6a605850454653606d7984919e9a8d8174675a4e4134272321201d19130c04000000000000040d1924303a444d575e61666d66615e564c41362a1d11050000000000000000020b1925303a444f59616c717e879291847a6d685e616d7a87969d9083776a554b4034281c1004000b17222d3847535f697683908f8275675d5145392c201308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c999e9184786c605346434e5864707d8a8f827f8c98a4988b7e7165584b3e3225180c1a25313b45515c66707d89939ea0a8a7978b7e7164544a3f33281c0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1a242e38404a525b626b707980868d8a8583838489919699928d837a6d615a504433291f14090000000000000000000a16212d3944505a626f7c87939c9792877e7165584b3e3225180b00000000000000000000000000000000000006111c26303a444c525453514b43392f24180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9ca89f928579695e52463a2d363e48505a626d74818e949c8f8276685e5246392d20130700000000000c18232e3c4956626f7c8997a2998a7d70635756626f7c89897c6f6256494a4c4d4c4847433c39332a261f180f0700000000000000000000000000000000000000000000000000000000000000000004111d2935414c55626f7c88939e9c8f83766a5f53473b38424d57616c75828f97a29c8f82766b6054484b55616c76828175685b4f4235281c0f000006131f2b37434e58616c717b7f827c6f6255483c2f2a343f45515d67707d88938b7f726b60574d42382e23170c030000000000000000000006111b262f3c45505a606c77818e939c9892857c6f6a615a524c515c66717e8a92988f8376695c504336291d1413110d0801000000000000000008131e28323b454d53545c605c54524c443a3025190d0100000000000000000008131e29323d46505a616c717e869190837a6d6860687784919e928578675c5145382c1f13060006111c2b37424d5764717e8a92867a6d6054473a3024190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7c88949f96897c6f63574e424653606c78849188818e9bab96897d7063564a3d30231709141f2834404b54606b74818e97a1ada89b8e8175665b5044382b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121c262f384049515960676d737b8185898c8e8f908f8e8b87807a6d685d52483e3320170d0200000000000000000004101c28333e4754606a737f8b8f8c857d716c62564a3d3124170b000000000000000000000000000000000000000a151e29323a4146474745403931281d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99aaa298877b6e6154473b2e2d363e48515b606d7882909892867a6d6154473a2e21140700000000000713202d3a4653606d7985929f9a8d8074675754616d7a878a7e7164575357595a5955534e49453e36312a211911080000000000000000000000000000000000000000000000000000000000000000010d19242f3a47535f6a75828f999f93877c6f62574d42363b45505a616e7a85929f9e94897c6f635a5043505a616e7b796d6053473a2d20140700000815222e3b4754606a717e868c867a6d6053473a2d202935414b55606b74808d92877d70695e544a3f34281f150900000000000000000000000a141d2a333e44505b656c78818d929f9792857c716c605d565154616c727f86898984776b5e5144382b1e1106040100000000000000000000020c162029333b42464a5053504a46413a32281e130800000000000000000000020c17202b343e48505a616c707c848e90837a716d6776838f9c9786796d6053463a2d20130700000e1a26313c4653606d7884918a7e7164564c4135291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a76828f999b8e81756a5f534744505b66727f8b9386939fa399887b6f6255483c2f2215090c18232e39424f59616d7a85929ea6ab9e9285796c605346392d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262f373f474f555d60696e74797d8082838382817e7b746d685d564c41362c220e0500000000000000000000000b17222b38434e58636d737f83807a706b625a50453a2e21150900000000000000000000000000000000000000030c1720293036393a3a39352f281f160c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a98a3aa978a7d7064574a3d31262d363f44515c666e7b8692998a7e7164574b3e3124180b000000000006121f2c3844505c6675828f9b9d918477695f535e6878858c7f72655c6063666765625f58555046423b332b231a1108000000000000000000000000000000000000000000000000000000000000000008131e2b37434e58626f7c87939f9a8e8175695e53463d333e46525e68717e8b949f9c9083766c61554b47535f696e6d675d5145392c2013060004101c2834404b54626f7c8792918477675d5145392c1f242f3a434f59606d7a859292857b6e665c50443c31261a0e0400000000000000000000020b182127333f49535b666c77808a92989792867e746d68605d555a636d727a7c7d7b6e6154483b2e2115080000000000000000000000000000040e1721293136383f4446443f3836302820160c020000000000000000000000050e19222c363e48505a616a6f7a818990857e79767683909d928578675c5145382c1f1306000009151f2b3844505c66707d8a8f8275685d5245392c20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e58626f7c87929f93877b6e625b51474a54606d7985929399a49f9286796d6053463a2d20130707121d27303d46525e68717e8b949faaa197897c6f6353493f33271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141d252d353d434b51575f61676d70737576767574716e69605d564c443a30241a10000000000000000000000000050f1b27323d46525b636d7276736d68615950483f34291d11050000000000000000000000000000000000000000050e171e252a2d2e2d2c29241d160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a86929fa6998d807366574d42372b242834404a545e69727f8c978d8174675a4e4134271b0e010000000003101c28343f4a5465727e8b98a096887b6e6155566a77848d807366666d707273726f6a64615a534d453d352c231a100600000000000000000000000000000000000000000000000000000000000000010f1b26323c47535f6a74818e979f92877b6e61584e413836414c56626c76828f989f948a7d71675c51454d575f61605d554b4035291d11040006131f2c3845515c6675828f998f837669554b4035291d1d28313d45515d67727f8c969083786d60574d42372b20150a0000000000000000000000060f17222d38414a545b656c737e86909598928a817a726d6765626161686d6f706e695e52463a2d201407000000000000000000000000000000050f171f252a2e34383a38342e2a251e160e050000000000000000000000000007101a242c363e4750585f676d747d838a8b8583839095988e817468554b4034281c1004000003101c28343f4a54616c75818e867a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26313c47535f6a727f8c94998f82766d62595047515d6774818e9aa4ab9d908377665c5145382c1f1306000b151e2935414c56616c76828f98a2a99a8d8073655b5044372b1f12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131b232c313a41454d53555c60636668696a696865615e57524c443a32281e1108000000000000000000000000000a16202b344049525b62656966615d564f473f362d22170c01000000000000000000000000000000000000000000050c13191d202120201d18120c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d6775828f9ba79d908477695f53473a2f24232e39424d57606d7985928f8376695c504336291d100300000000000c17232e3b4854616e7b8795a0988b7f7265555d6976838e81746d73797d7f807f7c77716c615f574f473e352c22180d03000000000000000000000000000000000000000000000000000000000000000a15202b37434e58616d7a85929e998e81746a6053493f333b44505a616e7b86929f9e9184796d60564c454d535553514b433a2f24180d01000713202d3a4653606d7986929b8f8275685c4f422f2418161f2935414c55606d798491958c8073695f53473d32271b0f01000000000000000000000006111b262f38424a535b606c717c838c9298938e857f7a74716f6e6e70747c716c62574d42362a1e120500000000000000000000000000000000050d141a1c23282b2d2b28231c19130c0500000000000000000000000000000008121b242c353e464e555d606b70787e83888c8e908f8d867b6e6255483b2e23180c000000000b17232e3842505a606d79828b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202b37434e58606c77828f95948b7f726b615a534e5564717d8a97a4a99a8d817467544b4034281c100400030c1925303a44505a616e7b86929fa79e9184786c605346392e23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000109111a1f282f353c42464b515356595b5c5d5c5b5854524d45413a322820160c0000000000000000000000000000040f19222e3740495156585c5954524c443e352d241b1106000000000000000000000000000000000000000000000002080d1113141413100d07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414b5563707d89959fa095887b6e62564c4135292027303b45515d6774818d9184776a5e5144372b1e110400000000000614212d3a46535e697784909d9c8f8276675d5c6975828e81747980858a8c8d8c88837e766e6960594f473e342a1f150b01000000000000000000000000000000000000000000000000000000000000040f1b26313c46525e68717e8a939f93877c6f655b50443c323f46535f69727f8c95a0968c7f73685d52454247484745403a31281d130700000915222f3c4855626f7b88989b8f8275685c4f4235291c0d19242f3a45515c67727e8b9892877b6e61584e43372b1d12070000000000000000000000000a141d262f384149505a616a6e797f868e9297928b85817e7c7b7b7c81867e7165584b3e30251a0e02000000000000000000000000000000000003090e11171c1f201f1c17110d0802000000000000000000000000000000000009121b232c343c434c515960666c71777b7f828383807b6e695f53473a2e1d12070000000006111c26303e45515d676d787f807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1b26323c44505b656d7a83909492877d706c625f575a616e7b8894a1a1978a7d7063574a3d2e23180c00000008131e28323e46535e69727f8c959fa196897c6f62544a4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080d161d24293137394045464a4d4f50504f4e4b4746423b35302820160e0400000000000000000000000000000007101c252e373f464a4b504d4746413a322c231b120900000000000000000000000000000000000000000000000000000105070707060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a4855606b7783909da59a8d8073685d52453c3228202935404b5564717d8a9185786b5e5245382b1f1205000000000005121e2a36424d576673808d999f92867a6d605b6875828e817c848c8f8885838485898a827b706b61594f463c31271d1207000000000000000000000000000000000000000000000000000000000000000a15202a36414c56616c74818e959a9083786c60584e433937424d57606d788390999f92857a6d6054473a3a3b3a39352f281f160c0100000a1623303d495663707c89969c8f8376695c50433024190d131e2934404b55606d7a8592998e81756a605447392f23180c000000000000000000000000020b141d262f383f4450585f666d737b81878d9297928e8b898888898d8d8174675a4e4134271b09000000000000000000000000000000000000000000060b10121312100b0600000000000000000000000000000000000000000009111a222a313a41454f545b60646a6e72757676746e695f574d42372b1e0b0000000000000a141e2935404b555d666d72736e63574b3f3225190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a152027333f49535d686d79828e9392867e756e6a6867676e7b8895a99e9285796d6053473a2d201407000000020c16202a36424d57606d78839098a29a8d8074665c5144382c1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181f262b2e34383a3d4042434342413e3b3a363029241e160e0400000000000000000000000000000000000a131c252d343a3d3f43403a39353028201a110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d2c38444f5963707d89939d9f92857a6d60584e443a322a252f3b4855626e7b889184786b5e5145382b1e12050000000000020e1a25313c4956636f7c8997a1988a7d7064536976828f8586918e827c787677797d838c857d706b61584e43392f23180c03000000000000000000000000000000000000000000000000000000000000040d1925303a44505a606d79839097958b7f726a5f554b42383c44505c666f7c87929f988b7e7265584b3f322e2d2c29241d160d040000000a1623303d495663707c89969d9083766a564c4135291d110c18232f3945515d6774818e9b93897c6f62554b4034291c1004000000000000000000000000020b141d262d333e464e545c60696e747b80858a8e91939a94949691897d7063564a3d3023170a000000000000000000000000000000000000000000000003060706030000000000000000000000000000000000000000000000000810181f282f353d424a5053585f626568696967625f574d453c31261a0e000000000000020c18242f3a434b545c606566635b52473b2f23160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b17222d38414c565d676d79818a929288817b7775747476808d99a1978d8073675c5145382c1f130600000000040e1a25313b44505c666e7b86929f9e9285796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d141a1d23282c2d30333536373635322e2d2a251f19130c04000000000000000000000000000000000000010a131b23292e313236332e2d29241e160e080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101c27333d4854606b74818e95a0978d80736a60564c443c3630313a4754616d7a879083776a5d5044372a1d11040000000000000913202d394653606c7985929e9b8e8174655b6577839092928e81776f6a6a666d7077808c877d706a5f554b4034291f14090000000000000000000000000000000000000000000000000000000000000008131e28323e45515c676e7b85929992867c6f675c544a3f383f4a54606a737f8c92998e8175685b4e42352820201d18130c04000000000916222f3c4955626f7c88959e928578685d5245392c201307121d2935414b5564717e8a979b8e8175675c5145382c1f130600000000000000000000000000020b141b2227343c424b51575e61696e74797d81848688898887847e716b6054483c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d161e24292f383f44464e5355595b5d5c5a55534d453c332a2015090000000000000007131d28313a424a5053585957524940352a1e130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f3a434c555d676d757e858d928e8884818080838d929c9891857a6d60554b4034291c1004000000000009141f28343f4a545f69717e8a939a978a7d7063574a3d3024170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e12181c1f20232628292a29282521201e1a140d08020000000000000000000000000000000000000000010911181d222425292621201d19130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212c38444f59606d7a8391979f92877c6f685d564e46423f3e3f4754616e7a878e8275685b4f4235281c0f0200000000000006121f2b3844505b6674818e9a9e9185786c606c7985929e9184796d655f585c60656c737f8c867c6f675c51453b30251a0e00000000000000000000000000000000000000000000000000000000000000020c16202934404b555e69707d8792989083796d665b504a423a424e58636d737f878b8b8073665a4d4033271a13110d070100000000000815212e3b4854616e7b8798a197877a6d6054473a2d21140a0d18242f3b4754616e7a87979f9286796d6053473a2d2014070000000000000000000000000000020a1117222a303940454d53575f61676d7074777a7b7c7c7a77716c61594f44382c201407000000000000000000000000000000000000030709091012100c07060400000000000000000000000000000000000000000000000000040c13191d262d33383c4347484c4f50504e4847423c332a21180e0300000000000000010c161f2830383f44464c4d4b4740372e24190e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d28313a434b555d606c717b80868d91918e8d8d90949a9691867d70685d5243392f23180c000000000000030b17232e38424d57616c727f878d8d8b8275685c4f4235291c0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c101313171a1c1d1d1c1b181414110e0902000000000000000000000000000000000000000000000000060d121518181d1a1413110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c27333d45525d686e7b8592979991847a6d685f58524d4c4b4c505863707c898b7f7265584c3f3225190c00000000000000030f1c28333f4a5463707d8997a197897c6f626e7b8897978a7e71675c534e51535b606d75818e84796d60574d42362a1d120700000000000000000000000000000000000000000000000000000000000000050e18232f39434d57606b707e8792958e81786c605b544c443d46515b636d737c7f7e796d6053463a2d2013070401000000000000000613202d394653606c7985929f96897c706356493d32261b0f0714202d3946525e687885929e98897d706356493d3023160a00000000000000000000000000000000060f181e272e343b42464d53555d606467676d6e6f6f6e6864615a50473d33271c100400000000000000000000000000000000040a0f1315161c1e1d191312100c0700000000000000000000000000000000000000000000000001080b141c22282b31373a3b3f424343413b3a37312a21180f06000000000000000000040d161e262e34383a3f403f3b352e251c12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b161f28313a434b515a61696e747a8084888c8e8f908f8d8a847c706b60564c4131271d12070000000000000006111c26303c45505a636d727c80807e7b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0d0f10100f0e0b080705020000000000000000000000000000000000000000000000000000000106090b0c100d07070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212935414c565f696f7c8591969690837a6f6a615e575958585a616a74808d867b6e6154483b2e21150800000000000000000b17222d3a4653606d7985929e9a8d807367717e8b989285796d60554b414449505b606d79838c8073695e5246392e23180c000000000000000000000000000000000000000000000000000000000000000007121d27313b454f59616c707e8792938e80746c665e564f464449515b606d79807b6f6a5f54473b2e22150800000000000000000005121f2b3744505b657683909d998d807366584e43372b1f1409111e2a36414d566a7683909d998c7f7266594c3f3326190c0000000000000000000000000000000000060c151d232831363c42464b515357555d60626262615e565550483e352b21160b00000000000000000000000000000000070f161b1f2223292b2a25201f1c18120b03000000000000000000000000000000000000000000000000020a11171c1f262b2e2f32353636342f2e2b2620180f060000000000000000000000040c151c23282c2d3233322f2a241c130a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f28313a404550575e61686e73787c7f81838382817d786f6a60594f443a2f1f150b0100000000000000000a141e2a333e48515b636b6f7374726e695e52463a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d19242f3a434d575f6a6f7b848e939590837c736e6967656465676c707c868d8174695e52463a2d201407000000000000000006121f2c3844505c6674818e9b9e9184776a7683909a8e8174665c504339383f45515d676f7c87867b6e61544b4034281c100400000000000000000000000000000000000000000000000000000000000000010b151f29333d474f59616c717e8692938d80786d68605953504a4e56616e7b88867c6f6255493c2f221609000000000000000000030f1b27333f49536673808d999d9083776a5f53473b31251a0d0e192530424f5c6975828f9c9a8e8174675b4e4134281b0e000000000000000000000000000000000000030b12181f252a3137394045474a4b515355565554524d49453e362c231a0f0500000000000000000000000000000007101921272c2f30363837322d2c28231c150c0400000000000000000000000000000000000000000000000000060b0f151a1f212226282a292722211e1a150e0600000000000000000000000000030a11171c1f20252625231e19120a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161f282f353e454d52565e61656c6f727476767674706c6660584f473d32281e0d03000000000000000000020c18212c36404951596063666765615e574d42362a1e12050000000000000000000000000000000000000000020507080c0f10100f0c080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070c0e0f0e0b070704010000000000000000000000030607090a0a090706030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313c454e585f696e79818990959186807b767372717274777d859083796d60574d42362a1e1205000000000000000003101c28343f4a5463707d8a98a096887c6f7b8793978a7d7164544a3f312d35404b55606a73808c8074665c5145382c1f13060000000000000000000000000000000000000000000000000000000000000000030d17212b353e47505a616c717d8590928d827a706b63605c54585f68727f8b8f8275695c4f4236291c0f030000000000000000000b17222d3c4956626f7c8996a095887c6f62574d42362a1f160c1c2835424f5b6875828e9b9c8f8275695c4f4236291c0f0000000000000000000000000000000000000000070c141a1f262b2f35383a3d4045474849494746413b39332c241a1108000000000000000000000000000000040e19222b32383b3c4345433f3a38342e271e160e04000000000000000000000000000000000000000000000000000003090f121415191c1d1d1b1514120e090300000000000000000000000000000000060c101213191a1916130e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d2429333b42464c52535b60626568696a696764605b544e463d352b20160c0000000000000000000000060f1a242e3740474f54565a5a5854524d453b30251a0e0200000000000000000000000000000000000003090e121415191c1d1d1c191514120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111314181b1c1b181413110d080100000000000000060b101213161717151312100b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2a333c464e575f676d747d83898e928d8683807f7e7f80848a8b837b6e675d51453b30251a0e020000000000000000000c17232e3a4653606d7985929f998c8073808d9a97877b6e6154483b2e242f3a434e58606d798485796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000050f1a232c353e48505a616b6f7b828c928f847d75706d6668696a6f7a84919285786b5f5245382c1f12050000000000000000000613202d394653606c7884919e9a8e8174695e53463d31281e151b2835424e5b6875818e9b9c8f8376695c504336291d1000000000000000000000000000000000000000000003090e141a1d24292c2d2f35393a3b3c3c3b3936302d28221a1208000000000000000000000000000000020c16202b343d4348494f51504c46444039302820160c02000000000000000000000000000000000000000000000000000000020608080c0f10100e0808060200000000000000000000000000000000000000000306070c0d0c0a070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c1318202930363b414649505355595b5c5d5c5a5753504a423d342b23190d0400000000000000000000000008121c252e353d4448494d4d4b4846423b33291f1409000000000000000000000000000000000002080d141a1e212125282a2a282522211e1a140f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b13191d2021252829272421201d19130d0802000000020a11171c1f2022242422201f1c17110f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d18212a343c454d555d606b70767d8185898b8d8d8c8b8b8b89847f786e695e554b4033291f14090000000000000000000006131f2c3845515c6775818e9b9d91837a86929e928578695e53463a2d1d28313c45515c676f7c7b6e665c5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000008111a232c363e48505960696e787f868f9189827d79767575777c8390969083776a5d5144372a1e110400000000000000000005121f2b3744505b65727f8b979f92867b6e61594f433a30261e162936424f5c6975828f9c9c8f8275695c4f4236291c0f000000000000000000000000000000000000000000000003090e12181d1f2024292c2d2f2f2f2e2d2a251f1c1710080000000000000000000000000000000008131e28323d464f54565c5e5d5853514a423a32281e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070e171f252a3036383f4446494c4e50504f4e4a46443f382f2b2219110700000000000000000000000000000a131c232b32383b3c40413f3b3a36302921170d0300000000000000000000000000000000050c13191f252a2d2e3235373635322e2d2a261f1b160d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171e24292d2e32343534312d2c29241e19130c0400090c141c23282b2d2f31302f2d2b28231c1b160e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18222a333c434b515960636b7075797c7e80818281807f7c79726d665e574d433a2f21170d020000000000000000000004101c2834404b5563707d8a97a0958e818e989c8f827569574d42362a1e1f2834404b55606a6f6e695f544b4034281c1004000000000000000000000000000000000000000000000000000000000000000000000008111a242c363e474f575e666d737b82898f8f898583828284889095928a7e7164574b3e3124180b00000000000000000000030f1b27333f4953606d7985929e988e81746b60564c423830281f2b37424d576a7683909d9b8e8175685b4e4235281b0f0000000000000000000000000000000000000000000000000001070c101314181d202022232221201e1914110c0500000000000000000000000000000000010d1924303a444f596063696b6a65605c544c443a3025190d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a1e252a2d3337393c3f41434343413d3938332d261d191007000000000000000000000000000000010a111921272c2f303334322e2d2a251f170f0500000000000000000000000000000000060e161e252a31363a3b3f424343423f3b3a36312c272119140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c22283035393a3f4142413e3a39352f29241e160e06131b1e262e34383a3c3d3d3c3a38342e2b27201a150e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071018212a313940454f54596063676d6f727474757574726f6d66605c544d453b31281d0f050000000000000000000000000c18232e3a4653606d7985929e9e938e939e998d8073665a4d4031251a18232e39434e586062615f574d42392e23180c0000000000000000000000000000000000000000000000000000000000000000000000000008111a242c343d454d545c60696e757c82878c8f908f8f9192908d867f726c6155493d3024170a00000000000000000000000b17222d3845515d67717e8b949f93887d70685d544a4239312b2d3a47535f697885929f9a8d8073675a4d4034271a0d000000000000000000000000000000000000000000000000000000000406070d1013141516161414110e080200000000000000000000000000000000000005111d2935414c56606b6f767876726d665e564c41352920150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e14191b22272b2d2f323536373634312d2b28221c140b07000000000000000000000000000000000000070f161b1f222327272521201e1a140d0500000000000000000000000000000000060f18202830363b4246484c4f50504f4c4846423b38322a251e170e060000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262d333a4146474b4e4f4e4b4745413a3530282017111b252d30383f4446494a4a4846443f3837322b261f180f070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f181f282f353d44484f54555c60626567686868676562605c54514a423b33291f160c0000000000000000000000000007121f2c3844505c6674808d9aa59e9b9ea5978a7e7164574b3e312418121d27303d464e545655534d453c30271d1207000000000000000000000000000000000000000000000000000000000000000000000000000008121a222b333b424a50575f626b6f757b7f82858687878684807b726d625a5045392d211508000000000000000000000006111b2935404b55626c76828f979a91847a6d665c544b433d3837404b55616e7b8897a29a8a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000010406070809090807050200000000000000000000000000000000000000000713202d3946525d686f7d8284837f786d685e52463c31261b0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e11171b1f20222628292a292724201f1c17110a020000000000000000000000000000000000000000040a0f1315161a1a181514120e090300000000000000000000000000000000030d18212a323a41464d5354585b5d5d5b5855534d48443d3630292017110a0300000000000000000000000000000000000000000000000000000000000000000000000006111c262f383f444c5254585b5c5a5754524c45413a3228231c252d373f424a50535557575553504a47433d37312a2118120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d161d242932383d44484b515356585a5b5c5b5a585653504a444039302921170d040000000000000000000000000003101c28343f4a54626f7c8996a0aaa8aaa399887c6f6255483c2f22150b151e2b343d4347494847423c332a1e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000081019212930383f444d53596063696e7276787a7a7a7977736e69625b51483e34281d11050000000000000000000000000c18242f3943505a616e7b859198968f82786d665d554e46444247515d67737f8c999f93877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a868f91908b837a6d61584e43372b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f121316191b1d1d1c1b1713120f0b06000000000000000000000000000000000000000000000000030709090d0e0c080705020000000000000000000000000000000000010b151f2a333c444c52575e6165686a696865615f57544f46413b3228231c150c0400000000000000000000000000000000000000000000000000000000000000000000000b17222d38424a50565d616567686764605d56524c443e342e262d373f4951545c6062646362605c54544e47423c3329231d150d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c121821272c333839404547494b4d4e4f4e4d4c4946443f38342e271e170f050000000000000000000000000000000c17232e384754606a7784919daab3ac9f9286796d6053463a2d2013070c19222b32373b3c3b3a37312a21180c030000000000000000000000000000000000000000000000000000000000000000000000000000000000070f171e262e343c42474f54575e616569676d6e6d6d6666615e5751493f362c22170c0000000000000000000000000007121d27313e46525e696f7d869298948e81786d67605853504e535b606d7984919e9a8f8275685e5246392d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c89989e9d958f82766a5f53473a2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506090c0e1010100e0a06060300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000007121d27313c454d565e61696e7275767675726e69636059524c443e342e261e160d05000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a545b60686d72747574716d68605d5650443f3830333f49515b62666d6f70706f6d66626058534d453f342f271f160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d161b21272c2f34383a3c3f41414242413f3c3a38342e28231c150c050000000000000000000000000000000006111c2b37434e5866737f8c99a6a9a19d908377675c5145382c1f130607101920272b2e2f2e2d2b261f180f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c141c232831373d44484d535459555d606161605c5454524d453f372d241b100600000000000000000000000000010b151f2a36424d56606b707d869197938e81796f6a63605c575f626d73808d969f93877c6f62564c4135291d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8592989f9f94887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f39434d575f686d747b7f828383827f7b756f6b615e5650443f3830281f170e0500000000000000000000000000000000000000000000000000000000000000030e18222b3844505b666c727a7e8182817e7a746d68615a504a42393b45515b626d72797c7d7d7c79746f6a615f575145403931281f160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b10161c1d23292c2d2f323435353534322f2d2b28231c18120b030000000000000000000000000000000000000f1b27323d4855616e7b88949fa197928a7e7164554b4034281c100400070f151b1f222322211e1a150e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a111720262b32383b4246484c4b5153545453514a4746423b332d251b1209000000000000000000000000000000030d1925303b444f59606b707d858f94938f847c756f6d66696a6e757f8b929f938d80736a5f53443a3025190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d68707e868e929894897c6f6256493c2f23160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090b0d0d0c0b09060503000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a100e0c0a09070604010003020101010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2934404b555f696e7a81868b8e90908e8b88827c756e68615a504a423a312920170e050000000000000000000000000000000000000000000000000000000000000a15202d3945505a606c787f868b8e8f8d8a85807a706c605c544b43424d57626d727f85888a8a8885817c756e69625b514b433a31281f160c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b1012181c1f20232527282928272523201f1c17110c0700000000000000000000000000000000000000000a15212d3a46535f697683909c9e92857e716c615543392e23180c020000040a0f1315161514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b151a21272c31363a3b3f40454747474644403b3a363029201b1309000000000000000000000000000000000009141f29323d474f59606b6f7a828a91969187827c797776777b818b9199928c81776c60584e4332281e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56616c707c8286888882796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0f12151518191a19181513120f0b06000000000000000000000000000000000000000000000000000000000000000000000000050b101416171d1b1917151413110d08100f0e0e0d0d0d0d0c0c0c0c0c0c0c0b0b0b0a080705020000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c676e7b848e92999791898686898e89817a706c605c544b433b322920170e0500000000000000000000000000000000000000000000000000000000030f1a26313d4955616c74808c92989a9b9a98928d857e736d665d554b46525e69727f8b9297979697928e89827b726d605c554c433a31281e150b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c10131416181a1b1c1b1a19161312100b060000000000000000000000000000000000000000000005121e2a36424d5764717e8b979f92857a6d605a50453328221c140b04000000030608090808060200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e161b1f252a2d2e2f35393a3b3a3a38342e2d2a251f170e09000000000000000000000000000000000000020d17202b343d474f5960686e777e848b90938e8985838384888e93928e877f776c655b50463c3220160c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a44505a616a6f757a7b7b766d665c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c11151b1f2122252627262522201f1b17110e080200000000000000000000000000000000000000000000000000000000000000000810161c2023242a2825242221201d191d1c1c1b1a1a1a1a1919191919181818181817161514120e090604010000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d798491969f9e91857c797a7d81878e857e736d665d554c443b322920170e0400000000000000000000000000000000000000000000000000000006121f2b37434e5864717e8a929fa3a198928f8f91928a80786d675d554b54616e7b86929ea199928c8a8b8f8f867f756d675d554c433a30271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607090c0e0e0f0f0e0c09070603000000000000000000000000000000000000000000000000020e1a26313b4753606d7985929f988b7e7165584e453e332d261d160d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b0f141a1e212124292c2d2e2e2d2c2823201e1a140d050000000000000000000000000000000000000000050e19222b353d474f565e656c71797e83878a8d8e8f8f8f8e8d8a86817c726c655b53493f342a200e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323e4850585f62676d6f6e69605c544b4034281c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b171c20262b2e2f32333433322f2d2b27221b19140b0600000000000000000000000000000000000000000000000000000000000008111a21282c2f30363432302f2d2c29242a2928272727272626262625252525252525242321201e1a1413110d0701000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b96a0a8998c7f736a6d70757c838c8a80786d675e564d443b322920160d0300000000000000000000000000000000000000000000000000000815212e3a47535f6a7784919ea4a197918682828489908d82796d675d55596673808c98a39f92877f7d7e82878f8b81796d675d564c42392e23180f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2c3845515d6774808d9a9d9083766a5f5750443f382f281f170e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e121415181d1f202121201f1c1814110e090200000000000000000000000000000000000000000000071019232b343d444c535b60676d71767b7d808182838282807d7a746e6a605b534941382d22180e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c16202c363e464e53555d6062625f57514b42392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a111722282d31373a3c3e40403f3e3c3937332d2a251f17110a0200000000000000000000000000000000000000000000000000000005101a232c33383c3d43413f3d3c3a39352f37363534343433333333323232323232323231302e2d2a2520201d18130c040000000000000000000000000000000000000000000000000000000000000000020f1b2835424e5b6875818e9ba8a396897d706360636a6f787f888d82796e685e564d443b32281f150b02000000000000000000000000000000000000000000000000000915222f3c4855626f7b8896a0ab9e91857b7575787d838c8f82796d675d556a7783909daa9b8e81757072757b828a8e82796d685d544b40342821180b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070a0d0f1011100f0c080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b55626f7b88949f95887c6f69615a504a423a312920180f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507070c10131414141312100c07050200000000000000000000000000000000000000000000000000071119222b323b414950555d6065696e7073757676767573706d68625f58504941382f261b100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e1a232c343c43474b51535555534d45403930271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c222833393c4347484b4c4d4c4b4846443f38363028221c140b0400000000000000000000000000000000000000000000000000000b16212c353e44484a504e4c4a48474541444343424141404040403f3f3f3f3f3f3f3e3e3e3d3b3a36302d2c29241d160d070100000000000000000000000000000000000000000000000000000000000004111d2a3744505d6a7783909daaa295887c6f6255585f666d737e868f837a6e685e564d443a31271d140a000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a8a9988b7e7169656c70787f879082796d665c677986929fa5998c7f726665696e757e8690837a6d665c51453f332a1d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205080d111314171a1c1d1e1d1c191414110e09020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f3947535f6a7683909c9c90827b706c605b544b433b322a21181007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607080707060400000000000000000000000000000000000000000000000000000000000007101920292f383f444b5153565e61646668696a69686764605d56534e443f382f261d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a222a313739404547484847423c342e271e150b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262d333e45494e535558595a59585553504946413b332d261d160e0500000000000000000000000000000000000000000000000004101c28333e474f55575d5b58575554514c51504f4f4e4d4d4d4d4c4c4c4c4c4b4b4b4b4b4a494846423f3a39352f281f18120b03000000000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909daaa296897c6f63564e545c606c707d8690847a6e695e564c43392f261c11060000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5a197867a6d605b60666d737d868f82786d606d7a8699a3a4988b7e7165575f616c717c848f82786d605a50453c2f261b11060000000000000000000000000000000000000000000000000103030200000000000000000000000000000000000004080e1114191d20212426282a2a2a282621201e19140d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2b37434e5864717e8b979f9490857e736c665d554d443c332a221810070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e171d262d33394045474d5254575a5b5c5d5c5b5a5754524c47433c332d261d140b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008101820262b2f35393a3c3b3a373128231d150c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f383f445055585f62656667666562605b53524d443f382f2820170f0500000000000000000000000000000000000000000000000714202c38444f5961636967656362605d555e5d5c5b5a5a5a5a5959595958585858585858575654524d4b4745403a3129241d150d030000000000000000000000000000000000000000000000000000000004101d2a3743505d6a7683909da9a3978a7d7064574a4a505a616b6f7c8591847b6e685d554b42382d2217100600000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a49e928578675d51545c606b707c858d80746c677986929fa4978a7e716457535a616a6f7b848e81746c62574e41382d22170b00000000000000000000000000000000000000010406070b0e10100f0d0a0706040000000000000000000000070c1014191e20252a2d2e31333536373735322e2d2a251f19130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1a26313c4753606d7985929f9f97928a80786d675e564d453c342a22180f060000000000000000000000000000000000000000000000000000000205070809070605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b141b22272f35383b4246474a4d4e4f504f4f4d4a4745413a373127221b140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151a1d24292c2d2f2f2e2b261f18120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38424a505a61646a6f71737372716f6c65615e56504a423a322921170e05000000000000000000000000000000000000000000000916232f3c4855616b70767472706f6d676b6a6a69686767676666666665656565656565656463615e575853514b433f352f271f150b01000000000000000000000000000000000000000000000000000000020f1c2935424f5c6875828f9ba8a5988b7f7265584c3f445059606a6f7d8691837a6d675d544a3f332822180d04000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a99e928578665c514a5059616a6f7c868b7e716a7884919ea4978a7e7164574b50585f696e7b848b7e716a5f53493f33271c12070000000000000000000000000000000001070d111314181b1c1d1c1a171312100c0700000000000002080e12181c1f252a2d3036393a3d4042434443423f3b3a363029241e160e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2c3845515c6774808d999f93888e8d82796e695f574e463c342a21180f0500000000000000000000000000000000000000000000000003090e121415151413120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171d24292c30363a3b3d404243434342403d3a3935302b262017110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0f12181d1f202222211e1a150c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a545b606c71777b7e7f807f7e7b78736e68605b544c443b332920170d040000000000000000000000000000000000000000000a1724303d4a5763707d83817f7d7b7a79787776767574747373737372727272727272717171706e696965605d555145403931271d1207000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6a79a8d817467554b403e474f58606b707e879082796d665b50443e342a1f160c010000000000000000000000000000000000000000000815222f3b4855626e7b8897a29f9386796d605346444f58606a707d87867c6f76838f9ca4988b7e7165584b464e575e696f7c86867b6e655b5044392e23180c000000000000000000000000000000040c13181d202124272929292724201f1c18120c060000040a0f14191d23282c3036393b4146474a4d4f5051504f4c4746423b35302820170f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2934404b55616e7b87939f9387818b8f837b6e695f584e463c332a21170e05000000000000000000000000000000000000000000060c11141a1e21212221201f1b17110e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b12181d1f252a2d2e3133353637363534312d2c29241e1a150b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c101314151514120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212b3844505b666c747e84888b8c8d8c8b8885807b726c665d564d453b32291f160c0c08080602000000000000000000000000000000000815222f3b4855626e7b888e8b8a888785858483828281808080807f7f7f7f7f7e7e7e7e7e7d7c7b7876726d67625b514b43392f24180c000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a8a99d908376675c5145383d464f59616c727f8c8f81786c605a50463c31281e13080000000000000000000000000000000000000000000713202d3a4653606d7985929fa49a887b6e6255483e464e58616b727f8b847a74818d9aa5988b7f7265584c3f454d575f6a717e8a82776c60544a4034281c100400000000000000000000000001070d161d24292c2d313436363533302d2c28231c17110a0b10151b1e252a2e34383b4146474c525457595b5d5d5d5b5954524d45413a322921170d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3946535f6975828f9b9a8d807f8890847b6f6a5f584e453c332920170d04000000000000000000000000000000000000000910171d1f252a2d2e2f2e2d2b27221b1a140b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c1014191e2021242728292a2928272421201d19130f0a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004060709080806020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2c38434f59606c78818a9196989997929192928d867f786d685e574d443b31281d1c191514120e090300000000000000000000000000000814212e3a47535f6977839098969598929191908f8e8d8d8d8d8c8c8c8c8b8b8b8b8b8b8b8a898785827e79726d605d554b4035291d10040000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8896a1ac9f9286796d6053463a343d474f59626d74818e8d80736c61584e433a2f24190f06000000000000000000000000000000000000000006121f2b3844505c6675828f9baa988b7e7265554b403d464f59626d75818e82757e8b98aa998d8073665a4d403b454e58616c74818b7e71665c5144382c1f150a0000000000000000000000030b12181f282f35393a3e41434342403d3a38342e28231c15161c20262b3036394045464d5254565e61646668696a6a6865615e56524c443b33291f160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2a36424d57636f7c89959e9285797e8891857c6f6a5f574e453b322920160c02000000000000000000000000000000000009121a22282d31363a3b3c3a3937332d2a261f17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e111414171a1b1c1d1c1c1a171413110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a25313b4854606b74808d939e9e938f888584868a8f928c827a6e695e564c433a2f24282622211e1a15100b0500000000000000000000000006121e2b37424d5763707d8a939a9fa29f9e9d9d9c9b9a9a9a999999999898989898989898979697928f8b857e756d675d5145392c1f13060000000000000000000000000000000000000000000000000000000714212d3a46535f697884919eaba398897c6f6356493c30353e47515b606d7983908a7e716a5f554c41352921180c030000000000000000000000000000000000000003101c28343f4a5464717e8a98a29b8e8275675c5145383e47515b606d79838a7e7c8898a29b8e817568544a3f343c46505a606d798484796d6053463c32271b0f03000000000000000000030d151d2329313a4145474b4e4f504f4d4a46444039342e261e1f272c32373b41464b5153565e6165686d70737576777675726e69605d564d453b31281d130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1a26313b4854606b7683909d978b7e727f8b92857c6f6a5f574d443b32281e140a0000000000000000000000000000000009121b242c34393b424648484746443f38363128231c140c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080a0d0f1010100f0d0a070704010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d57636f7c87939f9e948f817b78787a7d828a918f837b6e685e554b41353735322f2e2b26201c170e090300000000000000000000020e1a26313c4855616b727f889094999b9e9fa2aaa2a2a3a6a6a6a6aaa29f9e9d9b9a989795989291908f8e8b82796d6053473a2d20140700000000000000000000000000000000000000000000000000000005121e2a36424d576875818e9bacaa998c807366564c41362a353f45515c676e7b8592867c6f675d51453f332a1e150b00000000000000000000000000000000000000000b17232e3a4753606d7a85929f9f9285796d6053473b353f45515d676f7c87857b85929f9d908377665c504438343e45515d67717e8a7e7165584e43372b1f13060000000000000000010b151f272f343f434b5154575a5c5c5c5a5753514a443f3830282c33383c43474c52545c6064686e72767a7d8082838483827f7b746d685f574d433a2f24180d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2c38434f5964717e8a969d908377727f8b92857c6e695e564d443a30261c11060000000000000000000000000000030c1b242d363e45494d5354555453504946423b342e261e160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535e6976828f9aa49c8f82776e69676d70767d859091847a6e675d51454443423f3b3a37312d28221a140e060000000000000000000009151f2c38444f59636d727d83888c8f919298959596969c9e9f9d94989291908e8d8b8a8987868483828180807d7063574a3d3024170a000000000000000000000000000000000000000000000000000000020e1a26313e4b5864717e8b9aa4a99d908376685e5246392d2934404b555f69717e8a91847a6d605b51453c30271c1207000000000000000000000000000000000000000613202c3945515d6773808d99a2978a7e7164574d423635404b55606a73808c81828f9c9f9286796d6053463a2d35404b55616c768384776a6054473b2e221508000000000000000007121d273139404551555d6064676969686663605c54504a423c34383d44484e54565e61666d71757b7f83868a8c8e9090908e8c86817a6e695f554b41352920150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d4653606d7884919e95897c6f727f8c91847b6e685e564c42382e23171007000000000000000000000000000a151e2d363e485055575e616261605b53534d443f3830281f160d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87939f9f95887b6e655f5d60646b707a83909083796d605b5151504f4c4847423c39332b261f180f0700000000000000000003101c28333e47515b636b6f767c7f82848587888889898f949590888685848382807f7d7c7a79787675747473706b6155483c2f231609000000000000000000000000000000000000000000000000000000000914212e3b4754616e7a87939fac9f93867a6d6154473a2e232f39434d57616c74818e8f81756d62574d42392e23180c0200000000000000000000000000000000000004111d2935404b55616e7b86929f9c8f8275695f53463b3039434e58606d78838e83909da398887b6e6255483b2d2f3a43505a63707d887c6f6255493c2f22160900000000000000040d18232f39434b515b62676d717476767573706d66605c544e454044464f55585f62686e73797d82868c909399999b9c9d9d9b99928e847b6e675d51453c32261b0f01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a161f2b3844505c66727f8b979b8f82756d74808d91847a6e685d544a3f342822190e04000000000000000000000006111c26303e48505a6164696e6f6d6c65615f57504a423a31281f150b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b9aa49d908376695f5351535961686e7982908f81756d62575d5d5b5955534d49443e37312a211910070000000000000000000b16212c353f49515960636a6f727577797a7b7c7c7d828f90837b79787776757372706f6e6c656a696867666361594f44382c201407000000000000000000000000000000000000000000000000000000000714202d3946525e687783909daaa4998a7e7164544b40342827313b45505a606d7984918b7e72695f544a4034281e140a000000000000000000000000000000000000010d18242f3a46525e6974818e999f92877b6e61574d4236313c44515c666f7d8990959faa988b7e716553493f3327313e4854606b707d706a6054473b2e221508000000000000010c161f2934404b555c606d727a7e81828382807d79726d665f574f4a51535961636a6f747a80858a8f92999d9fa4aba8a9a7a6aba39f969184796d60584e43372b1d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54606d7a85929e93877b6e6c78818e90837a6d665c50443e342b20160c02000000000000000000000c17232e3842505a616c71787b7b7a79746e69605c544b433a31271d140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2834414e5b6774818e9aac998c807366574d45474f565e676d7a84918b7f72696a6a6a6865625f57555046423c332b22190f06000000000000000005101a232d373f474f54585f6266686b676d6e6f6f707c89959082796d6b6a686765646261605b535c5b5a5a57554f473e33281c10040000000000000000000000000000000000000000000000000000000005111e2a36414c566673808c99a9ab9b8e8175665c5145382c1f2a333e45515d67707d8892867b6e665c51443c30261c110600000000000000000000000000000000000007131d2a36424d57626e7b86929f998e8174695e52463c2f34404a54606b74818e98a2a89b8e8175655b5044372b2c38444f59616b706b61584e43372b1f130600000000000007131d28313a45515c676d757f858a8d8f8f8f8d8a847f786e6a6159545c60646b70767c81868c92979c9fa3aba5a8a19e9c9a9998989899968e81746a5f5347392f24180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3845515d67737f8c97998d8174686d7983908f82786d605a50463d32281e130800000000000000000003101c28343f4a54616c717e8487888785807b736d665d554b43392f261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101d2a3643505d697683909ca4978a7d7164574a3e3e444c555d686f7c8792867b7576777675726e6964615a534d453d342b21180c03000000000000000008111c252d353d43484e5355595c555d606262636a778390948e81756c61555a585756545350494f4e4d4d4a48443e352c21160b0000000000000000000000000000000000000000000000000000000000010d1925303c4956626f7c8996a1ab9f9285796d6053463a2d22212935404b55606b74808d9083786d60584e42382e23170b020000000000000000000000000000000000010e1a25303b47535f6973808d969f92867b6e61584e41382e39424f59616e7a86929fa99e9185786c605346392d27323d474f59616361594f463c32271b0f030000000000010d18242f3a43515b606d79818b908a868484868a90918b837c706b6160666d71777d82888e92999ea1a9a29f9c999696918f8d8c8c8b8b8c8e90877c6f62554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2935404b55606d7a85929f92867a6e676e7b85918d80736c61584e443a3024190e05000000000000000006121f2c3844505c66717e8a91929797918d8680786d675d554b42382d22170d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919da295897c6f6256493c323b444c56606a73808d908382838483827f7b76706c615f574e463d332a1e150b0000000000000000000a131c232b32383c4347484c4f4c515455555865727e8b98938a7e71675c514c4a494746443f424141403d3c38332c231a10050000000000000000000000000000000000000000000000000000000000000813202d394653606c7884919eaba2978a7d7063544a3f33281c242f3a434f59606d7984918c7f736a5f544a3f34281e130800000000000000000000000000000000000009141f2b37424d57606d7984919e998d81746a5f53493f33303d46525e6873808d97a2a197897c6f6256493c31262b353e474f5557554f473e342b20150a00000000000004111d2935414b55626d75818e8e837d7978787a7e838d9290867d716c6d72797e83898f949b9fa39f9c9998928f8c8987848281807f7e7e7f8184878175675d5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d18242f3a45525d6873808c97988d807368696f7c86928b7e716a60564c41352920170d02000000000000000713202d3a4653606d7985918c85878e9398928c82796d675d544a3f332820160c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919ea195887b6e6255483b38424c565d676d757e8a959087848383858788837d766e6960584e453c30271d12070000000000000000010a101921272c31373a3c3f42414547484954606d7a86929e9184796d60544a3f3c3b3937332d353433302f2c28211a11080000000000000000000000000000000000000000000000000000000000000005121f2b3744505b6574818d9aa9a99a8e8174665b5044382b1f1d28313d45515d67707d8a92867c6f665c50443a3025190b020000000000000000000000000000000000020e1a26313c45515d67717e8a939f92877c6f655b50443c3136414c56606d7a85929ea9998d807366574d42372b232c353e44484a48443e352c22190e040000000000000613202c3945515d67727f8b8e8178706d67676d7178808b9092877e747a7f848b90959c9f9e9b9992908c8885827f7c7a787674737271727274777b7f796d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d2935414c56606d7a85929f92857a6d616a727f8b92867c6f685d52463f33291f1409000000000000000916222f3c4955626f7c888c7f787b818c939a948f82796d665b50443e32281e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121e2b3845515e6b7884919ea194887b6e6155483b3f4a545d686d79818a8c928f82787677787b7f848a837b6f6a60574d42392e23180c02000000000000000000070f161b20262b2e2f332f35393a3b45515d6775818e9b968b7f72665c5044382e2d2b27222827272423201c1610080000000000000000000000000000000000000000000000000000000000000000030f1b27333f495363707d8997a2ab9e9285796c605346392d22171f2935414b55616c75828f9083786d60564c41362a1d140a0000000000000000000000000000000000000915202935404b55616c75818e96999083786c60574e4339303b45525d68727f8c97a29d918477695f53463a2d21232c33383c3d3c38332c231a1007000000000000000714212d3a4754606d7a858f82786d66605c5d60666d737e8b92928781858c91969d9e9a97928e8a86837f7c7976726f6d686967666565656667696e736d675d5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a45525d68737f8c97988c807368626d75818e91847a6d615a50453b30251a0c030000000000000a1623303d495663707c89877b6e6e757f88939f948f82786c60594f443a2f24190d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3744515e6a7784919da295887c6f6255493c44505c666d7a838e87808692877b6e6a696e7279818c857c6f695f544b4034281f140900000000000000000000040a0f151b1f21222624292c2d35414b5564707d8a989e9184786d6053463a30251f1b171b1a1a171614100b05000000000000000000000000000000000000000000000000000000000000000000000b17222d3a4653606d7985929faba197897c6f6353493f33271b18242f3a43505a616e7b86928b7f72685e52463c2f261b11060000000000000000000000000000000000030d18242f3a43505a606d79849198948b7e716a5f554b403435414c56606d7a85929fa095887b6e6155483c32261b21282c2f302f2c28211a110800000000000000000b1825313e4b5864717e8b867b6e665c54565e6165686e73808c99928e92979d9996918d8985817d7a76726f6d666663605d565a5959585859575e6166605d554b4035291d100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2935414c56606d7985929e92857a6d61606d7984918f82756c62574d42362a1e150b0000000000000815222f3b4855626e7b88887b6e616d727f8b919c948c80736b61564c41352920160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101d2a3643505d697683909ca396897c70635649414c56606d78828f887e74818d8d8174675e61676d747f88857b6e665c51453b30251a0e020000000000000000000000040a0f12151519191d20242f3a4653606d7985929f968a7d7064564c41362a1d110b060e0d0a09070400000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844515c6675818e9baaa99a8d8074655b5044372b1f131d28313e47535f6974808d92857a6d61584e41382d22170b01000000000000000000000000000000000007131d28313e45515d676f7c86929f92867c6e675c514540343a45515d6773808d98a3988c7f7265584e43372b1c171c20232423201c1710080000000000000000000e1b2834414e5b6774818e83766964656668686e72767b7f84919e9f9a9f95908c8884807c7975716d686662605c545654524c4e4d4c4b4b4c4d53545953514b43392f24180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a45515d67727f8b96988d8073695e676f7c87928b7e71695e52463e30271c120700000000000713202d3a4653606d79858a7d7063636d737f8c939f93887d70685d52453d32271b0f050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba3968a7d7063574a45525d68727f8b8d80746f7c889285796d60555d606d727f8c83796d60574d42362a1e13080000000000000000000000000003060809080d11131f2c3845515c6775818e9b9c8f8275685e5246392d2013080001000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a5464707d8a98a2ab9e9184786c605346392d2013161f2b37424d57606d7a85928e81746a6053493f33271d12070000000000000000000000000000000000010c161f2935414b555f6a717e8b91989083796d605b51443f38414c55616e7a86929f9d9083776a5f5347392e2318101416171614100b05000000000000000000000e1b2834414e5b6774818e83777171717274777a7e82868c9196969da09d90837f7b7773706d6664605d565553504a4947454141403f3e3f3f4246484c4745403931271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2935404b55606d7984919e92867b6e61606a727f8c92857b6e61594f42392e23180c000000000006121f2c3844505c6674818e82756a5f636d75818e969a91847a6d60584e43372b22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2734404d5a6773808d9aa4988b7e7165584b4754606d7a859285796d6c7885918a7d706357515b606c77818c7f73695e52463a3025190d0100000000000000000000000000000000000104101c2834404b5564717d8a999f92867a6d6154473a2f24190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3a4753606d7986929faca196897c6f6356493c32271b0d1a26313c45525d68727f8b93877c6f655b5044392f24180d010000000000000000000000000000000000040d18242f3a434e58626c737f8c92958e81746d635b504a423b46525e6875818e9ba095887c6f62544a4034281c10070a0a0a07040000000000000000000000000a1723303d4a5663707d898f827e7d7e7f8184878b8f92928f8c89909596897d726f6a6763605c5454524c4946443f3c3a39352f3332323231363a3b403a38352f271f150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d18242f3944515c66707d8a94988e81746a5f606d7883908f82756b61544a4034281d12070000000003101c28343f4a54626e7b87877c6f665c606d79849199968e81746a6054473e33281c100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98ab9a8d8074675a4d4d5765727f8c8d8073676574818e8e817468564c505b656d7a84867b6e61564c4135291d1105000000000000000000000000000000000000000c18232e3a4754606d7a86929f998b7e7265564c4135291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c3945515d6775828f9baba89a8d807367584e43372b1f13151f2935414c56606d7984919083786c60554b4035291d130700000000000000000000000000000000000007131d28313c46505a636d74808d93938c7f726d605c544d46414c56636f7c8995a09a8d8074665c5144382c1f140900000000000000000000000000000000000916232f3c4855616b7380898e8b8a8b8c8e918f8d8b8885827f7c83909d9184796d60585653504a4745413c3a38342e2d2c292426262525252a2d2e332d2c29241d150d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2834404a54616c76828f9992877c6f625c666f7c86928a7d70665c5144392e23180c00000000000c17232e3847535f6a74818e83786d605d676f7c87929f93877c6f625a5044392d21160b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8999a39c8f827669564c535e69778390897c706365727f8b918478685e5249535d68717e8a8074685e5246392d201307000000000000000000000000000000000000000713202c3945515d6776828f9c9c8f8276685d5245392c2013060000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b5564717e8b99a3ab9e9184786a6054473b2e22150d1924303a44515c66717e8a958b7e71675d51453a2f24180d010000000000000000000000000000000000010c161f2a343f48515b606c77818d92918c7f746d665e57524c4b54606b7783909d9e9285796d6053463b31261a0e01000000000000000000000000000000000714202c38444f59636e737c8184858686858482807e7b797673707d8994968c7f73695e5246443f3a39352f2d2b282321201d191a1918181a1e212126201f1d18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c18232e3942505a626f7c8792998f82766c615f6a73808c9184796d60544b4034281c10040000000006111c2b37434e58606d7a848d80746d63606a74808d969a9083766c6155493d33271c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86929f9e918478685e5254616e7b879285796d6063707c8996877a6e6154474c56616c7682857a6d6154473a2e2114070000000000000000000000000000000000000004111d2935414b5565727f8b989f92867a6d6054473a2d21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f3a4754616d7a86929faca196887c6f6255493c31261a0e131e2834404a54606c7884919185796d60554b4035291d1307000000000000000000000000000000000000040d18222d364044505b656c77808c92918c80786e69615e5657575965727e8b98a1978a7d7064574d42362a1d13070000000000000000000000000000000004101c27333d47525c636b6f747778797978777573716f6c66666b7683909c92867b6e61574d42362e2c2924201f1c171413110d080c0b090e121415191413100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c27303e47535f6a74808d97948a7e71685d606d7984918b7e72665c5145382c1f150a00000000000f1a26313c45525d686f7d878c7f736e60606d7984919e958a7d7064594f44382c21160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3945515d677783909da196877a6d61545764717d8a908376665c626e7b88958a7d7063574a43505a626f7c877d6f6356493c3023160900000000000000000000000000000000000000010d18242f3b4854616e7b8795a0998a7d7064574a3d3025190e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525d687683909ca9a8998c807366574d42362a1e120c18232e3944505b66717e8b968c7f72675d51453a2f24180d0100000000000000000000000000000000000007101b2427333f49535b656c747f8791928d827b736d68666464656b6f7a86929f9c8f8275695f53463a2f24180d00000000000000000000000000000000000b16212c35404a52596063676a6c6c6c6b6b69676462605b5963707d8995988e8174695f53463b31251d191312100b0607040100000000020507080d07060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2b37434e58606d7a84919e92857a6d615d67717e8a9184796d6053463c32271b0f03000000000915202935414c56606b717e888c80746d6767717e8a959d9083766b6054483d32271b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b556774818d9aa8978a7d7064575966737f8c8e82756854616e7a87948c7f7265594c3f4754606a6f7c6f6b6054483b2f22150900000000000000000000000000000000000000000714212d3a46535e697784919d9a8d817467564c41362a1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c5665727f8c98a8aa9d908377695f53463a2d211407121c28333f4a54606d7884919285796d60554b4135291d130700000000000000000000000000000000000000091217222d384149535b606d727d848e939086807a7572717172767c75818e9b9f93877b6e61554b4035291b11060000000000000000000000000000000005101a232e3840464f54565b5d5f605f5f5e5c5a5855535055616b7783909d92877b6e61574d42362a1e1308060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c1b26313c45515d67707e8a93978e81746c61606c7883908b7e7165584e43372b1f130600000000030d19242f3a434f59616c727f8b8c81796e696c7883909d95897d7063594f43382c1f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f3e4a5764717e8a99a49a8d807367565a6774808d8d8174675a606d7a87938c807366594d40434e58606b6f6b60594f44382c201307000000000000000000000000000000000000000005121e2a36424d576774808d9a9d918477685e5246392d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303b4855626e7b8896a0aca095887b6e6155483b2f24180d0b17222d3844505c66717e8b968c7f72675d51453a2f24180d000000000000000000000000000000000000000006111b262f384149505b626b707a818990928c86827f7e7d7f8382757d8996a0998d8073675d5145382d22170b000000000000000000000000000000000008111c262e343d4348494e5152535352514f4d4b4846444f5965717e8b97998e8174695e53463a2f24190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202935414c55616c75818e97938a7e71695e66717e8a9083776a6054473b2e221508000000000008131e28313d47505a626d727e878e837b726d707d89949c8f82766b6054483b3025190e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a86939f9d908377685e5a6774808d8e81746754616e7a87948d8174675a4e413d464f59606360594f473d32271b0f030000000000000000000000000000000000000000020e1a25313d4a5763707d8a99a096877a6e6154473b2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f697784919eaaa7988b7f7265554b4035291d1106111c28343f4a54606d79849192857a6d60554b4135291c110600000000000000000000000000000000000000000a141d262f383f44515960686d757d83898e928f8c8a8a8c8d80747884919e9f92857a6d6053493f33271b0f0300000000000000000000000000000000000a141c222b32383b3c4144454646454442403e3c393d4753606d7985929e92867b6e61554c4135291d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d19242f3a43505a616d7a85929e92857b6e67606d788491887c6f6255493c2f24190d0100000000010c161f2b343e48515b626c717d8590867f786f7683909c94897c6f63564d42362a1b11090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525d687683909d9f93867a6d615966737f8c8f8276665b626f7c88958e8174685b4e41343d474f5456544f473d352b21160b000000000000000000000000000000000000000000000914202d3a4753606d7a86929f978a7d7164574a3e2f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424d576773808d9aaaa99c8f8376675d5145392c2013060c17232e3845515c66727f8c978c7f72675d5145382e23170c0000000000000000000000000000000000000000020b141d262d333f474f565d616b6f767c8185888a8b8a88837a6e737f8c99a2978b7f72655b5044372b1f15090000000000000000000000000000000000020a101921272c2f30343739393938383634312f2d3845515c6774808d9a998d8074675d5145392c20160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313e46525e68707d8a92979083796d676673808c8d807366564c4135291d11040000000000040d19222c363f49515a626b707b838c8c837c757d89959b8f8275695e5246382d221a140d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c5666737f8c99a4998b7e71645564717e8a9285796c6064717e8a978d8074675a4d4134353d44484948443d352b23190f04000000000000000000000000000000000000000000000613202c3945515d677683909c9a8d807467554b4034291c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313d4a5663707d8998a3ac9f92867a6d6053473a2d20140906111c2834404b54606d7a869292857a6d60544a3f34281c10030000000000000000000000000000000000000000020b141b2227353d444c525960636b7074797b7d7e7d7b766e686e7b87939f9d9184786c6053463c31261a0f02000000000000000000000000000000000000070f161b1f2223282a2c2d2c2c2b292725222934404b55626f7c88959f92857a6d6054473d33271c1002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2a36414c56616b74808d95958f82796d686f7c89918477685d5245392c20130700000000000007101a242d373f48505961696e787f868e89827c83909d92867b6e6153493f332a261f19130b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303c4956626f7c8997a19b8e8275675c616e7b8795897d70666874818e998c7f7366594c40332b32383b3c3b38322b23191107000000000000000000000000000000000000000000000004111d2935404b5566737f8c999d908376675c5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000914202d3a4753606d7986929faca3998a7d7063574a3d31261a0e000c18232e3945525d6874818e978c7f72665c5044382c1f150a000000000000000000000000000000000000000000020a1117232b323a41464f54596063666c6e7071716f6a615e6976828f9ca0968a7d7063584e43372b1e130800000000000000000000000000000000000000040a0f1315161b1e1f20201f1e1c1a1818232f3947535f6a7783909d988b7f7265594f44382c1f140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d1925303a444f59606d78839096948f827a73707a8795877a6d6054473a2d2114070000000000000009121b252d363f474f575f666d727b81878e8684919e998c7f73655b50443d363129241e17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000813202d394653606c7985929e9f9285796d605e697683909083786d6e7b8692998a7d7064574a3d3124272c2f302f2c2721191107000000000000000000000000000000000000000000000000010d18242f3c4956636f7c89989f9286796d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c6776828f9ca9ab9a8d807467574d42362a1e120507121d2935414c56626f7c88959184796d6053463c32261b0f0100000000000000000000000000000000000000000000061119202830353d44484f54545b6062646464625f585764717d8a97a19c8f82766a5f53473a3024190d000000000000000000000000000000000000000000030709090e1112131312110f0d07121d2b37434e5866727f8c9a9d9184776b6054483b3025190e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29323e45515c666e7a849198949085807d808d96897c706356493d3023160a000000000000000009131b242d353e454d545c60696e757c82878e93999e9184786c60544f46423b353027221b140b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b6675818e9ba2988a7d70645764707d8a938e817a7a82909892867a6d6054473a2d211b20222322201b160f0700000000000000000000000000000000000000000000000000000713202d3a4653606d7985929f99897c6f6356493c30231608000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2934404b5566727f8c99a9aa9e918477695f53463a2d211407000d1924303a47535f6a778390968a7e7164584e43372b1d13070000000000000000000000000000000000000000000000070e161e242932383d44484a50535557585755534e53606d7985929e9f94887b6e62564c4135291c1207000000000000000000000000000000000000000000000000010406060605050301010f1b26323c4854616e7b87939f95897d7063564d41362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17202834404b545e686f7c86929897928c8a8d92978a7e7164574b3e3124180b00000000000000000109121b232c333b424a50575e616a6f757b8187939996897d70666059534d45413a332d261d170f080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a5464707d8a97a29b8f8275695e616c75818e938e87879094978e8174685d5245392c201313151615130f0b0400000000000000000000000000000000000000000000000000000006131f2c3845515c6676838f9c988c7f7265594c3f3024190d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3c4955626f7c8897a1aca096887b6e6155483b2e2215080008131e2b37434e5865727f8b999083766a5f54473a2f24180d010000000000000000000000000000000000000000000000040c131921272c3238383f4446484a4b4a484745515c6674808d9aa69a8d8174685d5245392e23180c000000000000000000000000000000000000000000000000000000000000000000000a15212d3a46535e697683909c9b8f8275685e5246392d20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e18232e39424c565f6a6f7d8692979f99969a9d988b7f7265584c3f3225190c0000000000000000000009111a212930383f444d53585f626a6e757c87939b8f8178706b615f57524c443f382f29211a110901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3a4653606d7985929f9f92867b6e6861606d79828d9293939a9691857b6e61564c4135291d11070909090703000000000000000000000000000000000000000000000000000000000004101c2834404b546673808c999b8e817568564c4135291d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000200000713202d394653606c7985929eaba8988b7e7165584b3e3025190d01020f1b26323c4754616d7a869295887c6f62554b4135291d110400000000000000000000000000000000000000000000000002080d161b21272c2d3338393b3d3e3e3c3a404b54626f7b88949f9f92867a6d60544a4034281b110600000000000000000000000000000000000000000000000000000000000000000005121e2a36424d5765727e8b999f92867b6e6154473d32271b0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303b444e58606b707d8591969fa3aba8988b7e7165584b3e3225180b0000000000000000000000080f171e262e343b42464e53585f626a76828f9c938f837d756e69605d565049413b332c231b130a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c6674818e9ba3998f827a706b63676d7980868b8c8c8a847c6f695e52433a2f24190d0100000000000000000000000000000000000000000000000000000000000000000000000c18232e3d495663707c89999e918477685d5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000020507080c0e0b0a05121f2b3744505b6575828f9ca8a79b8e817468564c41362a1e1105000a15202d3946525d6875828f9a8e8174675d5145392c2014090000000000000000000000000000000000000000000000000000040b0f161b1c22282b2d2f3131312f2e3947535f6a7683909ca2988c7f72665c5144382d22170b000000000000000000000000000000000000000000000000000000000000000000020e1a25313b4754616d7a86929f998c7f7266584e43372b1d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e29323c464f59606b707c848d92999b9c96897c6f6356493c30231609000000000000000000000000060c151c232831363c43474e535864707d8a979e959089827b736d68605b534d453e352d251c140a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b5463707d8997a19e948f857d736d60676d737a7e80807d796f6a5f574d4231281e13080000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7986929f96877a6d6154473a2e2114070000000000000000000000000000000000000000000000000000000000000000000003090e121415191b1817150f1b27333f495366737f8c99abaa9e918477685e5246392d2013070005111d2935414c5664717e8b9992857a6d6054473b30251a0e02000000000000000000000000000000000000000000000000000000040b1011171c1f2022242524222b37434e5864717e8b97a29e9184796d6053493f33271b0f030000000000000000000000000000000000000000000000000000000000000000000914202d3946525e6876828f9c9d9184776a605447392e23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c17202a343d474f59606a6e7980878c8e908e84786c605346392d20130600000000000000000000000000030a11171f252a31373c434653606d7985929e9184838b86807a726c655e574f473f372e261c130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3a4653606d7985919ea69e97928880746d6660686d717373706d665f584e453b301f160c0100000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515d677683909c96897d7063564a3d30231708000000000000000000000000000000000000000000000000000000000000000000060e141a1e212226282524211d17222d3d4a5663707d8999a4aca096877a6d6154473a2e21140700010d1924303a4754606d7a8692988b7e7164574d42362a1e1105000000000000000000000000000000000000000000000000000000000000060b0f1213151718171a26313c4753606d7985929ea1968b7e71655b5044372b1f160b00000000000000000000000000000000000000000000000000000000000000000005111d2a36414c5665727e8b99a095897c6f62554b4034281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e18222b353d474f585f676d737b7f8283817c6e665b5044382b1f1206000000000000000000000000000000060c141a20262b313845515c6674818e9a92867a7e858d857e776e696159514940382e251c1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121f2b3844505c6674808d9aa79f92878f8c81786d665d6164666664605c544e463c33291f0d040000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b556673808d99998c7f7266594c3f3025190d01000000000000000000000000000000000000000000000000000000000000020a0f181f262a2d2e323531302d2822212d3a4754606d7a86939faca8978a7d7064574a3d3124170900000813202c3945525d6876838f9c8f8276695e52463a2d2014080000000000000000000000000000000000000000000000000000000000000000030606080a0b0a151f2c3845515c6774808d9aa49d9184786c6053463d32271b0f040000000000000000000000000000000000000000000000000000000000000000010d1925303b4754616e7a86939f9a8d8174675c5145382c1f130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019232b353d464e555d60686e727576756e6a5f544a3f33281c0f030000000000000000000000000000000003090e151b202834404b5463707d8997998b7e717a80878b827b706b625b524a40372e241b10060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54626f7c8995a09c8f82828e8e81786d605b5859595753514b423c342a20170d0000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f3d4a5663707d89999b8f827568564c41362a1e11050000000000000000000000000000000000000000000000000000000000010a141c212a31363a3b3f413e3d39342d242c3945515d677784909daaa69a8d8073675a4d403025190e020004111d2935414c5665727f8c9893877b6e6154473b3025190d010000000000000000000000000000000000000000000000000000000000000000000000000004101c2934404b55626e7b87939fa0958a7d7064594f44382c20150a0000000000000000000000000000000000000000000000000000000000000000000814202d3946525e687683909c9f9285796d6053463a2f24180d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019232b343c434b51565e6166686968625f584e42382d22170b00000000000000000000000000000000000000040a0f18232e3a4653606d7985929c8f82756d747c838d857d726d635c524a40362d22180c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e384754606a7783909d9f92857a818e8e81746d635a504d4a46454039302a22180e050000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86929e918478685e5246392d20130700000000000000000000000000000000000000000000000000000000000a131c262e333b4246484c4e4b49453e362d2935414c556774818e9aa7a99c8f837669564d42362a1e110500010d19242f3b4855626e7b8897998b7f7265564c41362a1d110500000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3947535f6976828f9ca79d9083766b6054483d32271b0f04000000000000000000000000000000000000000000000000000000000000000005111e2a36414c5665727f8b9aa2978a7d7064554b4035291d10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071119222a313940454d5254595b5d5b55534e463c2f261c110600000000000000000000000000000000000000000007121f2c3844505c6674818e9b92867a6d6a6f788088877f736e635c52483f342a1e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2b37434e5865727e8b98a2988a7e78818e8c7f726c61584e433a38342e271e181006000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d677683909d96877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000050e1c252e3840454d5355595b585650483e34282f3f4c5965727f8c98a5ab9e928578695e52463a2d20140700000814212e3a47535f6a7885929c8f8376685e5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000007121d2b37424d5764707d8a96a19f95897c6f63584e43372b20150a0000000000000000000000000000000000000000000000000000000000000000010d1925303b4854616e7b87939f9b8e8175675d5145392c201308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f181f282f353b4146474c4f504e4847433c332a1d140a0000000000000000000000000000000000000000000003101c28343f4a5464717d8a99998a7d7164666d737e868c80736e635a50463c30271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b27323d4754606d7a85929f9c8f827578828f887e716a60564c413529231d150c06000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935404b556773808d9a968a7d7063574a3d30241708000000000000000000000000000000000000000000000000000000020c16202e37404a52575f61656864615a5045392d303d4a5663707d8996abada197877a6e6154473b2e211408000006121f2b37434e586875828e9b92867a6d6154473a2e2114090000000000000000000000000000000000000000000000000000000000000000000000000000010e1a26313c4653606c7884919ea79c8f82766a6054473c32261b0f0300000000000000000000000000000000000000000000000000000000000000000814202d3a46525e697683909d9f92867a6d6053473a2f24190d0a070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d161d24293036393b3f4243423b3a37312a21180b0200000000000000000000000000000000000000000000000c17232e3a4754606d7a86929b8e8174665c606c707c858c80736c62584e43392e23180c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202c3945515d6774818e9a9f92867a6d7a8491867c6f685d52453e33291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3d4a5764707d8a9a998c7f7366594c403025190d01000000000000000000000000000000000000000000000000000008131e28323f49525c63696e7274716c6156493d302e3b4854616e7b8799a3aea996897c706356493d3023160a0000020f1a26313f4c5965727f8c98998b7e7164584b3e31261a0e02000000000000000000000000000000000000000000000000000000000000000000000000000009151f2b3844505b66727f8c98a29f94897c6f62584e43372b201509000000000000000000000000000000000000000000000000000000000000000005121e2a36424d5766727f8c99a2988a7e7164564c4135291d1a171413100c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c12181f252a2d2e333536352f2e2b2620180f060000000000000000000000000000000000000000000000000613202c3945515d677683909c9285796c605a616a6f7c858b7e716a5f554b4034281e140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414b55626f7c88959f998b7f726f7c8691847a6d605a50453b31251a0d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a86939b8f827568564c4135291d110500000000000000000000000000000000000000000000000000010d1925303a44515b636e737b7f817e7164584b3e312d394653606c7986929faca4978b7e7164584b3e3125180b0000000a1723303d4a5663707d89969b8e817468574d42372b1e12050000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54616d7a86929fa69c8f82756a5f53473c31261a0f0300000000000000000000000000000000000000000000000000000000000000020e1a25303b4855626e7b8895a09b8f8275685d5245392c232724201f1d18120f0b0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d14191e202126282a2822211f1a150e06000000000000000000000000000000000000000000000000010c16202935414c5566737f8c9997897c6f625658606a6f7c86867c6f675c51453b3025190e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a47545f6a7783909d9d9184786c727f8c8e81756c61574d42362a1f160c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e687784919d918478685e5246392d2013070000000000000000000000000000000000000000000000000005111d2a36414c56636d7380868c8a7d7064574a3d312b3844505b667784919eaaa6998c807366594d4033261a0d0000000714212e3a4754616d7a87989e918478695f53463a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3846525e6874818e9aa49e94887c6f62584e43372b1f140900000000000000000000000000000000000000000000000000000000000000000914212e3a47535f697784919d9f92867a6d6054473a342e34302d2c29241d1b160f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e111414191c1d1b1514120f09030000000000000000000000000000000000000000000000000008131e28323d474f56636f7c8998998d807366564e58606a707e8a83796d60564c41362a1e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d2b37434e5864717e8a96a096897d706c77828f8a7e71695e53463e31281d1307000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c566774818e9a96877a6d6154473a2e211407000000000000000000000000000000000000000000000000000713202d3946525e68727f8c9298877a6d6054473a2d28333f4a54697683909ca9a79a8d8174675a4e4134271b0e0100000713202d3946525e687985929f96887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000006111c2935414c56626e7b87939fa69b8e81756a5f53473b31261a0e020000000000000000000000000000000000000000000000000000000000000006121e2b37424d576673808c99a3998b7e7164564c454042403d3a38352f2c27211b150c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080c0f100f080806020000000000000000000000000000000000000000000000000000010d19242f3a444f5960636d7985929d908377685e524e58616c74808c7f72685e52463a3025190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1b26323c4653606d7984919e9c8f8275696e7a8592857b6e615a50433a2f24180d0300000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303e4b5864717e8b9796897d7063564a3d30231707000000000000000000000000000000000000000000000000000714212e3a4754616d7a86929f928579685d5245392c222d424f5c6875828f9ba8a89b8e8275685b4f4235281c0f02000005111e2a36414c566a7784919d978a7e7164574a3e31241706000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303a47535f6a75828f9ca79f93877b6e62574d42362a1e140800000000000000000000000000000000000000000000000000000000000000030e1a26313c4955626f7c8896a19c8f8276685e53514b4f4d4a4745403938322b272018120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c56606b706b7683909c93867a6d615447505a606d7983857a6e61564c4135291d11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2c3844505c66727f8c979f93877b6e68717e8b8f82756c61554b4035291f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8897998c7f7266594c3f2f24180d010000000000000000000000000000000000000000000000000c1825323f4b5865727e8b989e9184786b564c4135292834414e5b6774818e9aa7a99c8f8276695c4f4336291c10030000010d192530434f5c6976828f9c9a8d8073675a4d402d22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2b37434e5863707c89959fa4998e8175695f53463b3025190e010000000000000000000000000000000000000000000000000000000000040d151d242e3b4754606a7884919e9f92867a6d61605c545c5a5753514b48443d373229241d150d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d68707c7073808d99998a7d7164574a45515c666f7c878074685e5246392d20130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54606d7a85929f998d8174696c7782908a7e71675d51453b31251a0e03000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535f697885919b8e817568554b4035291d11040000000000000000000000000000000000000000000000000f1b2835424e5b6875818e9b9d9184776a5e514430252734414d5a6774808d9aa7a99c908376695d5043362a1d1003000000081c2935424f5c6875828f9b9c8f82766953493f33271b0f03000000000000000000000000000000000000000000000000000000000000000000000000000000020f1a26313c4854606b7683909da79f92877b6e61564c41362a1d120700000000000000000000000000000000000000000000000000000000040d161f272f353e424e586774808d9aa3998b7e726d6d666b696763605d55544f47433d352f271f180f0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a867e707d8a979a8e817467574d424b54606a7481857a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3845515d6773808d999f92867b6e656e7b879184796d60574d42362a20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d576875828f9b918477675d5145392c201306000000000000000000000000000000000000000000000000101c2936434f5c6976828f9c9e9185786b564c41362a2733404d5a6673808d99a6a99d9083766a5d5043372a1d10040000020f1b2835424e5b6875818e9b9d918477655b5044372b1f1205000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c38444f5963707d8a95a0a3998e8174685e5246392f24180d010000000000000000000000000000000000000000000000000000020b161f28313940454f545b636f7c8997a19c90827a7a7979787573706d67636059544e454039312a21191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945525d68768384797a87969e918478695e5346424e58616d7a847d706356493d3023160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2935414b55616e7b86929f988d8074686a74808d8d8073695e53463c31261a0f03000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313f4c5965727f8c9893867a6d6053473a2d2014070000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9c9f928579685e5246392d2633404d596673808c99a6a99c908376695d5043362a1d10030000000f1b2835424e5b6875818e9b9f9285786c605346392d2013060000000000000000000000000000000000000000000000000000000000000000000000000000000003101b27323d4855616b7783909da79f92867a6e61554b4035291d100400000000000000000000000000000000000000000000000000000a141d28313a434b515961666c717885929e9f9490878786858482807d79756f6b626058514b433c332b2219100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5663707d89807885919e96877b6e6154483d46525e686d79706b6054483b2f22160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d18242f3a46525e6874818e999f92867a6e616d7a8592867b6e61584e43372b201509000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c89989a897c6f6356493c302316070000000000000000000000000000000000000000000000000e1b2834414e5b6774818e9aa298877a6e6154473b2e2633404d596673808c99a6a89c8f8275695c4f4236291c0f030000060c152935424f5c6875828f9ba398867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212c38444f5963707d8a959fa3988d8073675d5145392c20160a0000000000000000000000000000000000000000000000000006111c262f3a434c555d606b70787e8287939fa69d90838283868a8f8d8a86817c766f6a605d554d453d342b22180e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a4855616b7683867c828f9c978b7e7164584b3e414c565e666d6660594f44382c201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d2a36414d56616e7b87929f988d80736968727f8b8e81746a5f53473c31261a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798592988b7f7265584c3f2e23180c0000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a796897c6f6356493c2e2333404d5a6673808d99a6a89b8e8275685b4f4235281c0f0200080f181e2b37424d576a7683909daa94877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c28333e4855616b7683909da59f9285796d6053473d32271b0f030000000000000000000000000000000000000000000000000b17222d38424c555d676d747d838a8f879297a19c8f827677797d828790928e89837c746d675f574e463d342a20170b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2c38444f5964717e8a82808c999a8e817467564c413a444c545c605c544f473d33271c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1925303b46535f6974818e999f92867b6e616d798491877c6e62574d42372b1e130800000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844515c667683909b8e817468544b4034281c100400000000000000000000000000000000000000000000000815222f3b4855626e7b8895a0988b7f7265544b40342834404d5a6773808d9aa6a79a8d8074675a4d4134271a0e0108111a2129303947535f697885929ea194877b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212c38444f5963707d89939ea2978b7e7265594f43382c1f13070000000000000000000000000000000000000000000000030f1c28333f4a545d676d79818a918f837b85929e9f92867a6d6d70757c828c9394908780796e6960584e463c32291d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001101c27333d4653606d79858e818e9b9e918477685e5246393a424a5053504a423d352b21160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2a36424d57616e7b86929f988e81746a66717e8b8f8275695f53473a3024190d01000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a546673808d99908377665c5145382c1f130600000000000000000000000000000000000000000000000814212e3a47535f6a7783909d9c8f8275665c5145382c34414e5a6774818d9aa7ab988b7e7265584b3f3225180c05101a232c333b424c56616e7b8897a1a994877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000005101c28333e4854606b75828f98a39d9084776b6054483b2f221506000000000000000000000000000000000000000000000006121f2b3844505b666d79828e938f827974818d9aa3998b7e7265636a6f777f879298938d847b6f6a60584e443b2f261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b161f2c3845515c6673808d85929fa096877a6d6154473a30383f4446443f38302b23190f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313b46535f6974818d989f93877c6f626d788491877b6e62564c4135291d11050000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3d4a5763707d8a9a9286796d6053463a2d201307000000000000000000000000000000000000000000000006121e2b37424e5764717e8a959f9285796d6053463d3035424e5b6875818e9ba8a399897c706356493d3023160a0b16212c353e454d545d68727f8c99a9a197867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17212c38444f59616e7b86929fa095897c6f6356493c2e23170c0000000000000000000000000000000000000000000004111d2935414b55606c78828f949083796d6f7c8996a19c908376695e5f656c737d8692989691857c6f6a5f564c42382d22170b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b54616e7b879298a2a8978a7d7064574a3d2d2e34383a38342e261e19110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a36424d57616e7b86929f998f82766b66717e8b8d8174685d5246392d20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a869399887c6f6255493c2f2216060000000000000000000000000000000000000000000000020e1a26313c4653606c7883909a978a7e7164594f4239333f4a546975828f9ca89f92867a6d6054473a2d211407101c28333e474f575f666d7a85919eab9e928578675d5145392c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b27323d46535f69727f8c949f9a8d807467544a3f34281c10030000000000000000000000000000000000000000000613202c3945515d67727f8c9492877c6f676c7884919e9f93877b6e61535b606b707d8692999792857c6f685e544a3f33281e140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3946535f697683909caaa6998d80736653493f3327282c2d2c28231c150c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1a26313b46525e6873808d979e94897d70666d798491867a6d6154473c32271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525d68778491978b7e7164584b3e2d22170b00000000000000000000000000000000000000000000000009151f2b3744505b656f7c88939c8f82766b60544a403844505b667783909daa9c8f8276685d5245392c20130714202c38444f5961696e78818f97a1ac9c90837669554b4035291d100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212a36424d57606d788290979e918477665c5044382c1f12060000000000000000000000000000000000000000000714212d3a4754606d7a85929b8e81746a5f6573808d99a49a8c7f7266585059616b707e87939f9791857a6e665b50443b3025190e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2a36424d5764717e8b98a2a99c8f8376655b5044372b1f1f201f1c17110a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2a36414d56606d7a85929e9d9183786d66727f8c8c7f7266584e43372b1f1306000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c566774818d9a8d80746753493f33271b0f030000000000000000000000000000000000000000000000030f1b27333f4953606a73808d9394897d70665c5147434653606c7985929fa2988b7f7265564c4135291d110916232f3c4855616b707b828f939ea9a49a8c807366594d402f24180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e1a26313b44505c666e7b8591979386796d6053463a2d2013070000000000000000000000000000000000000000000b1824313e4b5764717e8a9799897d706358626f7c88959f9d9083776a5f534f59616c73808c949f978f82786c60564c41362a1e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313b4753606d7985929fab9f9285796c605346392d20131312100c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e1925303b45515d67727f8b95a0958c7f72696d7a869184776a6054473b2e22150a0000000000000000000000000000000000000000000000000000000002060808080705020000010d1924303e4b5764717e8a97908376655b5044372b1f12050000000000000000000000000000000000000000000000000b17222d38414e58606c77818f959183786d605c544e4f57626f7c8898a29f92857a6d6154473a2f24190d0a1724303d4a5763707d878f949ea6a89f93877b6e6255483b2f2215070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f28343f4a545e696f7c858e8f8477665c5044382c1f12060000000000000000000000000000000000000000010e1a2734414d5a6774808d9a9286796d60535f6a7783909da095887b6f62544a505a606d788290999f948b7f72685e52463a3025190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2c3945515d6774818d9aa7a298887b6e6155483b2e2215080603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f2935414c55606d7883919d9f92867b6e6875818e887c6f6255493c31261a0f030000000000000000000000000000000000000000000000000003090e1214151514120e090b090815212e3b4854616e7b87969285796c605346392d20130600000000000000000000000000000000000000000000000006111b262f3d44505b656d79838f938d80746e62605859606974808d9aa1978c8073685e5246392d1e13080713202d3a4653606d788390969ea6a0968e81746a5f53473a2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b17232e38424d575f6a6f7b81827c6f62544a3f34281c10030000000000000000000000000000000000000000020f1c2835424f5b6875828e9b918477665c515865727e8b98a2998d8073665b5044505c666e7c87929f9f92857a6e61564c41362a1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b55626f7c8895a0aa978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d19242f3a44505c66707d89939e988f82766d707d898d807367584e43372b1f1206000000000000000000000000000000000000000000000000060e151a1e212221211e1a1917161513202d3a46525e6978849198887b6e6155483b2e22150c0c0c0b0a0807060300000000000000000000000000000000000a141d27333f49535d676d79818d938d80766f6a69696b707b86929f9991857a6d60564c4135291d0c0106121f2b3844505c666e7b848f94989590847a6d61584e43372b1f1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303b454e585f696e74766f6a605442382e23170c000000000000000000000000000000000000000000010e1b2834414e5b6774818e9a90837669544b54606d7a86929f9e9184786c6053464a545f6a73808d97a2988d8074685e5246392d20140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f394754606a7783909da8998c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28343f4a54606b75818e989f948b7e726c78849184786a5f53473a2e2115080000000000000000000000000000000000000000000000060f181f262b2d2e2e2d2a2526242321201f2a36424d576874818e978a7d7064574a3d3124191919181817151312100b06030000000000000000000000000000020b17222d38414b555d676d788088908d827c787676787d8491989892877d70685d52443a3025190d0003101c28343f4a545e696e7a82888b8a837b6e685e52463c31261a0f020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e29333c464e575e6167696260584e4330261c1106000000000000000000000000000000000000000000000c1925323f4c5865727f8b988f8376695c50525d6875818e9ba196897d7063554b424e58606d7a85929e9f92867a6d6154473c31261a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2b37434e5864717e8b96a19b8e8275685b4f4235281c0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c17232e38424f59616e7b86929f9f92867c6e74818e887b6f6255483c2f22150900000000000000000000000000000000000000000000030e18212a31373a3b3b3a363133312f2e2d2b28303e4b5864717e8b978c807366594d402f2425252525252422201f1c17120f0b060000000000000000000000000006111b262f3a434b555d666c737c838b8f8985838384899196948f867e706b60564c4132281e130800000b17232e38424d575e686e757c7e7d786e695e564c41332a20150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17212a343c454d52545b5c56544e463d321e150a00000000000000000000000000000000000000000000000815222e3b4855616e7b88939083776a564c4c56636f7c8995a09b8e8174675d514545525d68727f8c98a2998c7f7266574d42372b1e120500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1b27323c4653606d7984919e9d9083776a5d5044372a1d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303d46525e69727f8b949f98908379717e8a8b7e7265584b3f3225180c0000000000000000000000000000000000000000000009151f2a333c424748484642413f3e3c3b3a38342e3b4854616e7b87968f827568554b4135323232323231302e2d2b28231f1b17110a020000000000000000000000000a141d28313a434b545b606a6f787e83888b8e8f90908e8c88827c706c61594f443a2f20160c02000006111c26303b454d565e616a6f71706c665e574d443a3021180e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18222a333b4246484e4f4947433d342b200c0300000000000000000000000000000000000000000000000714212d3a46535f6975818e928578685e524854606b7783909d9f92857a6d605347414c56606d7a86929f9d908477695f53463a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2c3844515c66717e8a949e9184776b5e5144382b1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e2a36424d57606c78839098a0958f82787b888e8174685b4e4135281b0e020000000000000000000000000000000000000000020e1a26313c454d535554534d4e4c4a494846443f444346525e69778491918477675d51453f3f3f3f3f3f3e3d3b3a38342e2b27221b140b050000000000000000000000020b161f283139424a505860666c71777b7f81828383817f7b766e6a615a50473d32281e0e04000000000a141e29333b444d52585f626563605b544d453b32281e0f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061018212930363a3b41433c3b37322b22190f00000000000000000000000000000000000000000000000005121e2a36424d57616e7b8592877a6e6154474f5965717e8b96a1988b7e7165584e4345525d6874818e9aa095887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a54616c76828f958f8275695c4f4236291c0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c1a25303b44505b666e7b86929f9e948f817c899083776a5d5044372a1d1104000000000000000000000000000000000000000006121e2b37424d575f61615e575b5957565453504a50504f4d576774808d93867a6d60544c4c4c4c4c4c4b4b4a4846443f3937332d261d170e050000000000000000000000040d161f272f383f444e545b6064696e727476767675726e6a625f5750483e352b20160c0000000000020c172029323b41464e5355585753504a423b332920160c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f252a2d2e34362f2e2b2720191007000000000000000000000000000000000000000000000000020e1a26313b46535e696f7c858a7d7164574a4653606d7984919e9d9083776a605447414c56636f7c8997a1988b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3942505a616d7a8388867c6f6256493c2f231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f28333f4a545f69717e8b939e9e938f898f9185786b5e5245382b1f120500000000000000000000000000000000000000000814212d3a47535f696e6e69696866646261605c545d5c5c5b5b63707d8a98897c6f63595858585858585858575553504a46443f382f2920170d040000000000000000000000040d151d262d333d424a5053575f626567696a696866625f58534e453e362c23190d04000000000000050e17202930363c4347494b4a46443f382f2921170e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a1e2021282923221f1b150f07000000000000000000000000000000000000000000000000000009141f2a36424d57606a6f7a7f7f7366594c45515c66727f8c969f95897c6f62574d424653606c7885919e9b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c27303e46525e686d787b7a6f6a6054473b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b17222d38424d57626d75818e95a09e9b969f9285796c5f5246392c1f130600000000000000000000000000000000000000000815222e3b4855616e7b7b78767472716f6e6d666b6a69686867676d7986928b7e72656565656565656565646361605c54535049413b33291f160c010000000000000000000000030b141c22282f383f44464d5355585b5c5d5d5b5955534e47423c332c231a11070000000000000000050e171f252a32373b3c3e3d3938332d261d170f0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151b1c1615130f0a04000000000000000000000000000000000000000000000000000000030e1a25313b454e5860686e73736d63574b404b54606d7984919e9b8e8175695f534644505b6574818e9a9c908376695d5043362a1d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2a36414c565e666c6f6d6860584e43382b1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f3b45505a606d79839197a1aaa29e9184786b5e5145382b1e120500000000000000000000000000000000000000000b1824313e4b5764717e878583817f7d7c7b7978777776757574747475828f8d817472727272727272727271706e6d6664605b534d453b31281d1307000000000000000000000000020a11171d262d33383c4247484c4e4f50504e4c4847433c37312a211a110800000000000000000000050d141920262b2e2f32302d2b28221c140b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080e100908060300000000000000000000000000000000000000000000000000000000000009141f29333d464e565e616666635b51463945515d67727e8b959f92877b6e61584e43495364717e8b979e9184786b5e5145382b1e1200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c1925303a444c545b6062605d564e463d32271b130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2a333f45515d676e7b859298a1a99d9083766a5d5043372a1d100400000000000000000000000000000000000000000714202d3a4753606d798491908e8c8a89878685848383828181818080828f91847f7f7f7f7f7f7f7f7f7e7e7d7b7976706c655e574d433a2f24180d0100000000000000000000000000060b141c22282b31373a3b3f41434343423f3b3a37312b2620180f0800000000000000000000000002080e151b1f21222524201f1c17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212b343d444c525459595751494035404b55606d7883909d998e81746a5f53474855626f7b88959e9285786b5f5245382c1f12000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e29323a424a50535554524c443d373129241d160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b18212935414b555f696f7c8692979f998d8073665a4d4033271a0d00000000000000000000000000000000000000000006131f2c3945515d676f7c8691969997959a939291908f8f8e8e8d8d8d8f9496918c8c8c8b8b8b8b8b8b8b8b8a8886827d776e695e554b4135291d11040000000000000000000000000000020a11171c1f262b2e2f323436373635332f2e2b26201a150e06000000000000000000000000000000040a0f131516181713120f0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19222b323b4146474c4c4b4640372f3944505c66707d89939f92877c6e625a504653606d7986989e9184786b5e5145382b1e120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17202930383f44464b4e4e4c4847433c352f281f160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18242f3a434d57606a6f7d858f9493897c6f6256493c2f23160900000000000000000000000000000000000000000004101d2935404b55606a6f7c848b91979a9d9f9f9e9d9c9b9b9a9a9a9a9c9fa09e99989898989898989898979698928f8a827b6e675d5145392c20130600000000000000000000000000000000060b0f151a1e21222528292a2a282622211f1a150e0903000000000000000000000000000000000000030608090b0a060603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101920293036393b40403e3b352e28343f4a54606b74818e96998f82766c61574d515c677985929d9083776a5d5044372a1d11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d273139424a5053575a5b5955534e45403a31281f160c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313b454e58606a6f7b82888881746a6054473b2e221508000000000000000000000000000000000000000000000c18242f39434e58606a6f797f84898d909298969798999a9a9a9b9a9a9a9a99999897969594989291908f8d8c8b898887827a6d6054473a2d21140700000000000000000000000000000000000003090e121415191b1c1d1d1b191514120f09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e171e252a2d2e3333322f2a23232e38424f59606d7a849198948a7e71695e56515d677885929b8e8174685b4e4135281b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f39434b545c6064676866625f58514b433a31281d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f29333d464e5860696e767b7c746f64584e43382b1f13060000000000000000000000000000000000000000000007121d27313d464e585f676d72787d80838587898a8b8c8d8d8e8e8e8d8d8d8d8c8b8a8a89878685848382817f7e7c7b79766d675d5145392c2013060000000000000000000000000000000000000000020608080c0e1010100f0c080806020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e2021262625231e191c26303d45515d676f7c86929992857b6e685f58606d7a8693968a7e7164574a3e3124170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b555d666d717475736f6a605d554b43392f24180d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d18212b343d464e575e61696e6f6a645d53463d32271b0f0300000000000000000000000000000000000000000000010b151f2b343d464e555c60666d707376797b7c7e7f808081818181818080807f7e7e7d7c7b7a79787675747371706e6d66605d554b4135291d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11141419191916120a141e2935414c555f6a707d87929790837a6f6a6668707d89999184796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515d676d787e81817f7c746d675d554b4035291b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f19222b343d454d53575f61625f58534b41342b20160a000000000000000000000000000000000000000000000000030d19222b343c434b51545c606367656c6e70717273737474747474747373727271706f6e6d676b6a686766646361605c54514b433a2f24180d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507080d0d0c0a06020c19242f3a434e58616b717e86919590837c7573747a839092877d70675c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d79838a8d8e8c8781796d675d5145382d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019222b333b42464d535555534e4641392f22190f0400000000000000000000000000000000000000000000000000071019222a313940454a505356535b606163646566676767686767676766666564636261605d555d5c5a5958565553514a45413a31281d130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313c464f59616c717d858d929187828081859090877e716b60554b4034281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a959a9b9a938e83796d6053493f33271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071019212931363c4246484847433c342f271d10070000000000000000000000000000000000000000000000000000000710181f272f34383f44464949505354565758595a5a5b5b5b5a5a5a5a59585757565453514b504f4e4c4b494846444039352f281f160c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2a343e47505a616b6f7a81868b8e8f8c8d8c88837c716c61594f43392e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b9aa4aca49f958d8073655b5044372b1f12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f171f252a31373a3b3c3b37322a221d150b0000000000000000000000000000000000000000000000000000000000060d151d23292e34383a3d3f444648494b4c4d4d4e4e4e4e4e4d4d4d4c4b4b4a4948474540434241403e3d3b3a38342e29241d160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d18222c353e48505960686d747a7e818383817f7b766f6a615a50473d30271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7c87939fa2a9a79f9285796c605346392d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d141a1f262b2d2e2f2e2b262018100b03000000000000000000000000000000000000000000000000000000000000030b12181c23282b2d2d3337393b3d3e3f404041414141414140403f3f3e3d3c3b3a39352f35343331302e2d2c28231c18130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101a232c363e474f565d60686d7174767675726e69625f5850483e352b1e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a73808b92979c9e9e95877a6d6054473a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e141a1e212222211f1b150e0600000000000000000000000000000000000000000000000000000000000000000001070c11171c1f2022272b2d2e30313233343434353434343433333231302f2e2d2c2924292726252322201f1c18120d070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a242c353d444c52565e61656869696865615f57534e463e362c23190c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e58636e737e858c9092928f8377675d5145392c20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151515120f0a0400000000000000000000000000000000000000000000000000000000000000000000000000060b101213171b1f20212324252627272828282727272726252424232120201d181c1b191816151312100c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121a232b323a41454c5254585b5c5d5b5955534d47433c342c241a110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a26313c46525c636c717a7f838585827b6e61554b4135291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080908060300000000000000000000000000000000000000000000000000000000000000000000000000000000000306060b0f1213151618191a1a1b1b1b1b1b1a1a1a1918181716151413100d070e0d0b0a0807060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081019202830353a4146474b4e50504e4c4847423c37322a221a12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a344049525a62686d72767878756e695f53433a2f24180d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080a0b0c0d0d0e0e0e0e0e0e0d0d0c0c0b0a0908070604010001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e161e24293036393a3e414343423f3b3a37312b262018100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18222e37404850565d6065696b6b69615f574d4231281d130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080c0e0f0f0d09060603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191e252a2d2e3235363635322e2d2b261f1b150e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101c252e363f444c5254595d5f5f5c55534d453c311f160c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e121415191b1c1b191613120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d13191e20212528292a282622211e1a150f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c242d323a4145474c5052524f4846423c332a1f0d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d151a1e2122262829282623201f1c17110b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111314181b1d1d1b191514120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a121b20282f35393a3f434545423b3a37312a21180e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c121820262b2e2f3335353533302d2b28221c17110a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070b0e10100f0c080806020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090d161e24292c2d32363838362e2d2b261f180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d242931373a3b3f414242403c3938332d28231c140c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d2021262a2c2c2922211e1a140e06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b161f282f353c4247484c4e4f4e4c4946443f38342e261e180f0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d111314191d1f1f1c1514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d28313940454d5355595b5c5b595653504a443f38302a211a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010407070c1012120f08070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f39434b51575f62666868686663605b54504a423c332c231a12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38424b555d60696e72747575736f6c66605c544e463e352c241a100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a545d676d747b7f8182817f7c78726d665f584f473e362c22190f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b666d7981888c8e8f8e8c89847e786e6a615950483e342b21180d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c78818e939999938d89898b8b837c706b615a50473d332a1f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e5864717e8b939d9f9387807c7c7e838a867d706c61594f453b31271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3a47535f6a7784919da0958b7f74706f71767d85877e706b60574d43392f23180d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a09d9184776d6363656b707b84867d6f695f554b4034291f160c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a7998c8073665b565961696e7a84857b6e675c51453d31281d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa3978a7d7064574a4f575e686e7b8583796d60594f43392f24180d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2935424f5c6875828f9ba295887c6f625549454d565f69707d8780746b61554b4035291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c6976828f9ca194887b6e6155483b444d57606b737f897d70675d51453c31261a0e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2935424f5c6875828f9ba194887b6e6155483b3b454f59606d788384796d60574d42372b20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875818e9ba295887b6f6255483c333d44505c666f7c878073695f53463c32261b0f04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a2734404d5a6773808d9aa296897c6f6356493c30343f4a545f6a7481867b6e61584e43372b20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a4978a7d7164574a3e312e38424e58616d7a8582756a5f54473c32261b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a9988c7f7265594c3f2e26303c46525e68727f887c6f62584e43372b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8797a19b8e817468544a3f34282935414c56606d798582756a5f53473b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e687885919e9d908377665c50443a3128303a45515d67727f887c6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414d566875828f9b9f9286796d60544c433a322935404b55606d797d776c605346392d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303f4c5865727f8b98a398887b6f665d554c443a322f3945515d676d716c655b5044372b1f1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000816222f3c4955626f7c8897a19b8e81786d675d564c443a3135414c555d6064605b53493f33271b0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c7885919e9e938e82796d685e564c4339303a434c51545753504941382d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b6574818e9ba59e948f837a6d685e554b4239313a4145474a46443f382f261b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f495364717d8a98a39d91838f837a6d675d544a40342f35393a3e3937332d261d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3a4754606d7a86929f998d80828f83796d665c51443f34292c2d312d2b27221b140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d6775828f9c9d90847a838f82786d605b51473d32282124201f1b17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414b5564717e8b98a095887b7a848e81746d62594f443a2f261b13120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18242f3a4754606d7a86929f988c7f727c868b7f726b60564c41382d22170c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202c3945515d6775828e9b9d908376717e8a877d6f685e53493f33271e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c5564707d8a979f95887b6e74808d847a6d655b50443c30271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a4653606d7985929e9a8d80736d78838f82776c60584e42392e23180c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131f2c3844515c6673808d9a9e9185796d6e7b868c7f726a60544b4034281e150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a54626e7b88949f978a7d7069727f8b877c6f665c51453c30261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3947535f6a7683909c9b8f8275696d76828f83796d60584e42382e23170c02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c2b37434e5864717e8a969f92867b6e616e7b858c80736a5f544a3f34281e14080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1a26313c4653606d7984919e998d80736769727e8b877c6f665c50443b3025190e0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2c3844505c66737f8c989e9285796d606c77839083786d60564c41362a20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616d7a86929f978b7e7164656f7c878c7f72685e52463c32271b0b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3846525e6874818e9b9d9083776b606a74808d857a6e61584e43372b1d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2a36414c56626f7c88949f95897d7063606d7a858e81746a6054473e2f261b110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303a4754606a76828f9c9c8f82766a5f67727f8b877c6f625a5041382d22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2b37434e5863707d89959f94887c6f62606d78849083766c6153493f33271b110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b27323c4854606b7683909d9b8e8175695f66707d8a8a7d70655b5044382d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202c38444f5964707d8a959f92877b6e61616c76839083786c6053493f33271b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c27333d4653606c7883909d998e8174695e63707d898a7d70655b5044372b1f150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b161f2b3744505b65717e8a959f92867b6e61606b76828f83786c6053463c32271b0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f4953606d7884919d998e8174695f636f7c898a7d7064584e43372b1e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3844505c66717e8a959f92877b6e62606b76828f83766a6054473a3025190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b28343f4a54606c7883909d998e81756a6063707d8a887c6f62564c41362a1e110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3844505b65707d8a949f93877c6f62606c78838e8174685e5246392d20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27333f4953616b7683909c9a9082766c6165717e8b867a6d6154473c32271b0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38414f59626f7c89939e948a7d7167606d79858c7f7366584e43372b1c1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f3e4854606a75828e989e9184796d606774808d84776a605447382d22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2c38434e58616e7b86929f968c80736a626f7c88887c6f62544a3f33281c0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b1b27323d46535f6973808d979f92867b6e656a77838d8074665b5044382b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212a36424d57606d7a85919e999082776c66737f8c85796c605346392d201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e1a26313b45515d67717e8a949f948b7f72696f7c88897c6f6256493c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2935414c55616c768290989f92867b6e6c79858c7f7366594c403025190e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d19242f3a43505a626e7b86929f989083786d76828f837669564d42362a1e11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313e47535f6a737f8c959f958d807374818e8578695e52463a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2b37424e57606d788390999d928b7f74818e877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d1a26313c44515c666f7c86929f9b918b818592887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202834404a545f6a727f8c949e9b938e9297897c6f6256493c2f231609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18232e39424e58606c77828f96a09e9b9e98877b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c27303c44505b656d7a849198a2aa9f9285796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e27333f49535d686e7c869298a19c8f8276655b5044372b1f12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c17222d38414c565f6a6f7d869297978b7e716553493f33271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f3a444e58606b6f7d858d8f85796d6053473a2d22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d28323c464f59606b6f7b81827d6f675d5145382c1b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b16202a343d474f5960696e74766f6b60554b4035291d0a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18222b353d474f565e6167696360594f43392f24180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f19232b353d444d52545a5c56544f463d31271d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071119232b323b4246474e504948433d342b1f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071119202930363a3b41433c3b38322b22190d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e171f252a2d2e3436302f2c27211910070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e2021272923221f1b160f070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e1114141b1d1615130f0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080e1009090703000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_StreamData: + offset: 0 + size: 0 + path: +--- !u!21 &-567968814723445512 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DancingScript-VariableFont_wght Atlas Material + m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Cube: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FaceTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: -3630272914525870158} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OutlineTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _Ambient: 0 + - _Bevel: 1 + - _BevelClamp: 0 + - _BevelOffset: 0 + - _BevelRoundness: 0 + - _BevelWidth: 0.5 + - _BumpFace: 0 + - _BumpOutline: 0 + - _ColorMask: 15 + - _CullMode: 0 + - _Diffuse: 0 + - _FaceDilate: 0 + - _FaceUVSpeedX: 0 + - _FaceUVSpeedY: 0 + - _GlowInner: 1 + - _GlowOffset: 0.59 + - _GlowOuter: 0 + - _GlowPower: 1 + - _GradientScale: 10 + - _LightAngle: 0 + - _MaskSoftnessX: 0 + - _MaskSoftnessY: 0 + - _OutlineSoftness: 0 + - _OutlineUVSpeedX: 0 + - _OutlineUVSpeedY: 0 + - _OutlineWidth: 0 + - _PerspectiveFilter: 0.875 + - _Reflectivity: 5 + - _ScaleRatioA: 0.9 + - _ScaleRatioB: 0.73125 + - _ScaleRatioC: 0.57624114 + - _ScaleX: 1 + - _ScaleY: 1 + - _ShaderFlags: 0 + - _Sharpness: 0 + - _SpecularPower: 1 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _TextureHeight: 1024 + - _TextureWidth: 1024 + - _UnderlayDilate: 0.269 + - _UnderlayOffsetX: -1 + - _UnderlayOffsetY: -1 + - _UnderlaySoftness: 0 + - _VertexOffsetX: 0 + - _VertexOffsetY: 0 + - _WeightBold: 0.75 + - _WeightNormal: 0 + 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} + - _GlowColor: {r: 0.073298454, g: 2, b: 0, a: 1} + - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} + - _OutlineColor: {r: 0, g: 0, b: 0, a: 0} + - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 0} + - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 0} + - _SpecularColor: {r: 1.4980392, g: 1.4980392, b: 1.4980392, a: 1} + - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3} + m_Name: TTT_DancingScript TMP + m_EditorClassIdentifier: + hashCode: -1673780571 + material: {fileID: -567968814723445512} + materialHashCode: -150493595 + m_Version: 1.1.0 + m_SourceFontFileGUID: 2dedba84ce1ce5c4c8bfb2b6ae52aabc + m_SourceFontFile_EditorRef: {fileID: 12800000, guid: 2dedba84ce1ce5c4c8bfb2b6ae52aabc, + type: 3} + m_SourceFontFile: {fileID: 12800000, guid: 2dedba84ce1ce5c4c8bfb2b6ae52aabc, type: 3} + m_AtlasPopulationMode: 1 + m_FaceInfo: + m_FaceIndex: 0 + m_FamilyName: Dancing Script + m_StyleName: Regular + m_PointSize: 90 + m_Scale: 1 + m_LineHeight: 108.00001 + m_AscentLine: 82.8 + m_CapLine: 65 + m_MeanLine: 30 + m_Baseline: 0 + m_DescentLine: -25.2 + m_SuperscriptOffset: 82.8 + m_SuperscriptSize: 0.5 + m_SubscriptOffset: -25.2 + m_SubscriptSize: 0.5 + m_UnderlineOffset: -11.25 + m_UnderlineThickness: 4.5 + m_StrikethroughOffset: 12 + m_StrikethroughThickness: 4.5 + m_TabWidth: 23 + m_GlyphTable: + - m_Index: 1 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 23.40625 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2 + m_Metrics: + m_Width: 53.09375 + m_Height: 72.625 + m_HorizontalBearingX: -1.53125 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 53.28125 + m_GlyphRect: + m_X: 842 + m_Y: 10 + m_Width: 54 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 3 + m_Metrics: + m_Width: 49.0625 + m_Height: 72.625 + m_HorizontalBearingX: 1.703125 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 54.71875 + m_GlyphRect: + m_X: 915 + m_Y: 10 + m_Width: 50 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 4 + m_Metrics: + m_Width: 45.625 + m_Height: 72.53125 + m_HorizontalBearingX: 1.984375 + m_HorizontalBearingY: 64.703125 + m_HorizontalAdvance: 48.0625 + m_GlyphRect: + m_X: 533 + m_Y: 111 + m_Width: 47 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 5 + m_Metrics: + m_Width: 52.828125 + m_Height: 72.625 + m_HorizontalBearingX: 5.046875 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 58.765625 + m_GlyphRect: + m_X: 414 + m_Y: 125 + m_Width: 53 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 6 + m_Metrics: + m_Width: 45.625 + m_Height: 72.53125 + m_HorizontalBearingX: -1.34375 + m_HorizontalBearingY: 64.703125 + m_HorizontalAdvance: 44.8125 + m_GlyphRect: + m_X: 339 + m_Y: 186 + m_Width: 47 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 9 + m_Metrics: + m_Width: 51.921875 + m_Height: 72.625 + m_HorizontalBearingX: 4.953125 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 55.53125 + m_GlyphRect: + m_X: 686 + m_Y: 175 + m_Width: 53 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 10 + m_Metrics: + m_Width: 52.734375 + m_Height: 72.546875 + m_HorizontalBearingX: -3.421875 + m_HorizontalBearingY: 64.625 + m_HorizontalAdvance: 41.3125 + m_GlyphRect: + m_X: 69 + m_Y: 274 + m_Width: 54 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 14 + m_Metrics: + m_Width: 68.40625 + m_Height: 72.625 + m_HorizontalBearingX: -1.53125 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 68.671875 + m_GlyphRect: + m_X: 55 + m_Y: 182 + m_Width: 69 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 15 + m_Metrics: + m_Width: 55.53125 + m_Height: 72.625 + m_HorizontalBearingX: 4.140625 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 57.59375 + m_GlyphRect: + m_X: 152 + m_Y: 10 + m_Width: 56 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 16 + m_Metrics: + m_Width: 52.296875 + m_Height: 72.53125 + m_HorizontalBearingX: 1.890625 + m_HorizontalBearingY: 64.703125 + m_HorizontalAdvance: 56.0625 + m_GlyphRect: + m_X: 715 + m_Y: 83 + m_Width: 54 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 17 + m_Metrics: + m_Width: 51.109375 + m_Height: 72.625 + m_HorizontalBearingX: 1.625 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 47.4375 + m_GlyphRect: + m_X: 615 + m_Y: 102 + m_Width: 52 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 20 + m_Metrics: + m_Width: 44.828125 + m_Height: 72.625 + m_HorizontalBearingX: -0.546875 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 48.234375 + m_GlyphRect: + m_X: 287 + m_Y: 10 + m_Width: 46 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 21 + m_Metrics: + m_Width: 50.953125 + m_Height: 72.625 + m_HorizontalBearingX: 6.203125 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 44.09375 + m_GlyphRect: + m_X: 64 + m_Y: 90 + m_Width: 52 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 22 + m_Metrics: + m_Width: 61.734375 + m_Height: 73.703125 + m_HorizontalBearingX: 2.25 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 63.546875 + m_GlyphRect: + m_X: 196 + m_Y: 171 + m_Width: 62 + m_Height: 74 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 23 + m_Metrics: + m_Width: 55.890625 + m_Height: 72.625 + m_HorizontalBearingX: 2.25 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 56.875 + m_GlyphRect: + m_X: 143 + m_Y: 264 + m_Width: 57 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 24 + m_Metrics: + m_Width: 80.453125 + m_Height: 72.625 + m_HorizontalBearingX: 2.25 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 81.546875 + m_GlyphRect: + m_X: 615 + m_Y: 10 + m_Width: 81 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 26 + m_Metrics: + m_Width: 61.75 + m_Height: 81.625 + m_HorizontalBearingX: 2.0625 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 59.9375 + m_GlyphRect: + m_X: 534 + m_Y: 10 + m_Width: 62 + m_Height: 82 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 28 + m_Metrics: + m_Width: 44.28125 + m_Height: 35.109375 + m_HorizontalBearingX: -2.34375 + m_HorizontalBearingY: 30.875 + m_HorizontalAdvance: 39.234375 + m_GlyphRect: + m_X: 469 + m_Y: 70 + m_Width: 45 + m_Height: 36 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 29 + m_Metrics: + m_Width: 39.34375 + m_Height: 70.828125 + m_HorizontalBearingX: -0.90625 + m_HorizontalBearingY: 64.265625 + m_HorizontalAdvance: 35.453125 + m_GlyphRect: + m_X: 10 + m_Y: 274 + m_Width: 40 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 30 + m_Metrics: + m_Width: 32.40625 + m_Height: 35.46875 + m_HorizontalBearingX: -0.453125 + m_HorizontalBearingY: 30.421875 + m_HorizontalAdvance: 29.0625 + m_GlyphRect: + m_X: 417 + m_Y: 59 + m_Width: 33 + m_Height: 37 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 31 + m_Metrics: + m_Width: 50.484375 + m_Height: 67.5 + m_HorizontalBearingX: -1.4375 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 42.5625 + m_GlyphRect: + m_X: 219 + m_Y: 264 + m_Width: 52 + m_Height: 68 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 32 + m_Metrics: + m_Width: 34.109375 + m_Height: 36.359375 + m_HorizontalBearingX: -1.265625 + m_HorizontalBearingY: 32.40625 + m_HorizontalAdvance: 29.96875 + m_GlyphRect: + m_X: 10 + m_Y: 36 + m_Width: 35 + m_Height: 37 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 33 + m_Metrics: + m_Width: 41.578125 + m_Height: 90 + m_HorizontalBearingX: -6.125 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 28.078125 + m_GlyphRect: + m_X: 405 + m_Y: 217 + m_Width: 43 + m_Height: 91 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 34 + m_Metrics: + m_Width: 39.59375 + m_Height: 56.4375 + m_HorizontalBearingX: -1.796875 + m_HorizontalBearingY: 31.234375 + m_HorizontalAdvance: 35.015625 + m_GlyphRect: + m_X: 599 + m_Y: 194 + m_Width: 40 + m_Height: 58 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 35 + m_Metrics: + m_Width: 45.171875 + m_Height: 67.6875 + m_HorizontalBearingX: 0.546875 + m_HorizontalBearingY: 64.265625 + m_HorizontalAdvance: 42.84375 + m_GlyphRect: + m_X: 352 + m_Y: 10 + m_Width: 46 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 36 + m_Metrics: + m_Width: 24.65625 + m_Height: 48.875 + m_HorizontalBearingX: -0.453125 + m_HorizontalBearingY: 46.53125 + m_HorizontalAdvance: 21.6875 + m_GlyphRect: + m_X: 10 + m_Y: 170 + m_Width: 26 + m_Height: 50 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 38 + m_Metrics: + m_Width: 42.390625 + m_Height: 67.6875 + m_HorizontalBearingX: 0.359375 + m_HorizontalBearingY: 64.265625 + m_HorizontalAdvance: 40.140625 + m_GlyphRect: + m_X: 352 + m_Y: 98 + m_Width: 43 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 39 + m_Metrics: + m_Width: 30.96875 + m_Height: 67.5 + m_HorizontalBearingX: 0.265625 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 21.234375 + m_GlyphRect: + m_X: 10 + m_Y: 365 + m_Width: 32 + m_Height: 68 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 40 + m_Metrics: + m_Width: 64.09375 + m_Height: 32.671875 + m_HorizontalBearingX: -3.15625 + m_HorizontalBearingY: 29.875 + m_HorizontalAdvance: 58.140625 + m_GlyphRect: + m_X: 196 + m_Y: 119 + m_Width: 65 + m_Height: 33 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 41 + m_Metrics: + m_Width: 48.0625 + m_Height: 28.078125 + m_HorizontalBearingX: -3.421875 + m_HorizontalBearingY: 26.28125 + m_HorizontalAdvance: 41.9375 + m_GlyphRect: + m_X: 774 + m_Y: 10 + m_Width: 49 + m_Height: 29 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 42 + m_Metrics: + m_Width: 36.546875 + m_Height: 34.5625 + m_HorizontalBearingX: -0.90625 + m_HorizontalBearingY: 31.6875 + m_HorizontalAdvance: 32.84375 + m_GlyphRect: + m_X: 227 + m_Y: 65 + m_Width: 37 + m_Height: 35 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 43 + m_Metrics: + m_Width: 40.859375 + m_Height: 58.765625 + m_HorizontalBearingX: -8.453125 + m_HorizontalBearingY: 33.5625 + m_HorizontalAdvance: 35.1875 + m_GlyphRect: + m_X: 135 + m_Y: 102 + m_Width: 42 + m_Height: 60 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 44 + m_Metrics: + m_Width: 40.21875 + m_Height: 57.328125 + m_HorizontalBearingX: -1.34375 + m_HorizontalBearingY: 32.125 + m_HorizontalAdvance: 36.09375 + m_GlyphRect: + m_X: 486 + m_Y: 203 + m_Width: 41 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 45 + m_Metrics: + m_Width: 34.28125 + m_Height: 39.15625 + m_HorizontalBearingX: 0.09375 + m_HorizontalBearingY: 36.8125 + m_HorizontalAdvance: 31.3125 + m_GlyphRect: + m_X: 283 + m_Y: 102 + m_Width: 35 + m_Height: 40 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 46 + m_Metrics: + m_Width: 35.359375 + m_Height: 40.140625 + m_HorizontalBearingX: -1.796875 + m_HorizontalBearingY: 35.546875 + m_HorizontalAdvance: 31.046875 + m_GlyphRect: + m_X: 479 + m_Y: 10 + m_Width: 36 + m_Height: 41 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 47 + m_Metrics: + m_Width: 28.890625 + m_Height: 57.875 + m_HorizontalBearingX: -0.359375 + m_HorizontalBearingY: 53.734375 + m_HorizontalAdvance: 25.65625 + m_GlyphRect: + m_X: 10 + m_Y: 92 + m_Width: 30 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 48 + m_Metrics: + m_Width: 42.296875 + m_Height: 29.515625 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 26.8125 + m_HorizontalAdvance: 39.421875 + m_GlyphRect: + m_X: 417 + m_Y: 10 + m_Width: 43 + m_Height: 30 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 49 + m_Metrics: + m_Width: 38.609375 + m_Height: 33.390625 + m_HorizontalBearingX: 0.90625 + m_HorizontalBearingY: 29.875 + m_HorizontalAdvance: 36.625 + m_GlyphRect: + m_X: 280 + m_Y: 161 + m_Width: 40 + m_Height: 34 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 50 + m_Metrics: + m_Width: 58.40625 + m_Height: 33.390625 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 29.875 + m_HorizontalAdvance: 55.53125 + m_GlyphRect: + m_X: 64 + m_Y: 37 + m_Width: 59 + m_Height: 34 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 51 + m_Metrics: + m_Width: 39.40625 + m_Height: 35.1875 + m_HorizontalBearingX: 0.90625 + m_HorizontalBearingY: 29.875 + m_HorizontalAdvance: 37.625 + m_GlyphRect: + m_X: 227 + m_Y: 10 + m_Width: 41 + m_Height: 36 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 52 + m_Metrics: + m_Width: 39.6875 + m_Height: 53.015625 + m_HorizontalBearingX: -1.796875 + m_HorizontalBearingY: 27.8125 + m_HorizontalAdvance: 35.015625 + m_GlyphRect: + m_X: 715 + m_Y: 10 + m_Width: 40 + m_Height: 54 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 57 + m_Metrics: + m_Width: 41.578125 + m_Height: 72.625 + m_HorizontalBearingX: 0.546875 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 45.90625 + m_GlyphRect: + m_X: 788 + m_Y: 102 + m_Width: 43 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 66 + m_Metrics: + m_Width: 31.046875 + m_Height: 65.703125 + m_HorizontalBearingX: 9.71875 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 39.328125 + m_GlyphRect: + m_X: 546 + m_Y: 203 + m_Width: 32 + m_Height: 66 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 72 + m_Metrics: + m_Width: 35.640625 + m_Height: 6.125 + m_HorizontalBearingX: 0.71875 + m_HorizontalBearingY: 5.21875 + m_HorizontalAdvance: 47.34375 + m_GlyphRect: + m_X: 10 + m_Y: 10 + m_Width: 37 + m_Height: 7 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 476 + m_Metrics: + m_Width: 66.234375 + m_Height: 7.375 + m_HorizontalBearingX: -1.796875 + m_HorizontalBearingY: 1.4375 + m_HorizontalAdvance: 76.046875 + m_GlyphRect: + m_X: 66 + m_Y: 10 + m_Width: 67 + m_Height: 8 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 485 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 23.40625 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 514 + m_Metrics: + m_Width: 32.125 + m_Height: 13.40625 + m_HorizontalBearingX: 4.6875 + m_HorizontalBearingY: 22.953125 + m_HorizontalAdvance: 45.265625 + m_GlyphRect: + m_X: 143 + m_Y: 181 + m_Width: 33 + m_Height: 14 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 517 + m_Metrics: + m_Width: 17.546875 + m_Height: 24.484375 + m_HorizontalBearingX: 1.890625 + m_HorizontalBearingY: 28.4375 + m_HorizontalAdvance: 27.90625 + m_GlyphRect: + m_X: 277 + m_Y: 214 + m_Width: 19 + m_Height: 26 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 75 + m_Metrics: + m_Width: 7.734375 + m_Height: 12.953125 + m_HorizontalBearingX: 11.796875 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 11.25 + m_GlyphRect: + m_X: 658 + m_Y: 194 + m_Width: 9 + m_Height: 14 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 37 + m_Metrics: + m_Width: 39.78125 + m_Height: 72.1875 + m_HorizontalBearingX: -17.28125 + m_HorizontalBearingY: 46.984375 + m_HorizontalAdvance: 19.625 + m_GlyphRect: + m_X: 467 + m_Y: 281 + m_Width: 41 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 13 + m_Metrics: + m_Width: 57.59375 + m_Height: 72.625 + m_HorizontalBearingX: -6.65625 + m_HorizontalBearingY: 64.796875 + m_HorizontalAdvance: 51.296875 + m_GlyphRect: + m_X: 290 + m_Y: 278 + m_Width: 58 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 68 + m_Metrics: + m_Width: 7.75 + m_Height: 12.96875 + m_HorizontalBearingX: -0.90625 + m_HorizontalBearingY: 5.046875 + m_HorizontalAdvance: 17.640625 + m_GlyphRect: + m_X: 658 + m_Y: 227 + m_Width: 8 + m_Height: 14 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 69 + m_Metrics: + m_Width: 7.5625 + m_Height: 6.125 + m_HorizontalBearingX: 0.71875 + m_HorizontalBearingY: 5.21875 + m_HorizontalAdvance: 19.265625 + m_GlyphRect: + m_X: 658 + m_Y: 260 + m_Width: 9 + m_Height: 7 + m_Scale: 1 + m_AtlasIndex: 0 + m_CharacterTable: + - m_ElementType: 1 + m_Unicode: 13 + m_GlyphIndex: 485 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 32 + m_GlyphIndex: 1 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 51 + m_GlyphIndex: 57 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 60 + m_GlyphIndex: 517 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 61 + m_GlyphIndex: 514 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 63 + m_GlyphIndex: 66 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 65 + m_GlyphIndex: 2 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 66 + m_GlyphIndex: 3 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 67 + m_GlyphIndex: 4 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 68 + m_GlyphIndex: 5 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 69 + m_GlyphIndex: 6 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 72 + m_GlyphIndex: 9 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 73 + m_GlyphIndex: 10 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 77 + m_GlyphIndex: 14 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 78 + m_GlyphIndex: 15 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 79 + m_GlyphIndex: 16 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 80 + m_GlyphIndex: 17 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 83 + m_GlyphIndex: 20 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 84 + m_GlyphIndex: 21 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 85 + m_GlyphIndex: 22 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 86 + m_GlyphIndex: 23 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 87 + m_GlyphIndex: 24 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 89 + m_GlyphIndex: 26 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 95 + m_GlyphIndex: 476 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 97 + m_GlyphIndex: 28 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 98 + m_GlyphIndex: 29 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 99 + m_GlyphIndex: 30 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 100 + m_GlyphIndex: 31 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 101 + m_GlyphIndex: 32 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 102 + m_GlyphIndex: 33 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 103 + m_GlyphIndex: 34 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 104 + m_GlyphIndex: 35 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 105 + m_GlyphIndex: 36 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 107 + m_GlyphIndex: 38 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 108 + m_GlyphIndex: 39 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 109 + m_GlyphIndex: 40 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 110 + m_GlyphIndex: 41 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 111 + m_GlyphIndex: 42 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 112 + m_GlyphIndex: 43 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 113 + m_GlyphIndex: 44 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 114 + m_GlyphIndex: 45 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 115 + m_GlyphIndex: 46 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 116 + m_GlyphIndex: 47 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 117 + m_GlyphIndex: 48 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 118 + m_GlyphIndex: 49 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 119 + m_GlyphIndex: 50 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 120 + m_GlyphIndex: 51 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 121 + m_GlyphIndex: 52 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8230 + m_GlyphIndex: 72 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 39 + m_GlyphIndex: 75 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 106 + m_GlyphIndex: 37 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 76 + m_GlyphIndex: 13 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 44 + m_GlyphIndex: 68 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 46 + m_GlyphIndex: 69 + m_Scale: 1 + m_AtlasTextures: + - {fileID: -3630272914525870158} + m_AtlasTextureIndex: 0 + m_IsMultiAtlasTexturesEnabled: 0 + m_ClearDynamicDataOnBuild: 0 + m_UsedGlyphRects: + - m_X: 0 + m_Y: 0 + m_Width: 56 + m_Height: 26 + - m_X: 56 + m_Y: 0 + m_Width: 86 + m_Height: 27 + - m_X: 142 + m_Y: 0 + m_Width: 75 + m_Height: 92 + - m_X: 0 + m_Y: 26 + m_Width: 54 + m_Height: 56 + - m_X: 54 + m_Y: 27 + m_Width: 78 + m_Height: 53 + - m_X: 54 + m_Y: 80 + m_Width: 71 + m_Height: 92 + - m_X: 217 + m_Y: 0 + m_Width: 60 + m_Height: 55 + - m_X: 0 + m_Y: 82 + m_Width: 49 + m_Height: 78 + - m_X: 277 + m_Y: 0 + m_Width: 65 + m_Height: 92 + - m_X: 217 + m_Y: 55 + m_Width: 56 + m_Height: 54 + - m_X: 125 + m_Y: 92 + m_Width: 61 + m_Height: 79 + - m_X: 342 + m_Y: 0 + m_Width: 65 + m_Height: 88 + - m_X: 0 + m_Y: 160 + m_Width: 45 + m_Height: 69 + - m_X: 407 + m_Y: 0 + m_Width: 62 + m_Height: 49 + - m_X: 469 + m_Y: 0 + m_Width: 55 + m_Height: 60 + - m_X: 407 + m_Y: 49 + m_Width: 52 + m_Height: 56 + - m_X: 342 + m_Y: 88 + m_Width: 62 + m_Height: 88 + - m_X: 273 + m_Y: 92 + m_Width: 54 + m_Height: 59 + - m_X: 186 + m_Y: 109 + m_Width: 84 + m_Height: 52 + - m_X: 186 + m_Y: 161 + m_Width: 81 + m_Height: 93 + - m_X: 45 + m_Y: 172 + m_Width: 88 + m_Height: 92 + - m_X: 524 + m_Y: 0 + m_Width: 81 + m_Height: 101 + - m_X: 605 + m_Y: 0 + m_Width: 100 + m_Height: 92 + - m_X: 459 + m_Y: 60 + m_Width: 64 + m_Height: 55 + - m_X: 270 + m_Y: 151 + m_Width: 59 + m_Height: 53 + - m_X: 705 + m_Y: 0 + m_Width: 59 + m_Height: 73 + - m_X: 764 + m_Y: 0 + m_Width: 68 + m_Height: 48 + - m_X: 832 + m_Y: 0 + m_Width: 73 + m_Height: 92 + - m_X: 905 + m_Y: 0 + m_Width: 69 + m_Height: 92 + - m_X: 705 + m_Y: 73 + m_Width: 73 + m_Height: 92 + - m_X: 605 + m_Y: 92 + m_Width: 71 + m_Height: 92 + - m_X: 523 + m_Y: 101 + m_Width: 66 + m_Height: 92 + - m_X: 404 + m_Y: 115 + m_Width: 72 + m_Height: 92 + - m_X: 329 + m_Y: 176 + m_Width: 66 + m_Height: 92 + - m_X: 133 + m_Y: 254 + m_Width: 76 + m_Height: 92 + - m_X: 209 + m_Y: 254 + m_Width: 71 + m_Height: 87 + - m_X: 0 + m_Y: 264 + m_Width: 59 + m_Height: 91 + - m_X: 59 + m_Y: 264 + m_Width: 73 + m_Height: 92 + - m_X: 267 + m_Y: 204 + m_Width: 38 + m_Height: 45 + - m_X: 778 + m_Y: 92 + m_Width: 62 + m_Height: 92 + - m_X: 676 + m_Y: 165 + m_Width: 72 + m_Height: 92 + - m_X: 0 + m_Y: 355 + m_Width: 51 + m_Height: 87 + - m_X: 589 + m_Y: 184 + m_Width: 59 + m_Height: 77 + - m_X: 476 + m_Y: 193 + m_Width: 60 + m_Height: 78 + - m_X: 395 + m_Y: 207 + m_Width: 62 + m_Height: 110 + - m_X: 536 + m_Y: 193 + m_Width: 51 + m_Height: 85 + - m_X: 133 + m_Y: 171 + m_Width: 52 + m_Height: 33 + - m_X: 648 + m_Y: 184 + m_Width: 28 + m_Height: 33 + - m_X: 457 + m_Y: 271 + m_Width: 60 + m_Height: 92 + - m_X: 280 + m_Y: 268 + m_Width: 77 + m_Height: 92 + - m_X: 648 + m_Y: 217 + m_Width: 27 + m_Height: 33 + - m_X: 648 + m_Y: 250 + m_Width: 28 + m_Height: 26 + m_FreeGlyphRects: + - m_X: 54 + m_Y: 26 + m_Width: 2 + m_Height: 1 + - m_X: 132 + m_Y: 27 + m_Width: 10 + m_Height: 65 + - m_X: 125 + m_Y: 80 + m_Width: 17 + m_Height: 12 + - m_X: 273 + m_Y: 55 + m_Width: 4 + m_Height: 37 + - m_X: 186 + m_Y: 92 + m_Width: 31 + m_Height: 17 + - m_X: 49 + m_Y: 82 + m_Width: 5 + m_Height: 90 + - m_X: 45 + m_Y: 160 + m_Width: 9 + m_Height: 12 + - m_X: 459 + m_Y: 49 + m_Width: 10 + m_Height: 11 + - m_X: 327 + m_Y: 92 + m_Width: 15 + m_Height: 59 + - m_X: 270 + m_Y: 109 + m_Width: 3 + m_Height: 42 + - m_X: 974 + m_Y: 0 + m_Width: 49 + m_Height: 1023 + - m_X: 764 + m_Y: 48 + m_Width: 68 + m_Height: 25 + - m_X: 523 + m_Y: 60 + m_Width: 1 + m_Height: 41 + - m_X: 404 + m_Y: 88 + m_Width: 3 + m_Height: 27 + - m_X: 404 + m_Y: 105 + m_Width: 55 + m_Height: 10 + - m_X: 329 + m_Y: 92 + m_Width: 13 + m_Height: 84 + - m_X: 0 + m_Y: 229 + m_Width: 45 + m_Height: 35 + - m_X: 132 + m_Y: 264 + m_Width: 1 + m_Height: 759 + - m_X: 267 + m_Y: 161 + m_Width: 3 + m_Height: 43 + - m_X: 267 + m_Y: 249 + m_Width: 62 + m_Height: 5 + - m_X: 840 + m_Y: 92 + m_Width: 183 + m_Height: 931 + - m_X: 778 + m_Y: 48 + m_Width: 54 + m_Height: 44 + - m_X: 676 + m_Y: 92 + m_Width: 29 + m_Height: 73 + - m_X: 748 + m_Y: 184 + m_Width: 275 + m_Height: 839 + - m_X: 748 + m_Y: 165 + m_Width: 30 + m_Height: 858 + - m_X: 0 + m_Y: 442 + m_Width: 1023 + m_Height: 581 + - m_X: 51 + m_Y: 355 + m_Width: 8 + m_Height: 668 + - m_X: 589 + m_Y: 101 + m_Width: 16 + m_Height: 83 + - m_X: 476 + m_Y: 115 + m_Width: 47 + m_Height: 78 + - m_X: 395 + m_Y: 176 + m_Width: 9 + m_Height: 31 + - m_X: 587 + m_Y: 193 + m_Width: 2 + m_Height: 830 + - m_X: 125 + m_Y: 171 + m_Width: 8 + m_Height: 1 + - m_X: 133 + m_Y: 204 + m_Width: 53 + m_Height: 50 + - m_X: 185 + m_Y: 171 + m_Width: 1 + m_Height: 83 + - m_X: 51 + m_Y: 363 + m_Width: 972 + m_Height: 660 + - m_X: 457 + m_Y: 207 + m_Width: 19 + m_Height: 64 + - m_X: 517 + m_Y: 278 + m_Width: 506 + m_Height: 745 + - m_X: 517 + m_Y: 271 + m_Width: 19 + m_Height: 752 + - m_X: 280 + m_Y: 249 + m_Width: 49 + m_Height: 19 + - m_X: 305 + m_Y: 204 + m_Width: 24 + m_Height: 64 + - m_X: 357 + m_Y: 268 + m_Width: 38 + m_Height: 755 + - m_X: 209 + m_Y: 341 + m_Width: 71 + m_Height: 682 + - m_X: 132 + m_Y: 346 + m_Width: 148 + m_Height: 677 + - m_X: 51 + m_Y: 360 + m_Width: 406 + m_Height: 663 + - m_X: 51 + m_Y: 356 + m_Width: 229 + m_Height: 667 + - m_X: 357 + m_Y: 317 + m_Width: 100 + m_Height: 706 + - m_X: 676 + m_Y: 257 + m_Width: 347 + m_Height: 766 + - m_X: 587 + m_Y: 276 + m_Width: 436 + m_Height: 747 + - m_X: 587 + m_Y: 261 + m_Width: 61 + m_Height: 762 + - m_X: 675 + m_Y: 217 + m_Width: 1 + m_Height: 33 + m_fontInfo: + Name: + PointSize: 0 + Scale: 0 + CharacterCount: 0 + LineHeight: 0 + Baseline: 0 + Ascender: 0 + CapHeight: 0 + Descender: 0 + CenterLine: 0 + SuperscriptOffset: 0 + SubscriptOffset: 0 + SubSize: 0 + Underline: 0 + UnderlineThickness: 0 + strikethrough: 0 + strikethroughThickness: 0 + TabWidth: 0 + Padding: 0 + AtlasWidth: 0 + AtlasHeight: 0 + atlas: {fileID: 0} + m_AtlasWidth: 1024 + m_AtlasHeight: 1024 + m_AtlasPadding: 9 + m_AtlasRenderMode: 4165 + m_glyphInfoList: [] + m_KerningTable: + kerningPairs: [] + m_FontFeatureTable: + m_GlyphPairAdjustmentRecords: [] + fallbackFontAssets: [] + m_FallbackFontAssetTable: [] + m_CreationSettings: + sourceFontFileName: + sourceFontFileGUID: 2dedba84ce1ce5c4c8bfb2b6ae52aabc + pointSizeSamplingMode: 0 + pointSize: 90 + padding: 9 + packingMode: 0 + atlasWidth: 1024 + atlasHeight: 1024 + characterSetSelectionMode: 7 + characterSequence: + referencedFontAssetGUID: + referencedTextAssetGUID: + fontStyle: 0 + fontStyleModifier: 0 + renderMode: 4165 + includeFontFeatures: 0 + m_FontWeightTable: + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + fontWeights: [] + normalStyle: 0 + normalSpacingOffset: 1 + boldStyle: 0.75 + boldSpacing: 7 + italicStyle: 35 + tabSize: 10 diff --git a/Text2Texture/Resources/TTT_DancingScript TMP.asset.meta b/Text2Texture/Resources/TTT_DancingScript TMP.asset.meta new file mode 100644 index 0000000..09b3e97 --- /dev/null +++ b/Text2Texture/Resources/TTT_DancingScript TMP.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e7d6a5821a387564caacc9929e10eb22 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Text2Texture/package.json b/Text2Texture/package.json new file mode 100644 index 0000000..44bfcb6 --- /dev/null +++ b/Text2Texture/package.json @@ -0,0 +1,17 @@ +{ + "name": "com.dreadscripts.text2texture", + "displayName": "DreadScripts - Text2Texture", + "version": "1.0.2", + "description": "Easily generate a Normal Map, Mask, Custom Text Texture or a Material from given text input.", + "gitDependencies": {}, + "vpmDependencies": {}, + "author": { + "name": "Dreadrith", + "email": "dreadscripts@gmail.com", + "url": "https://www.dreadrith.com" + }, + "legacyFolders": {}, + "legacyFiles": {}, + "type": "tool", + "unity": "2019.4" +} \ No newline at end of file diff --git a/Text2Texture/package.json.meta b/Text2Texture/package.json.meta new file mode 100644 index 0000000..3cd6ce8 --- /dev/null +++ b/Text2Texture/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 978fe590e329822418f0a78fbd4df2fe +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TextureUtility.meta b/TextureUtility.meta new file mode 100644 index 0000000..617b577 --- /dev/null +++ b/TextureUtility.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b2e8bd480b2dd69428b5ababda8d1640 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TextureUtility/Editor.meta b/TextureUtility/Editor.meta new file mode 100644 index 0000000..6a8e505 --- /dev/null +++ b/TextureUtility/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 46d12e0502ed1de4fa489dfa786aa027 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TextureUtility/Editor/ChannelTexture.cs b/TextureUtility/Editor/ChannelTexture.cs new file mode 100644 index 0000000..68efa8b --- /dev/null +++ b/TextureUtility/Editor/ChannelTexture.cs @@ -0,0 +1,163 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace DreadScripts.TextureUtility +{ + [System.Serializable] + public class ChannelTexture + { + public string name; + public Texture2D texture; + public bool invert; + public Color defaultColor; + public ColorMode mode = ColorMode.Red; + + public enum ColorMode + { + Red, + Green, + Blue, + Alpha + } + + public ChannelTexture(string n, int mode) + { + name = n; + SetMode(mode, true); + if (n == "Alpha") + defaultColor = Color.white; + } + + public void SetMode(int i, bool ignoreSave = false) + { + switch (i) + { + case 0: + mode = ColorMode.Red; + break; + case 1: + mode = ColorMode.Green; + break; + case 2: + mode = ColorMode.Blue; + break; + case 3: + mode = ColorMode.Alpha; + break; + } + + if (!ignoreSave) + { + EditorPrefs.SetInt("TextureUtilityChannel" + name, i); + } + } + + public Texture2D GetChannelColors(int width, int height, out float[] colors, bool unloadTempTexture) + { + Texture2D textureToUse; + if (texture) + textureToUse = texture; + else + { + textureToUse = new Texture2D(1, 1, TextureFormat.RGBA32, false, true); + textureToUse.SetPixel(0, 0, defaultColor); + textureToUse.Apply(); + } + + Texture2D newTexture = TextureUtility.GetColors(textureToUse, width, height, out Color[] myColors, unloadTempTexture); + colors = myColors.Select(c => + { + switch (mode) + { + case ColorMode.Red: + return c.r; + case ColorMode.Green: + return c.g; + case ColorMode.Blue: + return c.b; + default: + return c.a; + } + }).ToArray(); + if (invert) + { + for (int i = 0; i < colors.Length; i++) + { + colors[i] = 1 - colors[i]; + } + } + + if (!texture && unloadTempTexture) + Object.DestroyImmediate(textureToUse); + + return newTexture; + + } + + public void DrawGUI() + { + GUIStyle buttonGroupStyle = new GUIStyle(GUI.skin.GetStyle("toolbarbutton")) {padding = new RectOffset(1, 1, 1, 1), margin = new RectOffset(0, 0, 1, 1)}; + using (new GUILayout.VerticalScope("box")) + { + using (new GUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + GUILayout.Label(name, "boldlabel"); + GUILayout.FlexibleSpace(); + } + + using (new GUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + bool dummy; + EditorGUI.BeginChangeCheck(); + dummy = GUILayout.Toggle(mode == ColorMode.Red, "R", buttonGroupStyle, GUILayout.Width(16)); + if (EditorGUI.EndChangeCheck()) + if (dummy) + SetMode(0); + + EditorGUI.BeginChangeCheck(); + dummy = GUILayout.Toggle(mode == ColorMode.Green, "G", buttonGroupStyle, GUILayout.Width(16)); + if (EditorGUI.EndChangeCheck()) + if (dummy) + SetMode(1); + + EditorGUI.BeginChangeCheck(); + dummy = GUILayout.Toggle(mode == ColorMode.Blue, "B", buttonGroupStyle, GUILayout.Width(16)); + if (EditorGUI.EndChangeCheck()) + if (dummy) + SetMode(2); + + EditorGUI.BeginChangeCheck(); + dummy = GUILayout.Toggle(mode == ColorMode.Alpha, "A", buttonGroupStyle, GUILayout.Width(16)); + if (EditorGUI.EndChangeCheck()) + if (dummy) + SetMode(3); + GUILayout.FlexibleSpace(); + } + + using (new GUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + Rect myTextureRect = GUILayoutUtility.GetRect(66, 66); + Rect myColorRect = new Rect(myTextureRect) {x = myTextureRect.x + 1, y = myTextureRect.y + 45, width = 20, height = 20}; + + if (!texture) + defaultColor = EditorGUI.ColorField(myColorRect, GUIContent.none, defaultColor, false, false, false); + texture = (Texture2D) EditorGUI.ObjectField(myTextureRect, texture, typeof(Texture2D), false); + if (!texture) + defaultColor = EditorGUI.ColorField(myColorRect, GUIContent.none, defaultColor, false, false, false); + + + GUILayout.FlexibleSpace(); + } + + invert = GUILayout.Toggle(invert, "Invert", "toolbarbutton"); + } + } + } +} + diff --git a/TextureUtility/Editor/ChannelTexture.cs.meta b/TextureUtility/Editor/ChannelTexture.cs.meta new file mode 100644 index 0000000..5213dac --- /dev/null +++ b/TextureUtility/Editor/ChannelTexture.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 50ad0f4ea47ebb449b51d9cf0321eee8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TextureUtility/Editor/TextureAutoPacker.cs b/TextureUtility/Editor/TextureAutoPacker.cs new file mode 100644 index 0000000..621e389 --- /dev/null +++ b/TextureUtility/Editor/TextureAutoPacker.cs @@ -0,0 +1,373 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + + +namespace DreadScripts.TextureUtility +{ + public class TextureAutoPackerWindow : EditorWindow + { + private static TextureAutoPackerData data; + private static SerializedObject serializedObject; + private static SerializedProperty _active; + private static SerializedProperty _activeModules; + private static UnityEditorInternal.ReorderableList modulesList; + private static Texture2D titleTexture; + + [MenuItem("DreadTools/Utility/Texture Auto-Packer")] + public static void ShowWindow() + { + EditorWindow w = GetWindow(false, "Texture Auto-Packer", true); + if (!titleTexture) + { + titleTexture = TextureUtility.GetColors((Texture2D)EditorGUIUtility.IconContent("Texture2D Icon").image, 16, 16, out _); + titleTexture.Apply(); + } + w.titleContent.image = titleTexture; + } + private void OnEnable() + { + data = TextureAutoPackerData.GetInstance(); + serializedObject = new SerializedObject(data); + _active = serializedObject.FindProperty("active"); + _activeModules = serializedObject.FindProperty("activeModules"); + modulesList = new UnityEditorInternal.ReorderableList(serializedObject, _activeModules, true, true, true, false) + { + drawElementCallback = DrawElement, + drawHeaderCallback = DrawHeader + }; + } + + private void DrawHeader(Rect rect) + { + EditorGUI.LabelField(rect, "Active Modules"); + } + + private void DrawElement(Rect rect, int index, bool isActive, bool isFocused) + { + if (!(index < _activeModules.arraySize && index >= 0)) + return; + rect.y += 2; + rect.height = EditorGUIUtility.singleLineHeight; + if (GUI.Button(new Rect(rect.x, rect.y, 20, rect.height), "X")) + { + _activeModules.DeleteArrayElementAtIndex(index); + return; + } + rect.x += 20; + rect.width -= 20; + _activeModules.GetArrayElementAtIndex(index).objectReferenceValue = (TextureAutoPackerModule)EditorGUI.ObjectField(rect, _activeModules.GetArrayElementAtIndex(index).objectReferenceValue, typeof(TextureAutoPackerModule), false); + } + + private void OnGUI() + { + serializedObject.Update(); + Color og = GUI.backgroundColor; + GUI.backgroundColor = _active.boolValue ? Color.green : Color.grey; + _active.boolValue = GUILayout.Toggle(_active.boolValue, new GUIContent("Active","Determine whether the Auto-Packer should initiate on texture import"), "Toolbarbutton"); + GUI.backgroundColor = og; + + EditorGUI.BeginDisabledGroup(!_active.boolValue); + modulesList.DoLayoutList(); + if (GUILayout.Button(new GUIContent("Force Check", "Initiate the Auto-Packer without having to trigger a texture import"))) + { + TextureAutoPacker.InitiateAutoPacking(); + TextureAutoPackerProcessor.OnAutoPackingEnd(); + } + EditorGUI.EndDisabledGroup(); + + serializedObject.ApplyModifiedProperties(); + } + } + + [CustomEditor(typeof(TextureAutoPackerModule))] + public class TextureAutoPacker : Editor + { + static GUIContent removeIcon; + TextureAutoPackerModule module; + SerializedProperty packingList; + GUIStyle freeButtonStyle; + public override void OnInspectorGUI() + { + freeButtonStyle = new GUIStyle("toolbarbutton") { padding = new RectOffset(1, 1, 1, 1) }; + serializedObject.Update(); + + if (GUILayout.Button(new GUIContent("Add","Create a new Auto-Packed texture"), "toolbarbutton")) + { + module.packedTextures.Add(new AutoPackedTexture()); + serializedObject.Update(); + } + + for (int i = packingList.arraySize - 1; i >= 0; i--) + DrawPackingProperty(i); + + + serializedObject.ApplyModifiedProperties(); + } + private void OnEnable() + { + module = (TextureAutoPackerModule)target; + packingList = serializedObject.FindProperty("packedTextures"); + removeIcon = EditorGUIUtility.IconContent("winbtn_win_close"); + } + + static bool Running; + public static bool InitiateAutoPacking() + { + bool HasPacked=false; + if (Running) + return true; + Running = true; + TextureAutoPackerData data = TextureAutoPackerData.GetInstance(); + if (!data.active) + return false; + data.activeModules.ForEach(m => + { + if (!m) + goto Skip; + + SerializedObject module = new SerializedObject(m); + module.Update(); + for (int i = 0; i < m.packedTextures.Count; i++) + { + if (m.packedTextures[i].WasModified()) + { + HasPacked = true; + string newTexturePath = m.packedTextures[i].Pack(); + + if (string.IsNullOrEmpty(newTexturePath)) + goto Skip; + + SerializedProperty packedTexture = module.FindProperty("packedTextures").GetArrayElementAtIndex(i); + SerializedProperty hashes = packedTexture.FindPropertyRelative("channelsHashes"); + for (int j = 0; j < 4; j++) + { + hashes.GetArrayElementAtIndex(j).stringValue = string.Empty; + if (m.packedTextures[i].channels[j].texture) + hashes.GetArrayElementAtIndex(j).stringValue = m.packedTextures[i].channels[j].texture.imageContentsHash.ToString(); + } + packedTexture.FindPropertyRelative("forceModified").boolValue = false; + AssetDatabase.ImportAsset(newTexturePath, ImportAssetOptions.ForceUpdate); + TextureAutoPackerProcessor.PathToProperty.Add(new System.Tuple(newTexturePath, packedTexture.FindPropertyRelative("packed"))); + } + } + module.ApplyModifiedPropertiesWithoutUndo(); + + Skip:; + }); + Running = false; + + return HasPacked; + } + + public void DrawPackingProperty(int index) + { + SerializedProperty t = packingList.GetArrayElementAtIndex(index); + SerializedProperty _name = t.FindPropertyRelative("name"); + SerializedProperty _expanded = t.FindPropertyRelative("expanded"); + SerializedProperty _channels = t.FindPropertyRelative("channels"); + SerializedProperty _packed = t.FindPropertyRelative("packed"); + SerializedProperty _encoding = t.FindPropertyRelative("encoding"); + SerializedProperty _quality = t.FindPropertyRelative("jpgQuality"); + SerializedProperty _modified = t.FindPropertyRelative("forceModified"); + AutoPackedTexture autoTexture = ((TextureAutoPackerModule)t.serializedObject.targetObject).packedTextures[index]; + using (new GUILayout.VerticalScope("box")) + { + using (new GUILayout.HorizontalScope()) + { + using (new GUILayout.HorizontalScope("toolbarbutton", GUILayout.Width(12))) + _expanded.boolValue = GUILayout.Toggle(_expanded.boolValue, GUIContent.none, "foldout", GUILayout.Width(10)); + + using (new GUILayout.HorizontalScope("toolbarbutton")) + _name.stringValue = EditorGUILayout.TextField(GUIContent.none, _name.stringValue, GUI.skin.label); + + if (GUILayout.Button(removeIcon, freeButtonStyle, GUILayout.Width(17))) + { + packingList.DeleteArrayElementAtIndex(index); + return; + } + } + if (_expanded.boolValue) + { + using (new GUILayout.HorizontalScope("box")) + { + _encoding.enumValueIndex = (int)(TextureUtility.TexEncoding)EditorGUILayout.EnumPopup((TextureUtility.TexEncoding)_encoding.enumValueIndex, GUILayout.Width(95)); + + EditorGUI.BeginDisabledGroup(_encoding.enumValueIndex != 1); + EditorGUIUtility.labelWidth = 50; + _quality.intValue = EditorGUILayout.IntSlider("Quality", _quality.intValue, 1, 100); + EditorGUIUtility.labelWidth = 0; + EditorGUI.EndDisabledGroup(); + } + using (new GUILayout.HorizontalScope()) + { + for (int i = 0; i < _channels.arraySize; i++) + { + if (DrawChannelProperty(_channels.GetArrayElementAtIndex(i))) + _modified.boolValue = true; + } + GUILayout.Label("", GUI.skin.verticalSlider, GUILayout.Height(133)); + using (new GUILayout.VerticalScope("box")) + { + using (new GUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + GUILayout.Label("Packed", "boldlabel"); + GUILayout.FlexibleSpace(); + } + GUILayout.Label(GUIContent.none); + using (new GUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + _packed.objectReferenceValue = (Texture2D)EditorGUILayout.ObjectField("", _packed.objectReferenceValue, typeof(Texture2D), false, GUILayout.Width(66)); + GUILayout.FlexibleSpace(); + } + using (new GUILayout.HorizontalScope()) + { + if (GUILayout.Button("Force Pack", "toolbarbutton")) + { + string newTexturePath = autoTexture.Pack(); + if (!string.IsNullOrEmpty(newTexturePath)) + { + AssetDatabase.ImportAsset(newTexturePath); + _packed.objectReferenceValue = AssetDatabase.LoadAssetAtPath(newTexturePath); + } + } + } + } + } + } + } + } + + public bool DrawChannelProperty(SerializedProperty channel) + { + bool edited = false; + SerializedProperty _name = channel.FindPropertyRelative("name"); + SerializedProperty _texture = channel.FindPropertyRelative("texture"); + SerializedProperty _invert = channel.FindPropertyRelative("invert"); + SerializedProperty _mode = channel.FindPropertyRelative("mode"); + + + GUIStyle buttonGroupStyle = new GUIStyle(GUI.skin.GetStyle("toolbarbutton")) { padding = new RectOffset(1, 1, 1, 1), margin = new RectOffset(0, 0, 1, 1) }; + using (new GUILayout.VerticalScope("box")) + { + using (new GUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + GUILayout.Label(_name.stringValue, "boldlabel"); + GUILayout.FlexibleSpace(); + } + using (new GUILayout.HorizontalScope()) + { + EditorGUI.BeginChangeCheck(); + + GUILayout.FlexibleSpace(); + bool dummy; + EditorGUI.BeginChangeCheck(); + dummy = GUILayout.Toggle(_mode.enumValueIndex == (int)ChannelTexture.ColorMode.Red, "R", buttonGroupStyle, GUILayout.Width(16)); + if (EditorGUI.EndChangeCheck()) + if (dummy) + _mode.enumValueIndex = 0; + + EditorGUI.BeginChangeCheck(); + dummy = GUILayout.Toggle(_mode.enumValueIndex == (int)ChannelTexture.ColorMode.Green, "G", buttonGroupStyle, GUILayout.Width(16)); + if (EditorGUI.EndChangeCheck()) + if (dummy) + _mode.enumValueIndex = 1; + + EditorGUI.BeginChangeCheck(); + dummy = GUILayout.Toggle(_mode.enumValueIndex == (int)ChannelTexture.ColorMode.Blue, "B", buttonGroupStyle, GUILayout.Width(16)); + if (EditorGUI.EndChangeCheck()) + if (dummy) + _mode.enumValueIndex = 2; + + EditorGUI.BeginChangeCheck(); + dummy = GUILayout.Toggle(_mode.enumValueIndex == (int)ChannelTexture.ColorMode.Alpha, "A", buttonGroupStyle, GUILayout.Width(16)); + if (EditorGUI.EndChangeCheck()) + if (dummy) + _mode.enumValueIndex = 3; + GUILayout.FlexibleSpace(); + + if (EditorGUI.EndChangeCheck()) + if (_texture.objectReferenceValue) + edited = true; + } + using (new GUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + _texture.objectReferenceValue = (Texture2D)EditorGUILayout.ObjectField("", _texture.objectReferenceValue, typeof(Texture2D), false, GUILayout.Width(66)); + GUILayout.FlexibleSpace(); + } + + EditorGUI.BeginChangeCheck(); + _invert.boolValue = GUILayout.Toggle(_invert.boolValue, "Invert", "toolbarbutton"); + if (EditorGUI.EndChangeCheck()) + if (_texture.objectReferenceValue) + edited = true; + } + return edited; + } + } + + public class TextureAutoPackerProcessor : AssetPostprocessor + { + public static List> PathToProperty = new List>(); + public static bool TextureImported = false; + void OnPostprocessTexture(Texture2D texture) + { + TextureImported = true; + } + public static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) + { + if (TextureImported) + { + TextureImported = false; + if (!TextureAutoPacker.InitiateAutoPacking()) + OnAutoPackingEnd(); + } + } + public static void OnAutoPackingEnd() + { + PathToProperty.ForEach(t => + { + t.Item2.serializedObject.Update(); + t.Item2.objectReferenceValue = AssetDatabase.LoadAssetAtPath(t.Item1); + t.Item2.serializedObject.ApplyModifiedPropertiesWithoutUndo(); + }); + PathToProperty.Clear(); + } + } + + public abstract class TAPDreadData : ScriptableObject where T : ScriptableObject + { + private static T _instance = null; + private static string _SavePath; + + protected static T GetInstance(string SavePath) + { + _SavePath = SavePath; + if (!_instance && Exists()) + { + _instance = AssetDatabase.LoadAssetAtPath(SavePath); + } + if (!_instance) + { + _instance = CreateInstance(); + string directoryPath = System.IO.Path.GetDirectoryName(SavePath); + if (!System.IO.Directory.Exists(directoryPath)) + System.IO.Directory.CreateDirectory(directoryPath); + + AssetDatabase.CreateAsset(_instance, _SavePath); + } + return _instance; + } + + public static bool Exists() + { + return System.IO.File.Exists(_SavePath); + } + + } + +} diff --git a/TextureUtility/Editor/TextureAutoPacker.cs.meta b/TextureUtility/Editor/TextureAutoPacker.cs.meta new file mode 100644 index 0000000..0e819d4 --- /dev/null +++ b/TextureUtility/Editor/TextureAutoPacker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e8921d280a781e14bae3a414c99945a8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TextureUtility/Editor/TextureAutoPackerData.cs b/TextureUtility/Editor/TextureAutoPackerData.cs new file mode 100644 index 0000000..faacf71 --- /dev/null +++ b/TextureUtility/Editor/TextureAutoPackerData.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace DreadScripts.TextureUtility +{ + [System.Serializable] + public class TextureAutoPackerData : TAPDreadData + { + public bool active; + public List activeModules = new List(); + private static readonly string SavePath = "Assets/DreadScripts/Saved Data/Texture Utility/TextureAutoPackerData.asset"; + public static TextureAutoPackerData GetInstance() + { + return GetInstance(SavePath); + } + } +} diff --git a/TextureUtility/Editor/TextureAutoPackerData.cs.meta b/TextureUtility/Editor/TextureAutoPackerData.cs.meta new file mode 100644 index 0000000..24ccc13 --- /dev/null +++ b/TextureUtility/Editor/TextureAutoPackerData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7ca85679a83ff9c48b424bb5471ad605 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TextureUtility/Editor/TextureAutoPackerModule.cs b/TextureUtility/Editor/TextureAutoPackerModule.cs new file mode 100644 index 0000000..495a71b --- /dev/null +++ b/TextureUtility/Editor/TextureAutoPackerModule.cs @@ -0,0 +1,69 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; + +namespace DreadScripts.TextureUtility +{ + [System.Serializable] + [CreateAssetMenu(fileName = "New Auto-Packer Module", menuName = "DreadScripts/Auto-Packer Module")] + public class TextureAutoPackerModule : ScriptableObject + { + public List packedTextures; + + public TextureAutoPackerModule() + { + packedTextures = new List(); + } + } + + [System.Serializable] + public class AutoPackedTexture + { + public bool expanded; + public bool forward=true; + public string name; + public ChannelTexture[] channels; + public string[] channelsHashes; + public bool forceModified; + + public Texture2D packed; + + public TextureUtility.TexEncoding encoding; + public int jpgQuality = 75; + public AutoPackedTexture() + { + name = "New Packed Texture"; + channels = new ChannelTexture[] {new ChannelTexture("Red",0), new ChannelTexture("Green", 1), new ChannelTexture("Blue", 2), new ChannelTexture("Alpha", 0) }; + channelsHashes = new string[] { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty }; + encoding = TextureUtility.TexEncoding.SaveAsPNG; + } + + public bool WasModified() + { + if (forceModified) + { + return true; + } + for (int i = 0; i < 4; i++) + { + string textureHash = string.Empty; + if (channels[i].texture) + textureHash = channels[i].texture.imageContentsHash.ToString(); + if (textureHash != channelsHashes[i]) + return true; + } + return false; + } + + public string Pack() + { + string newTexturePath; + if (packed) + newTexturePath = TextureUtility.PackTexture(channels, AssetDatabase.GetAssetPath(packed), packed.width, packed.height, encoding, false, true, false); + else + newTexturePath = TextureUtility.PackTexture(channels, encoding, true, false); + return newTexturePath; + } + } +} diff --git a/TextureUtility/Editor/TextureAutoPackerModule.cs.meta b/TextureUtility/Editor/TextureAutoPackerModule.cs.meta new file mode 100644 index 0000000..ac4d4ec --- /dev/null +++ b/TextureUtility/Editor/TextureAutoPackerModule.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 57dd297cddefa864f9927f223270c5b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TextureUtility/Editor/TextureUtility.cs b/TextureUtility/Editor/TextureUtility.cs new file mode 100644 index 0000000..e342de3 --- /dev/null +++ b/TextureUtility/Editor/TextureUtility.cs @@ -0,0 +1,1110 @@ +using System.Collections.Generic; +using System.IO; +using UnityEditor; +using UnityEngine; +using System.Linq; +using System.Threading.Tasks; + +namespace DreadScripts.TextureUtility +{ + public class TextureUtility : EditorWindow + { + private readonly string[] DimensionPresets = { + "128x128", + "256x256", + "512x512", + "1024x1024", + "2048x2048", + "4096x4096", + }; + + private static GUIContent resetIcon; + private static Texture2D titleTexture; + + private static Texture2D mainTexture; + private static Texture2D maskTexture; + + private static int jpgQuality = 75; + private static int texWidth, texHeight; + private static bool copyImport = true; + private static bool pingTexture = true; + + private static bool rotating; + private static TexRotation rotationType; + + private static bool inverting; + private static bool maskInvert=true; + private static bool invertRedS = true, invertGreenS = true, invertBlueS = true, invertAlphaS; + + private static bool unpacking=true,packing; + private static bool editingTab=true, packingTab,creatingTab; + + + private static readonly ChannelTexture redChannel = new ChannelTexture("Red", 0); + private static readonly ChannelTexture greenChannel = new ChannelTexture("Green", 1); + private static readonly ChannelTexture blueChannel = new ChannelTexture("Blue", 2); + private static readonly ChannelTexture alphaChannel = new ChannelTexture("Alpha", 0); + private static readonly ChannelTexture[] channelTextures = { redChannel, greenChannel, blueChannel, alphaChannel }; + + private static bool hueShifting; + private static bool maskHueShift=true; + private static float hueShiftFloat; + + private static bool saturating; + private static SaturationMethodEnum saturationMethod = SaturationMethodEnum.Poiyomi; + private static bool maskSaturate=true; + private static float saturationFloat; + + private static bool colorizing; + private static bool maskColorize=true; + private static bool textureColorize; + private static bool alphaColorize; + private static float colorizeFloat=0.5f; + private static Color colorizeColor = Color.black; + private static Texture2D colorizeTexture; + + private static Color originalGUIColor; + + private static TexEncoding encoding = TexEncoding.SaveAsPNG; + public enum TexEncoding + { + SaveAsPNG, + SaveAsJPG, + SaveAsTGA + } + + public enum TexRotation + { + Clockwise90, + CClockwise90, + Rotate180, + FlipHorizontal, + FlipVertical + } + + public enum SaturationMethodEnum + { + Poiyomi, + Gimp + } + + #region Creating Tab Variables + private static bool creatingCustomSize; + private static bool creatingReverse; + private static string creatingPath; + private static Color solidColor=Color.black; + private static Gradient gradientColor = new Gradient() { colorKeys = new GradientColorKey[] { new GradientColorKey(Color.white, 0), new GradientColorKey(Color.black, 1) } }; + + private static TextureCreatingMode creatingMode = TextureCreatingMode.SolidColor; + + private enum TextureCreatingMode + { + SolidColor, + HorizontalGradient, + VerticalGradient + } + #endregion + + [MenuItem("DreadTools/Utility/Texture Utility")] + private static void showWindow() + { + EditorWindow w = GetWindow(false, "Texture Utility", true); + if (!titleTexture) + { + titleTexture = GetColors((Texture2D)EditorGUIUtility.IconContent("Texture2D Icon").image, 16, 16, out _); + titleTexture.Apply(); + } + + w.titleContent.image = titleTexture; + w.minSize = new Vector2(423, 253); + } + + private void OnGUI() + { + originalGUIColor = GUI.backgroundColor; + using (new GUILayout.HorizontalScope()) + { + bool c = editingTab; + + SetColorIcon(editingTab); + editingTab = GUILayout.Toggle(editingTab, "Editing", "toolbarbutton"); + if (!c && editingTab) + { + packingTab = false; + creatingTab = false; + } + + c = creatingTab; + + + SetColorIcon(creatingTab); + creatingTab = GUILayout.Toggle(creatingTab, "Creating", "toolbarbutton"); + if (!c && creatingTab) + { + packingTab = false; + editingTab = false; + } + + c = packingTab; + + SetColorIcon(packingTab); + packingTab = GUILayout.Toggle(packingTab, "Packing", "toolbarbutton"); + if (!c && packingTab) + { + editingTab = false; + creatingTab = false; + } + GUI.backgroundColor = originalGUIColor; + } + + if (editingTab) + DrawEditingTab(); + + + if (creatingTab) + DrawCreatingTab(); + + if (packingTab) + DrawPackingTab(); + + Credit(); + } + + + private void DrawEditingTab() + { + using (new GUILayout.HorizontalScope()) + { + using (new GUILayout.VerticalScope()) + { + using (new GUILayout.HorizontalScope("box")) + DrawDimensionsGUI(); + + using (new GUILayout.HorizontalScope("box")) + { + encoding = (TexEncoding)EditorGUILayout.EnumPopup(encoding, GUILayout.Width(95)); + + EditorGUI.BeginDisabledGroup(encoding != TexEncoding.SaveAsJPG); + EditorGUIUtility.labelWidth = 50; + jpgQuality = EditorGUILayout.IntSlider("Quality", jpgQuality, 1, 100); + EditorGUIUtility.labelWidth = 0; + EditorGUI.EndDisabledGroup(); + } + + using (new GUILayout.HorizontalScope("box")) + { + copyImport = EditorGUILayout.Toggle("Copy Import Settings", copyImport); + pingTexture = EditorGUILayout.Toggle(new GUIContent("Highlight Texture", "Highlight the newly created texture in Assets"), pingTexture); + } + + using (new GUILayout.HorizontalScope("box")) + { + if (!rotating) + { + SetColorIcon(rotating); + rotating = GUILayout.Toggle(rotating, "Rotate", "toolbarbutton"); + GUI.backgroundColor = originalGUIColor; + } + else + { + SetColorIcon(rotating); + rotating = GUILayout.Toggle(rotating, "", "toolbarbutton", GUILayout.Width(17), GUILayout.Height(17)); + GUI.backgroundColor = originalGUIColor; + + EditorGUI.BeginDisabledGroup(true); + GUILayout.Toggle(true, "M", EditorStyles.miniButton, GUILayout.Width(21), GUILayout.Height(16)); + EditorGUI.EndDisabledGroup(); + + GUILayout.Label("Rotate"); + rotationType = (TexRotation)EditorGUILayout.EnumPopup(GUIContent.none, rotationType); + } + } + + using (new GUILayout.HorizontalScope("box")) + { + if (!inverting) + { + SetColorIcon(inverting); + inverting = GUILayout.Toggle(inverting, "Invert", "toolbarbutton"); + GUI.backgroundColor = originalGUIColor; + } + else + { + SetColorIcon(inverting); + inverting = GUILayout.Toggle(inverting, "", "toolbarbutton", GUILayout.Width(17), GUILayout.Height(17)); + GUI.backgroundColor = originalGUIColor; + + maskInvert = GUILayout.Toggle(maskInvert, new GUIContent("M", "Use Mask"), EditorStyles.miniButton, GUILayout.Width(21), GUILayout.Height(16)); GUILayout.Label("Invert"); + invertRedS = EditorGUILayout.ToggleLeft("R", invertRedS, GUILayout.Width(30)); + invertGreenS = EditorGUILayout.ToggleLeft("G", invertGreenS, GUILayout.Width(30)); + invertBlueS = EditorGUILayout.ToggleLeft("B", invertBlueS, GUILayout.Width(30)); + invertAlphaS = EditorGUILayout.ToggleLeft("A", invertAlphaS, GUILayout.Width(30)); + + } + } + + using (new GUILayout.HorizontalScope("box")) + { + if (!saturating) + { + SetColorIcon(saturating); + saturating = GUILayout.Toggle(saturating, "Saturate", "toolbarbutton"); + GUI.backgroundColor = originalGUIColor; + } + else + { + SetColorIcon(saturating); + saturating = GUILayout.Toggle(saturating, "", "toolbarbutton", GUILayout.Width(17), GUILayout.Height(17)); + GUI.backgroundColor = originalGUIColor; + maskSaturate = GUILayout.Toggle(maskSaturate, new GUIContent("M", "Use Mask"), EditorStyles.miniButton, GUILayout.Width(21), GUILayout.Height(16)); + EditorGUIUtility.labelWidth = 65; + saturationFloat = EditorGUILayout.Slider("Saturate", saturationFloat, -1, saturationMethod == SaturationMethodEnum.Poiyomi ? 10 : 1); + EditorGUIUtility.labelWidth = 0; + saturationMethod = (SaturationMethodEnum)EditorGUILayout.EnumPopup(GUIContent.none, saturationMethod, GUILayout.Width(70)); + } + } + using (new GUILayout.HorizontalScope("box")) + { + if (!hueShifting) + { + SetColorIcon(hueShifting); + hueShifting = GUILayout.Toggle(hueShifting, "Hue Shift", "toolbarbutton"); + GUI.backgroundColor = originalGUIColor; + } + else + { + SetColorIcon(hueShifting); + hueShifting = GUILayout.Toggle(hueShifting, "", "toolbarbutton", GUILayout.Width(17), GUILayout.Height(17)); + GUI.backgroundColor = originalGUIColor; + + maskHueShift = GUILayout.Toggle(maskHueShift, new GUIContent("M", "Use Mask"), EditorStyles.miniButton, GUILayout.Width(21), GUILayout.Height(16)); + EditorGUIUtility.labelWidth = 65; + hueShiftFloat = EditorGUILayout.Slider("Hue Shift", hueShiftFloat, 0, 1); + EditorGUIUtility.labelWidth = 0; + } + } + + using (new GUILayout.HorizontalScope("box")) + { + if (!colorizing) + { + SetColorIcon(colorizing); + colorizing = GUILayout.Toggle(colorizing, "Colorize", "toolbarbutton"); + GUI.backgroundColor = originalGUIColor; + } + else + { + SetColorIcon(colorizing); + colorizing = GUILayout.Toggle(colorizing, "", "toolbarbutton", GUILayout.Width(17), GUILayout.Height(17)); + GUI.backgroundColor = originalGUIColor; + + maskColorize = GUILayout.Toggle(maskColorize, new GUIContent("M", "Use Mask"), EditorStyles.miniButton, GUILayout.Width(21), GUILayout.Height(16)); + EditorGUIUtility.labelWidth = 65; + colorizeFloat = EditorGUILayout.Slider("Colorize", colorizeFloat, 0, 1); + EditorGUIUtility.labelWidth = 0; + if (!textureColorize) + colorizeColor = EditorGUILayout.ColorField(new GUIContent(""), colorizeColor, true, alphaColorize, false, GUILayout.Width(70), GUILayout.Height(17)); + else + colorizeTexture = (Texture2D)EditorGUILayout.ObjectField(colorizeTexture, typeof(Texture2D), false, GUILayout.Width(70), GUILayout.Height(17)); + textureColorize = GUILayout.Toggle(textureColorize, new GUIContent("T", "Use Texture"), EditorStyles.miniButton, GUILayout.Width(19), GUILayout.Height(16)); + alphaColorize = GUILayout.Toggle(alphaColorize, new GUIContent("A", "Use Alpha"), EditorStyles.miniButton, GUILayout.Width(19), GUILayout.Height(16)); + } + } + + } + using (new GUILayout.VerticalScope()) + { + using (new GUILayout.VerticalScope("box")) + { + EditorGUIUtility.labelWidth = 1; + GUILayout.Label("Main", GUILayout.Width(65)); + EditorGUI.BeginChangeCheck(); + mainTexture = (Texture2D)EditorGUILayout.ObjectField("", mainTexture, typeof(Texture2D), false, GUILayout.Width(65)); + if (EditorGUI.EndChangeCheck()) + ResetDimensions(); + EditorGUIUtility.labelWidth = 0; + } + EditorGUI.BeginDisabledGroup(!(hueShifting || saturating || inverting || colorizing)); + using (new GUILayout.VerticalScope("box")) + { + EditorGUIUtility.labelWidth = 1; + GUILayout.Label("Mask", GUILayout.Width(65)); + maskTexture = (Texture2D)EditorGUILayout.ObjectField("", maskTexture, typeof(Texture2D), false, GUILayout.Width(65)); + EditorGUIUtility.labelWidth = 0; + } + EditorGUI.EndDisabledGroup(); + } + } + EditorGUI.BeginDisabledGroup(!mainTexture); + if (GUILayout.Button("Apply")) + { + ApplyTexture(); + } + EditorGUI.EndDisabledGroup(); + } + + private void DrawCreatingTab() + { + using (new GUILayout.HorizontalScope("box")) + { + if (!creatingCustomSize) + { + SetColorIcon(creatingCustomSize); + creatingCustomSize = GUILayout.Toggle(inverting, "Custom Dimensions", "toolbarbutton"); + GUI.backgroundColor = originalGUIColor; + } + else + { + SetColorIcon(creatingCustomSize); + creatingCustomSize = GUILayout.Toggle(creatingCustomSize, "", "toolbarbutton", GUILayout.Width(17), GUILayout.Height(17)); + GUI.backgroundColor = originalGUIColor; + + DrawDimensionsGUI(false); + } + } + + using (new GUILayout.HorizontalScope("box")) + { + encoding = (TexEncoding)EditorGUILayout.EnumPopup(encoding); + + EditorGUI.BeginDisabledGroup(encoding != TexEncoding.SaveAsJPG); + EditorGUIUtility.labelWidth = 50; + jpgQuality = EditorGUILayout.IntSlider("Quality", jpgQuality, 1, 100); + EditorGUIUtility.labelWidth = 0; + EditorGUI.EndDisabledGroup(); + } + + using (new GUILayout.HorizontalScope("box")) + { + pingTexture = EditorGUILayout.Toggle(new GUIContent("Highlight Texture", "Highlight the newly created texture in Assets"), pingTexture); + + EditorGUI.BeginDisabledGroup(creatingMode != TextureCreatingMode.HorizontalGradient && creatingMode != TextureCreatingMode.VerticalGradient); + creatingReverse = EditorGUILayout.Toggle("Reverse Texture", creatingReverse); + EditorGUI.EndDisabledGroup(); + } + + using (new GUILayout.HorizontalScope("box")) + { + creatingMode = (TextureCreatingMode)EditorGUILayout.EnumPopup("Texture Mode", creatingMode); + } + + switch ((int)creatingMode) + { + case 0: + solidColor = EditorGUILayout.ColorField(solidColor); + break; + case 1: + case 2: + gradientColor = EditorGUILayout.GradientField(gradientColor); + break; + } + if (GUILayout.Button("Create")) + { + CreateTexture(); + } + AssetFolderPath(ref creatingPath, "Save To", "TextureUtilityCreatingPath"); + } + + private void DrawPackingTab() + { + + using (new GUILayout.HorizontalScope("box")) + { + encoding = (TexEncoding)EditorGUILayout.EnumPopup(encoding); + EditorGUI.BeginDisabledGroup(encoding != TexEncoding.SaveAsJPG); + EditorGUIUtility.labelWidth = 50; + jpgQuality = EditorGUILayout.IntSlider("Quality", jpgQuality, 1, 100); + EditorGUIUtility.labelWidth = 0; + EditorGUI.EndDisabledGroup(); + } + using (new GUILayout.HorizontalScope("box")) + { + copyImport = EditorGUILayout.Toggle("Copy Import Settings", copyImport); + pingTexture = EditorGUILayout.Toggle(new GUIContent("Highlight Texture", "Highlight the newly created texture in Assets"), pingTexture); + } + using (new GUILayout.HorizontalScope()) + { + bool p = unpacking; + SetColorIcon(unpacking); + unpacking = GUILayout.Toggle(unpacking, "Unpack", "toolbarbutton"); + if (!p && unpacking) + packing = false; + + p = packing; + SetColorIcon(packing); + packing = GUILayout.Toggle(packing, "Pack", "toolbarbutton"); + if (!p && packing) + unpacking = false; + + GUI.backgroundColor = originalGUIColor; + } + if (packing) + { + using (new GUILayout.HorizontalScope()) + { + EditorGUIUtility.labelWidth = 1; + redChannel.DrawGUI(); + greenChannel.DrawGUI(); + blueChannel.DrawGUI(); + alphaChannel.DrawGUI(); + EditorGUIUtility.labelWidth = 0; + } + EditorGUI.BeginDisabledGroup(!channelTextures.Any(c => c.texture)); + if (GUILayout.Button("Pack")) + { + PackTexture(channelTextures); + } + } + if (unpacking) + { + + using (new GUILayout.VerticalScope("box")) + { + using (new GUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + GUILayout.Label("Main Texture"); + GUILayout.FlexibleSpace(); + } + + using (new GUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + EditorGUIUtility.labelWidth = 1; + mainTexture = (Texture2D)EditorGUILayout.ObjectField("", mainTexture, typeof(Texture2D), false, GUILayout.Width(66)); + EditorGUIUtility.labelWidth = 0; + GUILayout.FlexibleSpace(); + } + } + EditorGUI.BeginDisabledGroup(!mainTexture); + if (GUILayout.Button("Unpack")) + { + UnpackTexture(); + } + EditorGUI.EndDisabledGroup(); + } + + + EditorGUI.EndDisabledGroup(); + } + + private void DrawDimensionsGUI(bool drawReset=true) + { + GUIStyle iconStyle = new GUIStyle(GUI.skin.label) { padding = new RectOffset(), margin = new RectOffset(), imagePosition = ImagePosition.ImageOnly }; + + EditorGUI.BeginDisabledGroup(!mainTexture && !creatingTab); + if (drawReset) + { + if (GUILayout.Button(resetIcon, iconStyle, GUILayout.Height(16), GUILayout.Width(16))) + ResetDimensions(); + } + EditorGUIUtility.labelWidth = 20; + texWidth = EditorGUILayout.IntField(new GUIContent("W","Width"), texWidth); + texHeight = EditorGUILayout.IntField(new GUIContent("H", "Height"), texHeight); + EditorGUIUtility.labelWidth = 0; + + int dummy = -1; + EditorGUI.BeginChangeCheck(); + dummy = EditorGUILayout.Popup(dummy, DimensionPresets,GUILayout.Width(17)); + if (EditorGUI.EndChangeCheck()) + { + string[] dimensions = ((string)DimensionPresets.GetValue(dummy)).Split('x'); + texWidth = int.Parse(dimensions[0]); + texHeight = int.Parse(dimensions[1]); + } + + EditorGUI.EndDisabledGroup(); + + } + + public static Texture2D GetColors(Texture2D texture, out Color[] Colors, bool unloadTempTexture = false) + { + return GetColors(texture, texture.width, texture.height, out Colors, unloadTempTexture); + } + + public static Texture2D GetColors(Texture2D texture, int width, int height, out Color[] Colors,bool unloadTempTexture = false) + { + //Thanks to + //https://gamedev.stackexchange.com/questions/92285/unity3d-resize-texture-without-corruption + texture.filterMode = FilterMode.Point; + RenderTexture rt = RenderTexture.GetTemporary(width, height); + + rt.filterMode = FilterMode.Point; + RenderTexture.active = rt; + Graphics.Blit(texture, rt); + Texture2D newTexture = new Texture2D(width, height); + newTexture.ReadPixels(new Rect(0, 0, width, height), 0, 0); + Color[] myColors = newTexture.GetPixels(); + RenderTexture.active = null; + ///////////////////// + Colors = myColors; + if (unloadTempTexture) + { + DestroyImmediate(newTexture); + return null; + } + return newTexture; + } + + private static void SaveTexture(byte[] textureEncoding, string path, bool refresh=false, bool ping=false) + { + System.IO.FileStream stream = System.IO.File.Create(path); + stream.Write(textureEncoding, 0, textureEncoding.Length); + stream.Dispose(); + if (refresh) + { + AssetDatabase.Refresh(); + if (ping) + { + Ping(path); + } + } + + } + private static void Ping(string path) + { + EditorGUIUtility.PingObject(AssetDatabase.LoadAssetAtPath(path)); + } + + private void ApplyTexture() + { + if (colorizing && !colorizeTexture && textureColorize) + { + Debug.LogError("Cannot Colorize using a texture without a texture!"); + return; + } + + string destinationPath = GetDestinationFolder(mainTexture); + string texPath = AssetDatabase.GetAssetPath(mainTexture); + + Texture2D newTexture = GetColors(mainTexture, texWidth, texHeight, out Color[] myColors); + + if (rotating) + { + List rotatedColors = new List(); + switch (rotationType) + { + case TexRotation.Clockwise90: + for (int i = texWidth-1; i >=0; i--) + { + rotatedColors.AddRange(newTexture.GetPixels(i, 0, 1, texHeight)); + } + myColors = rotatedColors.ToArray(); + newTexture = new Texture2D(texHeight, texWidth); + break; + + case TexRotation.CClockwise90: + for (int i = 0; i < texWidth; i++) + { + rotatedColors.AddRange(ReverseArray(newTexture.GetPixels(i, 0, 1, texHeight))); + } + myColors = rotatedColors.ToArray(); + newTexture = new Texture2D(texHeight, texWidth); + break; + + case TexRotation.Rotate180: + myColors = ReverseArray(myColors); + break; + + case TexRotation.FlipHorizontal: + for (int i = 0; i < texHeight; i++) + { + rotatedColors.AddRange(ReverseArray(newTexture.GetPixels(0, i, texWidth, 1))); + } + myColors = rotatedColors.ToArray(); + break; + + case TexRotation.FlipVertical: + for (int i = texHeight - 1; i >= 0; i--) + { + rotatedColors.AddRange(newTexture.GetPixels(0, i, texWidth, 1)); + } + myColors = rotatedColors.ToArray(); + break; + } + + } + + bool colorInverting = (invertRedS || invertGreenS || invertBlueS || invertAlphaS) && inverting; + bool HSVEditing = hueShifting || saturating; + bool colorEditing = HSVEditing || colorizing; + bool editing = colorEditing || colorInverting || unpacking; + bool masking = ((maskColorize && colorizing) || (maskInvert && colorInverting) || (maskSaturate && saturating) || (maskHueShift && hueShifting)) && maskTexture; + + Color[] maskColors = null; + if (masking) GetColors(maskTexture, texWidth, texHeight, out maskColors, true); + + Color[] colorizeTextureColors; + if (colorizing && textureColorize) + { + GetColors(colorizeTexture, texWidth, texHeight, out colorizeTextureColors, true); + } + else + colorizeTextureColors = null; + + + Color[] newColors = new Color[myColors.Length]; + if (editing) + { + bool hasMaskTexture = maskTexture != null; + float tempSatValue = saturationMethod == SaturationMethodEnum.Poiyomi ? saturationFloat + 1 : saturationFloat; + Parallel.For(0, myColors.Length, i => + { + Color currentColor = myColors[i]; + + if (colorEditing) + { + if (HSVEditing) + { + Color.RGBToHSV(currentColor, out float h, out float s, out float v); + if (hueShifting) + h = Mathf.Repeat(h + (hueShiftFloat * (hasMaskTexture && maskHueShift ? maskColors[i].r : 1)), 1); + if (saturating && saturationMethod == SaturationMethodEnum.Gimp) + s = Mathf.Clamp01(s * (1 + tempSatValue * (hasMaskTexture && maskSaturate ? maskColors[i].r : 1))); + currentColor = Color.HSVToRGB(h, s, v); + + if (saturating && saturationMethod == SaturationMethodEnum.Poiyomi) + { + //return lerp(dot(col, float3(0.3, 0.59, 0.11)), col, interpolator); + //Doesn't seem to replicate the exact effect, but looks close. Thank you Poiyomi! + var dot = currentColor.r * 0.3f + currentColor.g * 0.59f + currentColor.b * 0.11f; + var factor = tempSatValue; + if (hasMaskTexture && maskSaturate) + factor *= maskColors[i].r; + + currentColor = new Color(dot + factor * (currentColor.r - dot), dot + factor * (currentColor.g - dot), dot + factor * (currentColor.b - dot), currentColor.a); + + } + currentColor.a = myColors[i].a; + } + + if (colorizing) + { + float oga = currentColor.a; + currentColor = Color.Lerp(currentColor, textureColorize ? colorizeTextureColors[i] : colorizeColor, colorizeFloat * (maskColorize && hasMaskTexture ? maskColors[i].r : 1)); + + if (!alphaColorize) + currentColor.a = oga; + } + } + + float r = colorInverting && invertRedS ? currentColor.r - ((currentColor.r - (1 - currentColor.r)) * (maskInvert && hasMaskTexture ? maskColors[i].r : 1)) : currentColor.r; + float g = colorInverting && invertGreenS ? currentColor.g - ((currentColor.g - (1 - currentColor.g)) * (maskInvert && hasMaskTexture ? maskColors[i].g : 1)) : currentColor.g; + float b = colorInverting && invertBlueS ? currentColor.b - ((currentColor.b - (1 - currentColor.b)) * (maskInvert && hasMaskTexture ? maskColors[i].b : 1)) : currentColor.b; + float a = colorInverting && invertAlphaS ? currentColor.a - ((currentColor.a - (1 - currentColor.a)) * (maskInvert && hasMaskTexture ? maskColors[i].a : 1)) : currentColor.a; + + newColors[i] = new Color(r, g, b, a); + }); + } + newTexture.SetPixels(editing ? newColors : myColors); + newTexture.Apply(); + + GetEncoding(newTexture, encoding, out byte[] data, out string ext); + + string newTexturePath = AssetDatabase.GenerateUniqueAssetPath(destinationPath + "/" + mainTexture.name + + (colorInverting ? " Inverted" : "") + ext); + + SaveTexture(data, newTexturePath, true, pingTexture); + + if (copyImport) + { + CopyTextureSettings(texPath, newTexturePath); + } + } + + private static void GetEncoding(Texture2D texture, TexEncoding encodingType, out byte[] data, out string ext) + { + switch ((int)encodingType) + { + default: + ext = ".png"; + data = texture.EncodeToPNG(); + break; + case 1: + ext = ".jpg"; + data = texture.EncodeToJPG(jpgQuality); + break; + case 2: + ext = ".tga"; + data = texture.EncodeToTGA(); + break; + } + } + + + private void CreateTexture() + { + Texture2D newTexture = null; + int w = creatingCustomSize ? texWidth : 0; + int h = creatingCustomSize ? texHeight : 0; + + Color[] myColors = null; + switch ((int)creatingMode) + { + case 0: + if (!creatingCustomSize) + { + w = h = 4; + } + newTexture = new Texture2D(w, h); + + myColors = CreateFilledArray(solidColor, w * h); + newTexture.SetPixels(0, 0, w, h, myColors); + break; + case 1: + { + if (!creatingCustomSize) + { + w = 256; + h = 4; + } + newTexture = new Texture2D(w, h); + + int i = creatingReverse ? w - 1 : 0; + int istep = creatingReverse ? -1 : 1; + + float xstepValue = (1f / w); + float xcurrentStep = 0; + for (; i < w && i >= 0; i += istep) + { + newTexture.SetPixels(i, 0, 1, h, CreateFilledArray(gradientColor.Evaluate(xcurrentStep), h)); + xcurrentStep += xstepValue; + } + } + break; + case 2: + { + if (!creatingCustomSize) + { + w = 4; + h = 256; + } + newTexture = new Texture2D(w, h); + + int i = creatingReverse ? h - 1 : 0; + int istep = creatingReverse ? -1 : 1; + + float ystepValue = 1f / h; + float ycurrentStep = 0; + for (; i < h && i >= 0; i += istep) + { + newTexture.SetPixels(0, i, w, 1, CreateFilledArray(gradientColor.Evaluate(ycurrentStep), w)); + ycurrentStep += ystepValue; + } + } + break; + } + + GetEncoding(newTexture, encoding, out byte[] data, out string ext); + + ReadyFolder(creatingPath); + SaveTexture(data, AssetDatabase.GenerateUniqueAssetPath(creatingPath +"/Generated Texture"+ext), true, pingTexture); + } + + private void UnpackTexture() + { + string destinationPath = GetDestinationFolder(mainTexture); + string texPath = AssetDatabase.GetAssetPath(mainTexture); + int x = mainTexture.width, y = mainTexture.height; + Texture2D newTexture = GetColors(mainTexture, x, y, out Color[] myColors); + List> copyFromTo = new List>(); + + bool isRedPass = true, isGreenPass, isBluePass, isAlphaPass; + isGreenPass = isBluePass = isAlphaPass = false; + try + { + AssetDatabase.StartAssetEditing(); + + do + { + Color[] newColors = new Color[myColors.Length]; + + bool hasAlpha = false; + for (int i = 0; i < myColors.Length; i++) + { + Color currentColor = myColors[i]; + + float r = currentColor.r; + float g = currentColor.g; + float b = currentColor.b; + float a = currentColor.a; + + if (isRedPass) + { + g = b = r; + a = 1; + } + if (isGreenPass) + { + r = b = g; + a = 1; + } + if (isBluePass) + { + r = g = b; + a = 1; + } + if (isAlphaPass) + { + r = g = b = a; + if (a != 1) + hasAlpha = true; + } + + newColors[i] = new Color(r, g, b, a); + } + + if (isAlphaPass && !hasAlpha) + { + isAlphaPass = false; + goto Skip; + } + + newTexture.SetPixels(newColors); + newTexture.Apply(); + + GetEncoding(newTexture, encoding, out byte[] data, out string ext); + + string newTexturePath = AssetDatabase.GenerateUniqueAssetPath(destinationPath + "/" + mainTexture.name + + (isRedPass ? "-Red" : isGreenPass ? "-Green" : isBluePass ? "-Blue" : "-Alpha") + ext); + + SaveTexture(data, newTexturePath); + + if (copyImport) + { + copyFromTo.Add(new System.Tuple(texPath, newTexturePath)); + } + + if (isAlphaPass) + isAlphaPass = false; + if (isBluePass) + { + isBluePass = false; + isAlphaPass = true; + } + if (isGreenPass) + { + isGreenPass = false; + isBluePass = true; + } + if (isRedPass) + { + isRedPass = false; + isGreenPass = true; + } + + if (unpacking) + newTexture = new Texture2D(x, y); + + Skip:; + + } while (isRedPass || isGreenPass || isBluePass || isAlphaPass); + } + finally + { + AssetDatabase.StopAssetEditing(); + } + AssetDatabase.Refresh(); + if (copyImport) + { + for (int i = 0; i < copyFromTo.Count; i++) + { + CopyTextureSettings(copyFromTo[i].Item1, copyFromTo[i].Item2); + } + } + } + + public void PackTexture(ChannelTexture[] channels) + { + int firstIndex = 0; + for (int i = 3; i >= 0; i--) + { + if (channels[i].texture) + firstIndex = i; + } + ChannelTexture firstChannel = channels[firstIndex]; + int w = firstChannel.texture.width; + int h = firstChannel.texture.height; + PackTexture(channels, AssetDatabase.GetAssetPath(firstChannel.texture), w, h, encoding); + } + + public static string PackTexture(ChannelTexture[] channels, TexEncoding encodingType, bool refresh=true, bool copyImportSettings=true) + { + int firstIndex = -1; + for (int i = 3; i >= 0; i--) + { + if (channels[i].texture) + firstIndex = i; + } + if (firstIndex < 0) + return string.Empty; + ChannelTexture firstChannel = channels[firstIndex]; + int w = firstChannel.texture.width; + int h = firstChannel.texture.height; + return PackTexture(channels, AssetDatabase.GetAssetPath(firstChannel.texture), w, h, encodingType,refresh,false,copyImportSettings); + } + + public static string PackTexture(ChannelTexture[] channels, string destination,int width, int height, TexEncoding encodingType, bool refresh=true,bool overwrite=false, bool copyImportSettings=true) + { + int firstIndex = -1; + for (int i = 3; i >= 0; i--) + { + if (channels[i].texture) + firstIndex = i; + } + if (firstIndex < 0) + return string.Empty; + + ChannelTexture firstChannel = channels[firstIndex]; + + + Texture2D newTexture = new Texture2D(width, height); + channels[0].GetChannelColors(width, height, out float[] reds, true); + channels[1].GetChannelColors(width, height, out float[] greens, true); + channels[2].GetChannelColors(width, height, out float[] blues, true); + channels[3].GetChannelColors(width, height, out float[] alphas, true); + Color[] finalColors = new Color[width*height]; + + for (int i=0;i< finalColors.Length;i++) + { + finalColors[i].r = (reds!=null) ? reds[i] : 0; + finalColors[i].g = (greens != null) ? greens[i] : 0; + finalColors[i].b = (blues != null) ? blues[i] : 0; + finalColors[i].a = (alphas != null) ? alphas[i] : 1; + } + newTexture.SetPixels(finalColors); + newTexture.Apply(); + + GetEncoding(newTexture, encodingType, out byte[] data, out string ext); + + string newTexturePath = GetDestinationFolder(destination)+"/"+System.IO.Path.GetFileNameWithoutExtension(destination)+ext; + if (!overwrite) + newTexturePath = AssetDatabase.GenerateUniqueAssetPath(newTexturePath); + SaveTexture(data, newTexturePath); + DestroyImmediate(newTexture); + if (refresh) + AssetDatabase.Refresh(); + + + if (copyImportSettings) + { + CopyTextureSettings(AssetDatabase.GetAssetPath(firstChannel.texture), newTexturePath); + } + return newTexturePath; + } + + private static void CopyTextureSettings(string from, string to) + { + TextureImporter source = (TextureImporter)AssetImporter.GetAtPath(from); + TextureImporterSettings sourceSettings = new TextureImporterSettings(); + source.ReadTextureSettings(sourceSettings); + + TextureImporter destination = (TextureImporter)AssetImporter.GetAtPath(to); + destination.SetTextureSettings(sourceSettings); + destination.maxTextureSize = source.maxTextureSize; + destination.textureCompression = source.textureCompression; + destination.crunchedCompression = source.crunchedCompression; + destination.SaveAndReimport(); + } + + private static string GetDestinationFolder(Object o) + { + string path = AssetDatabase.GetAssetPath(o); + return GetDestinationFolder(path); + } + private static string GetDestinationFolder(string path) + { + return path.Substring(0, path.LastIndexOf('/')); + } + + private void ResetDimensions() + { + if (mainTexture) + { + texHeight = mainTexture.height; + texWidth = mainTexture.width; + } + } + + private void SetColorIcon(bool value) + { + if (value) + GUI.backgroundColor = Color.green; + else + GUI.backgroundColor = Color.grey; + } + + private void OnEnable() + { + resetIcon = new GUIContent(EditorGUIUtility.IconContent("d_Refresh")) { tooltip = "Reset Dimensions" }; + creatingPath = PlayerPrefs.GetString("TextureUtilityCreatingPath", "Assets/DreadScripts/Texture Utility/Generated Assets"); + + foreach (var channel in channelTextures) + { + channel.SetMode(EditorPrefs.GetInt("TextureUtilityChannel" + channel.name, (int)channel.mode)); + } + } + + private static T[] CreateFilledArray(T variable,int length) + { + T[] myArray = new T[length]; + for (int i=0;i< myArray.Length;i++) + { + myArray[i] = variable; + } + return myArray; + } + + private static T[] ReverseArray(T[] array) + { + T[] reversed = new T[array.Length]; + int index = array.Length - 1; + for (int i = 0; i < reversed.Length; i++) + { + reversed[i] = array[index]; + index--; + } + return reversed; + } + + public static void AssetFolderPath(ref string variable, string title, string playerpref) + { + EditorGUILayout.BeginHorizontal(); + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.TextField(title, variable); + EditorGUI.EndDisabledGroup(); + if (GUILayout.Button("...", GUILayout.Width(30))) + { + string dummyPath = EditorUtility.OpenFolderPanel(title, variable, ""); + if (string.IsNullOrEmpty(dummyPath)) + return; + + if (!dummyPath.Contains("Assets")) + { + Debug.LogWarning("New Path must be a folder within Assets!"); + return; + } + variable = FileUtil.GetProjectRelativePath(dummyPath); + PlayerPrefs.SetString(playerpref, variable); + } + EditorGUILayout.EndHorizontal(); + } + + public static void ReadyFolder(string folderPath) + { + if (!Directory.Exists(folderPath)) + Directory.CreateDirectory(folderPath); + } + + private static void Credit() + { + GUIStyle creditLabelStyle = new GUIStyle(GUI.skin.label) { richText = true }; + using (new GUILayout.HorizontalScope()) + { + GUILayout.FlexibleSpace(); + if (GUILayout.Button("Made by @Dreadrith", creditLabelStyle)) + Application.OpenURL("https://linktr.ee/Dreadrith"); + } + } + } +} \ No newline at end of file diff --git a/TextureUtility/Editor/TextureUtility.cs.meta b/TextureUtility/Editor/TextureUtility.cs.meta new file mode 100644 index 0000000..a9f14f2 --- /dev/null +++ b/TextureUtility/Editor/TextureUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c470de7697213b34496ac48dd23b3be5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TextureUtility/Editor/com.dreadscripts.textureutility.Editor.asmdef b/TextureUtility/Editor/com.dreadscripts.textureutility.Editor.asmdef new file mode 100644 index 0000000..b167de0 --- /dev/null +++ b/TextureUtility/Editor/com.dreadscripts.textureutility.Editor.asmdef @@ -0,0 +1,15 @@ +{ + "name": "com.dreadscripts.textureutility.Editor", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/TextureUtility/Editor/com.dreadscripts.textureutility.Editor.asmdef.meta b/TextureUtility/Editor/com.dreadscripts.textureutility.Editor.asmdef.meta new file mode 100644 index 0000000..8245304 --- /dev/null +++ b/TextureUtility/Editor/com.dreadscripts.textureutility.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d5ab47812aae52a4a99db70b474a6420 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TextureUtility/LICENSE b/TextureUtility/LICENSE new file mode 100644 index 0000000..545aeca --- /dev/null +++ b/TextureUtility/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Dreadrith + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/TextureUtility/LICENSE.meta b/TextureUtility/LICENSE.meta new file mode 100644 index 0000000..b75db93 --- /dev/null +++ b/TextureUtility/LICENSE.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8dd1810bc8cd5a24e8eebb9a23cc8276 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TextureUtility/README.md b/TextureUtility/README.md new file mode 100644 index 0000000..fd3cab4 --- /dev/null +++ b/TextureUtility/README.md @@ -0,0 +1,17 @@ +# Texture Utility +Texture Utility's purpose is to speed up the workflow by negating the need to use other software for mundane texture edits and achieve the desired results directly in Unity. + +## Features +- Resize, Rotate, Invert, Saturate, Hueshift and Colorize textures with Support for Masks. +- Quickly Create a Solid or Gradient colored texture. +- Unpack or Pack textures with color channels. +- Includes an Auto-Packing system to automatically pack a texture from its channels. + +![image](https://cdn.discordapp.com/attachments/1096062791984619603/1096062792345325588/unknown2.png?ex=66343c45&is=6632eac5&hm=a6d6440039b0832d1ce7054a7c21f2136efec8be5fb9c1cff86f09439908d057&) + +Found under DreadTools > Utility > Texture Utility + +![image](https://cdn.discordapp.com/attachments/1096062791984619603/1096062916115042344/unknown.png?ex=66343c63&is=6632eae3&hm=ae7d89710dfd9e2d6436eef4a06a6b7b1f6f0cbd4d5f5e1233f6950bbe0a1e3a&) + +### Thank you +If you enjoy Texture Utility, please consider [supporting me ♡](https://ko-fi.com/Dreadrith)! \ No newline at end of file diff --git a/TextureUtility/README.md.meta b/TextureUtility/README.md.meta new file mode 100644 index 0000000..0606df8 --- /dev/null +++ b/TextureUtility/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7b0372979745b6a41813732aab3b0d2b +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TextureUtility/Texture Auto-Packer Instructions.txt b/TextureUtility/Texture Auto-Packer Instructions.txt new file mode 100644 index 0000000..6728167 --- /dev/null +++ b/TextureUtility/Texture Auto-Packer Instructions.txt @@ -0,0 +1,37 @@ +Texture Auto-Packer is made to negate the need to have to go through texture packing by automatically detecting channels modifications and update the resulting texture + +How Auto-Packer works: +---------------------- +Auto-Packer will usually initiate whenever a Texture gets imported, whether it's new, modified or re-imported. +It checks the settings in the Auto-Packer window, and checks for changes in each module, and packs each texture that's marked as modified. + +An Auto-Packed Texture is marked as modified when: + - The Channel Textures doesn't match the hash of the textures the last time it got packed. + - The Channel selector was changed + - Invert toggle was clicked. + +Module Settings: +---------------- +Used to determine what Auto-Packed Textures to check for channel modification +Found under Assets > Create > DreadScripts > Auto-Packer Module + +An Auto-Packed Texture consists of 4 Channel Textures (RGBA) and a Packed Texture (Result) + +Add: Creates a new Auto-Packed Texture +Save As: Determines the extension of the Packed Texture. +Quality: Only for JPG, determines the quality of the Packed Texture. + +RGBA: Determines which channel should be sampled for the respective color +Invert: Inverts the sampled colors from the color texture. + +Force Pack: Packs the resulting texture regardless of modification. (Overwrites result texture). + +Window Settings +--------------- +Used to modify the settings of the Auto-Packer. +Found under DreadTools > Utilities > Texture Auto-Packer + +Active: Determines whether the Auto-Packer should check for channel modifications and pack the result if needed. +Active Modules: The Modules that the Auto-Packer should lookup for textures to pack + +Force Check: Initiates the Auto-Packer without having to trigger a texture import. diff --git a/TextureUtility/Texture Auto-Packer Instructions.txt.meta b/TextureUtility/Texture Auto-Packer Instructions.txt.meta new file mode 100644 index 0000000..4614689 --- /dev/null +++ b/TextureUtility/Texture Auto-Packer Instructions.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3d86b10016e9bc64198f9c0c985fb5fc +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TextureUtility/Texture Utility Instructions.txt b/TextureUtility/Texture Utility Instructions.txt new file mode 100644 index 0000000..e76702b --- /dev/null +++ b/TextureUtility/Texture Utility Instructions.txt @@ -0,0 +1,58 @@ +Texture Utility is made to make mundane and simple edits easier and quicker by doing it straight through Unity +Found under DreadTools > Utilities > Texture Utility + +General Settings: +----------------- +Dimensions (W and H): - Width and Height of the newly created Textures. Refresh Icon resets the dimensions to the currently set Main Texture. + - Popup button is to select hardcoded preset dimensions. + - You can add your own in the script in Texture Utility > Editor > TextureUtility.cs. Simply add a new line to "DimensionPresets" with the same format. + +Save As: - Choose whether to save as PNG or JPG. JPG is typically smaller than but doesn't support Transparency. + - If using JPG, use the slider to set the quality of it. Less quality is smaller size but smaller color range. + +Copy Import Settings: - Newly Created Texture will derive its import settings from the referenced texture. Settings such as Max Size, Crunch, Compression, etc... +Highlight Texture: - Project / Assets window will automatically navigate to the folder where the new texture was created. + + +Editing Tab: For Resize and Edits. +------------ +Main: - The Main texture the edits will be applied to. +Mask: - Defines the parts and factor of how and where the edits will be applied. Black is a factor of 0. White is a factor of 1. + +"M" Toggle: - Chooses whether the module should be affected by the Mask. + +Rotate: - Rotates the texture or flips it. +Invert: - Inverts the Colors of the selected channels on the texture. R > Red, G > Green, B > Blue, A > Alpha. an R G B invert is the typical color invert. +Saturate: - (Very Wonky) Increases / Decreases the saturation of the texture. -1 will guarantee all colors are grayscale. +1 is Hell. +Hue Shift: - Shifts the Hue of the texture. +1 is a full round hue shift back to the same color. +Colorize: - Lerps the colors between the main texture and the target Texture / Color. 0 is no change. +1 is full on target colors. + - "T" Toggle switches the mode between Color and Texture. "A" Toggle chooses whether the Alpha of the target should be used. + +Press "Apply" to apply the edits. This will create a new texture with the same name in the same folder as the main texture with the desired edits. + + +Creating Tab: For creating simple textures +------------- +Custom Dimensions: - Choose to specify the dimensions of the newly created texture + - By default, Dimensions will be 4x4 for Solid Color, 256x4 for Horizontal Gradient, 4x256 for Vertical Gradient. + +Reverse Texture: - The colors of the created texture will be flipped. + +Texture Mode: - Choose whether the texture is a solid color or a horizontal/vertical gradient. +Color/Gradient: - Choose your colors for the new texture. + +Save To: - The folder where the textures will be created. + +Press "Create" to create the new texture. It will save the texture under the path specified in "Save To". + + +Packing Tab: For Unpacking/Packing texture's channels (RGBA) +------------ +Unpack: - Choose the main texture then Press "Unpack". + - This will create 3-4 textures (RGB(A)) in the same folder as the main texture with their appropriate channel colors. + +Pack: - Insert your channel colors that you wish to merge under their appropriate channels + - The Colored box is the default solid color to use if not using a texture. + - Choose the color that you wish to extract from the Channel's texture or color + - Invert Toggle will invert the colors of the channel before packing it. + - Press "Pack" to pack the textures into 1 texture. \ No newline at end of file diff --git a/TextureUtility/Texture Utility Instructions.txt.meta b/TextureUtility/Texture Utility Instructions.txt.meta new file mode 100644 index 0000000..f879ab0 --- /dev/null +++ b/TextureUtility/Texture Utility Instructions.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c707e378e04c9504fa468e0a8e33b44f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TextureUtility/package.json b/TextureUtility/package.json new file mode 100644 index 0000000..ee84e80 --- /dev/null +++ b/TextureUtility/package.json @@ -0,0 +1,17 @@ +{ + "name": "com.dreadscripts.textureutility", + "displayName": "DreadScripts - TextureUtility", + "version": "1.1.0", + "description": "Texture Utility's purpose is to speed up the workflow by negating the need to use other software for mundane texture edits and achieve the desired results directly in Unity.", + "gitDependencies": {}, + "vpmDependencies": {}, + "author": { + "name": "Dreadrith", + "email": "dreadscripts@gmail.com", + "url": "https://www.dreadrith.com" + }, + "legacyFolders": {}, + "legacyFiles": {}, + "type": "tool", + "unity": "2019.4" +} \ No newline at end of file diff --git a/TextureUtility/package.json.meta b/TextureUtility/package.json.meta new file mode 100644 index 0000000..61df8eb --- /dev/null +++ b/TextureUtility/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 916a3c2e56cb4d0489cc897a2dd8d03c +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCProcessor.meta b/VRCProcessor.meta new file mode 100644 index 0000000..aeee238 --- /dev/null +++ b/VRCProcessor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7cd20ea6e9d093048a2026fe3f997560 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCProcessor/Editor.meta b/VRCProcessor/Editor.meta new file mode 100644 index 0000000..0fdb184 --- /dev/null +++ b/VRCProcessor/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 798fe290eaca0044a8c81780dc601bee +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCProcessor/Editor/VRCProcessor.cs b/VRCProcessor/Editor/VRCProcessor.cs new file mode 100644 index 0000000..c7e62d6 --- /dev/null +++ b/VRCProcessor/Editor/VRCProcessor.cs @@ -0,0 +1,85 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using System.Linq; + +namespace DreadScripts.VRCProcessor +{ + public class VRCProcessor : AssetPostprocessor + { + private static ModelImporter importer; + private static bool willProcess; + private static bool isHuman; + private void OnPreprocessModel() + { + importer = assetImporter as ModelImporter; + willProcess = isHuman = false; + string guid = AssetDatabase.AssetPathToGUID(importer.assetPath); + if (importer && !SessionState.GetBool(guid, false)) + { + SessionState.SetBool(guid, true); + willProcess = true; + importer.isReadable = true; + importer.importBlendShapeNormals = ModelImporterNormals.Import; + } + } + + private void OnPostprocessMeshHierarchy(GameObject g) + { + if (willProcess && !isHuman) + { + + Transform[] allTransforms = g.GetComponentsInChildren(); + if (allTransforms.Length < 15) return; + + int hits = allTransforms.Count(t => t.name.IndexOf("Armature", System.StringComparison.OrdinalIgnoreCase) >= 0 + || t.name.IndexOf("Hand", System.StringComparison.OrdinalIgnoreCase) >= 0 + || t.name.IndexOf("Head", System.StringComparison.OrdinalIgnoreCase) >= 0); + + if (hits >= 2) + { + importer.animationType = ModelImporterAnimationType.Human; + isHuman = true; + } + } + } + + private void OnPostprocessModel(GameObject g) + { + if (willProcess && isHuman) + { + var description = importer.humanDescription; + var human = description.human.ToList(); + for (int i = human.Count - 1; i >= 0; i--) + { + switch (human[i].humanName) + { + case "Jaw" when human[i].boneName.IndexOf("jaw", System.StringComparison.OrdinalIgnoreCase) < 0: + case "Upper Chest": + human.RemoveAt(i); + break; + } + } + + description.human = human.ToArray(); + importer.humanDescription = description; + } + } + + private static void OnPostprocessAllAssets(string[] ignored, string[] deletedAssets, string[] ignored2, string[] ignored3) + { + foreach (string s in deletedAssets) + SessionState.EraseBool(AssetDatabase.AssetPathToGUID(s)); + } + + + [UnityEditor.Callbacks.DidReloadScripts] + private static void CollectExistingModels() + { + foreach (var g in AssetDatabase.FindAssets("t:model")) + SessionState.SetBool(g, true); + } + } + +} diff --git a/VRCProcessor/Editor/VRCProcessor.cs.meta b/VRCProcessor/Editor/VRCProcessor.cs.meta new file mode 100644 index 0000000..89496a3 --- /dev/null +++ b/VRCProcessor/Editor/VRCProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 28fcf192f7ea2804f894905f2c7eef40 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCProcessor/Editor/com.dreadscripts.vrcprocessor.Editor.asmdef b/VRCProcessor/Editor/com.dreadscripts.vrcprocessor.Editor.asmdef new file mode 100644 index 0000000..1a3ef86 --- /dev/null +++ b/VRCProcessor/Editor/com.dreadscripts.vrcprocessor.Editor.asmdef @@ -0,0 +1,15 @@ +{ + "name": "com.dreadscripts.vrcprocessor.Editor", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/VRCProcessor/Editor/com.dreadscripts.vrcprocessor.Editor.asmdef.meta b/VRCProcessor/Editor/com.dreadscripts.vrcprocessor.Editor.asmdef.meta new file mode 100644 index 0000000..79e709a --- /dev/null +++ b/VRCProcessor/Editor/com.dreadscripts.vrcprocessor.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 39834511362d90349b6f26e02d1856db +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCProcessor/LICENSE b/VRCProcessor/LICENSE new file mode 100644 index 0000000..545aeca --- /dev/null +++ b/VRCProcessor/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Dreadrith + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/VRCProcessor/LICENSE.meta b/VRCProcessor/LICENSE.meta new file mode 100644 index 0000000..2500604 --- /dev/null +++ b/VRCProcessor/LICENSE.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a645fb62fbc16a740bd762f167aa73cd +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCProcessor/README.md b/VRCProcessor/README.md new file mode 100644 index 0000000..caf9d0d --- /dev/null +++ b/VRCProcessor/README.md @@ -0,0 +1,12 @@ +# VRCProcessor +Automatically sets valid models to Humanoid and other usual settings upon import. + +## Features +- Sets Normals to import +- Enables Read/Write +- Sets Humanoid Rig for Humanoid models +- Removes Upper Chest bone +- Removes Jaw bone if invalid + +### Thank you +If you enjoy VRCProcessor, please consider [supporting me ♡](https://ko-fi.com/Dreadrith)! \ No newline at end of file diff --git a/VRCProcessor/README.md.meta b/VRCProcessor/README.md.meta new file mode 100644 index 0000000..1351248 --- /dev/null +++ b/VRCProcessor/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 19dc3bb10c750f74bbbefa4050967433 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/VRCProcessor/package.json b/VRCProcessor/package.json new file mode 100644 index 0000000..addcf4a --- /dev/null +++ b/VRCProcessor/package.json @@ -0,0 +1,17 @@ +{ + "name": "com.dreadscripts.vrcprocessor", + "displayName": "DreadScripts - VRCProcessor", + "version": "1.0.1", + "description": "Automatically sets valid models to Humanoid and other usual settings upon import.", + "gitDependencies": {}, + "vpmDependencies": {}, + "author": { + "name": "Dreadrith", + "email": "dreadscripts@gmail.com", + "url": "https://www.dreadrith.com" + }, + "legacyFolders": {}, + "legacyFiles": {}, + "type": "tool", + "unity": "2019.4" +} \ No newline at end of file diff --git a/VRCProcessor/package.json.meta b/VRCProcessor/package.json.meta new file mode 100644 index 0000000..107e0fd --- /dev/null +++ b/VRCProcessor/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b7129faa5e8587d408e73764f3b3a886 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: