diff --git a/Icons/Close.png b/Icons/Close.png
new file mode 100644
index 0000000..58261a1
Binary files /dev/null and b/Icons/Close.png differ
diff --git a/Icons/Corrective (64).jpg b/Icons/Corrective (64).jpg
new file mode 100644
index 0000000..59aa6c4
Binary files /dev/null and b/Icons/Corrective (64).jpg differ
diff --git a/Icons/Icons.mb b/Icons/Icons.mb
new file mode 100644
index 0000000..5c2eaef
--- /dev/null
+++ b/Icons/Icons.mb
@@ -0,0 +1 @@
+FOR8         
��MayaFOR8��        �HEADVERS�          2023    UVER�          undef   MADE�          undef   CHNG�          Mon, Nov 27, 2023 01:56:30 AM   ICON�          undef   INFO�          undef   OBJN�          undef   INCL�          undef(  LUNI�          cm      TUNI�          film    AUNI�          deg     TDUR�          	141120000       FINF�          application maya        FINF          product Maya 2023       FINF          
version 2023    FINF   
       &cutIdentifier 202202161415-df43006fd3   FINF   &       9osv Windows 11 Home Single Language v2009 (Build: 22621)        FINF   9       *UUID 8AC5F312-4267-FDE7-1B5B-D9A52471230F       PLUG           stereoCamera 10.0       PLUG           mtoa 5.1.0      FOR8           �XFRMCREA           �persp �Q1�w8G��$\�R�L DBLEP         v $             DBL3P         t  @<      @5      @<           DBL3P         r  ��5��m
?�!�TD-��Cq٫r�     FOR8          ,DCAMCREA           "perspShape persp �9�Dc�K�NE ���      DBLEP         v               DBLEP         fl $@A�����    DBLEP         
coi $@Fi3k�    STR P         imn  persp      STR P         den  persp_depth        STR P         man  persp_mask STR P         hc  viewSet -p %camera  FOR8           �XFRMCREA           �top Ϻ���x�E��f֕�   DBLEP         v $             DBL3P         t          @�@�����             DBL3P         r  ��!�TD-                     FOR8          �DCAMCREA           topShape top 	wg�x��H�  B�g�k  DBLEP         v               DBLEP         
rnd             DBLEP         
coi $@�@�����   DBLEP         ow  @>          STR P         	imn  top        STR P         den  top_depth  STR P         man  top_mask   STR P         hc  viewSet -t %camera  DBLEP         o  ?�           STR P         ai_translator  orthographic     FOR8           |XFRMCREA           �front �"�%�LE�W����L DBLEP         v $             DBL3P         t                  @�@�����     FOR8          �DCAMCREA           "frontShape front 뀉t�$lG�<(�ܠ!�      DBLEP         v               DBLEP         
rnd             DBLEP         
coi $@�@�����   DBLEP         ow  @>          STR P         imn  front      STR P         den  front_depth        STR P         man  front_mask STR P         hc  viewSet -f %camera  DBLEP         o  ?�           STR P         ai_translator  orthographic     FOR8           �XFRMCREA           �side nqL�F�Z@�<9�  DBLEP         v $             DBL3P         t  @�@�����                     DBL3P         r  �       ?�!�TD-             FOR8          �DCAMCREA            sideShape side :o�xU�xK�;���<) DBLEP         v               DBLEP         
rnd             DBLEP         
coi $@�@�����   DBLEP         ow  @>          STR P         
imn  side       STR P         den  side_depth STR P         man  side_mask  STR P         hc  viewSet -s %camera  DBLEP         o  ?�           STR P         ai_translator  orthographic     FOR8           tRLLKCREA           �lightLinker1 �s�.�eF�3�P�6��  FLGSP         	lnk (          FLGSP         
slnk (         FOR8           <SDMLCREA           $�shapeEditorManager 1��õ#�I�������    FOR8           DPSDMCREA           )�poseInterpolatorManager OŽ�T
�O�Ӡ�N�       FOR8P         TDPLMCREA           �layerManager ��oN�`C��ӿ��W�  FLGSP         	dli (          FOR8           4DSPLCREA           �defaultLayer [�+v eG��;;�d+x  FOR8P         \RNLMCREA           $�renderLayerManager ���u̪N�Gl h��    FLGSP         
rlmi (         FOR8           \RNDLCREA           $�defaultRenderLayer  ��K��æH�u�    DBLEP         g  ?�           FOR8evd5     �<SCRPCREAP         &�defaultCameraGlobals N\�"�
�K�v�ҶH�-  STR P       Ӭb  

     DBLEP         st  @           DBLEP         
stp  ?�         FOR8          ��SCRPCREA           +�uiConfigurationScriptNode <��T�J���ށ��     STR P        ��b  // Maya Mel UI Configuration File.
//
//  This script is machine generated.  Edit at your own risk.
//
//

global string $gMainPane;
if (`paneLayout -exists $gMainPane`) {

	global int $gUseScenePanelConfig;
	int    $useSceneConfig = $gUseScenePanelConfig;
	int    $nodeEditorPanelVisible = stringArrayContains("nodeEditorPanel1", `getPanel -vis`);
	int    $nodeEditorWorkspaceControlOpen = (`workspaceControl -exists nodeEditorPanel1Window` && `workspaceControl -q -visible nodeEditorPanel1Window`);
	int    $menusOkayInPanels = `optionVar -q allowMenusInPanels`;
	int    $nVisPanes = `paneLayout -q -nvp $gMainPane`;
	int    $nPanes = 0;
	string $editorName;
	string $panelName;
	string $itemFilterName;
	string $panelConfig;

	//
	//  get current state of the UI
	//
	sceneUIReplacement -update $gMainPane;

	$panelName = `sceneUIReplacement -getNextPanel "modelPanel" (localizedPanelLabel("Top View")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		modelPanel -edit -l (localizedPanelLabel("Top View")) -mbv $menusOkayInPanels  $panelName;
		$editorName = $panelName;
        modelEditor -e 
            -camera "|top" 
            -useInteractiveMode 0
            -displayLights "default" 
            -displayAppearance "smoothShaded" 
            -activeOnly 0
            -ignorePanZoom 0
            -wireframeOnShaded 0
            -headsUpDisplay 1
            -holdOuts 1
            -selectionHiliteDisplay 1
            -useDefaultMaterial 0
            -bufferMode "double" 
            -twoSidedLighting 0
            -backfaceCulling 0
            -xray 0
            -jointXray 0
            -activeComponentsXray 0
            -displayTextures 0
            -smoothWireframe 0
            -lineWidth 1
            -textureAnisotropic 0
            -textureHilight 1
            -textureSampling 2
            -textureDisplay "modulate" 
            -textureMaxSize 32768
            -fogging 0
            -fogSource "fragment" 
            -fogMode "linear" 
            -fogStart 0
            -fogEnd 100
            -fogDensity 0.1
            -fogColor 0.5 0.5 0.5 1 
            -depthOfFieldPreview 1
            -maxConstantTransparency 1
            -rendererName "vp2Renderer" 
            -objectFilterShowInHUD 1
            -isFiltered 0
            -colorResolution 256 256 
            -bumpResolution 512 512 
            -textureCompression 0
            -transparencyAlgorithm "frontAndBackCull" 
            -transpInShadows 0
            -cullingOverride "none" 
            -lowQualityLighting 0
            -maximumNumHardwareLights 1
            -occlusionCulling 0
            -shadingModel 0
            -useBaseRenderer 0
            -useReducedRenderer 0
            -smallObjectCulling 0
            -smallObjectThreshold -1 
            -interactiveDisableShadows 0
            -interactiveBackFaceCull 0
            -sortTransparent 1
            -controllers 1
            -nurbsCurves 1
            -nurbsSurfaces 1
            -polymeshes 1
            -subdivSurfaces 1
            -planes 1
            -lights 1
            -cameras 1
            -controlVertices 1
            -hulls 1
            -grid 1
            -imagePlane 1
            -joints 1
            -ikHandles 1
            -deformers 1
            -dynamics 1
            -particleInstancers 1
            -fluids 1
            -hairSystems 1
            -follicles 1
            -nCloths 1
            -nParticles 1
            -nRigids 1
            -dynamicConstraints 1
            -locators 1
            -manipulators 1
            -pluginShapes 1
            -dimensions 1
            -handles 1
            -pivots 1
            -textures 1
            -strokes 1
            -motionTrails 1
            -clipGhosts 1
            -greasePencils 0
            -shadows 0
            -captureSequenceNumber -1
            -width 1
            -height 1
            -sceneRenderFilter 0
            $editorName;
        modelEditor -e -viewSelected 0 $editorName;
        modelEditor -e 
            -pluginObjects "gpuCacheDisplayFilter" 1 
            $editorName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextPanel "modelPanel" (localizedPanelLabel("Side View")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		modelPanel -edit -l (localizedPanelLabel("Side View")) -mbv $menusOkayInPanels  $panelName;
		$editorName = $panelName;
        modelEditor -e 
            -camera "|side" 
            -useInteractiveMode 0
            -displayLights "default" 
            -displayAppearance "smoothShaded" 
            -activeOnly 0
            -ignorePanZoom 0
            -wireframeOnShaded 0
            -headsUpDisplay 1
            -holdOuts 1
            -selectionHiliteDisplay 1
            -useDefaultMaterial 0
            -bufferMode "double" 
            -twoSidedLighting 0
            -backfaceCulling 0
            -xray 0
            -jointXray 0
            -activeComponentsXray 0
            -displayTextures 0
            -smoothWireframe 0
            -lineWidth 1
            -textureAnisotropic 0
            -textureHilight 1
            -textureSampling 2
            -textureDisplay "modulate" 
            -textureMaxSize 32768
            -fogging 0
            -fogSource "fragment" 
            -fogMode "linear" 
            -fogStart 0
            -fogEnd 100
            -fogDensity 0.1
            -fogColor 0.5 0.5 0.5 1 
            -depthOfFieldPreview 1
            -maxConstantTransparency 1
            -rendererName "vp2Renderer" 
            -objectFilterShowInHUD 1
            -isFiltered 0
            -colorResolution 256 256 
            -bumpResolution 512 512 
            -textureCompression 0
            -transparencyAlgorithm "frontAndBackCull" 
            -transpInShadows 0
            -cullingOverride "none" 
            -lowQualityLighting 0
            -maximumNumHardwareLights 1
            -occlusionCulling 0
            -shadingModel 0
            -useBaseRenderer 0
            -useReducedRenderer 0
            -smallObjectCulling 0
            -smallObjectThreshold -1 
            -interactiveDisableShadows 0
            -interactiveBackFaceCull 0
            -sortTransparent 1
            -controllers 1
            -nurbsCurves 1
            -nurbsSurfaces 1
            -polymeshes 1
            -subdivSurfaces 1
            -planes 1
            -lights 1
            -cameras 1
            -controlVertices 1
            -hulls 1
            -grid 1
            -imagePlane 1
            -joints 1
            -ikHandles 1
            -deformers 1
            -dynamics 1
            -particleInstancers 1
            -fluids 1
            -hairSystems 1
            -follicles 1
            -nCloths 1
            -nParticles 1
            -nRigids 1
            -dynamicConstraints 1
            -locators 1
            -manipulators 1
            -pluginShapes 1
            -dimensions 1
            -handles 1
            -pivots 1
            -textures 1
            -strokes 1
            -motionTrails 1
            -clipGhosts 1
            -greasePencils 0
            -shadows 0
            -captureSequenceNumber -1
            -width 1
            -height 1
            -sceneRenderFilter 0
            $editorName;
        modelEditor -e -viewSelected 0 $editorName;
        modelEditor -e 
            -pluginObjects "gpuCacheDisplayFilter" 1 
            $editorName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextPanel "modelPanel" (localizedPanelLabel("Front View")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		modelPanel -edit -l (localizedPanelLabel("Front View")) -mbv $menusOkayInPanels  $panelName;
		$editorName = $panelName;
        modelEditor -e 
            -camera "|front" 
            -useInteractiveMode 0
            -displayLights "default" 
            -displayAppearance "smoothShaded" 
            -activeOnly 0
            -ignorePanZoom 0
            -wireframeOnShaded 0
            -headsUpDisplay 1
            -holdOuts 1
            -selectionHiliteDisplay 1
            -useDefaultMaterial 0
            -bufferMode "double" 
            -twoSidedLighting 0
            -backfaceCulling 0
            -xray 0
            -jointXray 0
            -activeComponentsXray 0
            -displayTextures 0
            -smoothWireframe 0
            -lineWidth 1
            -textureAnisotropic 0
            -textureHilight 1
            -textureSampling 2
            -textureDisplay "modulate" 
            -textureMaxSize 32768
            -fogging 0
            -fogSource "fragment" 
            -fogMode "linear" 
            -fogStart 0
            -fogEnd 100
            -fogDensity 0.1
            -fogColor 0.5 0.5 0.5 1 
            -depthOfFieldPreview 1
            -maxConstantTransparency 1
            -rendererName "vp2Renderer" 
            -objectFilterShowInHUD 1
            -isFiltered 0
            -colorResolution 256 256 
            -bumpResolution 512 512 
            -textureCompression 0
            -transparencyAlgorithm "frontAndBackCull" 
            -transpInShadows 0
            -cullingOverride "none" 
            -lowQualityLighting 0
            -maximumNumHardwareLights 1
            -occlusionCulling 0
            -shadingModel 0
            -useBaseRenderer 0
            -useReducedRenderer 0
            -smallObjectCulling 0
            -smallObjectThreshold -1 
            -interactiveDisableShadows 0
            -interactiveBackFaceCull 0
            -sortTransparent 1
            -controllers 1
            -nurbsCurves 1
            -nurbsSurfaces 1
            -polymeshes 1
            -subdivSurfaces 1
            -planes 1
            -lights 1
            -cameras 1
            -controlVertices 1
            -hulls 1
            -grid 1
            -imagePlane 1
            -joints 1
            -ikHandles 1
            -deformers 1
            -dynamics 1
            -particleInstancers 1
            -fluids 1
            -hairSystems 1
            -follicles 1
            -nCloths 1
            -nParticles 1
            -nRigids 1
            -dynamicConstraints 1
            -locators 1
            -manipulators 1
            -pluginShapes 1
            -dimensions 1
            -handles 1
            -pivots 1
            -textures 1
            -strokes 1
            -motionTrails 1
            -clipGhosts 1
            -greasePencils 0
            -shadows 0
            -captureSequenceNumber -1
            -width 1
            -height 1
            -sceneRenderFilter 0
            $editorName;
        modelEditor -e -viewSelected 0 $editorName;
        modelEditor -e 
            -pluginObjects "gpuCacheDisplayFilter" 1 
            $editorName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextPanel "modelPanel" (localizedPanelLabel("Persp View")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		modelPanel -edit -l (localizedPanelLabel("Persp View")) -mbv $menusOkayInPanels  $panelName;
		$editorName = $panelName;
        modelEditor -e 
            -camera "|persp" 
            -useInteractiveMode 0
            -displayLights "default" 
            -displayAppearance "smoothShaded" 
            -activeOnly 0
            -ignorePanZoom 0
            -wireframeOnShaded 0
            -headsUpDisplay 1
            -holdOuts 1
            -selectionHiliteDisplay 1
            -useDefaultMaterial 0
            -bufferMode "double" 
            -twoSidedLighting 0
            -backfaceCulling 0
            -xray 0
            -jointXray 0
            -activeComponentsXray 0
            -displayTextures 0
            -smoothWireframe 0
            -lineWidth 1
            -textureAnisotropic 0
            -textureHilight 1
            -textureSampling 2
            -textureDisplay "modulate" 
            -textureMaxSize 32768
            -fogging 0
            -fogSource "fragment" 
            -fogMode "linear" 
            -fogStart 0
            -fogEnd 100
            -fogDensity 0.1
            -fogColor 0.5 0.5 0.5 1 
            -depthOfFieldPreview 1
            -maxConstantTransparency 1
            -rendererName "vp2Renderer" 
            -objectFilterShowInHUD 1
            -isFiltered 0
            -colorResolution 256 256 
            -bumpResolution 512 512 
            -textureCompression 0
            -transparencyAlgorithm "frontAndBackCull" 
            -transpInShadows 0
            -cullingOverride "none" 
            -lowQualityLighting 0
            -maximumNumHardwareLights 1
            -occlusionCulling 0
            -shadingModel 0
            -useBaseRenderer 0
            -useReducedRenderer 0
            -smallObjectCulling 0
            -smallObjectThreshold -1 
            -interactiveDisableShadows 0
            -interactiveBackFaceCull 0
            -sortTransparent 1
            -controllers 1
            -nurbsCurves 1
            -nurbsSurfaces 1
            -polymeshes 1
            -subdivSurfaces 1
            -planes 1
            -lights 1
            -cameras 1
            -controlVertices 1
            -hulls 1
            -grid 1
            -imagePlane 1
            -joints 1
            -ikHandles 1
            -deformers 1
            -dynamics 1
            -particleInstancers 1
            -fluids 1
            -hairSystems 1
            -follicles 1
            -nCloths 1
            -nParticles 1
            -nRigids 1
            -dynamicConstraints 1
            -locators 1
            -manipulators 1
            -pluginShapes 1
            -dimensions 1
            -handles 1
            -pivots 1
            -textures 1
            -strokes 1
            -motionTrails 1
            -clipGhosts 1
            -greasePencils 0
            -shadows 0
            -captureSequenceNumber -1
            -width 3154
            -height 1705
            -sceneRenderFilter 0
            $editorName;
        modelEditor -e -viewSelected 0 $editorName;
        modelEditor -e 
            -pluginObjects "gpuCacheDisplayFilter" 1 
            $editorName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextPanel "outlinerPanel" (localizedPanelLabel("ToggledOutliner")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		outlinerPanel -edit -l (localizedPanelLabel("ToggledOutliner")) -mbv $menusOkayInPanels  $panelName;
		$editorName = $panelName;
        outlinerEditor -e 
            -showShapes 0
            -showAssignedMaterials 0
            -showTimeEditor 1
            -showReferenceNodes 1
            -showReferenceMembers 1
            -showAttributes 0
            -showConnected 0
            -showAnimCurvesOnly 0
            -showMuteInfo 0
            -organizeByLayer 1
            -organizeByClip 1
            -showAnimLayerWeight 1
            -autoExpandLayers 1
            -autoExpand 0
            -showDagOnly 0
            -showAssets 1
            -showContainedOnly 1
            -showPublishedAsConnected 0
            -showParentContainers 0
            -showContainerContents 1
            -ignoreDagHierarchy 0
            -expandConnections 0
            -showUpstreamCurves 1
            -showUnitlessCurves 1
            -showCompounds 1
            -showLeafs 1
            -showNumericAttrsOnly 0
            -highlightActive 1
            -autoSelectNewObjects 0
            -doNotSelectNewObjects 0
            -dropIsParent 1
            -transmitFilters 0
            -setFilter "defaultSetFilter" 
            -showSetMembers 1
            -allowMultiSelection 1
            -alwaysToggleSelect 0
            -directSelect 0
            -isSet 0
            -isSetMember 0
            -displayMode "DAG" 
            -expandObjects 0
            -setsIgnoreFilters 1
            -containersIgnoreFilters 0
            -editAttrName 0
            -showAttrValues 0
            -highlightSecondary 0
            -showUVAttrsOnly 0
            -showTextureNodesOnly 0
            -attrAlphaOrder "default" 
            -animLayerFilterOptions "allAffecting" 
            -sortOrder "none" 
            -longNames 0
            -niceNames 1
            -showNamespace 1
            -showPinIcons 0
            -mapMotionTrails 0
            -ignoreHiddenAttribute 0
            -ignoreOutlinerColor 0
            -renderFilterVisible 0
            -renderFilterIndex 0
            -selectionOrder "chronological" 
            -expandAttribute 0
            $editorName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextPanel "outlinerPanel" (localizedPanelLabel("Outliner")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		outlinerPanel -edit -l (localizedPanelLabel("Outliner")) -mbv $menusOkayInPanels  $panelName;
		$editorName = $panelName;
        outlinerEditor -e 
            -showShapes 0
            -showAssignedMaterials 0
            -showTimeEditor 1
            -showReferenceNodes 0
            -showReferenceMembers 0
            -showAttributes 0
            -showConnected 0
            -showAnimCurvesOnly 0
            -showMuteInfo 0
            -organizeByLayer 1
            -organizeByClip 1
            -showAnimLayerWeight 1
            -autoExpandLayers 1
            -autoExpand 0
            -showDagOnly 1
            -showAssets 1
            -showContainedOnly 1
            -showPublishedAsConnected 0
            -showParentContainers 0
            -showContainerContents 1
            -ignoreDagHierarchy 0
            -expandConnections 0
            -showUpstreamCurves 1
            -showUnitlessCurves 1
            -showCompounds 1
            -showLeafs 1
            -showNumericAttrsOnly 0
            -highlightActive 1
            -autoSelectNewObjects 0
            -doNotSelectNewObjects 0
            -dropIsParent 1
            -transmitFilters 0
            -setFilter "defaultSetFilter" 
            -showSetMembers 1
            -allowMultiSelection 1
            -alwaysToggleSelect 0
            -directSelect 0
            -displayMode "DAG" 
            -expandObjects 0
            -setsIgnoreFilters 1
            -containersIgnoreFilters 0
            -editAttrName 0
            -showAttrValues 0
            -highlightSecondary 0
            -showUVAttrsOnly 0
            -showTextureNodesOnly 0
            -attrAlphaOrder "default" 
            -animLayerFilterOptions "allAffecting" 
            -sortOrder "none" 
            -longNames 0
            -niceNames 1
            -showNamespace 1
            -showPinIcons 0
            -mapMotionTrails 0
            -ignoreHiddenAttribute 0
            -ignoreOutlinerColor 0
            -renderFilterVisible 0
            $editorName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "graphEditor" (localizedPanelLabel("Graph Editor")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		scriptedPanel -edit -l (localizedPanelLabel("Graph Editor")) -mbv $menusOkayInPanels  $panelName;

			$editorName = ($panelName+"OutlineEd");
            outlinerEditor -e 
                -showShapes 1
                -showAssignedMaterials 0
                -showTimeEditor 1
                -showReferenceNodes 0
                -showReferenceMembers 0
                -showAttributes 1
                -showConnected 1
                -showAnimCurvesOnly 1
                -showMuteInfo 0
                -organizeByLayer 1
                -organizeByClip 1
                -showAnimLayerWeight 1
                -autoExpandLayers 1
                -autoExpand 1
                -showDagOnly 0
                -showAssets 1
                -showContainedOnly 0
                -showPublishedAsConnected 0
                -showParentContainers 0
                -showContainerContents 0
                -ignoreDagHierarchy 0
                -expandConnections 1
                -showUpstreamCurves 1
                -showUnitlessCurves 1
                -showCompounds 0
                -showLeafs 1
                -showNumericAttrsOnly 1
                -highlightActive 0
                -autoSelectNewObjects 1
                -doNotSelectNewObjects 0
                -dropIsParent 1
                -transmitFilters 1
                -setFilter "0" 
                -showSetMembers 0
                -allowMultiSelection 1
                -alwaysToggleSelect 0
                -directSelect 0
                -displayMode "DAG" 
                -expandObjects 0
                -setsIgnoreFilters 1
                -containersIgnoreFilters 0
                -editAttrName 0
                -showAttrValues 0
                -highlightSecondary 0
                -showUVAttrsOnly 0
                -showTextureNodesOnly 0
                -attrAlphaOrder "default" 
                -animLayerFilterOptions "allAffecting" 
                -sortOrder "none" 
                -longNames 0
                -niceNames 1
                -showNamespace 1
                -showPinIcons 1
                -mapMotionTrails 1
                -ignoreHiddenAttribute 0
                -ignoreOutlinerColor 0
                -renderFilterVisible 0
                $editorName;

			$editorName = ($panelName+"GraphEd");
            animCurveEditor -e 
                -displayValues 0
                -snapTime "integer" 
                -snapValue "none" 
                -showPlayRangeShades "on" 
                -lockPlayRangeShades "off" 
                -smoothness "fine" 
                -resultSamples 1
                -resultScreenSamples 0
                -resultUpdate "delayed" 
                -showUpstreamCurves 1
                -keyMinScale 1
                -stackedCurvesMin -1
                -stackedCurvesMax 1
                -stackedCurvesSpace 0.2
                -preSelectionHighlight 0
                -constrainDrag 0
                -valueLinesToggle 1
                -highlightAffectedCurves 0
                $editorName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "dopeSheetPanel" (localizedPanelLabel("Dope Sheet")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		scriptedPanel -edit -l (localizedPanelLabel("Dope Sheet")) -mbv $menusOkayInPanels  $panelName;

			$editorName = ($panelName+"OutlineEd");
            outlinerEditor -e 
                -showShapes 1
                -showAssignedMaterials 0
                -showTimeEditor 1
                -showReferenceNodes 0
                -showReferenceMembers 0
                -showAttributes 1
                -showConnected 1
                -showAnimCurvesOnly 1
                -showMuteInfo 0
                -organizeByLayer 1
                -organizeByClip 1
                -showAnimLayerWeight 1
                -autoExpandLayers 1
                -autoExpand 0
                -showDagOnly 0
                -showAssets 1
                -showContainedOnly 0
                -showPublishedAsConnected 0
                -showParentContainers 0
                -showContainerContents 0
                -ignoreDagHierarchy 0
                -expandConnections 1
                -showUpstreamCurves 1
                -showUnitlessCurves 0
                -showCompounds 1
                -showLeafs 1
                -showNumericAttrsOnly 1
                -highlightActive 0
                -autoSelectNewObjects 0
                -doNotSelectNewObjects 1
                -dropIsParent 1
                -transmitFilters 0
                -setFilter "0" 
                -showSetMembers 0
                -allowMultiSelection 1
                -alwaysToggleSelect 0
                -directSelect 0
                -displayMode "DAG" 
                -expandObjects 0
                -setsIgnoreFilters 1
                -containersIgnoreFilters 0
                -editAttrName 0
                -showAttrValues 0
                -highlightSecondary 0
                -showUVAttrsOnly 0
                -showTextureNodesOnly 0
                -attrAlphaOrder "default" 
                -animLayerFilterOptions "allAffecting" 
                -sortOrder "none" 
                -longNames 0
                -niceNames 1
                -showNamespace 1
                -showPinIcons 0
                -mapMotionTrails 1
                -ignoreHiddenAttribute 0
                -ignoreOutlinerColor 0
                -renderFilterVisible 0
                $editorName;

			$editorName = ($panelName+"DopeSheetEd");
            dopeSheetEditor -e 
                -displayValues 0
                -snapTime "integer" 
                -snapValue "none" 
                -outliner "dopeSheetPanel1OutlineEd" 
                -showSummary 1
                -showScene 0
                -hierarchyBelow 0
                -showTicks 1
                -selectionWindow 0 0 0 0 
                $editorName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "timeEditorPanel" (localizedPanelLabel("Time Editor")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		scriptedPanel -edit -l (localizedPanelLabel("Time Editor")) -mbv $menusOkayInPanels  $panelName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "clipEditorPanel" (localizedPanelLabel("Trax Editor")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		scriptedPanel -edit -l (localizedPanelLabel("Trax Editor")) -mbv $menusOkayInPanels  $panelName;

			$editorName = clipEditorNameFromPanel($panelName);
            clipEditor -e 
                -displayValues 0
                -snapTime "none" 
                -snapValue "none" 
                -initialized 0
                -manageSequencer 0 
                $editorName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "sequenceEditorPanel" (localizedPanelLabel("Camera Sequencer")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		scriptedPanel -edit -l (localizedPanelLabel("Camera Sequencer")) -mbv $menusOkayInPanels  $panelName;

			$editorName = sequenceEditorNameFromPanel($panelName);
            clipEditor -e 
                -displayValues 0
                -snapTime "none" 
                -snapValue "none" 
                -initialized 0
                -manageSequencer 1 
                $editorName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "hyperGraphPanel" (localizedPanelLabel("Hypergraph Hierarchy")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		scriptedPanel -edit -l (localizedPanelLabel("Hypergraph Hierarchy")) -mbv $menusOkayInPanels  $panelName;

			$editorName = ($panelName+"HyperGraphEd");
            hyperGraph -e 
                -graphLayoutStyle "hierarchicalLayout" 
                -orientation "horiz" 
                -mergeConnections 0
                -zoom 1
                -animateTransition 0
                -showRelationships 1
                -showShapes 0
                -showDeformers 0
                -showExpressions 0
                -showConstraints 0
                -showConnectionFromSelected 0
                -showConnectionToSelected 0
                -showConstraintLabels 0
                -showUnderworld 0
                -showInvisible 0
                -transitionFrames 1
                -opaqueContainers 0
                -freeform 0
                -imagePosition 0 0 
                -imageScale 1
                -imageEnabled 0
                -graphType "DAG" 
                -heatMapDisplay 0
                -updateSelection 1
                -updateNodeAdded 1
                -useDrawOverrideColor 0
                -limitGraphTraversal -1
                -range 0 0 
                -iconSize "smallIcons" 
                -showCachedConnections 0
                $editorName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "hyperShadePanel" (localizedPanelLabel("Hypershade")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		scriptedPanel -edit -l (localizedPanelLabel("Hypershade")) -mbv $menusOkayInPanels  $panelName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "visorPanel" (localizedPanelLabel("Visor")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		scriptedPanel -edit -l (localizedPanelLabel("Visor")) -mbv $menusOkayInPanels  $panelName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "nodeEditorPanel" (localizedPanelLabel("Node Editor")) `;
	if ($nodeEditorPanelVisible || $nodeEditorWorkspaceControlOpen) {
		if ("" == $panelName) {
			if ($useSceneConfig) {
				$panelName = `scriptedPanel -unParent  -type "nodeEditorPanel" -l (localizedPanelLabel("Node Editor")) -mbv $menusOkayInPanels `;

			$editorName = ($panelName+"NodeEditorEd");
            nodeEditor -e 
                -allAttributes 0
                -allNodes 0
                -autoSizeNodes 1
                -consistentNameSize 1
                -createNodeCommand "nodeEdCreateNodeCommand" 
                -connectNodeOnCreation 0
                -connectOnDrop 0
                -copyConnectionsOnPaste 0
                -connectionStyle "bezier" 
                -defaultPinnedState 0
                -additiveGraphingMode 0
                -connectedGraphingMode 1
                -settingsChangedCallback "nodeEdSyncControls" 
                -traversalDepthLimit -1
                -keyPressCommand "nodeEdKeyPressCommand" 
                -nodeTitleMode "name" 
                -gridSnap 0
                -gridVisibility 1
                -crosshairOnEdgeDragging 0
                -popupMenuScript "nodeEdBuildPanelMenus" 
                -showNamespace 1
                -showShapes 1
                -showSGShapes 0
                -showTransforms 1
                -useAssets 1
                -syncedSelection 1
                -extendToShapes 1
                -showUnitConversions 0
                -editorMode "default" 
                -hasWatchpoint 0
                $editorName;
			}
		} else {
			$label = `panel -q -label $panelName`;
			scriptedPanel -edit -l (localizedPanelLabel("Node Editor")) -mbv $menusOkayInPanels  $panelName;

			$editorName = ($panelName+"NodeEditorEd");
            nodeEditor -e 
                -allAttributes 0
                -allNodes 0
                -autoSizeNodes 1
                -consistentNameSize 1
                -createNodeCommand "nodeEdCreateNodeCommand" 
                -connectNodeOnCreation 0
                -connectOnDrop 0
                -copyConnectionsOnPaste 0
                -connectionStyle "bezier" 
                -defaultPinnedState 0
                -additiveGraphingMode 0
                -connectedGraphingMode 1
                -settingsChangedCallback "nodeEdSyncControls" 
                -traversalDepthLimit -1
                -keyPressCommand "nodeEdKeyPressCommand" 
                -nodeTitleMode "name" 
                -gridSnap 0
                -gridVisibility 1
                -crosshairOnEdgeDragging 0
                -popupMenuScript "nodeEdBuildPanelMenus" 
                -showNamespace 1
                -showShapes 1
                -showSGShapes 0
                -showTransforms 1
                -useAssets 1
                -syncedSelection 1
                -extendToShapes 1
                -showUnitConversions 0
                -editorMode "default" 
                -hasWatchpoint 0
                $editorName;
			if (!$useSceneConfig) {
				panel -e -l $label $panelName;
			}
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "createNodePanel" (localizedPanelLabel("Create Node")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		scriptedPanel -edit -l (localizedPanelLabel("Create Node")) -mbv $menusOkayInPanels  $panelName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "polyTexturePlacementPanel" (localizedPanelLabel("UV Editor")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		scriptedPanel -edit -l (localizedPanelLabel("UV Editor")) -mbv $menusOkayInPanels  $panelName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "renderWindowPanel" (localizedPanelLabel("Render View")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		scriptedPanel -edit -l (localizedPanelLabel("Render View")) -mbv $menusOkayInPanels  $panelName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextPanel "shapePanel" (localizedPanelLabel("Shape Editor")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		shapePanel -edit -l (localizedPanelLabel("Shape Editor")) -mbv $menusOkayInPanels  $panelName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextPanel "posePanel" (localizedPanelLabel("Pose Editor")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		posePanel -edit -l (localizedPanelLabel("Pose Editor")) -mbv $menusOkayInPanels  $panelName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "dynRelEdPanel" (localizedPanelLabel("Dynamic Relationships")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		scriptedPanel -edit -l (localizedPanelLabel("Dynamic Relationships")) -mbv $menusOkayInPanels  $panelName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "relationshipPanel" (localizedPanelLabel("Relationship Editor")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		scriptedPanel -edit -l (localizedPanelLabel("Relationship Editor")) -mbv $menusOkayInPanels  $panelName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "referenceEditorPanel" (localizedPanelLabel("Reference Editor")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		scriptedPanel -edit -l (localizedPanelLabel("Reference Editor")) -mbv $menusOkayInPanels  $panelName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "dynPaintScriptedPanelType" (localizedPanelLabel("Paint Effects")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		scriptedPanel -edit -l (localizedPanelLabel("Paint Effects")) -mbv $menusOkayInPanels  $panelName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "scriptEditorPanel" (localizedPanelLabel("Script Editor")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		scriptedPanel -edit -l (localizedPanelLabel("Script Editor")) -mbv $menusOkayInPanels  $panelName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "profilerPanel" (localizedPanelLabel("Profiler Tool")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		scriptedPanel -edit -l (localizedPanelLabel("Profiler Tool")) -mbv $menusOkayInPanels  $panelName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "contentBrowserPanel" (localizedPanelLabel("Content Browser")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		scriptedPanel -edit -l (localizedPanelLabel("Content Browser")) -mbv $menusOkayInPanels  $panelName;
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	$panelName = `sceneUIReplacement -getNextScriptedPanel "Stereo" (localizedPanelLabel("Stereo")) `;
	if ("" != $panelName) {
		$label = `panel -q -label $panelName`;
		scriptedPanel -edit -l (localizedPanelLabel("Stereo")) -mbv $menusOkayInPanels  $panelName;
{ string $editorName = ($panelName+"Editor");
            stereoCameraView -e 
                -camera "|persp" 
                -useInteractiveMode 0
                -displayLights "default" 
                -displayAppearance "smoothShaded" 
                -activeOnly 0
                -ignorePanZoom 0
                -wireframeOnShaded 0
                -headsUpDisplay 1
                -holdOuts 1
                -selectionHiliteDisplay 1
                -useDefaultMaterial 0
                -bufferMode "double" 
                -twoSidedLighting 0
                -backfaceCulling 0
                -xray 0
                -jointXray 0
                -activeComponentsXray 0
                -displayTextures 0
                -smoothWireframe 0
                -lineWidth 1
                -textureAnisotropic 0
                -textureHilight 1
                -textureSampling 2
                -textureDisplay "modulate" 
                -textureMaxSize 32768
                -fogging 0
                -fogSource "fragment" 
                -fogMode "linear" 
                -fogStart 0
                -fogEnd 100
                -fogDensity 0.1
                -fogColor 0.5 0.5 0.5 1 
                -depthOfFieldPreview 1
                -maxConstantTransparency 1
                -objectFilterShowInHUD 1
                -isFiltered 0
                -colorResolution 4 4 
                -bumpResolution 4 4 
                -textureCompression 0
                -transparencyAlgorithm "frontAndBackCull" 
                -transpInShadows 0
                -cullingOverride "none" 
                -lowQualityLighting 0
                -maximumNumHardwareLights 0
                -occlusionCulling 0
                -shadingModel 0
                -useBaseRenderer 0
                -useReducedRenderer 0
                -smallObjectCulling 0
                -smallObjectThreshold -1 
                -interactiveDisableShadows 0
                -interactiveBackFaceCull 0
                -sortTransparent 1
                -controllers 1
                -nurbsCurves 1
                -nurbsSurfaces 1
                -polymeshes 1
                -subdivSurfaces 1
                -planes 1
                -lights 1
                -cameras 1
                -controlVertices 1
                -hulls 1
                -grid 1
                -imagePlane 1
                -joints 1
                -ikHandles 1
                -deformers 1
                -dynamics 1
                -particleInstancers 1
                -fluids 1
                -hairSystems 1
                -follicles 1
                -nCloths 1
                -nParticles 1
                -nRigids 1
                -dynamicConstraints 1
                -locators 1
                -manipulators 1
                -pluginShapes 1
                -dimensions 1
                -handles 1
                -pivots 1
                -textures 1
                -strokes 1
                -motionTrails 1
                -clipGhosts 1
                -greasePencils 0
                -shadows 0
                -captureSequenceNumber -1
                -width 0
                -height 0
                -sceneRenderFilter 0
                -displayMode "centerEye" 
                -viewColor 0 0 0 1 
                -useCustomBackground 1
                $editorName;
            stereoCameraView -e -viewSelected 0 $editorName;
            stereoCameraView -e 
                -pluginObjects "gpuCacheDisplayFilter" 1 
                $editorName; };
		if (!$useSceneConfig) {
			panel -e -l $label $panelName;
		}
	}


	if ($useSceneConfig) {
        string $configName = `getPanel -cwl (localizedPanelLabel("Current Layout"))`;
        if ("" != $configName) {
			panelConfiguration -edit -label (localizedPanelLabel("Current Layout")) 
				-userCreated false
				-defaultImage "vacantCell.xP:/"
				-image ""
				-sc false
				-configString "global string $gMainPane; paneLayout -e -cn \"single\" -ps 1 100 100 $gMainPane;"
				-removeAllPanels
				-ap false
					(localizedPanelLabel("Persp View")) 
					"modelPanel"
					"$panelName = `modelPanel -unParent -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels `;\n$editorName = $panelName;\nmodelEditor -e \n    -cam `findStartUpCamera persp` \n    -useInteractiveMode 0\n    -displayLights \"default\" \n    -displayAppearance \"smoothShaded\" \n    -activeOnly 0\n    -ignorePanZoom 0\n    -wireframeOnShaded 0\n    -headsUpDisplay 1\n    -holdOuts 1\n    -selectionHiliteDisplay 1\n    -useDefaultMaterial 0\n    -bufferMode \"double\" \n    -twoSidedLighting 0\n    -backfaceCulling 0\n    -xray 0\n    -jointXray 0\n    -activeComponentsXray 0\n    -displayTextures 0\n    -smoothWireframe 0\n    -lineWidth 1\n    -textureAnisotropic 0\n    -textureHilight 1\n    -textureSampling 2\n    -textureDisplay \"modulate\" \n    -textureMaxSize 32768\n    -fogging 0\n    -fogSource \"fragment\" \n    -fogMode \"linear\" \n    -fogStart 0\n    -fogEnd 100\n    -fogDensity 0.1\n    -fogColor 0.5 0.5 0.5 1 \n    -depthOfFieldPreview 1\n    -maxConstantTransparency 1\n    -rendererName \"vp2Renderer\" \n    -objectFilterShowInHUD 1\n    -isFiltered 0\n    -colorResolution 256 256 \n    -bumpResolution 512 512 \n    -textureCompression 0\n    -transparencyAlgorithm \"frontAndBackCull\" \n    -transpInShadows 0\n    -cullingOverride \"none\" \n    -lowQualityLighting 0\n    -maximumNumHardwareLights 1\n    -occlusionCulling 0\n    -shadingModel 0\n    -useBaseRenderer 0\n    -useReducedRenderer 0\n    -smallObjectCulling 0\n    -smallObjectThreshold -1 \n    -interactiveDisableShadows 0\n    -interactiveBackFaceCull 0\n    -sortTransparent 1\n    -controllers 1\n    -nurbsCurves 1\n    -nurbsSurfaces 1\n    -polymeshes 1\n    -subdivSurfaces 1\n    -planes 1\n    -lights 1\n    -cameras 1\n    -controlVertices 1\n    -hulls 1\n    -grid 1\n    -imagePlane 1\n    -joints 1\n    -ikHandles 1\n    -deformers 1\n    -dynamics 1\n    -particleInstancers 1\n    -fluids 1\n    -hairSystems 1\n    -follicles 1\n    -nCloths 1\n    -nParticles 1\n    -nRigids 1\n    -dynamicConstraints 1\n    -locators 1\n    -manipulators 1\n    -pluginShapes 1\n    -dimensions 1\n    -handles 1\n    -pivots 1\n    -textures 1\n    -strokes 1\n    -motionTrails 1\n    -clipGhosts 1\n    -greasePencils 0\n    -shadows 0\n    -captureSequenceNumber -1\n    -width 3154\n    -height 1705\n    -sceneRenderFilter 0\n    $editorName;\nmodelEditor -e -viewSelected 0 $editorName;\nmodelEditor -e \n    -pluginObjects \"gpuCacheDisplayFilter\" 1 \n    $editorName"
					"modelPanel -edit -l (localizedPanelLabel(\"Persp View\")) -mbv $menusOkayInPanels  $panelName;\n$editorName = $panelName;\nmodelEditor -e \n    -cam `findStartUpCamera persp` \n    -useInteractiveMode 0\n    -displayLights \"default\" \n    -displayAppearance \"smoothShaded\" \n    -activeOnly 0\n    -ignorePanZoom 0\n    -wireframeOnShaded 0\n    -headsUpDisplay 1\n    -holdOuts 1\n    -selectionHiliteDisplay 1\n    -useDefaultMaterial 0\n    -bufferMode \"double\" \n    -twoSidedLighting 0\n    -backfaceCulling 0\n    -xray 0\n    -jointXray 0\n    -activeComponentsXray 0\n    -displayTextures 0\n    -smoothWireframe 0\n    -lineWidth 1\n    -textureAnisotropic 0\n    -textureHilight 1\n    -textureSampling 2\n    -textureDisplay \"modulate\" \n    -textureMaxSize 32768\n    -fogging 0\n    -fogSource \"fragment\" \n    -fogMode \"linear\" \n    -fogStart 0\n    -fogEnd 100\n    -fogDensity 0.1\n    -fogColor 0.5 0.5 0.5 1 \n    -depthOfFieldPreview 1\n    -maxConstantTransparency 1\n    -rendererName \"vp2Renderer\" \n    -objectFilterShowInHUD 1\n    -isFiltered 0\n    -colorResolution 256 256 \n    -bumpResolution 512 512 \n    -textureCompression 0\n    -transparencyAlgorithm \"frontAndBackCull\" \n    -transpInShadows 0\n    -cullingOverride \"none\" \n    -lowQualityLighting 0\n    -maximumNumHardwareLights 1\n    -occlusionCulling 0\n    -shadingModel 0\n    -useBaseRenderer 0\n    -useReducedRenderer 0\n    -smallObjectCulling 0\n    -smallObjectThreshold -1 \n    -interactiveDisableShadows 0\n    -interactiveBackFaceCull 0\n    -sortTransparent 1\n    -controllers 1\n    -nurbsCurves 1\n    -nurbsSurfaces 1\n    -polymeshes 1\n    -subdivSurfaces 1\n    -planes 1\n    -lights 1\n    -cameras 1\n    -controlVertices 1\n    -hulls 1\n    -grid 1\n    -imagePlane 1\n    -joints 1\n    -ikHandles 1\n    -deformers 1\n    -dynamics 1\n    -particleInstancers 1\n    -fluids 1\n    -hairSystems 1\n    -follicles 1\n    -nCloths 1\n    -nParticles 1\n    -nRigids 1\n    -dynamicConstraints 1\n    -locators 1\n    -manipulators 1\n    -pluginShapes 1\n    -dimensions 1\n    -handles 1\n    -pivots 1\n    -textures 1\n    -strokes 1\n    -motionTrails 1\n    -clipGhosts 1\n    -greasePencils 0\n    -shadows 0\n    -captureSequenceNumber -1\n    -width 3154\n    -height 1705\n    -sceneRenderFilter 0\n    $editorName;\nmodelEditor -e -viewSelected 0 $editorName;\nmodelEditor -e \n    -pluginObjects \"gpuCacheDisplayFilter\" 1 \n    $editorName"
				$configName;

            setNamedPanelLayout (localizedPanelLabel("Current Layout"));
        }

        panelHistory -e -clear mainPanelHistory;
        sceneUIReplacement -clear;
	}


grid -spacing 5 -size 12 -divisions 5 -displayAxes yes -displayGridLines yes -displayDivisionLines yes -displayPerspectiveLabels no -displayOrthographicLabels no -displayAxesBold yes -perspectiveLabelPosition axis -orthographicLabelPosition edge;
viewManip -drawCompass 0 -compassAngle 0 -frontParameters "" -homeParameters "" -selectionLockParameters "";
}
 DBLEP         st  @          FOR8           �SCRPCREA           .�sceneConfigurationScriptNode �fC�A�D@�:�  STR P         4b  playbackOptions -min 0 -max 417 -ast 0 -aet 417      DBLEP         st  @          FOR8P         <SLCTSLCT           :time1  DBLE           o               FOR8P        �SLCTSLCT           :hardwareRenderingGlobals       STR#�          �otfna     NURBS Curves NURBS Surfaces Polygons Subdiv Surface Particles Particle Instance Fluids Strokes Image Planes UI Lights Cameras Locators Joints IK Handles Deformers Motion Trails Components Hair Systems Follicles Misc. UI Ornaments        I32#�          _otfva                                                                                   DBLEP         fprt  ?�        FOR8P         <SLCTSLCT           :renderPartitionFLGS           st    FOR8P         ,SLCTSLCT           :renderGlobalsList1     FOR8P         DSLCTSLCT           :defaultShaderList1     FLGS            s (    FOR8P         DSLCTSLCT           :postProcessList1       FLGS            p (    FOR8P         ,SLCTSLCT           :defaultRenderingList1  FOR8P         LSLCTSLCT           :initialShadingGroup    DBLE�          ro  ?�          FOR8P         LSLCTSLCT           :initialParticleSE      DBLE�          ro  ?�          FOR8P         �SLCTSLCT           :defaultRenderGlobals   ATTR           -aTYP � @   STR defaultSurfaceShader dss        STR �          ren  arnold     STR �          dss  lambert1   FOR8P         LSLCTSLCT           :defaultResolution      DBLEP         pa  ?�          FOR8P        �SLCTSLCT           :defaultColorMgtGlobals DBLEP         
cfe  ?�         STR �          @cfp  <MAYA_RESOURCES>/OCIO-configs/Maya2022-default/config.ocio STR �          vtn  ACES 1.0 SDR-video (sRGB)  STR �          vn  ACES 1.0 SDR-video  STR �          	dn  sRGB        STR �          wsn  ACEScg     STR �          otn  ACES 1.0 SDR-video (sRGB)  STR �           potn  ACES 1.0 SDR-video (sRGB) FOR8P         lSLCTSLCT           :hardwareRenderGlobals  DBLEP         ctrs $@p        DBLEP         btrs $@�        LIS8          pCONSFOR8P        \CONNRELA����       Mlink :lightLinker1    :initialShadingGroup.message :defaultLightSet.message    RELA����       Klink :lightLinker1    :initialParticleSE.message :defaultLightSet.message      RELA����       SshadowLink :lightLinker1    :initialShadingGroup.message :defaultLightSet.message      RELA����       QshadowLink :lightLinker1    :initialParticleSE.message :defaultLightSet.message        CWFL           % layerManager.dli[0] defaultLayer.id    CWFL           4 renderLayerManager.rlmi[0] defaultRenderLayer.rlid     CWFL           1defaultRenderLayer.msg :defaultRenderingList1.r        FOR8           LHEADOBJN�          18      INCL�          undef(  BCSZP            D    
\ No newline at end of file
diff --git a/Icons/JointButton.png b/Icons/JointButton.png
new file mode 100644
index 0000000..e9e6c54
Binary files /dev/null and b/Icons/JointButton.png differ
diff --git a/Icons/JointButtonH.png b/Icons/JointButtonH.png
new file mode 100644
index 0000000..e5af8a3
Binary files /dev/null and b/Icons/JointButtonH.png differ
diff --git a/Icons/JointButtonHPressed.png b/Icons/JointButtonHPressed.png
new file mode 100644
index 0000000..9508030
Binary files /dev/null and b/Icons/JointButtonHPressed.png differ
diff --git a/Icons/JointButtonSelected.png b/Icons/JointButtonSelected.png
new file mode 100644
index 0000000..056faaf
Binary files /dev/null and b/Icons/JointButtonSelected.png differ
diff --git a/Icons/JointButtonSelected21.png b/Icons/JointButtonSelected21.png
new file mode 100644
index 0000000..25b3ad6
Binary files /dev/null and b/Icons/JointButtonSelected21.png differ
diff --git a/Icons/MetaPipeLoading.jpg b/Icons/MetaPipeLoading.jpg
new file mode 100644
index 0000000..072657a
Binary files /dev/null and b/Icons/MetaPipeLoading.jpg differ
diff --git a/Icons/Metapipe Logo (64).jpg b/Icons/Metapipe Logo (64).jpg
new file mode 100644
index 0000000..b143e89
Binary files /dev/null and b/Icons/Metapipe Logo (64).jpg differ
diff --git a/Icons/Title1.png b/Icons/Title1.png
new file mode 100644
index 0000000..711d2e5
Binary files /dev/null and b/Icons/Title1.png differ
diff --git a/Icons/Title2.png b/Icons/Title2.png
new file mode 100644
index 0000000..b8b7103
Binary files /dev/null and b/Icons/Title2.png differ
diff --git a/Icons/Title3.png b/Icons/Title3.png
new file mode 100644
index 0000000..00baaa4
Binary files /dev/null and b/Icons/Title3.png differ
diff --git a/Icons/Toggle.png b/Icons/Toggle.png
new file mode 100644
index 0000000..c76f76c
Binary files /dev/null and b/Icons/Toggle.png differ
diff --git a/Icons/UI LOGO.png b/Icons/UI LOGO.png
new file mode 100644
index 0000000..9f28f22
Binary files /dev/null and b/Icons/UI LOGO.png differ
diff --git a/Icons/UIBODY.png b/Icons/UIBODY.png
new file mode 100644
index 0000000..634fce6
Binary files /dev/null and b/Icons/UIBODY.png differ
diff --git a/Icons/UIButton1.png b/Icons/UIButton1.png
new file mode 100644
index 0000000..268e67c
Binary files /dev/null and b/Icons/UIButton1.png differ
diff --git a/Icons/UIButton10.png b/Icons/UIButton10.png
new file mode 100644
index 0000000..316b2ec
Binary files /dev/null and b/Icons/UIButton10.png differ
diff --git a/Icons/UIButton10Pressed.png b/Icons/UIButton10Pressed.png
new file mode 100644
index 0000000..c0fd9c0
Binary files /dev/null and b/Icons/UIButton10Pressed.png differ
diff --git a/Icons/UIButton11.png b/Icons/UIButton11.png
new file mode 100644
index 0000000..662cbee
Binary files /dev/null and b/Icons/UIButton11.png differ
diff --git a/Icons/UIButton11Pressed.png b/Icons/UIButton11Pressed.png
new file mode 100644
index 0000000..5c4052b
Binary files /dev/null and b/Icons/UIButton11Pressed.png differ
diff --git a/Icons/UIButton12.png b/Icons/UIButton12.png
new file mode 100644
index 0000000..ec7e8e3
Binary files /dev/null and b/Icons/UIButton12.png differ
diff --git a/Icons/UIButton12Pressed.png b/Icons/UIButton12Pressed.png
new file mode 100644
index 0000000..4a154c4
Binary files /dev/null and b/Icons/UIButton12Pressed.png differ
diff --git a/Icons/UIButton13.png b/Icons/UIButton13.png
new file mode 100644
index 0000000..6e3efc7
Binary files /dev/null and b/Icons/UIButton13.png differ
diff --git a/Icons/UIButton13Pressed.png b/Icons/UIButton13Pressed.png
new file mode 100644
index 0000000..1c8ecab
Binary files /dev/null and b/Icons/UIButton13Pressed.png differ
diff --git a/Icons/UIButton14.png b/Icons/UIButton14.png
new file mode 100644
index 0000000..cfb6500
Binary files /dev/null and b/Icons/UIButton14.png differ
diff --git a/Icons/UIButton14Pressed.png b/Icons/UIButton14Pressed.png
new file mode 100644
index 0000000..a5b6b36
Binary files /dev/null and b/Icons/UIButton14Pressed.png differ
diff --git a/Icons/UIButton15.png b/Icons/UIButton15.png
new file mode 100644
index 0000000..fb35804
Binary files /dev/null and b/Icons/UIButton15.png differ
diff --git a/Icons/UIButton15Pressed.png b/Icons/UIButton15Pressed.png
new file mode 100644
index 0000000..5b92bb3
Binary files /dev/null and b/Icons/UIButton15Pressed.png differ
diff --git a/Icons/UIButton1Pressed.png b/Icons/UIButton1Pressed.png
new file mode 100644
index 0000000..3c5dfed
Binary files /dev/null and b/Icons/UIButton1Pressed.png differ
diff --git a/Icons/UIButton2.png b/Icons/UIButton2.png
new file mode 100644
index 0000000..91b3719
Binary files /dev/null and b/Icons/UIButton2.png differ
diff --git a/Icons/UIButton2Pressed.png b/Icons/UIButton2Pressed.png
new file mode 100644
index 0000000..35d496f
Binary files /dev/null and b/Icons/UIButton2Pressed.png differ
diff --git a/Icons/UIButton3.png b/Icons/UIButton3.png
new file mode 100644
index 0000000..2b9f862
Binary files /dev/null and b/Icons/UIButton3.png differ
diff --git a/Icons/UIButton3Pressed.png b/Icons/UIButton3Pressed.png
new file mode 100644
index 0000000..1f821c1
Binary files /dev/null and b/Icons/UIButton3Pressed.png differ
diff --git a/Icons/UIButton4.png b/Icons/UIButton4.png
new file mode 100644
index 0000000..991e372
Binary files /dev/null and b/Icons/UIButton4.png differ
diff --git a/Icons/UIButton4Pressed.png b/Icons/UIButton4Pressed.png
new file mode 100644
index 0000000..4599c88
Binary files /dev/null and b/Icons/UIButton4Pressed.png differ
diff --git a/Icons/UIButton5.png b/Icons/UIButton5.png
new file mode 100644
index 0000000..bfe7234
Binary files /dev/null and b/Icons/UIButton5.png differ
diff --git a/Icons/UIButton5Pressed.png b/Icons/UIButton5Pressed.png
new file mode 100644
index 0000000..28048a1
Binary files /dev/null and b/Icons/UIButton5Pressed.png differ
diff --git a/Icons/UIButton6.png b/Icons/UIButton6.png
new file mode 100644
index 0000000..fd33a97
Binary files /dev/null and b/Icons/UIButton6.png differ
diff --git a/Icons/UIButton6Pressed.png b/Icons/UIButton6Pressed.png
new file mode 100644
index 0000000..7216cf5
Binary files /dev/null and b/Icons/UIButton6Pressed.png differ
diff --git a/Icons/UIButton7.png b/Icons/UIButton7.png
new file mode 100644
index 0000000..61d1c15
Binary files /dev/null and b/Icons/UIButton7.png differ
diff --git a/Icons/UIButton7Pressed.png b/Icons/UIButton7Pressed.png
new file mode 100644
index 0000000..06ad59c
Binary files /dev/null and b/Icons/UIButton7Pressed.png differ
diff --git a/Icons/UIButton8.png b/Icons/UIButton8.png
new file mode 100644
index 0000000..beba257
Binary files /dev/null and b/Icons/UIButton8.png differ
diff --git a/Icons/UIButton8Pressed.png b/Icons/UIButton8Pressed.png
new file mode 100644
index 0000000..02d4ccb
Binary files /dev/null and b/Icons/UIButton8Pressed.png differ
diff --git a/Icons/UIButton9.png b/Icons/UIButton9.png
new file mode 100644
index 0000000..0f0b688
Binary files /dev/null and b/Icons/UIButton9.png differ
diff --git a/Icons/UIButton9Pressed.png b/Icons/UIButton9Pressed.png
new file mode 100644
index 0000000..d189d20
Binary files /dev/null and b/Icons/UIButton9Pressed.png differ
diff --git a/Icons/UIButtonEmpty.png b/Icons/UIButtonEmpty.png
new file mode 100644
index 0000000..951d4f5
Binary files /dev/null and b/Icons/UIButtonEmpty.png differ
diff --git a/Icons/UIButtonEmptyPressed.png b/Icons/UIButtonEmptyPressed.png
new file mode 100644
index 0000000..b259a8c
Binary files /dev/null and b/Icons/UIButtonEmptyPressed.png differ
diff --git a/Icons/UIButtonEmptySRT.png b/Icons/UIButtonEmptySRT.png
new file mode 100644
index 0000000..a0c828a
Binary files /dev/null and b/Icons/UIButtonEmptySRT.png differ
diff --git a/Icons/UIButtonEmptySRTPressed.png b/Icons/UIButtonEmptySRTPressed.png
new file mode 100644
index 0000000..d18ae00
Binary files /dev/null and b/Icons/UIButtonEmptySRTPressed.png differ
diff --git a/Icons/UICover.png b/Icons/UICover.png
new file mode 100644
index 0000000..4d8521c
Binary files /dev/null and b/Icons/UICover.png differ
diff --git a/Icons/UIGEOC.png b/Icons/UIGEOC.png
new file mode 100644
index 0000000..6559933
Binary files /dev/null and b/Icons/UIGEOC.png differ
diff --git a/Icons/UIGEOCPressed.png b/Icons/UIGEOCPressed.png
new file mode 100644
index 0000000..2e0d2e8
Binary files /dev/null and b/Icons/UIGEOCPressed.png differ
diff --git a/Icons/UIGeoall.png b/Icons/UIGeoall.png
new file mode 100644
index 0000000..710aef1
Binary files /dev/null and b/Icons/UIGeoall.png differ
diff --git a/Icons/UIGeobody.png b/Icons/UIGeobody.png
new file mode 100644
index 0000000..3ada95e
Binary files /dev/null and b/Icons/UIGeobody.png differ
diff --git a/Icons/UIGeobodyPressed.png b/Icons/UIGeobodyPressed.png
new file mode 100644
index 0000000..c1689d5
Binary files /dev/null and b/Icons/UIGeobodyPressed.png differ
diff --git a/Icons/UIGeocartilage.png b/Icons/UIGeocartilage.png
new file mode 100644
index 0000000..577e48e
Binary files /dev/null and b/Icons/UIGeocartilage.png differ
diff --git a/Icons/UIGeocartilagePressed.png b/Icons/UIGeocartilagePressed.png
new file mode 100644
index 0000000..89d4aef
Binary files /dev/null and b/Icons/UIGeocartilagePressed.png differ
diff --git a/Icons/UIGeocombined.png b/Icons/UIGeocombined.png
new file mode 100644
index 0000000..5b6758c
Binary files /dev/null and b/Icons/UIGeocombined.png differ
diff --git a/Icons/UIGeocombinedPressed.png b/Icons/UIGeocombinedPressed.png
new file mode 100644
index 0000000..81240d3
Binary files /dev/null and b/Icons/UIGeocombinedPressed.png differ
diff --git a/Icons/UIGeoeyeEdge.png b/Icons/UIGeoeyeEdge.png
new file mode 100644
index 0000000..f064a59
Binary files /dev/null and b/Icons/UIGeoeyeEdge.png differ
diff --git a/Icons/UIGeoeyeEdgePressed.png b/Icons/UIGeoeyeEdgePressed.png
new file mode 100644
index 0000000..1acb9fa
Binary files /dev/null and b/Icons/UIGeoeyeEdgePressed.png differ
diff --git a/Icons/UIGeoeyeLeft.png b/Icons/UIGeoeyeLeft.png
new file mode 100644
index 0000000..aeb424d
Binary files /dev/null and b/Icons/UIGeoeyeLeft.png differ
diff --git a/Icons/UIGeoeyeLeftPressed.png b/Icons/UIGeoeyeLeftPressed.png
new file mode 100644
index 0000000..572cd59
Binary files /dev/null and b/Icons/UIGeoeyeLeftPressed.png differ
diff --git a/Icons/UIGeoeyeRightPressed.png b/Icons/UIGeoeyeRightPressed.png
new file mode 100644
index 0000000..aa1c025
Binary files /dev/null and b/Icons/UIGeoeyeRightPressed.png differ
diff --git a/Icons/UIGeoeyelashes.png b/Icons/UIGeoeyelashes.png
new file mode 100644
index 0000000..175d52d
Binary files /dev/null and b/Icons/UIGeoeyelashes.png differ
diff --git a/Icons/UIGeoeyelashesPressed.png b/Icons/UIGeoeyelashesPressed.png
new file mode 100644
index 0000000..bedbe98
Binary files /dev/null and b/Icons/UIGeoeyelashesPressed.png differ
diff --git a/Icons/UIGeoeyeright.png b/Icons/UIGeoeyeright.png
new file mode 100644
index 0000000..7d6cdf1
Binary files /dev/null and b/Icons/UIGeoeyeright.png differ
diff --git a/Icons/UIGeoeyeshell.png b/Icons/UIGeoeyeshell.png
new file mode 100644
index 0000000..43bfdf0
Binary files /dev/null and b/Icons/UIGeoeyeshell.png differ
diff --git a/Icons/UIGeoeyeshellPressed.png b/Icons/UIGeoeyeshellPressed.png
new file mode 100644
index 0000000..abad17d
Binary files /dev/null and b/Icons/UIGeoeyeshellPressed.png differ
diff --git a/Icons/UIGeoflipflops.png b/Icons/UIGeoflipflops.png
new file mode 100644
index 0000000..5b8c630
Binary files /dev/null and b/Icons/UIGeoflipflops.png differ
diff --git a/Icons/UIGeoflipflopsPressed.png b/Icons/UIGeoflipflopsPressed.png
new file mode 100644
index 0000000..96f23c8
Binary files /dev/null and b/Icons/UIGeoflipflopsPressed.png differ
diff --git a/Icons/UIGeohead.png b/Icons/UIGeohead.png
new file mode 100644
index 0000000..930c977
Binary files /dev/null and b/Icons/UIGeohead.png differ
diff --git a/Icons/UIGeoheadPressed.png b/Icons/UIGeoheadPressed.png
new file mode 100644
index 0000000..6d5bdc8
Binary files /dev/null and b/Icons/UIGeoheadPressed.png differ
diff --git a/Icons/UIGeosaliva.png b/Icons/UIGeosaliva.png
new file mode 100644
index 0000000..2282904
Binary files /dev/null and b/Icons/UIGeosaliva.png differ
diff --git a/Icons/UIGeosalivaPressed.png b/Icons/UIGeosalivaPressed.png
new file mode 100644
index 0000000..7fe771e
Binary files /dev/null and b/Icons/UIGeosalivaPressed.png differ
diff --git a/Icons/UIGeoteeth.png b/Icons/UIGeoteeth.png
new file mode 100644
index 0000000..83ac038
Binary files /dev/null and b/Icons/UIGeoteeth.png differ
diff --git a/Icons/UIGeoteethPressed.png b/Icons/UIGeoteethPressed.png
new file mode 100644
index 0000000..6ef1080
Binary files /dev/null and b/Icons/UIGeoteethPressed.png differ
diff --git a/Icons/UIHAND.png b/Icons/UIHAND.png
new file mode 100644
index 0000000..c3e0b7e
Binary files /dev/null and b/Icons/UIHAND.png differ
diff --git a/Icons/UIHEAD.png b/Icons/UIHEAD.png
new file mode 100644
index 0000000..0666aa3
Binary files /dev/null and b/Icons/UIHEAD.png differ
diff --git a/Icons/UISettings.png b/Icons/UISettings.png
new file mode 100644
index 0000000..ff1da5a
Binary files /dev/null and b/Icons/UISettings.png differ
diff --git a/Icons/Yup.png b/Icons/Yup.png
new file mode 100644
index 0000000..cff447f
Binary files /dev/null and b/Icons/Yup.png differ
diff --git a/Icons/Zup.png b/Icons/Zup.png
new file mode 100644
index 0000000..a675edc
Binary files /dev/null and b/Icons/Zup.png differ
diff --git a/Icons/center.png b/Icons/center.png
new file mode 100644
index 0000000..a21852a
Binary files /dev/null and b/Icons/center.png differ
diff --git a/Icons/freeze.png b/Icons/freeze.png
new file mode 100644
index 0000000..a7148d9
Binary files /dev/null and b/Icons/freeze.png differ
diff --git a/Icons/unlock.png b/Icons/unlock.png
new file mode 100644
index 0000000..30e69df
Binary files /dev/null and b/Icons/unlock.png differ
diff --git a/MetaPipeFree24.py b/MetaPipeFree24.py
new file mode 100644
index 0000000..fe19513
--- /dev/null
+++ b/MetaPipeFree24.py
@@ -0,0 +1,1703 @@
+#ALL RIGHTS BELONGS TO UZAY CALISKAN.
+#PLEASE CHECK THE FULL LICENSE INSIDE PRODUCT FOLDER (Part of the agreement is below)
+#You will not:
+
+# make any copy of the Product except for archival or backup purposes;
+
+# circumvent or disable any access control technology, security device, procedure, protocol, or technological protection mechanism that may be included or established in or as part of the Product;
+
+# hack, reverse engineer, decompile, disassemble, modify or create derivative works of the Product or any part of the Product;
+
+# publish, sell distribute or otherwise make the Product available to others to use, download or copy;
+
+#transfer or sub-license the Product or any rights under this Agreement to any third party, whether voluntarily or by operation of law;
+
+# use the Product for any purpose that may be defamatory, threatening, abusive, harmful or invasive of anyone's privacy, or that may otherwise violate any law or give rise to civil or other liability;
+
+# misrepresent yourself as the creator or owner of the Property;
+
+# remove or modify any proprietary notice, symbol or label in or on the Product;
+
+# directly or indirectly assist, facilitate or encourage any third party to carry on any activity prohibited by this Agreement.
+
+import importlib
+import sys
+import maya.cmds as cmds
+import os
+from os import path as ospath
+from sys import path as syspath
+from sys import platform
+maya_version = int(cmds.about(version=True))
+#MAYAPLUGINPATH
+maya_plugin_path = os.environ.get('MAYA_PLUG_IN_PATH')
+new_path = ""
+if maya_version == 2022:
+    new_path = 'c:/dna_calibration/lib/Maya2022/windows'
+if maya_version == 2023:
+    new_path = 'c:/dna_calibration/lib/Maya2023/windows'
+if maya_version == 2024:
+    new_path = 'c:/dna_calibration/lib/Maya2024/windows'
+if maya_plugin_path:
+    updated_path = maya_plugin_path + os.pathsep + new_path
+else:
+    updated_path = new_path
+os.environ['MAYA_PLUG_IN_PATH'] = updated_path
+if maya_version < 2022 or maya_version > 2024:
+    raise ValueError("Metapipe only works with MAYA 2022/2023/2024")
+ROOT_DIR = "c:/dna_calibration"  
+MAIN_PATH = "c:/Arts and Spells/Metapipe Free 2.4.0"
+iconPath = MAIN_PATH + "/Icons/"
+MAYA_VERSION =  maya_version  
+ROOT_LIB_DIR = f"{ROOT_DIR}/lib/Maya{MAYA_VERSION}"
+if platform == "win32":
+    LIB_DIR = f"{ROOT_LIB_DIR}/windows"
+elif platform == "linux":
+    LIB_DIR = f"{ROOT_LIB_DIR}/linux"
+else:
+    raise OSError(
+        "OS not supported, please compile dependencies and add value to LIB_DIR"
+    )
+
+# Adds directories to path
+syspath.insert(0, ROOT_DIR)
+syspath.insert(0, LIB_DIR)
+sys.path.append(MAIN_PATH)
+sys.path.append("c:/Arts and Spells/Scripts")
+
+#Dna Path
+dnaPath= "C:/Users/MONSTER/Documents/Megascans Library/Downloaded/DHI/h344NMUV_asset/1k/asset_source/MetaHumans/CustomDNA/SourceAssets/CustomDNA.dna"  
+body_type= "m_med_nrw"
+sceneLodN = str(0)
+scenebodyLodN = str(0)
+
+CHARACTER_NAME = os.path.basename(dnaPath).split(".")[0]
+
+import time 
+
+import maya.cmds as cmds
+import maya.OpenMayaUI as omui
+from shiboken2 import wrapInstance
+from PySide2 import QtWidgets, QtGui, QtCore
+
+from os import environ
+import logging
+import maya.OpenMaya as om
+from os import environ, makedirs
+#import dna_viewer
+cmds.select(clear=True)
+
+if maya_version == 2024:
+    if sys.version_info < (3, 10, 8):
+        cmds.confirmDialog(title="ERROR", message="Python 3.11.0 or above is required. Please download correct Python Version!")
+        raise ValueError("Python 3.11.0 or above is required. Please download correct Python Version!")
+if maya_version == 2023:
+    if sys.version_info < (3, 9, 7):
+        raise ValueError("Python 3.9.7 or above is required. Please download correct Python Version!")
+if maya_version == 2022:
+    if sys.version_info < (3, 7, 0):
+        raise ValueError("Python 3.9.7 or above is required. Please download correct Python Version!")
+
+auto_keyframe_toggle = cmds.autoKeyframe(q=True, state=True)
+
+if auto_keyframe_toggle:
+    raise ValueError("Auto Keyframe Toggle is On! Turn it of and try again.")
+
+global selChack
+selCheck=0
+worldCheck=0
+file_path = "c:/Arts and Spells/Scripts/dat.py"
+if os.path.exists(file_path):
+    import dat
+    importlib.reload(dat)
+    ROOT_DIR = dat.ROOT_DIR
+    MAIN_PATH = dat.MAIN_PATH
+    dnaPath = dat.dnaPath
+    body_type = dat.body_type
+
+def newScene():
+    if cmds.file(query=True, modified=True):
+        result = cmds.confirmDialog(
+            title="Save Changes?",
+            message="Do you want to save changes to the current scene?",
+            button=["Save", "Don't Save", "Cancel"],
+            defaultButton="Save",
+            cancelButton="Cancel",
+            dismissString="Cancel")
+    
+        if result == "Save":
+            # Save the current scene
+            cmds.file(save=True, force=True)
+        elif result == "Don't Save":
+            # Discard changes and create a new scene
+            cmds.file(new=True, force=True)
+    else:
+        # No unsaved changes, create a new scene directly
+        cmds.file(new=True, force=True)
+    if not cmds.objExists("metapipefreewindow"):
+        cmds.createNode("transform", name="metapipefreewindow")
+    leftPanelButtonV(0) 
+
+def saveScene():
+    if cmds.objExists("LoadedDNAInfoNode") or cmds.objExists("rl4Embedded_Archetype") or cmds.objExists ("rl4Embedded_Archtype"):
+        saveFileName = "Checkpoint"
+    else:
+        saveFileName = "Custom Head"
+    # Define the file path for the .mb file
+    file_path = f"{ROOT_DIR}/data/" + saveFileName + ".mb"
+
+    # Save the current scene as an .mb file
+    cmds.file(rename=file_path)
+    cmds.file(save=True, type="mayaBinary")
+
+    print(f"Saved as {file_path}")
+
+def loadScene(saveFileName):
+    # Define the file path for the .mb file
+    file_path = f"{ROOT_DIR}/data/" + saveFileName + ".mb"
+    if os.path.isfile(file_path):
+        if cmds.file(query=True, modified=True):
+            result = cmds.confirmDialog(
+                title="Save Changes?",
+                message="Do you want to save changes to the current scene?",
+                button=["Save", "Don't Save", "Cancel"],
+                defaultButton="Save",
+                cancelButton="Cancel",
+                dismissString="Cancel")
+        
+            if result == "Save":
+                # Save the current scene
+                cmds.file(save=True, force=True)
+                cmds.file(file_path, force=True, open=True)
+            elif result == "Don't Save":
+                # Discard changes and create a new scene
+                cmds.file(file_path, force=True, open=True)
+        else:
+            # No unsaved changes, create a new scene directly
+            cmds.file(file_path, force=True, open=True)
+        
+    else:
+        cmds.confirmDialog(title="ERROR", message="Couldnt find any [Saved Scene]. You need to Save the scene to use this button.")
+        raise ValueError("Couldnt find any [Saved Scene]. You need to Save the scene to use this button.")
+    if not cmds.objExists("metapipefreewindow"):
+        cmds.createNode("transform", name="metapipefreewindow")
+    leftPanelButtonV(0)
+
+def openDNAViewer():
+
+    """calib_check = f"{ROOT_DIR}/dna_calibration.mod"
+    if not os.path.isfile(calib_check):
+        cmds.confirmDialog(title="ERROR", message="Please download Epic Games Dna Calibration 1.1.0 Version. Version is not matching or files are not found!")
+        raise ValueError("Please download Epic Games Dna Calibration 1.1.0 Version. Version is not matching or files are not found!")
+    calib_check = f"{ROOT_DIR}/data/mh4/additional_assemble_script.py"
+    if os.path.isfile(calib_check):
+        cmds.confirmDialog(title="ERROR", message="Please download Epic Games Dna Calibration 1.1.0 Version. Version is not matching or files are not found!")
+        raise ValueError("Please download Epic Games Dna Calibration 1.1.0 Version. Version is not matching or files are not found!")"""
+    metapipe_vcheck = f"{ROOT_DIR}/Metapipe_Free.py"
+    if os.path.isfile(metapipe_vcheck):
+        cmds.confirmDialog(title="ERROR", message="Old Version file found. Please delete Metapipe_Free.py file in your dna_calibration path!")
+        raise ValueError("Old Version file found. Please delete Metapipe_Free.py file in your dna_calibration path!")
+    root_check = f"{ROOT_DIR}/examples/dna_viewer_grab_changes_from_scene_and_propagate_to_dna.py"
+    if not os.path.isfile(root_check):
+        cmds.confirmDialog(title="ERROR", message="Please check ROOT_DIR path for the dna_calibration files! Files are not in ROOT_DIR")
+        raise ValueError("Please check ROOT_DIR path for the dna_calibration files! Files are not in ROOT_DIR")
+    dna_datas = f"{ROOT_DIR}/examples/datas_dna.py"
+
+    if not os.path.isfile(dna_datas):
+        cmds.confirmDialog(title="ERROR", message="Please save your preferences and try again")
+        raise ValueError("Please save your preferences and try again")
+    dna_viewer.show() 
+    cmds.createNode("transform", name="OpenedDNAInfoNode")  
+        
+    leftPanelButtonV(1)
+
+def datasBuild():
+    from dna_viewer import DNA, RigConfig, build_rig
+    #datas_dna.assemble_maya_scene()
+    result = cmds.confirmDialog(
+            title="Build DNA",
+            message="Please choose Build DNA Option.",
+            button=["Editable", "Rigged", "Cancel"],
+            defaultButton="Editable",
+            cancelButton="Cancel",
+            dismissString="Cancel")
+    
+    if result == "Editable":
+        DATA_DIR = f"{ROOT_DIR}/data" 
+        dna = DNA(dnaPath)
+        config = RigConfig(
+            gui_path=f"{DATA_DIR}/gui.ma",
+            analog_gui_path=f"{DATA_DIR}/analog_gui.ma",
+            aas_path=f"{DATA_DIR}/additional_assemble_script.py")
+        build_rig(dna=dna, config=config)
+        if cmds.objExists("rl4Embedded_Archetype"):
+            cmds.delete("rl4Embedded_Archetype")
+        if cmds.objExists("rl4Embedded_Archtype"):
+            cmds.delete("rl4Embedded_Archtype")
+    elif result == "Rigged":
+        DATA_DIR = f"{ROOT_DIR}/data" 
+        dna = DNA(dnaPath)
+        config = RigConfig(
+            gui_path=f"{DATA_DIR}/gui.ma",
+            analog_gui_path=f"{DATA_DIR}/analog_gui.ma",
+            aas_path=f"{DATA_DIR}/additional_assemble_script.py")
+        build_rig(dna=dna, config=config)
+        
+def buildDNA():
+    """calib_check = f"{ROOT_DIR}/dna_calibration.mod"
+    if not os.path.isfile(calib_check):
+        cmds.confirmDialog(title="ERROR", message="Please download Epic Games Dna Calibration 1.1.0 Version. Version is not matching or files are not found!")
+        raise ValueError("Please download Epic Games Dna Calibration 1.1.0 Version. Version is not matching or files are not found!")
+    calib_check = f"{ROOT_DIR}/UnrealFest.zip"
+    if os.path.isfile(calib_check):
+        cmds.confirmDialog(title="ERROR", message="Please download Epic Games Dna Calibration 1.1.0 Version. Version is not matching or files are not found!")
+        raise ValueError("Please download Epic Games Dna Calibration 1.1.0 Version. Version is not matching or files are not found!")"""
+    metapipe_vcheck = f"{ROOT_DIR}/Metapipe_Free.py"
+    if os.path.isfile(metapipe_vcheck):
+        cmds.confirmDialog(title="ERROR", message="Old Version file found. Please delete Metapipe_Free.py file in your dna_calibration path!")
+        raise ValueError("Old Version file found. Please delete Metapipe_Free.py file in your dna_calibration path!")
+    root_check = f"{ROOT_DIR}/examples/dna_viewer_grab_changes_from_scene_and_propagate_to_dna.py"
+    if not os.path.isfile(root_check):
+        cmds.confirmDialog(title="ERROR", message="Please check ROOT_DIR path for the dna_calibration files! Files are not in ROOT_DIR")
+        raise ValueError("Please check ROOT_DIR path for the dna_calibration files! Files are not in ROOT_DIR")
+    dna_datas = f"{ROOT_DIR}/examples/datas_dna.py"
+    if not os.path.isfile(dna_datas):
+        cmds.confirmDialog(title="ERROR", message="Please save your preferences and try again")
+        raise ValueError("Please save your preferences and try again")
+    if not os.path.isfile(dnaPath):
+        cmds.confirmDialog(title="ERROR", message="DNA not found. Please check your preferences and correct the DNA path.")
+        raise ValueError("DNA not found. Please check your preferences and correct the DNA path.")
+    # Create a progress window
+    datasBuild()
+    cmds.createNode("transform", name="OpenedDNAInfoNode") 
+    if not cmds.objExists("metapipefreewindow"):
+        cmds.createNode("transform", name="metapipefreewindow")
+    leftPanelButtonV(1)
+
+def datasLoad():
+    import datas_dna
+    datas_dna.load_dna_data()
+def loadDNA():
+    dna_datas = f"{ROOT_DIR}/examples/datas_dna.py"
+
+    #if not os.path.isfile(dna_datas):
+        #raise ValueError("Please press Update button first")
+    sys.path.append(f"{ROOT_DIR}/examples")
+    if not os.path.isfile(dna_datas):
+            cmds.confirmDialog(title="ERROR", message="Please save [Metapipe Preferences] again")
+            raise ValueError("Please save [Metapipe Preferences] again")
+    datasLoad()
+    if not cmds.objExists("LoadedDNAInfoNode"):
+        cmds.createNode("transform", name="LoadedDNAInfoNode")
+        cmds.warning("Loaded Succesfully!")
+    cmds.warning("Already Loaded!")
+    leftPanelButtonV(2)
+    unlock()
+
+def datasSave():
+    import datas_dna
+    datas_dna.save_dna_data()
+def saveDNA():
+    sys.path.append(f"{ROOT_DIR}/examples")
+    datasSave()
+    if not cmds.objExists("metapipefreewindow"):
+        cmds.createNode("transform", name="metapipefreewindow")
+    leftPanelButtonV(3) 
+    
+def prepare_export():
+    
+    # Detach spine_04 from head_grp and move it to the top level of the Outliner
+    cmds.parent('spine_04', w=True, r=True)
+    
+    if not cmds.namespace(exists="DHIhead"):
+        cmds.namespace(add="DHIhead", parent=":")
+        cmds.namespace(set="DHIhead")
+        cmds.namespace(set=":")
+    
+    # Get a list of all the joints in the scene
+    joints = cmds.ls(type="joint")
+    
+    # Add every joint to the "DHIhead" namespace and print a message if it already has the "DHIhead" prefix
+    for joint in joints:
+        if joint.startswith("DHIhead:"):
+            print(joint + " is already in the DHIhead namespace")
+        else:
+            cmds.rename(joint, "DHIhead:" + joint)
+    
+    leftPanelButtonV(4)
+    print("Ready")   
+
+
+def fixbody():
+    #
+    #
+    # Transfer Body original skeleton to the new head Skeleton
+    CD = 15
+    lower_CD = -1
+    minCD = 0
+        
+    # Define the joint names and namespaces
+    head_joint = "DHIhead:spine_04"
+    body_joint = "spine_04_drv"
+    
+    # Split the joint names into their respective namespaces and joint names
+    head_namespace, head_joint_name = head_joint.split(":")
+    
+    # Get the list of child joints for the head joint
+    head_child_joints = cmds.listRelatives(head_joint, children=True, allDescendents=True,type="joint")
+    body_child_joints = cmds.listRelatives(body_joint, children=True, allDescendents=True, type="joint")
+    
+    def move2target_joint(moving_joint, target_joint):
+        lower_lip_rotation_pos = cmds.xform(moving_joint, query=True, worldSpace=True, rotatePivot=True)
+        jaw_pos = cmds.xform(target_joint, query=True, worldSpace=True, rotatePivot=True)
+        # Get the child joints
+        child_joints = cmds.listRelatives(moving_joint, c=True, type="joint")
+        # Store the initial positions of the child joints
+        child_positions = []
+        if child_joints:
+            for child_joint in child_joints:                          
+                child_positions.append(cmds.xform(child_joint, q=True, ws=True, t=True))
+        
+        # Set the translate and rotate pivot attributes of the "FACIAL_C_LowerLipRotation" joint to match those of "FACIAL_C_MouthUpper"
+        cmds.xform(moving_joint, translation=jaw_pos, rotatePivot=lower_lip_rotation_pos, worldSpace=True)
+        if child_joints:
+            
+            # Move each child joint back to its original position
+            for i, child_joint in enumerate(child_joints):
+                cmds.xform(child_joint, ws=True, t=child_positions[i])
+    moving_joint = body_joint
+    target_joint = head_joint      
+    move2target_joint(moving_joint, target_joint)
+    while CD >= minCD:
+            joint_CD = [joint for joint in body_child_joints if cmds.getAttr(joint + ".chainDepth") == CD]
+            for joint_name in joint_CD:
+                
+                drvname = joint_name.replace("_drv", "")
+                # Build the joint names for the current joint
+                
+                
+                head_current_joint = "{}:{}".format(head_namespace, drvname)
+                if cmds.objExists(head_current_joint):
+                    if joint_name[-5] == "r":
+                        offnamer = joint_name.replace("_r_drv", "Off_r_drv")
+                        if cmds.objExists(offnamer):
+                            joint_name = offnamer
+                    if joint_name[-5] == "l":
+                        offnamel = joint_name.replace("_l_drv", "Off_l_drv")
+                        if cmds.objExists(offnamel):
+                            joint_name = offnamel
+                    moving_joint = joint_name
+                    target_joint = head_current_joint       
+                    move2target_joint(moving_joint, target_joint)
+                                
+        
+            lower_CD -= 1         
+            CD -= 1   
+    cmds.createNode("transform", name="FixBodyInfoNode")
+    leftPanelButtonV(6)        
+
+    
+def bind_skin(gender_mesh):
+
+    # Body
+    mesh_obj = cmds.ls(gender_mesh)[0]
+    
+    # Duplicate the mesh
+    duplicated_mesh_obj = cmds.duplicate(mesh_obj)[0]
+    
+    cmds.select([duplicated_mesh_obj, "DHIbody:root"])
+    
+    # Bind skin to the mesh
+    skin_cluster = cmds.skinCluster("DHIbody:root", duplicated_mesh_obj)[0]
+    
+    cmds.select([mesh_obj, duplicated_mesh_obj])
+    
+    cmds.copySkinWeights(noMirror=True, surfaceAssociation="closestPoint", influenceAssociation=["name", "oneToOne"])
+    
+    cmds.delete(mesh_obj)
+    cmds.rename(duplicated_mesh_obj, gender_mesh)
+gender=0
+gender_mesh = body_type +  "_body_lod0_mesh"
+ 
+def build_body():
+    cmds.createNode("transform", name="body_gen_node")
+    leftPanelButtonV(5)
+    Body_DRV = f"{ROOT_DIR}/data/Body_Drv.mb"
+    if not os.path.isfile(Body_DRV):
+        raise ValueError("Please prepare the body file first. Body_Drv file is not found")
+    skeleton_file_path = f"{ROOT_DIR}/data/Body_Drv.mb"  
+    # Import the FBX file
+    cmds.file(skeleton_file_path, i=True, ignoreVersion=True, mergeNamespacesOnClash=False)
+    def add_chain_depth_attribute(joints):
+        for joint in joints:
+            if not cmds.attributeQuery('chainDepth', node=joint, exists=True):
+                cmds.addAttr(joint, longName='chainDepth', attributeType='long', defaultValue=0)
+                cmds.setAttr(joint + '.chainDepth', keyable=True)
+    
+    def set_chain_depth_value(joints, value):
+        for joint in joints:
+            cmds.setAttr(joint + '.chainDepth', value)
+  
+    # Get all joints in the scene
+    all_joints = cmds.ls(type="joint")
+    
+    # Remove joints in the "DHIhead:spine_04" hierarchy (Avoid HEAD)
+    exclude_joints = cmds.ls("DHIhead:spine_04", dag=True, type="joint")
+    all_joints = cmds.ls("root_drv", dag=True, type="joint")
+    add_chain_depth_attribute(all_joints)
+    
+    # Filter end joints (joints with no child joints)
+    end_joints = [joint for joint in all_joints if not cmds.listRelatives(joint, children=True, type='joint')]
+
+    
+    # Set chainDepth attribute to 0 for all end joints
+    set_chain_depth_value(all_joints, 100)
+    set_chain_depth_value(end_joints, 0)
+    
+    parents1 = []
+    
+    for joint_name in end_joints:
+        p_joint = cmds.listRelatives(joint_name, parent=True, type="joint")
+        if p_joint:
+            children = cmds.listRelatives(p_joint, children=True, type="joint") or []
+            if all(cmds.getAttr(child + ".chainDepth") == 0 for child in children):
+               
+               parents1.append(p_joint[0])
+               
+    set_chain_depth_value(parents1, 1)
+    #Chaindepth add Attr Loop
+    chainDepth = 1
+    while parents1:
+        chainDepth += 1
+        new_parents = []
+        for joint_name in parents1:
+            p_joint = cmds.listRelatives(joint_name, parent=True, type="joint")
+            if p_joint:
+                children = cmds.listRelatives(p_joint, children=True, type="joint") or []
+                if all(cmds.getAttr(child + ".chainDepth") < chainDepth for child in children):
+                    new_parents.append(p_joint[0])
+        if new_parents:
+            set_chain_depth_value(new_parents, chainDepth)
+            parents1 = new_parents
+        else:
+            break
+    DHIBODY_name = 'DHIbody:root'
+    bind_skin(gender_mesh)
+    unlock()
+    
+def connect_body():
+    bodyNS = "DHIbody:"
+    headNS = "DHIhead:"
+    
+    for i in cmds.ls(type="joint"):
+        if headNS in i:
+            if i.replace(headNS,bodyNS) in cmds.ls(type="joint"):
+                cmds.parentConstraint(i.replace(headNS,bodyNS),i,mo=True)
+                cmds.scaleConstraint(i.replace(headNS,bodyNS),i,mo=True)
+
+def bindSkinC():
+    selected_objects = cmds.ls(selection=True)
+    sel = selected_objects[0]
+    cmds.select('DHIbody:root', add=True)
+    cmds.skinCluster()
+    cmds.rename(sel, body_type +  "_binded_body_lod0_mesh")
+    cmds.hide(body_type +  "_body_lod0_mesh")
+def copySkin():
+    selected_objects = cmds.ls(selection=True)
+    sel = selected_objects[0]
+    cmds.select(clear=True)
+    cmds.select(body_type +  "_body_lod0_mesh", add=True)
+    cmds.select(sel, add=True)
+    cmds.copySkinWeights(noMirror=True, surfaceAssociation="closestPoint", influenceAssociation=["name", "oneToOne"])
+    cmds.delete(body_type +  "_body_lod0_mesh")
+    cmds.rename(sel, body_type +  "_body_lod0_mesh")
+    
+def shapeEdit():
+    import maya.mel as mel
+    mel.eval("ShapeEditor")
+
+def findCustom():
+    
+    selected_objects = cmds.ls(selection=True)
+    for obj in selected_objects:
+        poly_Match = 0
+        poly_count = cmds.polyEvaluate(obj, vertex=True)
+        if poly_count == 24049:
+            cmds.rename(obj, "custom_head_lod0_mesh")
+            poly_Match = 1
+            cmds.symbolButton("gcustom_head",edit=True,enable=True)
+            continue
+        elif poly_count == 4246:
+            cmds.rename(obj, "custom_teeth_lod0_mesh")
+            poly_Match = 1
+            cmds.symbolButton("gcustom_teeth",edit=True,enable=True)
+            continue
+        elif poly_count == 660:
+            cmds.rename(obj, "custom_saliva_lod0_mesh")
+            poly_Match = 1
+            cmds.symbolButton("gcustom_saliva",edit=True,enable=True)
+            continue
+        elif poly_count == 770:
+            if not cmds.objExists("custom_eyeLeft_lod0_mesh1"):
+                cmds.rename(obj, "custom_eyeLeft_lod0_mesh0")
+                poly_count = 1
+        elif poly_count == 552:
+            cmds.rename(obj, "custom_eyeshell_lod0_mesh")
+            poly_Match = 1
+            cmds.symbolButton("gcustom_eyeshell",edit=True,enable=True)
+            continue
+        elif poly_count == 2144:
+            cmds.rename(obj, "custom_eyelashes_lod0_mesh")
+            poly_Match = 1
+            cmds.symbolButton("gcustom_eyelashes",edit=True,enable=True)
+            continue
+        elif poly_count == 268: 
+            cmds.rename(obj, "custom_eyeEdge_lod0_mesh")
+            poly_Match = 1 
+            cmds.symbolButton("gcustom_eyeEdge",edit=True,enable=True)
+            continue  
+        elif poly_count == 386:
+            cmds.rename(obj, "_custom_cartilage_lod0_mesh")
+            poly_Match = 1
+            cmds.symbolButton("gcustom_cartilage",edit=True,enable=True)
+            continue
+        elif poly_count == 30455:
+            cmds.rename(obj, body_type + "_custom_body_lod0_mesh")
+            poly_Match = 1
+            cmds.symbolButton("gcustom_body",edit=True,enable=True)
+            continue
+        elif poly_count == 54412:
+            cmds.rename(obj, body_type + "_custom_combined_lod0_mesh")
+            poly_Match = 1
+            cmds.symbolButton("gcustom_combined",edit=True,enable=True)
+            continue
+  
+    if cmds.objExists("custom_eyeLeft_lod0_mesh0") and cmds.objExists("custom_eyeLeft_lod0_mesh1"):
+        cmds.symbolButton("gcustom_eyeLeft",edit=True,enable=True)
+        cmds.symbolButton("gcustom_eyeRight",edit=True,enable=True)
+        cmds.xform("custom_eyeLeft_lod0_mesh0", centerPivots=True)
+        cmds.xform("custom_eyeLeft_lod0_mesh1", centerPivots=True)
+        pos1 = cmds.xform("custom_eyeLeft_lod0_mesh0", query=True, worldSpace=True, rotatePivot=True)
+        pos2 = cmds.xform("custom_eyeLeft_lod0_mesh1", query=True, worldSpace=True, rotatePivot=True)      
+        # Check the model is in rigth or left
+        if pos1[0] > 0 and pos2[0] > 0:
+            print("Both eyes are on the positive X side of the origin")
+        elif pos1[0] < 0 and pos2[0] < 0:
+            print("Both eyes are on the negative X side of the origin")
+        elif pos1[0] < 0 and pos2[0] > 0:
+            if cmds.objExists("eyeRight") or cmds.objExists("eyeLeft"):
+                print("Eye names already exist, Delete or rename them")
+            else:
+                cmds.rename("custom_eyeLeft_lod0_mesh0", "custom_eyeRight_lod0_mesh")
+                cmds.rename("custom_eyeLeft_lod0_mesh1", "custom_eyeLeft_lod0_mesh")
+        elif pos1[0] > 0 and pos2[0] < 0:
+            if cmds.objExists("eyeRight") or cmds.objExists("eyeLeft"):
+                print("Eye names already exist, Delete or rename them")
+            else:
+                cmds.rename("custom_eyeLeft_lod0_mesh0", "custom_eyeLeft_lod0_mesh")
+                cmds.rename("custom_eyeLeft_lod0_mesh1", "eyeRight_lod0_mesh")
+        elif pos1[0] == 0 or pos2[0] == 0:
+            print("Eye is in the middle")  
+def jointSelectionC(butName):
+    print(butName)
+    if cmds.objExists(butName):
+        butNameS=butName
+
+    if cmds.objExists("DHIhead:"+butName):
+        butNameS="DHIhead:"+butName 
+
+    if cmds.objExists(butName+"_drv"):
+        butNameS=butName+"_drv"
+        
+    global selCheck
+    selected_objects = cmds.ls(selection=True)
+    if butNameS not in selected_objects:
+        cmds.symbolButton(butName, edit=True, image=iconPath + "JointButtonSelected.png")
+        cmds.select(butNameS, add=True)
+        selCheck=1
+    else:
+        cmds.symbolButton(butName, edit=True, image=iconPath + "JointButton.png")
+        cmds.select(butNameS, deselect=True)
+        selCheck=0
+
+def meshSelC(mesh, toggleN):
+    if toggleN == 0:
+        meshN = mesh + "_lod" + sceneLodN + "_mesh"
+    
+        selected_objects = cmds.ls(selection=True)
+        if meshN not in selected_objects:
+            cmds.symbolButton("g" + mesh,edit=True,image=iconPath + "UIGeo" + mesh + "Pressed.png")
+            cmds.select(meshN, add=True)
+            selCheck=1
+        else:
+            cmds.symbolButton("g" + mesh,edit=True,image=iconPath + "UIGeo" + mesh + ".png")
+            cmds.select(meshN, deselect=True)
+            selCheck=0
+    if toggleN == 1:
+        meshN = body_type + "_" + mesh + "_lod" + scenebodyLodN + "_mesh"
+    
+        selected_objects = cmds.ls(selection=True)
+        if meshN not in selected_objects:
+            cmds.symbolButton("g" + mesh,edit=True,image=iconPath + "UIGeo" + mesh + "Pressed.png")
+            cmds.select(meshN, add=True)
+            selCheck=1
+        else:
+            cmds.symbolButton("g" + mesh,edit=True,image=iconPath + "UIGeo" + mesh + ".png")
+            cmds.select(meshN, deselect=True)
+            selCheck=0
+    if toggleN == 2:
+        meshN = mesh + "_drv"
+    
+        selected_objects = cmds.ls(selection=True)
+        if meshN not in selected_objects:
+            cmds.symbolButton(mesh,edit=True,image=iconPath + "JointButtonHPressed.png")
+            cmds.select(meshN, add=True)
+            selCheck=1
+        else:
+            cmds.symbolButton(mesh,edit=True,image=iconPath + "JointButtonH.png")
+            cmds.select(meshN, deselect=True)
+            selCheck=0
+
+def selectAllGeo(toggleN):
+    if toggleN==0:
+        gheadMesh = ['head_lod' + sceneLodN + '_mesh', 'teeth_lod' + sceneLodN + '_mesh', 'saliva_lod' + sceneLodN + '_mesh', 'eyeLeft_lod' + sceneLodN + '_mesh', 'eyeshell_lod' + sceneLodN + '_mesh', 'eyelashes_lod' + sceneLodN + '_mesh', 'eyeEdge_lod' + sceneLodN + '_mesh', 'cartilage_lod' + sceneLodN + '_mesh', 'eyeRight_lod' + sceneLodN + '_mesh']
+        for obj in gheadMesh:
+            if cmds.objExists(obj):
+                cmds.select(obj, add=True)
+    if toggleN==1:
+        gheadMesh = ['head_lod' + sceneLodN + '_mesh', 'teeth_lod' + sceneLodN + '_mesh', 'saliva_lod' + sceneLodN + '_mesh', 'eyeLeft_lod' + sceneLodN + '_mesh', 'eyeshell_lod' + sceneLodN + '_mesh', 'eyelashes_lod' + sceneLodN + '_mesh', 'eyeEdge_lod' + sceneLodN + '_mesh', 'cartilage_lod' + sceneLodN + '_mesh', 'eyeRight_lod' + sceneLodN + '_mesh']
+        for obj in gheadMesh:
+            if cmds.objExists("custom_" + obj):
+                cmds.select("custom_" + obj, add=True)
+    if toggleN==2:
+        gbodyMesh = [body_type + "_body_lod" + scenebodyLodN + '_mesh',body_type + "_combined_lod" + scenebodyLodN + '_mesh',body_type + "_flipflops_lod" + scenebodyLodN + '_mesh']
+        for obj in gbodyMesh:
+            if cmds.objExists(obj):
+                cmds.select(obj, add=True)
+    if toggleN==3:
+        gbodyMesh = [body_type + "_custom_body_lod" + scenebodyLodN + '_mesh',body_type + "_custom_combined_lod" + scenebodyLodN + '_mesh',body_type + "_custom_flipflops_lod" + scenebodyLodN + '_mesh']
+        for obj in gbodyMesh:
+            if cmds.objExists(obj):
+                cmds.select(obj, add=True)
+def checkSceneSel():
+    if cmds.objExists("metapipefreewindow"):
+        global toggleCheck
+        selected_objects = cmds.ls(selection=True)
+        gheadMesh = ['head_lod' + sceneLodN + '_mesh', 'teeth_lod' + sceneLodN + '_mesh', 'saliva_lod' + sceneLodN + '_mesh', 'eyeLeft_lod' + sceneLodN + '_mesh', 'eyeshell_lod' + sceneLodN + '_mesh', 'eyelashes_lod' + sceneLodN + '_mesh', 'eyeEdge_lod' + sceneLodN + '_mesh', 'cartilage_lod' + sceneLodN + '_mesh', 'eyeRight_lod' + sceneLodN + '_mesh']
+        gbodyMesh = [body_type + "_body_lod" + scenebodyLodN + '_mesh',body_type + "_combined_lod" + scenebodyLodN + '_mesh',body_type + "_flipflops_lod" + scenebodyLodN + '_mesh']
+        gcustomheadMesh = ['custom_head_lod0_mesh', 'custom_teeth_lod0_mesh', 'custom_saliva_lod0_mesh', 'custom_eyeLeft_lod0_mesh', 'custom_eyeshell_lod0_mesh', 'custom_eyelashes_lod0_mesh', 'custom_eyeEdge_lod0_mesh', 'custom_cartilage_lod0_mesh', 'custom_eyeRight_lod0_mesh']
+        gcustombodyMesh = [body_type + "_custom_body_lod0_mesh", body_type + "_custom_combined_lod0_mesh"]
+        jointButs=["pelvis", "spine_01", "spine_02", "spine_03", "spine_04", "spine_05", "neck_02", "head", "clavicle_r", "clavicle_l", "thigh_r", "thigh_l", "calf_r", "calf_l", "foot_r", "foot_l", "upperarm_r", "upperarm_l", "lowerarm_r", "lowerarm_l", "hand_r", "hand_l", "FACIAL_C_Jaw", "FACIAL_C_TeethUpper", "FACIAL_C_TeethLower", "root",
+                    'FACIAL_R_EyelidUpperB1', 'FACIAL_R_EyelidUpperA1', 'FACIAL_R_EyelidLowerA1', 'FACIAL_R_EyelidLowerB1', 'FACIAL_R_Eye', 'FACIAL_R_LipUpperOuter', 'FACIAL_R_LipUpper', 'FACIAL_R_LipLower', 'FACIAL_L_EyelidUpperB1', 'FACIAL_L_EyelidUpperA1', 'FACIAL_L_EyelidLowerA1', 'FACIAL_L_EyelidLowerB1', 'FACIAL_L_Eye', 'FACIAL_L_LipUpperOuter', 'FACIAL_R_LipUpper', 'FACIAL_R_LipLower', 'FACIAL_R_EyelidUpperB2', 'FACIAL_R_EyelidUpperA2', 'FACIAL_R_EyelidLowerA2', 'FACIAL_R_EyelidLowerB2', 'FACIAL_R_EyeCornerOuter', 'FACIAL_R_LipCorner', 'FACIAL_L_LipUpper', 'FACIAL_L_LipLower', 'FACIAL_L_EyelidUpperB2', 'FACIAL_L_EyelidUpperA2', 'FACIAL_L_EyelidLowerA2', 'FACIAL_L_EyelidLowerB2', 'FACIAL_L_EyeCornerOuter', 'FACIAL_L_LipCorner', 'FACIAL_L_LipUpper', 'FACIAL_L_LipLower', 'FACIAL_R_EyelidUpperB3', 'FACIAL_R_EyelidUpperA3', 'FACIAL_R_EyelidLowerA3', 'FACIAL_R_EyelidLowerB3', 'FACIAL_R_EyeCornerInner', 'FACIAL_R_LipLowerOuter', 'FACIAL_C_LipUpper', 'FACIAL_C_LipLower', 'FACIAL_L_EyelidUpperB3', 'FACIAL_L_EyelidUpperA3', 'FACIAL_L_EyelidLowerA3', 'FACIAL_L_EyelidLowerB3', 'FACIAL_L_EyeCornerInner', 'FACIAL_L_LipLowerOuter', 'FACIAL_C_LipUpper', 'FACIAL_C_LipLower']
+        handButs = ['index_01_r_drv', 'index_01_l_drv', 'index_02_r_drv', 'index_02_l_drv', 'index_03_r_drv', 'index_03_l_drv', 'middle_01_r_drv', 'middle_01_l_drv', 'middle_02_r_drv', 'middle_02_l_drv', 'middle_03_r_drv', 'middle_03_l_drv', 'ring_01_r_drv', 'ring_01_l_drv', 'ring_02_r_drv', 'ring_02_l_drv', 'ring_03_r_drv', 'ring_03_l_drv', 'pinky_01_r_drv', 'pinky_01_l_drv', 'pinky_02_r_drv', 'pinky_02_l_drv', 'pinky_03_r_drv', 'pinky_03_l_drv', 'thumb_01_r_drv', 'thumb_01_l_drv', 'thumb_02_r_drv', 'thumb_02_l_drv', 'thumb_03_r_drv', 'thumb_03_l_drv']
+        for obj in jointButs:
+                cmds.symbolButton(obj, edit=True, image=iconPath + "JointButton.png")
+        for obj in handButs:
+                obj = obj.split("_drv")
+                cmds.symbolButton(obj[0], edit=True, image=iconPath + "JointButtonH.png")
+        for obj in gheadMesh:
+                obj = obj.split('_lod' + sceneLodN + '_mesh')
+                if not cmds.objExists(obj[0] + '_lod' + sceneLodN + '_mesh'):
+                    cmds.symbolButton("g" + obj[0],edit=True,image=iconPath + "UIGeo" + obj[0] + ".png", enable = False)
+                else:
+                    cmds.symbolButton("g" + obj[0],edit=True,image=iconPath + "UIGeo" + obj[0] + ".png", enable = True)
+        for obj in gbodyMesh:
+                obj = obj.split('_lod' + scenebodyLodN + '_mesh')
+                obj = obj[0].split(body_type + "_")
+                if not cmds.objExists(body_type + "_" + obj[1] + '_lod' + scenebodyLodN + '_mesh'):
+                    cmds.symbolButton("g" + obj[1],edit=True,image=iconPath + "UIGeo" + obj[1] + ".png", enable = False)
+                else:
+                    cmds.symbolButton("g" + obj[1],edit=True,image=iconPath + "UIGeo" + obj[1] + ".png", enable = True)
+        for obj in gcustomheadMesh: 
+                objCheck=obj.replace("0",sceneLodN)
+                if not cmds.objExists(objCheck):
+                    obj = obj.split('_lod0_mesh')
+                    cmds.symbolButton("g" + obj[0],edit=True,image=iconPath + "UIGeoC.png", enable = False)
+                else:
+                    obj = obj.split('_lod0_mesh')
+                    cmds.symbolButton("g" + obj[0],edit=True,image=iconPath + "UIGeoC.png", enable = True)
+                    if toggleCheck == 0:
+                        cmds.symbolButton("gcustom_all",edit=True,enable=True, visible=True)
+        for obj in gcustombodyMesh: 
+                objCheck=obj.replace("0",scenebodyLodN)
+                if not cmds.objExists(objCheck):
+                    obj = obj.split('_lod0_mesh')
+                    obj = obj[0].split(body_type + "_")
+                    cmds.symbolButton("g" + obj[1],edit=True,image=iconPath + "UIGeoC.png", enable = False)
+                else:
+                    obj = obj.split('_lod0_mesh')
+                    obj = obj[0].split(body_type + "_")
+                    cmds.symbolButton("g" + obj[1],edit=True,image=iconPath + "UIGeoC.png", enable = True)
+                    if toggleCheck == 1:
+                        cmds.symbolButton("gcustom_all",edit=True,enable=True, visible=True)
+                    
+        for obj in selected_objects:
+            
+            if "DHIhead:" in obj: 
+                headObj = obj.split("DHIhead:")
+                if headObj[1] in jointButs:       
+                    cmds.symbolButton(headObj[1], edit=True, image=iconPath + "JointButtonSelected.png")
+            if "_drv" in obj: 
+                bodyObj = obj.split("_drv")
+                if bodyObj[0] in jointButs:       
+                    cmds.symbolButton(bodyObj[0], edit=True, image=iconPath + "JointButtonSelected.png")
+            if obj in jointButs:                
+                cmds.symbolButton(obj, edit=True, image=iconPath + "JointButtonSelected.png")
+            if obj in handButs:
+                obj = obj.split("_drv")
+                cmds.symbolButton(obj[0], edit=True, image=iconPath + "JointButtonHPressed.png")
+            if obj in gheadMesh:
+                obj = obj.split('_lod' + sceneLodN + '_mesh')
+                cmds.symbolButton("g" + obj[0],edit=True,image=iconPath + "UIGeo" + obj[0] + "Pressed.png")
+            if obj in gcustomheadMesh:
+                obj = obj.split('_lod' + sceneLodN + '_mesh')    
+                cmds.symbolButton("g" + obj[0],edit=True,image=iconPath + "UIGeoCPressed.png")
+            if obj in gbodyMesh:
+                obj = obj.split('_lod' + scenebodyLodN + '_mesh')
+                obj = obj[0].split(body_type + "_")
+                cmds.symbolButton("g" + obj[1],edit=True,image=iconPath + "UIGeo" + obj[1] + "Pressed.png")
+            if obj in gcustombodyMesh:
+                obj = obj.split('_lod' + scenebodyLodN + '_mesh')
+                obj = obj[0].split(body_type + "_")    
+                cmds.symbolButton("g" + obj[1],edit=True,image=iconPath + "UIGeoCPressed.png")
+
+def sceneRT(*args):
+    checkSceneSel()
+
+selection_change_callback = cmds.scriptJob(event=["SelectionChanged", sceneRT])
+def newScene():
+    if cmds.file(query=True, modified=True):
+        result = cmds.confirmDialog(
+            title="Save Changes?",
+            message="Do you want to save changes to the current scene?",
+            button=["Save", "Don't Save", "Cancel"],
+            defaultButton="Save",
+            cancelButton="Cancel",
+            dismissString="Cancel"
+        )
+    
+        if result == "Save":
+            # Save the current scene
+            cmds.file(save=True, force=True)
+        elif result == "Don't Save":
+            # Discard changes and create a new scene
+            cmds.file(new=True, force=True)
+    else:
+        # No unsaved changes, create a new scene directly
+        cmds.file(new=True, force=True)
+    leftPanelButtonV(0) 
+
+
+def import_obj():
+    # Open the import dialog with a filter set to OBJ files
+    file_path = cmds.fileDialog2(fileFilter="Obj (*.obj)", dialogStyle=2, fileMode=1)
+
+    # Check if the user selected a file
+    if file_path:
+        # Import the selected OBJ file into Maya
+        try:
+            cmds.file(file_path[0], i=True, type="OBJ", rpr="auto")
+            print("OBJ file imported successfully:", file_path[0])
+        except Exception as e:
+            print("Error importing OBJ file:", str(e))
+
+def export_fbx():
+
+    if cmds.objExists("DHIbody:root"):
+    
+        # Set the path and filename for the FBX file
+        path = f"{ROOT_DIR}/output"
+        filename = "body.fbx"
+        filepath = path + "/" + filename
+        cmds.select(clear=True)
+        cmds.select("body_rig", add=True)
+        cmds.select("DHIbody:root", add=True)
+        # Export the selected objects as FBX
+        cmds.file(filepath, force=True, options="groups=0;ptgroups=0;materials=0;smoothing=1;normals=1", type='FBX export', exportSelected=True)
+    
+        filename = "head.fbx"
+        filepath = path + "/" + filename
+        cmds.select("DHIbody:spine_04", hi=True)  # Select "DHIbody:spine_04" and its children
+        cmds.delete()  # Delete the selected objects
+        cmds.select("DHIbody:thigh_r", hi=True)  # Select "DHIbody:spine_04" and its children
+        cmds.delete()  # Delete the selected objects
+        cmds.select("DHIbody:thigh_l", hi=True)  # Select "DHIbody:spine_04" and its children
+        cmds.delete()  # Delete the selected objects
+        
+        # Parent "DHIhead:spine_04" under "DHIbody:spine_03"
+        cmds.parent("DHIhead:spine_04", "DHIbody:spine_03")
+        
+        # Print the new parent of "DHIhead:spine_04"
+        print(cmds.listRelatives("DHIhead:spine_04", parent=True))
+        
+        cmds.select(clear=True)
+        cmds.select("head_grp", add=True)
+        cmds.select("DHIbody:root", add=True)
+        # Export the selected objects as FBX
+        cmds.file(filepath, force=True, options="groups=0;ptgroups=0;materials=0;smoothing=1;normals=1", type='FBX export', exportSelected=True)
+        
+        cmds.undo()
+        cmds.undo()
+        cmds.undo()
+        cmds.undo()
+        cmds.undo()
+        cmds.undo()
+        cmds.undo()
+        cmds.undo()
+        cmds.undo()
+        cmds.undo()
+    else:
+        raise ValueError("Process is not finished! Body is missing")
+
+def unlock():
+
+    if cmds.objExists("body_gen_node") or cmds.objExists("root_drv"):
+        gbodyMesh = [body_type + "_body_lod" + scenebodyLodN + '_mesh',body_type + "_combined_lod" + scenebodyLodN + '_mesh',body_type + "_flipflops_lod" + scenebodyLodN + '_mesh']
+        for obj in gbodyMesh:
+            if cmds.objExists(obj):
+                for attr in ["tx", "ty", "tz", "rx", "ry", "rz", "sx", "sy", "sz"]:
+                    cmds.setAttr(obj + "." + attr, lock=False)
+
+    else:
+        cmds.select("spine_04", hierarchy=True)
+        selected_objects = cmds.ls(selection=True)
+        gheadMesh = ['head_lod' + sceneLodN + '_mesh', 'teeth_lod' + sceneLodN + '_mesh', 'saliva_lod' + sceneLodN + '_mesh', 'eyeLeft_lod' + sceneLodN + '_mesh', 'eyeshell_lod' + sceneLodN + '_mesh', 'eyelashes_lod' + sceneLodN + '_mesh', 'eyeEdge_lod' + sceneLodN + '_mesh', 'cartilage_lod' + sceneLodN + '_mesh', 'eyeRight_lod' + sceneLodN + '_mesh']
+        for obj in selected_objects:
+            if cmds.attributeQuery("radius", node=obj, exists=True):
+                cmds.setAttr(obj + ".radius", 0.1)
+        for obj in gheadMesh:
+            if cmds.objExists(obj):
+                for attr in ["tx", "ty", "tz", "rx", "ry", "rz", "sx", "sy", "sz"]:
+                    cmds.setAttr(obj + "." + attr, lock=False)
+            
+    cmds.select(clear=True)
+
+def headPanel(State):
+    imagepath=iconPath + "JointButton.png"
+    #LEFT BUTTONS                 
+    cmds.image("im4",edit=True,visible=State)
+    ebutTop = 325
+    ebutL = 157
+    ebutR = 50
+    ebutSpace=12
+    ebutWSpa=12
+    
+    mbutTop = ebutTop + 105
+    mbutR = 92
+    mbutSpace=12
+    mbutWSpa=12
+    eyeList = ["", "CornerOuter", "CornerInner"]
+    mouthList = ["R", "L", "C"]
+    mouthSymList = ["UpperOuter", "Corner", "LowerOuter"]
+    propers = ["Upper","Lower", "A", "B"]
+    for i in range(3):
+
+        for y in range(2):
+            cmds.symbolButton("FACIAL_" + mouthList[y] + "_Eyelid" + propers[0] + propers[3] + str(i+1), edit=True, image=imagepath,visible=State)
+            cmds.symbolButton("FACIAL_" + mouthList[y] + "_Eyelid" + propers[0] + propers[2] + str(i+1), edit=True, image=imagepath,visible=State)
+            cmds.symbolButton("FACIAL_" + mouthList[y] + "_Eyelid" + propers[1] + propers[2] + str(i+1), edit=True, image=imagepath,visible=State)
+            cmds.symbolButton("FACIAL_" + mouthList[y] + "_Eyelid" + propers[1] + propers[3] + str(i+1), edit=True, image=imagepath,visible=State)
+
+            cmds.symbolButton("FACIAL_" + mouthList[y] + "_Eye" + eyeList[i], edit=True, image=imagepath,visible=State)
+            cmds.symbolButton("FACIAL_" + mouthList[y] + "_Lip" + mouthSymList[i], edit=True, image=imagepath,visible=State)
+        
+        cmds.symbolButton("FACIAL_" + mouthList[i] + "_LipUpper", edit=True, image=imagepath,visible=State)
+        cmds.symbolButton("FACIAL_" + mouthList[i] + "_LipLower", edit=True, image=imagepath,visible=State)
+
+    bodyParent =0
+    headSelJ = ["FACIAL_C_Jaw", "FACIAL_C_TeethUpper", "FACIAL_C_TeethLower", "neck_02", "head"]
+    for i in range(len(headSelJ)):
+        cmds.symbolButton(headSelJ[i], edit=True,visible=State)
+    
+    titleName = ["RIGHT EYE", "LEFT EYE", "MOUTH"]
+    for i in range(3):
+        cmds.text("title" + str(i+1), label= titleName[i], edit=True, p="formLay2",visible=State)
+
+    
+    cmds.formLayout( "formLay2", edit=True, attachForm=[("FACIAL_R_EyelidUpperB3", 'top', ebutTop), ("FACIAL_R_EyelidUpperB3", 'left', ebutR),("FACIAL_R_EyelidUpperB2", 'top', ebutTop), ("FACIAL_R_EyelidUpperB2", 'left', ebutR+ebutSpace),("FACIAL_R_EyelidUpperB1", 'top', ebutTop), ("FACIAL_R_EyelidUpperB1", 'left',ebutR+2*ebutSpace),("FACIAL_R_EyelidUpperA3", 'top', ebutTop+ebutWSpa), ("FACIAL_R_EyelidUpperA3", 'left', ebutR),("FACIAL_R_EyelidUpperA2", 'top', ebutTop+ebutWSpa), ("FACIAL_R_EyelidUpperA2", 'left', ebutR+ebutSpace),("FACIAL_R_EyelidUpperA1", 'top', ebutTop+ebutWSpa), ("FACIAL_R_EyelidUpperA1", 'left',ebutR+2*ebutSpace),
+                                                ("FACIAL_R_EyelidLowerA3", 'top', ebutTop+4*ebutWSpa), ("FACIAL_R_EyelidLowerA3", 'left', ebutR),("FACIAL_R_EyelidLowerA2", 'top', ebutTop+4*ebutWSpa), ("FACIAL_R_EyelidLowerA2", 'left', ebutR+ebutSpace),("FACIAL_R_EyelidLowerA1", 'top', ebutTop+4*ebutWSpa), ("FACIAL_R_EyelidLowerA1", 'left',ebutR+2*ebutSpace),("FACIAL_R_EyelidLowerB3", 'top', ebutTop+5*ebutWSpa), ("FACIAL_R_EyelidLowerB3", 'left', ebutR),("FACIAL_R_EyelidLowerB2", 'top', ebutTop+5*ebutWSpa), ("FACIAL_R_EyelidLowerB2", 'left', ebutR+ebutSpace),("FACIAL_R_EyelidLowerB1", 'top', ebutTop+5*ebutWSpa), ("FACIAL_R_EyelidLowerB1", 'left',ebutR+2*ebutSpace),
+                                                
+                                                ("FACIAL_L_EyelidUpperB1", 'top', ebutTop), ("FACIAL_L_EyelidUpperB1", 'left', ebutL),("FACIAL_L_EyelidUpperB2", 'top', ebutTop), ("FACIAL_L_EyelidUpperB2", 'left', ebutL+ebutSpace),("FACIAL_L_EyelidUpperB3", 'top', ebutTop), ("FACIAL_L_EyelidUpperB3", 'left',ebutL+2*ebutSpace),("FACIAL_L_EyelidUpperA1", 'top', ebutTop+ebutWSpa), ("FACIAL_L_EyelidUpperA1", 'left', ebutL),("FACIAL_L_EyelidUpperA2", 'top', ebutTop+ebutWSpa), ("FACIAL_L_EyelidUpperA2", 'left', ebutL+ebutSpace),("FACIAL_L_EyelidUpperA3", 'top', ebutTop+ebutWSpa), ("FACIAL_L_EyelidUpperA3", 'left',ebutL+2*ebutSpace),
+                                                ("FACIAL_L_EyelidLowerA1", 'top', ebutTop+4*ebutWSpa), ("FACIAL_L_EyelidLowerA1", 'left', ebutL),("FACIAL_L_EyelidLowerA2", 'top', ebutTop+4*ebutWSpa), ("FACIAL_L_EyelidLowerA2", 'left', ebutL+ebutSpace),("FACIAL_L_EyelidLowerA3", 'top', ebutTop+4*ebutWSpa), ("FACIAL_L_EyelidLowerA3", 'left',ebutL+2*ebutSpace),("FACIAL_L_EyelidLowerB1", 'top', ebutTop+5*ebutWSpa), ("FACIAL_L_EyelidLowerB1", 'left', ebutL),("FACIAL_L_EyelidLowerB2", 'top', ebutTop+5*ebutWSpa), ("FACIAL_L_EyelidLowerB2", 'left', ebutL+ebutSpace),("FACIAL_L_EyelidLowerB3", 'top', ebutTop+5*ebutWSpa), ("FACIAL_L_EyelidLowerB3", 'left',ebutL+2*ebutSpace),
+                                                
+                                                ("FACIAL_R_EyeCornerOuter", 'top', ebutTop+2.5*ebutWSpa), ("FACIAL_R_EyeCornerOuter", 'left', ebutR-ebutSpace),("FACIAL_R_Eye", 'top', ebutTop+2.5*ebutWSpa), ("FACIAL_R_Eye", 'left', ebutR+ebutSpace),("FACIAL_R_EyeCornerInner", 'top', ebutTop+2.5*ebutWSpa), ("FACIAL_R_EyeCornerInner", 'left', ebutR+3*ebutSpace),
+                                                ("FACIAL_L_EyeCornerInner", 'top', ebutTop+2.5*ebutWSpa), ("FACIAL_L_EyeCornerInner", 'left', ebutL-ebutSpace),("FACIAL_L_Eye", 'top', ebutTop+2.5*ebutWSpa), ("FACIAL_L_Eye", 'left', ebutL+ebutSpace),("FACIAL_L_EyeCornerOuter", 'top', ebutTop+2.5*ebutWSpa), ("FACIAL_L_EyeCornerOuter", 'left', ebutL+3*ebutSpace),
+                                                
+                                                ("FACIAL_R_LipUpperOuter", 'top', mbutTop), ("FACIAL_R_LipUpperOuter", 'left', mbutR),("FACIAL_R_LipUpper", 'top', mbutTop), ("FACIAL_R_LipUpper", 'left', mbutR+ebutSpace),("FACIAL_C_LipUpper", 'top', mbutTop), ("FACIAL_C_LipUpper", 'left',mbutR+2*mbutSpace),("FACIAL_L_LipUpper", 'top', mbutTop), ("FACIAL_L_LipUpper", 'left', mbutR+3*mbutSpace),("FACIAL_L_LipUpperOuter", 'top', mbutTop), ("FACIAL_L_LipUpperOuter", 'left', mbutR+4*mbutSpace),("FACIAL_R_LipCorner", 'top', mbutTop+0.5*mbutWSpa), ("FACIAL_R_LipCorner", 'left',mbutR-mbutSpace),
+                                                ("FACIAL_R_LipLowerOuter", 'top', mbutTop+mbutWSpa), ("FACIAL_R_LipLowerOuter", 'left', mbutR),("FACIAL_R_LipLower", 'top', mbutTop+mbutWSpa), ("FACIAL_R_LipLower", 'left', mbutR+ebutSpace),("FACIAL_C_LipLower", 'top', mbutTop+mbutWSpa), ("FACIAL_C_LipLower", 'left',mbutR+2*mbutSpace),("FACIAL_L_LipLower", 'top', mbutTop+mbutWSpa), ("FACIAL_L_LipLower", 'left', mbutR+3*mbutSpace),("FACIAL_L_LipLowerOuter", 'top', mbutTop+mbutWSpa), ("FACIAL_L_LipLowerOuter", 'left', mbutR+4*mbutSpace),("FACIAL_L_LipCorner", 'top', mbutTop+0.5*mbutWSpa), ("FACIAL_L_LipCorner", 'left',mbutR+5*mbutSpace),
+                                                
+                                                ("FACIAL_C_Jaw", 'top', bodyParent+117),("FACIAL_C_Jaw", 'left', 97),("FACIAL_C_TeethUpper", 'top', bodyParent+122), ("FACIAL_C_TeethUpper", 'left', 62),("FACIAL_C_TeethLower", 'top', bodyParent+138), ("FACIAL_C_TeethLower", 'left', 67),
+                                                ("neck_02", 'top', bodyParent+167), ("neck_02", 'left', 127),("head", 'top', bodyParent+67),("head", 'left', bodyParent+127),
+                                                
+                                                ("title1", 'top', ebutTop-35), ("title1", 'left', 41),("title2", 'top', ebutTop-35), ("title2", 'left', 153),("title3", 'top', mbutTop-35), ("title3", 'left', 100)])
+                    
+    bodyParent=0       
+    geoTop=515
+    geoLeft=20
+    geoSpace=20
+    geoLSpace=109
+    cgeoLeft=10
+    gheadMesh = ["head","teeth","saliva","eyeLeft","eyeshell","eyelashes","eyeEdge","cartilage","eyeRight", "all"]
+    for i in range(len(gheadMesh)):
+
+            cmds.symbolButton("g" + gheadMesh[i],edit=True,command=lambda x, i=i:meshSelC(gheadMesh[i],0),visible=State)
+            cmds.symbolButton("g" + "custom_" + gheadMesh[i],edit=True,command=lambda x, i=i:meshSelC("custom_" + gheadMesh[i],0), visible=State)
+            
+    cmds.symbolButton("gall",edit=True,command=lambda x: selectAllGeo(0))
+    cmds.symbolButton("gcustom_all",edit=True,command=lambda x: selectAllGeo(1))
+    lodTop=675
+    lodLeft=20
+    lodSpace=25
+    for i in range(8):
+
+        cmds.text("t" + str(i),edit=True, visible=State)
+        if i == 0:
+            cmds.symbolButton("lod" + str(i),edit=True, image=iconPath + "UIButtonEmptySRT.png", visible=State)
+        else:
+            cmds.symbolButton("lod" + str(i),edit=True, image=iconPath + "UIButtonEmptySRTPressed.png", visible=State)
+
+        
+    lodtL=10
+    lodtT=-20
+    
+    
+    cmds.canvas("c1", edit=True, visible=State)
+    cmds.canvas("c2", edit=True, visible=State)
+
+    cmds.formLayout( "formLay2", edit=True,visible=True, attachForm=[("c1", 'top',bodyParent+483), ("c1", 'left', 20),("c2", 'top',bodyParent+690), ("c2", 'left', 20),
+                                                ("ghead", 'top', geoTop), ("ghead", 'left', geoLeft),("gteeth", 'top', geoTop+geoSpace), ("gteeth", 'left', geoLeft),("gsaliva", 'top', geoTop+2*geoSpace), ("gsaliva", 'left', geoLeft),("geyeLeft", 'top', geoTop+3*geoSpace), ("geyeLeft", 'left', geoLeft),
+                                                ("geyeshell", 'top', geoTop), ("geyeshell", 'left', geoLeft+geoLSpace),("geyelashes", 'top', geoTop+geoSpace), ("geyelashes", 'left', geoLeft+geoLSpace),("geyeEdge", 'top', geoTop+2*geoSpace), ("geyeEdge", 'left', geoLeft+geoLSpace),("gcartilage", 'top', geoTop+3*geoSpace), ("gcartilage", 'left', geoLeft+geoLSpace),
+                                                ("geyeRight", 'top', geoTop+4*geoSpace), ("geyeRight", 'left', geoLeft), ("gall", 'top', geoTop+4*geoSpace), ("gall", 'left', geoLeft +geoLSpace),
+                                                ("gcustom_head", 'top', geoTop), ("gcustom_head", 'left', cgeoLeft),("gcustom_teeth", 'top', geoTop+geoSpace), ("gcustom_teeth", 'left', cgeoLeft),("gcustom_saliva", 'top', geoTop+2*geoSpace), ("gcustom_saliva", 'left', cgeoLeft),("gcustom_eyeLeft", 'top', geoTop+3*geoSpace), ("gcustom_eyeLeft", 'left', cgeoLeft),
+                                                ("gcustom_eyeshell", 'top', geoTop), ("gcustom_eyeshell", 'left', cgeoLeft+geoLSpace),("gcustom_eyelashes", 'top', geoTop+geoSpace), ("gcustom_eyelashes", 'left', cgeoLeft+geoLSpace),("gcustom_eyeEdge", 'top', geoTop+2*geoSpace), ("gcustom_eyeEdge", 'left', cgeoLeft+geoLSpace),("gcustom_cartilage", 'top', geoTop+3*geoSpace), ("gcustom_cartilage", 'left', cgeoLeft+geoLSpace),
+                                                ("gcustom_eyeRight", 'top', geoTop+4*geoSpace), ("gcustom_eyeRight", 'left', cgeoLeft), ("gcustom_all", 'top', geoTop+4*geoSpace), ("gcustom_all", 'left', cgeoLeft +geoLSpace)])
+
+def bodyPanel(State):
+    #LEFT BUTTONS
+    bodyParent=0
+    cmds.image("im2",edit=True,image=iconPath + "UIBODY.png",visible=State) 
+    cmds.image("im3",edit=True,image=iconPath + "UIHAND.png",visible=State) 
+    jointButs=["pelvis", "spine_01", "spine_02", "spine_03", "spine_04", "spine_05", "neck_02", "head", "clavicle_r", "clavicle_l", "thigh_r", "thigh_l", "calf_r", "calf_l", "foot_r", "foot_l", "upperarm_r", "upperarm_l", "lowerarm_r", "lowerarm_l", "hand_r", "hand_l", "root"]
+    for i in range(len(jointButs)):
+        cmds.symbolButton(jointButs[i], edit=True,visible=State)
+    cmds.canvas("c1", edit=True, visible=State)
+    cmds.canvas("c2", edit=True, visible=State)
+    
+    
+    geoTop=532
+    geoLeft=20
+    geoSpace=20
+    geoLSpace=109
+    cgeoLeft=10
+    gheadMesh = ["body","combined","flipflops", "all"]
+    for i in range(len(gheadMesh)):
+        cmds.symbolButton("g" + gheadMesh[i],edit=True,command=lambda x, i=i:meshSelC(gheadMesh[i],1),visible=State)
+        cmds.symbolButton("g" + "custom_" + gheadMesh[i],edit=True,command=lambda x, i=i:meshSelC("custom_" + gheadMesh[i],1),visible=State)
+    
+    cmds.symbolButton("gall",edit=True,command=lambda x: selectAllGeo(2))
+    cmds.symbolButton("gcustom_all",edit=True,command=lambda x: selectAllGeo(3))
+    lodTop=675
+    lodLeft=20
+    lodSpace=25
+    for i in range(8):
+        
+        cmds.text("t" + str(i),edit=True, visible=State)
+        if i == 0:
+            cmds.symbolButton("lod" + str(i),edit=True, image=iconPath + "UIButtonEmptySRT.png", visible=State)
+        else:
+            cmds.symbolButton("lod" + str(i),edit=True, image=iconPath + "UIButtonEmptySRTPressed.png", visible=State)
+    
+    
+    lodtL=10
+    lodtT=-20
+
+        
+    cmds.formLayout( "formLay2", edit=True,visible=True, attachForm=[("im2", 'top', bodyParent+20), ("im2", 'left', 9),("im3", 'top', bodyParent+385), ("im3", 'left', 25),
+                                                ("pelvis", 'top', bodyParent+187), ("pelvis", 'left', 117),("spine_01", 'top', bodyParent+167), ("spine_01", 'left', 117),("spine_02", 'top', bodyParent+147), ("spine_02", 'left', 117),("spine_03", 'top', bodyParent+127), ("spine_03", 'left', 117),("spine_04", 'top', bodyParent+107), ("spine_04", 'left', 117),("spine_05", 'top', bodyParent+87), ("spine_05", 'left', 117),
+                                                ("neck_02", 'top', bodyParent+67), ("neck_02", 'left', 117),("head", 'top', bodyParent+47), ("head", 'left', 117),("clavicle_r", 'top', bodyParent+117), ("clavicle_r", 'left', 100),("clavicle_l", 'top', bodyParent+117), ("clavicle_l", 'left', 134), ("thigh_r", 'top', bodyParent+202), ("thigh_r", 'left', 100),("thigh_l", 'top', bodyParent+202), ("thigh_l", 'left', 134),
+                                                ("calf_r", 'top', bodyParent+257), ("calf_r", 'left', 97),("calf_l", 'top', bodyParent+257), ("calf_l", 'left', 137),("foot_r", 'top', bodyParent+332), ("foot_r", 'left', 92),("foot_l", 'top', bodyParent+332), ("foot_l", 'left', 142),("upperarm_r", 'top', bodyParent+107), ("upperarm_r", 'left', 79),("upperarm_l", 'top', bodyParent+107), ("upperarm_l", 'left', 155),
+                                                ("lowerarm_r", 'top', bodyParent+142), ("lowerarm_r", 'left', 54),("lowerarm_l", 'top', bodyParent+142), ("lowerarm_l", 'left', 180),("hand_r", 'top', bodyParent+172), ("hand_r", 'left', 35),("hand_l", 'top', bodyParent+172), ("hand_l", 'left', 200), ("root", 'top', bodyParent+347), ("root", 'left', 117),
+                                                ("c1", 'top',bodyParent+510), ("c1", 'left', 20),("c2", 'top',bodyParent+690), ("c2", 'left', 20),
+                                                ("gbody", 'top', geoTop), ("gbody", 'left', geoLeft),("gcombined", 'top', geoTop+geoSpace), ("gcombined", 'left', geoLeft),("gflipflops", 'top', geoTop+2*geoSpace), ("gflipflops", 'left', geoLeft), ("gall", 'top', geoTop+3*geoSpace), ("gall", 'left', geoLeft),
+                                                ("gcustom_body", 'top', geoTop), ("gcustom_body", 'left', cgeoLeft),("gcustom_combined", 'top', geoTop+geoSpace), ("gcustom_combined", 'left', cgeoLeft),("gcustom_flipflops", 'top', geoTop+2*geoSpace), ("gcustom_flipflops", 'left', cgeoLeft), ("gcustom_all", 'top', geoTop+3*geoSpace), ("gcustom_all", 'left', cgeoLeft),])
+    hrIndexPos =[450,72]
+    hlIndexPos =[450,167]
+    hrjointButs=["index_0", "middle_0", "ring_0", "pinky_0", "thumb_0"]
+    direx = ["r", "l"]
+    for i in range(len(hrjointButs)):
+        for y in range(3):
+            for z in range(2):
+                cmds.symbolButton(hrjointButs[i] + str(y+1) + "_" + direx[z], edit=True, command=lambda x, i=i,y=y,z=z:meshSelC(hrjointButs[i] + str(y+1) + "_" + direx[z],2), image=iconPath + "JointButtonH.png", visible=State)
+        
+    
+    cmds.formLayout( "formLay2", edit=True, attachForm=[("index_01_r", 'top', hrIndexPos[0]), ("index_01_r", 'left', hrIndexPos[1]+2),("middle_01_r", 'top', hrIndexPos[0]+5), ("middle_01_r", 'left', hrIndexPos[1]-12),("ring_01_r", 'top', hrIndexPos[0]), ("ring_01_r", 'left', hrIndexPos[1]-22),("pinky_01_r", 'top', hrIndexPos[0]-8), ("pinky_01_r", 'left', hrIndexPos[1]-30),("thumb_01_r", 'top', hrIndexPos[0]-22), ("thumb_01_r", 'left', hrIndexPos[1]+12),
+                    ("index_02_r", 'top', hrIndexPos[0]+20), ("index_02_r", 'left', hrIndexPos[1]+5),("middle_02_r", 'top', hrIndexPos[0]+25), ("middle_02_r", 'left', hrIndexPos[1]-15),("ring_02_r", 'top', hrIndexPos[0]+18), ("ring_02_r", 'left', hrIndexPos[1]-30),("pinky_02_r", 'top', hrIndexPos[0]+2), ("pinky_02_r", 'left', hrIndexPos[1]-40),("thumb_02_r", 'top', hrIndexPos[0]-12), ("thumb_02_r", 'left', hrIndexPos[1]+26),
+                    ("index_03_r", 'top', hrIndexPos[0]+40), ("index_03_r", 'left', hrIndexPos[1]+10),("middle_03_r", 'top', hrIndexPos[0]+42), ("middle_03_r", 'left', hrIndexPos[1]-20),("ring_03_r", 'top', hrIndexPos[0]+32), ("ring_03_r", 'left', hrIndexPos[1]-36),("pinky_03_r", 'top', hrIndexPos[0]+12), ("pinky_03_r", 'left', hrIndexPos[1]-49),("thumb_03_r", 'top', hrIndexPos[0]-8), ("thumb_03_r", 'left', hrIndexPos[1]+39)])
+    
+    cmds.formLayout( "formLay2", edit=True, attachForm=[("index_01_l", 'top', hlIndexPos[0]), ("index_01_l", 'left', hlIndexPos[1]-2),("middle_01_l", 'top', hlIndexPos[0]+5), ("middle_01_l", 'left', hlIndexPos[1]+12),("ring_01_l", 'top', hlIndexPos[0]), ("ring_01_l", 'left', hlIndexPos[1]+22),("pinky_01_l", 'top', hlIndexPos[0]-8), ("pinky_01_l", 'left', hlIndexPos[1]+30),("thumb_01_l", 'top', hlIndexPos[0]-22), ("thumb_01_l", 'left', hlIndexPos[1]-12),
+                    ("index_02_l", 'top', hlIndexPos[0]+20), ("index_02_l", 'left', hlIndexPos[1]-5),("middle_02_l", 'top', hlIndexPos[0]+25), ("middle_02_l", 'left', hlIndexPos[1]+15),("ring_02_l", 'top', hlIndexPos[0]+18), ("ring_02_l", 'left', hlIndexPos[1]+30),("pinky_02_l", 'top', hlIndexPos[0]+2), ("pinky_02_l", 'left', hlIndexPos[1]+40),("thumb_02_l", 'top', hlIndexPos[0]-12), ("thumb_02_l", 'left', hlIndexPos[1]-26),
+                    ("index_03_l", 'top', hlIndexPos[0]+40), ("index_03_l", 'left', hlIndexPos[1]-10),("middle_03_l", 'top', hlIndexPos[0]+42), ("middle_03_l", 'left', hlIndexPos[1]+20),("ring_03_l", 'top', hlIndexPos[0]+32), ("ring_03_l", 'left', hlIndexPos[1]+36),("pinky_03_l", 'top', hlIndexPos[0]+12), ("pinky_03_l", 'left', hlIndexPos[1]+49),("thumb_03_l", 'top', hlIndexPos[0]-8), ("thumb_03_l", 'left', hlIndexPos[1]-39)])
+ 
+    
+    
+
+toggleCheck = 2
+def togglePanel():
+    global toggleCheck
+    if toggleCheck == 0:
+        bodyPanel(False)
+        headPanel(True)
+        toggleCheck = 1
+        cmds.symbolButton("gcustom_all",edit=True, command=lambda x: selectAllGeo(1))
+    else:
+        headPanel(False)
+        bodyPanel(True)
+        toggleCheck = 0
+        cmds.symbolButton("gcustom_all",edit=True, command=lambda x: selectAllGeo(3))
+        
+       
+#LEFTPANELBUTTON
+def leftPanelButtonV(worldCheck):
+    global toggleCheck
+    imagepath=iconPath + "JointButton.png"
+        
+    worldCheck = 0
+    if cmds.objExists("spine_04") or cmds.objExists("OpenedDNAInfoNode"):
+        worldCheck = 1
+    if cmds.objExists("LoadedDNAInfoNode"):
+        worldCheck = 2
+    if cmds.objExists ("rl4Embedded_Archetype") or cmds.objExists ("rl4Embedded_Archtype"):
+        worldCheck = 3 
+    if cmds.objExists ("DHIhead:spine_04"):
+        worldCheck = 4
+    if cmds.objExists("body_gen_node") or cmds.objExists("root_drv"):
+        worldCheck = 5
+    if cmds.objExists("FixBodyInfoNode"):
+        worldCheck = 6 
+
+    
+    #OPEN DNA
+    if worldCheck==0:
+        toggleCheck = 2
+        headPanel(False)
+        bodyPanel(False)
+        #RIGHT BUTTONS
+        butTop = 250
+        butH = 41
+        butW=44
+        offsetTop=80
+        for i in range(10):
+            if i == 0:
+                StateVis = True
+                StateEnab = True
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            if i in [1,2,9]:
+                StateVis = True
+                StateEnab = False
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            if i in [3,4,5,6,7,8]:
+                StateVis = False
+                StateEnab = False
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+        
+            cmds.formLayout( "formLay", edit=True, attachForm=[("b" + str(i+1), 'top', butTop+i*butH+offsetTop), ("b" + str(i+1), 'left', butW)])
+        cmds.formLayout( "formLay", edit=True, attachForm=[("b10", 'top', butTop + 3*butH+offsetTop), ("b10", 'left', butW)])
+        cmds.formLayout("formLay2", edit=True,visible=False)
+        cmds.symbolButton("Toggle", edit=True, enable=False)
+    
+    
+    #LOAD DNA
+    if worldCheck==1:
+        toggleCheck = 2
+        headPanel(False)
+        bodyPanel(False)
+        #RIGHT BUTTONS
+        butTop = 250
+        butH = 41
+        butW=44
+        offsetTop=80
+        for i in range(10):
+            if i in [0,1]:
+                StateVis = True
+                StateEnab = True
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            if i in [2,9]:
+                StateVis = True
+                StateEnab = False
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            if i in [3,4,5,6,7,8]:
+                StateVis = False
+                StateEnab = False
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            cmds.formLayout( "formLay", edit=True, attachForm=[("b" + str(i+1), 'top', butTop+i*butH+offsetTop), ("b" + str(i+1), 'left', butW)])
+        cmds.formLayout( "formLay", edit=True, attachForm=[("b10", 'top', butTop + 3*butH+offsetTop), ("b10", 'left', butW)])
+        cmds.formLayout("formLay2", edit=True,visible=False)
+        cmds.symbolButton("Toggle", edit=True, enable=False)
+
+
+    #MODIFICATIONS
+    if worldCheck==2:
+        toggleCheck = 0
+        bodyPanel(False)
+        #RIGHT BUTTONS
+        butTop = 250
+        butH = 41
+        butW=44
+        offsetTop=80
+        for i in range(10):
+            if i in [2,9]:
+                StateVis = True
+                StateEnab = True
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            if i in [0,1]:
+                StateVis = True
+                StateEnab = False
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            if i in [3,4,5,6,7,8]:
+                StateVis = False
+                StateEnab = False
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            cmds.formLayout( "formLay", edit=True, attachForm=[("b" + str(i+1), 'top', butTop+i*butH+offsetTop), ("b" + str(i+1), 'left', butW)])
+        cmds.formLayout( "formLay", edit=True, attachForm=[("b10", 'top', butTop + 3*butH+offsetTop), ("b10", 'left', butW)])
+        cmds.formLayout("formLay2", edit=True,visible=True)
+        headPanel(True)  
+        #cmds.symbolButton("Toggle", edit=True, enable=False)
+    
+    
+    #PREPARE TO EXPORT
+    if worldCheck==3:
+        toggleCheck = 2
+        headPanel(False)
+        bodyPanel(False)
+        #RIGHT BUTTONS
+        butTop = 250
+        butH = 41
+        butW=44
+        offsetTop=-80
+        for i in range(10):
+            if i in [3,9]:
+                StateVis = True
+                StateEnab = True
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            if i in [4,5,6,7,8]:
+                StateVis = True
+                StateEnab = False
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            if i in [0,1,2]:
+                StateVis = False
+                StateEnab = False
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            cmds.formLayout( "formLay", edit=True, attachForm=[("b" + str(i+1), 'top', butTop+i*butH+offsetTop), ("b" + str(i+1), 'left', butW)])
+        cmds.formLayout("formLay2", edit=True,visible=False)
+        cmds.symbolButton("Toggle", edit=True, enable=False)
+
+
+    #LOAD BODY
+    if worldCheck==4:
+        toggleCheck = 2
+        headPanel(False)
+        bodyPanel(False)
+        #RIGHT BUTTONS
+        butTop = 250
+        butH = 41
+        butW=44
+        offsetTop=-80
+        for i in range(10):
+            if i in [4,9]:
+                StateVis = True
+                StateEnab = True
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            if i in [3,5,6,7,8]:
+                StateVis = True
+                StateEnab = False
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            if i in [0,1,2]:
+                StateVis = False
+                StateEnab = False
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            cmds.formLayout( "formLay", edit=True, attachForm=[("b" + str(i+1), 'top', butTop+i*butH+offsetTop), ("b" + str(i+1), 'left', butW)])
+        cmds.formLayout("formLay2", edit=True,visible=False)
+        cmds.symbolButton("Toggle", edit=True, enable=False)
+
+
+    #BODY MODIFICATIONS
+    if worldCheck==5:
+        toggleCheck = 1
+        headPanel(False)
+        #RIGHT BUTTONS
+        butTop = 250
+        butH = 41
+        butW=44
+        offsetTop=-80
+        for i in range(10):
+            if i in [5,7,8,9]:
+                StateVis = True
+                StateEnab = True
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            if i in [3,4,6]:
+                StateVis = True
+                StateEnab = False
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            if i in [0,1,2]:
+                StateVis = False
+                StateEnab = False
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            cmds.formLayout( "formLay", edit=True, attachForm=[("b" + str(i+1), 'top', butTop+i*butH+offsetTop), ("b" + str(i+1), 'left', butW)])
+        cmds.formLayout("formLay2", edit=True,visible=True)
+        bodyPanel(True)
+        cmds.symbolButton("Toggle", edit=True, enable=True)
+        
+    
+    #FIXED BODY END                      
+    if worldCheck==6:
+        toggleCheck = 1
+        headPanel(False)
+        #RIGHT BUTTONS
+        butTop = 250
+        butH = 41
+        butW=44
+        offsetTop=-80
+        for i in range(10):
+            if i in [5,6,7,8,9]:
+                StateVis = True
+                StateEnab = True
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            if i in [3,4]:
+                StateVis = True
+                StateEnab = False
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            if i in [0,1,2]:
+                StateVis = False
+                StateEnab = False
+                cmds.symbolButton("b" + str(i+1), edit=True, image=iconPath + "UIButton" + str(i+1) + ".png", visible=StateVis ,enable=StateEnab)
+            cmds.formLayout( "formLay", edit=True, attachForm=[("b" + str(i+1), 'top', butTop+i*butH+offsetTop), ("b" + str(i+1), 'left', butW)])
+        cmds.formLayout("formLay2", edit=True,visible=True)
+        
+        bodyPanel(True)
+        cmds.symbolButton("Toggle", edit=True, enable=True)
+        
+        
+        
+        
+        
+        
+
+def yzUP():
+    # Get the current up axis from the preferences
+    up_axis = cmds.upAxis(q=True, axis=True)
+    
+    # Toggle the up axis based on the current value
+    if up_axis == 'y':
+        cmds.upAxis(axis='z')
+        final_up_axis = 'z'
+        cmds.symbolButton("yUP", edit=True,image=iconPath + "Zup.png")
+    else:
+        cmds.upAxis(axis='y')
+        final_up_axis = 'y'
+        cmds.symbolButton("yUP",edit=True,image=iconPath + "Yup.png")
+    
+    # Print the final up axis
+    print("Final up axis:", final_up_axis)
+
+
+ 
+def centerF():
+    selected_objects = cmds.ls(selection=True)
+    for obj in selected_objects:
+        if cmds.objExists(obj):
+            cmds.xform(obj, translation=[0, 0, 0], worldSpace=True)
+def freezeF():
+    selected_objects = cmds.ls(selection=True)
+    for obj in selected_objects:
+        if cmds.objExists(obj):
+            cmds.makeIdentity(obj, apply=True, t=1, r=1, s=1)
+def unlockF():
+    selected_objects = cmds.ls(selection=True)
+    for obj in selected_objects:
+        if cmds.objExists(obj):
+            for attr in ["tx", "ty", "tz", "rx", "ry", "rz", "sx", "sy", "sz"]:
+                cmds.setAttr(obj + "." + attr, lock=False)   
+
+
+
+def lodLayerC(lodN):
+    for i in range(8):
+        cmds.symbolButton("lod"+str(i), edit=True, image=iconPath + "UIButtonEmptySRTPressed.png")
+        cmds.setAttr("head_lod"+str(i)+"_layer" + ".visibility", False)
+        if cmds.objExists("root_drv"):
+            cmds.setAttr("body_lod"+str(i//2)+"_layer" + ".visibility", False)
+    cmds.symbolButton("lod"+str(lodN), edit=True, image=iconPath + "UIButtonEmptySRT.png")
+    cmds.setAttr("head_lod"+str(lodN)+"_layer" + ".visibility", True)
+    if cmds.objExists("root_drv"):
+        cmds.setAttr("body_lod"+str(lodN//2)+"_layer" + ".visibility", True)
+    global sceneLodN
+    sceneLodN = str(lodN)
+    global scenebodyLodN
+    scenebodyLodN = str(lodN//2)
+    cmds.symbolButton("gcustom_all",edit=True,enable=False, visible=True)
+    checkSceneSel()
+
+
+
+
+
+
+
+
+
+
+
+
+
+def codeblock (dnaPath, ROOT_DIR, CHARACTER_NAME, MAIN_PATH, body_type):
+    
+    #DATAS DNA
+    output_file_path = os.path.join(f"{ROOT_DIR}/examples", "datas_dna.py")
+    with open(f"{ROOT_DIR}/examples/dna_viewer_grab_changes_from_scene_and_propagate_to_dna.py") as file:
+        lines_all = file.readlines()
+        lines = lines_all[43:204]
+        lineslists = lines_all[217:220]
+        linesload = lines_all[220:226] 
+        lines2 = lines_all[232:247]   
+        defload = ["def load_dna_data():\n"]
+        defsave = ["def save_dna_data():\n"]
+        lines = [line.replace('f"{ospath.dirname(ospath.abspath(__file__))}/..".replace("\\\\", "/")','"'+ROOT_DIR+'"') for line in lines]
+        lines = [line.replace('f"{DNA_DIR}/{CHARACTER_NAME}.dna"', '"'+dnaPath+'"') for line in lines]
+        lines = [line.replace('"Ada"','"'+CHARACTER_NAME+'"') for line in lines]
+        linesload = ["    " + line for line in linesload]
+        lines2 = ["    " + line for line in lines2]
+    code_block = ''.join(lines + lineslists + defload + linesload + defsave + lines2)
+    with open(output_file_path, "w") as output_file:
+        output_file.write(code_block)
+        
+        
+    #DAT FILE
+    file_path = os.path.join("c:/Arts and Spells/Scripts", "dat.py")    
+    tRoot = ["ROOT_DIR = " + '"' +ROOT_DIR+ '"' + "\n"]
+    tMain = ["MAIN_PATH = " + '"' +MAIN_PATH+ '"' + "\n"]
+    tDNA = ["dnaPath= " + '"' +dnaPath+ '"' + "\n"]
+    tBody = ["body_type = " + '"' +body_type+ '"' + "\n"]
+    tVer = ["MAYA_VERSION = " + '"' + str(MAYA_VERSION) + '"' + "\n"]
+    dat_code_block = ''.join(tRoot + tMain + tDNA + tBody + tVer) 
+    directory = 'c:/Arts and Spells/Scripts'
+    if not os.path.exists(directory):
+        os.makedirs(directory)   
+    with open(file_path, "w") as datfile:
+        datfile.write(dat_code_block)
+
+
+def savePref(textdnaPath, textROOT_DIR, textMAIN_PATH, textbody_type):
+    global body_type
+    global ROOT_DIR
+    global MAIN_PATH
+    global dnaPath
+    character_dna = cmds.textField(textdnaPath, q=True, text=True)
+    ROOT_DIR = cmds.textField(textROOT_DIR, q=True, text=True)
+    MAIN_PATH = cmds.textField(textMAIN_PATH, q=True, text=True)
+    body_type = cmds.textField(textbody_type, q=True, text=True)
+    CHARACTER_DNA = ospath.abspath(character_dna)
+    CHARACTER_DNA = CHARACTER_DNA.replace("\\", "/")
+    CHARACTER_NAME = os.path.basename(CHARACTER_DNA).split(".")[0]
+    
+    chX=2
+    file_path = os.path.join("c:/Arts and Spells/Scripts", "dat.py")
+    if os.path.exists(file_path):
+        chX=0
+    else:
+        chX=1
+        
+    print(f"New DNA_DIR: {CHARACTER_DNA}")
+    print(f"New DNA_Name: {CHARACTER_NAME}")
+    codeblock (CHARACTER_DNA, ROOT_DIR, CHARACTER_NAME, MAIN_PATH, body_type)
+    if os.path.exists(file_path):
+        import dat
+        importlib.reload(dat)
+        ROOT_DIR = dat.ROOT_DIR
+        MAIN_PATH = dat.MAIN_PATH
+        dnaPath = dat.dnaPath
+        body_type = dat.body_type
+    if chX==1:
+        cmds.deleteUI("prefWindow", window=True)
+        mFree_window()
+    else:
+        cmds.deleteUI("prefWindow", window=True)
+    
+def prefUI(dnaPath, ROOT_DIR, MAIN_PATH, body_type):
+    heightSpa=20
+    heightField=25
+    file_path = "c:/Arts and Spells/Scripts" + "/dat.py"
+    if os.path.exists(file_path):
+        import dat
+        importlib.reload(dat)
+        ROOT_DIR = dat.ROOT_DIR
+        MAIN_PATH = dat.MAIN_PATH
+        dnaPath = dat.dnaPath
+        body_type = dat.body_type
+    if cmds.window("prefWindow", exists=True):
+        cmds.deleteUI("prefWindow", window=True)
+    
+    cmds.window("prefWindow", title="Metapipe Preferences", widthHeight=(200, 100), bgc=(0.3,0.3,0.3),resizeToFitChildren=True,sizeable=False)
+    cmds.columnLayout(adjustableColumn=True)
+    cmds.text(label="",height=25)
+    cmds.text(label="DNA CALIBRATION PATH:",height=30, font="boldLabelFont")
+    textROOT_DIR = cmds.textField(text=ROOT_DIR, bgc=(0.2,0.2,0.2), height=heightField)
+    cmds.text(label="",height=heightSpa)
+    cmds.text(label="METAPIPE FILES PATH:",height=30, font="boldLabelFont")
+    textMAIN_PATH = cmds.textField(text=MAIN_PATH, bgc=(0.2,0.2,0.2),height=heightField)
+    cmds.text(label="",height=heightSpa)
+    cmds.text(label="METAHUMAN DNA FILE PATH:",height=30, font="boldLabelFont")
+    textdnaPath = cmds.textField(text=dnaPath, bgc=(0.2,0.2,0.2),height=heightField)
+    cmds.text(label="",height=heightSpa)
+    cmds.text(label="METAHUMAN BODY TYPE:",height=30, font="boldLabelFont")
+    textbody_type = cmds.textField(text=body_type, bgc=(0.2,0.2,0.2),height=heightField)
+    cmds.text(label="",height=heightSpa)
+    cmds.rowLayout(numberOfColumns=2, columnWidth2=(250, 200))
+    cmds.button(label="SAVE", command=lambda x: savePref(textdnaPath, textROOT_DIR, textMAIN_PATH, textbody_type))
+    cmds.button(label="Cancel", command=lambda x: cmds.deleteUI("prefWindow", window=True))
+    
+    cmds.showWindow("prefWindow")
+
+
+def mFree_window():
+    # Create window
+    window_name = "MetaPipe"
+    if cmds.window(window_name, exists=True):
+        cmds.deleteUI(window_name)
+    cmds.window(window_name, title=window_name, width=1360, height=768, sizeable=True, resizeToFitChildren=True, menuBar=False, tlc=(0, 0), tb=False, tbm=False)
+    layout = cmds.formLayout(bgc=(0,0,0))
+    cmds.image(image=iconPath + "UICover.png", p=layout)
+    
+    cmds.showWindow()
+
+mFree_window()
+time.sleep (1)
+def mFree_window():
+    
+    #WINDOW
+    window_name = "MetaPipe"
+    if cmds.window(window_name, exists=True):
+        cmds.deleteUI(window_name)
+    cmds.window(window_name, title=window_name, wh=(1368, 768), sizeable=True, resizeToFitChildren=True, menuBar=False, tlc=(0, 0))
+    
+    color = (0.135135, 0.360326, 0.715)  
+    backGr = (0.08, 0.08, 0.08)
+    buttonColor = (0.25, 0.25, 0.25) 
+    
+    layout = cmds.paneLayout(bgc=backGr, cn="quad", ps=[[1, 83,95], [2, 17, 95], [3, 1,5]], st=5)
+    layout2 = cmds.paneLayout(bgc=backGr, cn="vertical2", ps=[[1, 20, 1], [2, 80, 1]], st=5, p=layout)
+    formLay = cmds.formLayout("formLay", w=240, p=layout2)
+    
+    
+    #LEFT PANEL
+    
+    
+
+    #SETTINGS
+    settings=cmds.symbolButton("settings",image=iconPath + "UISettings.png")
+    cmds.popupMenu(parent="settings", button=1, mm=1)
+    cmds.menuItem(label="New", command=lambda x:newScene())
+    cmds.menuItem(label="Starter Scene", command=lambda x:loadScene("Custom Head"))
+    cmds.menuItem(label="Recent Scene", command=lambda x:loadScene("Checkpoint"))
+    cmds.menuItem(label="Save Scene", command=lambda x:saveScene())
+    cmds.menuItem(label="Import...", command=lambda x:import_obj())
+    cmds.menuItem(label="Export", command=lambda x:export_fbx())
+    cmds.menuItem(label="Shape Editor", command=lambda x:shapeEdit())
+    cmds.menuItem(label="Selection Panel", command=lambda x:cmds.formLayout( formLay2, edit=True,visible = True))
+    cmds.menuItem(label="Preferences", command=lambda x:prefUI(dnaPath, ROOT_DIR, MAIN_PATH, body_type))
+    
+
+    im1 = cmds.image(image=iconPath + "UI LOGO.png")
+    #TOP
+    yUP=cmds.symbolButton("yUP", command=lambda x: yzUP(),image=iconPath + "yUP.png")
+    center0=cmds.symbolButton("center0", command=lambda x: centerF(),image=iconPath + "center.png")
+    freeze0=cmds.symbolButton("freeze0", command=lambda x: freezeF(),image=iconPath + "freeze.png")
+    unlock0=cmds.symbolButton("unlock0", command=lambda x: unlockF(),image=iconPath + "unlock.png")
+    
+    
+    
+    
+    #BUTTONS
+    butTop = 250
+    butH = 41
+    butW=44
+    offsetTop=0
+    
+    b1=cmds.symbolButton("b1", command=lambda x: buildDNA(),image=iconPath + "UIButton1Pressed.png",enable=False)
+    b2=cmds.symbolButton("b2",command=lambda x: loadDNA(), image=iconPath + "UIButton2Pressed.png", enable=False)
+    b3=cmds.symbolButton("b3",command=lambda x: saveDNA(), image=iconPath + "UIButton3Pressed.png", enable=False)
+    b4=cmds.symbolButton("b4",command=lambda x: prepare_export(), image=iconPath + "UIButton4Pressed.png", enable=False)
+    b5=cmds.symbolButton("b5",command=lambda x: build_body(), image=iconPath + "UIButton5Pressed.png", enable=False)
+    b8=cmds.symbolButton("b6",command=lambda x: fixbody(), image=iconPath + "UIButton6Pressed.png", enable=False)
+    b9=cmds.symbolButton("b7",command=lambda x: connect_body(), image=iconPath + "UIButton7Pressed.png", enable=False)
+    b6=cmds.symbolButton("b8",command=lambda x: bindSkinC(), image=iconPath + "UIButton8Pressed.png", enable=False)
+    b7=cmds.symbolButton("b9",command=lambda x: copySkin(), image=iconPath + "UIButton9Pressed.png", enable=False)
+    b10=cmds.symbolButton("b10",command=lambda x:findCustom(), image=iconPath + "UIButton10Pressed.png", enable=False)
+    
+    #MODIFY PANEL
+    t1=cmds.text(label="MODIFY PANEL", height=30, font="boldLabelFont", p=formLay)
+    
+    
+    #FORMLAY
+    cmds.formLayout(formLay, edit=True, attachForm=[(t1, 'top', 695), (t1, 'left', 83), 
+                                    
+                    (im1, 'top', 20), (im1, 'left', 14),
+                    (settings, 'top', 15), (settings, 'left', 5),(yUP, 'top', 7), (yUP, 'left', 210),
+                    (center0, "top", 7), (center0, "left", 150), (freeze0, "top", 7), (freeze0, "left", 170), (unlock0, "top", 7), (unlock0, "left", 190)])
+    
+    
+    
+    
+    #MID PANEL 3D VIEWER
+    panel_name = cmds.modelPanel(p=layout2)
+    cmds.control(panel_name, edit=True)
+    cmds.modelEditor(panel_name, edit=True, da="smoothShaded")
+    cmds.grid(toggle=False)
+    cmds.viewFit()
+    
+    
+    
+    #RIGHT PANEL
+    bodyParent=0
+    formLay2 = cmds.formLayout("formLay2", w=240, p=layout) 
+    im2 = cmds.image("im2", image=iconPath + "UIBODY.png",visible=False) 
+    im3 = cmds.image("im3", image=iconPath + "UIHAND.png",visible=False) 
+    im4 = cmds.image("im4", image=iconPath + "UIHEAD.png",visible=False) 
+    
+    cmds.symbolButton("Toggle", command=lambda x: togglePanel(), image=iconPath + "Toggle.png",visible=True)
+    cmds.symbolButton("Close", command=lambda x: cmds.formLayout( formLay2, edit=True,visible = False), image=iconPath + "Close.png",visible=True)
+    cmds.formLayout( formLay2, edit=True, attachForm=[("Toggle", 'top', 10), ("Toggle", 'left', 10),("Close", 'top', 10), ("Close", 'left', 210)])
+    
+    #SKELETON HIERARCHY
+    imagepath=iconPath + "JointButton.png"
+    jointButs=["pelvis", "spine_01", "spine_02", "spine_03", "spine_04", "spine_05", "neck_02", "head", "clavicle_r", "clavicle_l", "thigh_r", "thigh_l", "calf_r", "calf_l", "foot_r", "foot_l", "upperarm_r", "upperarm_l", "lowerarm_r", "lowerarm_l", "hand_r", "hand_l", "FACIAL_C_Jaw", "FACIAL_C_TeethUpper", "FACIAL_C_TeethLower", "root"]
+    for i in range(len(jointButs)):
+        State=False
+        cmds.symbolButton(jointButs[i], command=lambda x, i=i: jointSelectionC(jointButs[i]), image=imagepath,visible=State)
+    
+    #HANDS
+    hrIndexPos =[450,72]
+    hlIndexPos =[450,167]
+    hrjointButs=["index_0", "middle_0", "ring_0", "pinky_0", "thumb_0"]
+    direx = ["r", "l"]
+    for i in range(len(hrjointButs)):
+        for y in range(3):
+            for z in range(2):
+                cmds.symbolButton(hrjointButs[i] + str(y+1) + "_" + direx[z],  visible=False)
+    
+
+    titleName = ["RIGHT EYE", "LEFT EYE", "MOUTH"]
+    for i in range(3):
+        cmds.text("title" + str(i+1), label= titleName[i],visible=State)
+        
+    #FACIAL / EYES / MOUTH
+    ebutTop = 410
+    ebutL = 157
+    ebutR = 50
+    ebutSpace=12
+    ebutWSpa=12
+    
+    mbutTop = 515
+    mbutR = 92
+    mbutSpace=12
+    mbutWSpa=12
+    eyeList = ["", "CornerOuter", "CornerInner"]
+    mouthList = ["R", "L", "C"]
+    mouthSymList = ["UpperOuter", "Corner", "LowerOuter"]
+    propers = ["Upper","Lower", "A", "B"]
+    for i in range(3):
+        State=False
+
+        for y in range(2):
+            cmds.symbolButton("FACIAL_" + mouthList[y] + "_Eyelid" + propers[0] + propers[3] + str(i+1), command=lambda x, y=y, i=i: jointSelectionC("FACIAL_" + mouthList[y] + "_Eyelid" + propers[0] + propers[3] + str(i+1)), image=imagepath,visible=State)
+            cmds.symbolButton("FACIAL_" + mouthList[y] + "_Eyelid" + propers[0] + propers[2] + str(i+1), command=lambda x, y=y, i=i: jointSelectionC("FACIAL_" + mouthList[y] + "_Eyelid" + propers[0] + propers[2] + str(i+1)), image=imagepath,visible=State)
+            cmds.symbolButton("FACIAL_" + mouthList[y] + "_Eyelid" + propers[1] + propers[2] + str(i+1), command=lambda x, y=y, i=i: jointSelectionC("FACIAL_" + mouthList[y] + "_Eyelid" + propers[1] + propers[2] + str(i+1)), image=imagepath,visible=State)
+            cmds.symbolButton("FACIAL_" + mouthList[y] + "_Eyelid" + propers[1] + propers[3] + str(i+1), command=lambda x, y=y, i=i: jointSelectionC("FACIAL_" + mouthList[y] + "_Eyelid" + propers[1] + propers[3] + str(i+1)), image=imagepath,visible=State)
+
+            cmds.symbolButton("FACIAL_" + mouthList[y] + "_Eye" + eyeList[i], command=lambda x, y=y, i=i: jointSelectionC("FACIAL_" + mouthList[y] + "_Eye" + eyeList[i]), image=imagepath,visible=State)
+            cmds.symbolButton("FACIAL_" + mouthList[y] + "_Lip" + mouthSymList[i], command=lambda x, y=y, i=i: jointSelectionC("FACIAL_" + mouthList[y] + "_Lip" + mouthSymList[i]), image=imagepath,visible=State)
+        
+        cmds.symbolButton("FACIAL_" + mouthList[i] + "_LipUpper", command=lambda x, i=i: jointSelectionC("FACIAL_" + mouthList[i] + "_LipUpper"), image=imagepath,visible=State)
+        cmds.symbolButton("FACIAL_" + mouthList[i] + "_LipLower", command=lambda x, i=i: jointSelectionC("FACIAL_" + mouthList[i] + "_LipLower"), image=imagepath,visible=State)
+        
+
+    #MESH SELECTION
+    geoTop=562
+    geoLeft=20
+    geoSpace=20
+    geoLSpace=109
+    gheadMesh = ["head","teeth","saliva","eyeLeft","eyeshell","eyelashes","eyeEdge","cartilage","eyeRight", "all"]
+    for i in range(len(gheadMesh)):
+        State=False
+        cmds.symbolButton("g" + gheadMesh[i],command=lambda x, i=i:meshSelC(gheadMesh[i],0),image=iconPath + "UIGeo" + gheadMesh[i] + ".png",visible=State)
+        cmds.symbolButton("g" + "custom_" + gheadMesh[i],command=lambda x, i=i:meshSelC("custom_" + gheadMesh[i],0),image=iconPath + "UIGeoC.png",enable=False, visible=State)
+    gheadMesh = ["body","combined","flipflops"]
+    for i in range(len(gheadMesh)):
+        State=False
+        cmds.symbolButton("g" + gheadMesh[i],command=lambda x, i=i:meshSelC(gheadMesh[i],1),image=iconPath + "UIGeo" + gheadMesh[i] + ".png",visible=State)
+        cmds.symbolButton("g" + "custom_" + gheadMesh[i],command=lambda x, i=i:meshSelC("custom_" + gheadMesh[i],1),image=iconPath + "UIGeoC.png",enable=False, visible=State)
+        
+        
+    
+    
+    #LOD SELECTION
+    lodTop=655
+    lodLeft=20
+    lodSpace=25
+    for i in range(8):
+        cmds.symbolButton("lod" + str(i), command=lambda x, i=i: lodLayerC(i), image=iconPath + "UIButtonEmptyPressed.png",visible=False)
+        cmds.text("t" + str(i), label=str(i), height=30, font="boldLabelFont", p=formLay2,visible=False)
+    lodtL=10
+    lodtT=-20
+    
+    
+    #SEPERATION LINES
+    cBGC=(0.4, 0.4, 0.4)
+    c1=cmds.canvas("c1", height=1, width=200, bgc=cBGC, p=formLay2,visible=False)
+    c2=cmds.canvas("c2", height=1, width=200, bgc=cBGC, p=formLay2,visible=False)
+    
+    
+    #SELECTION PANEL
+    t2=cmds.text("tSELECTION PANEL",label="SELECTION PANEL", height=30, font="boldLabelFont", p=formLay2)
+
+    
+    
+
+    
+    #FORMLAY2
+    cmds.formLayout( formLay2, edit=True, attachForm=[(im2, 'top', bodyParent+20), (im2, 'left', 9),(im3, 'top', bodyParent+20), (im3, 'left', 9),(im4, 'top', bodyParent+20), (im4, 'left', 49),
+
+                                                    ("lod0", 'top', lodTop), ("lod0", 'left', lodLeft),("lod1", 'top', lodTop), ("lod1", 'left', lodLeft+lodSpace),("lod2", 'top', lodTop), ("lod2", 'left', lodLeft+2*lodSpace),("lod3", 'top', lodTop), ("lod3", 'left', lodLeft+3*lodSpace),
+                                                    ("lod4", 'top', lodTop), ("lod4", 'left', lodLeft+4*lodSpace),("lod5", 'top', lodTop), ("lod5", 'left', lodLeft+5*lodSpace),("lod6", 'top', lodTop), ("lod6", 'left', lodLeft+6*lodSpace),("lod7", 'top', lodTop), ("lod7", 'left', lodLeft+7*lodSpace),
+                                                    
+                                                    ("t0", 'top', lodTop+lodtT), ("t0", 'left', lodLeft+lodtL),("t1", 'top', lodTop+lodtT), ("t1", 'left', lodLeft+lodSpace+lodtL),("t2", 'top', lodTop+lodtT), ("t2", 'left', lodLeft+2*lodSpace+lodtL),("t3", 'top', lodTop+lodtT), ("t3", 'left', lodLeft+3*lodSpace+lodtL),
+                                                    ("t4", 'top', lodTop+lodtT), ("t4", 'left', lodLeft+4*lodSpace+lodtL),("t5", 'top', lodTop+lodtT), ("t5", 'left', lodLeft+5*lodSpace+lodtL),("t6", 'top', lodTop+lodtT), ("t6", 'left', lodLeft+6*lodSpace+lodtL),("t7", 'top', lodTop+lodtT), ("t7", 'left', lodLeft+7*lodSpace+lodtL),
+                                                    
+                                                    (c1, 'top', 370), (c1, 'left', 20),(c2, 'top', 550), (c2, 'left', 20),
+                                                    
+                                                    (t2, 'top', 695), (t2, 'left', 76)])
+
+    cmds.formLayout("formLay2", edit=True,visible=False)
+    
+    
+    
+    #WINDOW CHECK
+    if cmds.objExists ("spine_04"):
+        if cmds.objExists ("rl4Embedded_Archetype"):
+            leftPanelButtonV(3)
+        else:
+            leftPanelButtonV(1)
+    else:
+        leftPanelButtonV(0)
+        
+    file_path = "c:/Arts and Spells/Scripts/dat.py"
+    if os.path.exists(file_path):
+        cmds.showWindow()
+    else:
+        prefUI(dnaPath, ROOT_DIR, MAIN_PATH, body_type)
+    checkSceneSel()
+    if not cmds.objExists("metapipefreewindow"):
+        cmds.createNode("transform", name="metapipefreewindow")
+    
+def get_main_window():
+    main_window_ptr = omui.MQtUtil.mainWindow()
+    return wrapInstance(int(main_window_ptr), QtWidgets.QWidget)
+#mFree_window()
\ No newline at end of file
diff --git a/freeInstaller.py b/freeInstaller.py
new file mode 100644
index 0000000..33292bd
--- /dev/null
+++ b/freeInstaller.py
@@ -0,0 +1,71 @@
+import os
+import shutil
+import sys
+
+if getattr(sys, 'frozen', False):
+    # Running in a bundle (PyInstaller)
+    source_folder = os.path.dirname(sys.executable)
+    source_folder = os.path.join(source_folder, "metapipeFree")
+else:
+    # Running in a normal Python environment
+    source_folder = os.path.dirname(os.path.abspath(__file__))
+source_folder_data = os.path.join(source_folder, "data")
+source_folder_icons = os.path.join(source_folder, "Icons")
+source_folder_scripts = os.path.join(source_folder, "scripts")
+destination_folder = "C:/Arts and Spells/Metapipe Free 2.4.0"
+destination_folder_data = destination_folder + "/data"
+destination_folder_icons = destination_folder + "/Icons"
+destination_folder_scripts = "C:/Arts and Spells/Scripts"
+def move_files(source_folder, destination_folder):
+    files = os.listdir(source_folder)
+    os.makedirs(destination_folder, exist_ok=True)
+    os.makedirs(destination_folder_scripts, exist_ok=True)
+
+    for file_name in files:
+        source = os.path.join(source_folder, file_name)
+        destination = os.path.join(destination_folder, file_name)
+
+        if os.path.isfile(source):  # Check if the item is a file
+            try:
+                shutil.copy(source, destination)
+            except PermissionError as e:
+                print(f"Permission error: {e}")
+                # Handle the permission error as needed
+
+def run():
+    if not source_folder == destination_folder:
+        try:
+            os.makedirs(destination_folder, exist_ok=True)
+            move_files(source_folder, destination_folder)
+            move_files(source_folder_data, destination_folder_data)
+            move_files(source_folder_icons, destination_folder_icons)
+            move_files(source_folder_scripts, destination_folder_scripts)
+            print("Installation completed successfully.")
+        except Exception as e:
+            print(f"An Error occurred: {e}")
+    else:
+        print("Installation already completed.")
+
+    shelfCH = 0
+    shelves_folder = os.path.expanduser("~/Documents/maya/2023/prefs/shelves")
+    if os.path.exists(shelves_folder):
+        shutil.copy(os.path.join(source_folder, "shelf_MetapipeFree.mel"), shelves_folder)
+        shelfCH = 1
+    
+    shelves_folder = os.path.expanduser("~/Documents/maya/2023/zh_CN/prefs/shelves")
+    if os.path.exists(shelves_folder):
+        shutil.copy(os.path.join(source_folder, "shelf_MetapipeFree.mel"), shelves_folder)
+        shelfCH = 1
+    
+    shelves_folder = os.path.expanduser("~/Documents/maya/2023/ja_JP/prefs/shelves")
+    if os.path.exists(shelves_folder):
+        shutil.copy(os.path.join(source_folder, "shelf_MetapipeFree.mel"), shelves_folder)
+        shelfCH = 1
+    
+    shelves_folder = os.path.expanduser("~/Documents/maya/2023/en_US/prefs/shelves")
+    if os.path.exists(shelves_folder):
+        shutil.copy(os.path.join(source_folder, "shelf_MetapipeFree.mel"), shelves_folder)
+        shelfCH = 1
+    
+    if shelfCH == 0:
+        print("ERROR: Maya folder is not in Default Place. Please find shelf folder of Maya and copy and paste 'shelf_MetaPipeFree' file manually.")
\ No newline at end of file
