Salome HOME
This commit was generated by cvs2git to create tag 'V1_4_0b1'. V1_4_0b1
authoradmin <salome-admin@opencascade.com>
Fri, 30 Jan 2004 13:28:13 +0000 (13:28 +0000)
committeradmin <salome-admin@opencascade.com>
Fri, 30 Jan 2004 13:28:13 +0000 (13:28 +0000)
Sprout from IMPORT 2003-10-13 16:48:48 UTC prascle <prascle> 'import SalomePro v1.2c'
Cherrypick from master 2004-01-30 13:28:12 UTC prascle <prascle> 'PR: merge SalomePro 1_2d = mergefrom_BRANCH_MergeV1_2d':
    INSTALL
    LICENCE
    Makefile.in
    adm_local/unix/config_files/README
    bin/VERSION
    bin/killSalome.py
    bin/orbmodule.py
    bin/runIDLparser.in
    bin/runNS.sh
    bin/runSalome
    bin/runSalome.py
    build_configure
    configure.in.base
    doc/DevelopersGuide.pdf
    doc/DevelopersGuide.ps
    doc/DevelopersGuide/DevelopersGuide.tex.in
    doc/DevelopersGuide/Makefile.in
    doc/DevelopersGuide/SALOME.png
    doc/DevelopersGuide/SALOME.ps
    doc/DevelopersGuide/bldtree.eps
    doc/DevelopersGuide/bldtree.fig
    doc/DevelopersGuide/bldtree.pdf
    doc/DevelopersGuide/makefile.skel
    doc/DevelopersGuide/makefile_own.skel
    doc/DevelopersGuide/srctree_module.eps
    doc/DevelopersGuide/srctree_module.fig
    doc/DevelopersGuide/srctree_module.pdf
    doc/DevelopersGuide/srctree_unit.eps
    doc/DevelopersGuide/srctree_unit.fig
    doc/DevelopersGuide/srctree_unit.pdf
    doc/DevelopersGuide/subtrees.eps
    doc/DevelopersGuide/subtrees.fig
    doc/DevelopersGuide/subtrees.pdf
    doc/KernelResources/kernel_resources-1.html
    doc/KernelResources/kernel_resources-2.html
    doc/KernelResources/kernel_resources-3.html
    doc/KernelResources/kernel_resources.html
    doc/KernelResources/kernel_resources.lyx
    doc/Makefile.in
    doc/OrganisationProduction_PAL.pdf
    doc/OrganisationProduction_PAL.ps
    doc/OrganisationProduction_PAL.sxw
    doc/Utilitaires_SALOME.doc
    doc/Utilitaires_SALOME.pdf
    doc/Utilitaires_SALOME.ps
    doc/html/INPUT/HTML/Logger.html
    doc/html/INPUT/HTML/SALOMEDS.html
    doc/html/INPUT/HTML/SALOMEDS_Attributes.html
    doc/html/INPUT/HTML/SALOME_Component.html
    doc/html/INPUT/HTML/SALOME_DataTypeCatalog.html
    doc/html/INPUT/HTML/SALOME_Exception.html
    doc/html/INPUT/HTML/SALOME_ModuleCatalog.html
    doc/html/INPUT/HTML/SALOME_Registry.html
    doc/html/INPUT/HTML/SALOME_RessourcesCatalog.html
    doc/html/INPUT/HTML/SALOME_Session.html
    doc/html/INPUT/HTML/SALOME_TestComponent.html
    doc/html/INPUT/HTML/TestNotif.html
    doc/html/INPUT/HTML/TypeData.html
    doc/html/INPUT/doxyfile
    doc/html/INPUT/exemple/Example1.html
    doc/html/INPUT/exemple/Example10.html
    doc/html/INPUT/exemple/Example11.html
    doc/html/INPUT/exemple/Example12.html
    doc/html/INPUT/exemple/Example13.html
    doc/html/INPUT/exemple/Example14.html
    doc/html/INPUT/exemple/Example15.html
    doc/html/INPUT/exemple/Example16.html
    doc/html/INPUT/exemple/Example17.html
    doc/html/INPUT/exemple/Example18.html
    doc/html/INPUT/exemple/Example19.html
    doc/html/INPUT/exemple/Example2.html
    doc/html/INPUT/exemple/Example20.html
    doc/html/INPUT/exemple/Example21.html
    doc/html/INPUT/exemple/Example22.html
    doc/html/INPUT/exemple/Example23.html
    doc/html/INPUT/exemple/Example3.html
    doc/html/INPUT/exemple/Example4.html
    doc/html/INPUT/exemple/Example5.html
    doc/html/INPUT/exemple/Example6.html
    doc/html/INPUT/exemple/Example7.html
    doc/html/INPUT/exemple/Example8.html
    doc/html/INPUT/exemple/Example9.html
    doc/html/INPUT/sources/Application-About.png
    doc/html/INPUT/sources/Application-About1.jpg
    doc/html/INPUT/sources/application.gif
    doc/html/INPUT/sources/application.jpg
    doc/html/INPUT/sources/bg_salome.gif
    doc/html/INPUT/sources/logocorp.gif
    doc/html/INPUT/sources/myheader.html
    doc/html/INPUT/sources/occ.gif
    doc/html/INPUT/sources/static/Link.gif
    doc/html/INPUT/sources/static/SObject.gif
    doc/html/INPUT/sources/static/Study_Struct.gif
    doc/html/INPUT/sources/static/doxygen.css
    doc/html/INPUT/sources/static/examples_Kernel.html
    doc/html/INPUT/sources/static/examples_Life_cycle.html
    doc/html/INPUT/sources/static/examples_Naming.html
    doc/html/INPUT/sources/static/examples_Study.html
    doc/html/INPUT/sources/static/mapping.html
    doc/html/INPUT/sources/static/ns_f3-1.jpg
    doc/html/INPUT/sources/static/overview_Kernel.html
    doc/html/INPUT/sources/static/overview_Life_Cycle.html
    doc/html/INPUT/sources/static/overview_Naming.html
    doc/html/INPUT/sources/static/overview_Study.html
    doc/html/INPUT/sources/static/page2.html
    doc/html/INPUT/sources/static/tree.js
    doc/html/INPUT/sources/static/treeview.js
    doc/html/Makefile.in
    doc/kernel_resources.pdf
    doc/kernel_resources.ps
    examples/Carene.brep
    examples/Makefile.in
    examples/carre_en_quad4_seg2.med
    examples/champ1.med
    examples/clo.med
    examples/clo2.med
    examples/cube_hexa8_quad4.med
    examples/essaiminimail.med
    examples/flocon.brep
    examples/fra.med
    examples/fra1.med
    examples/jurassique.med
    examples/maill.0.med
    examples/maill.1.med
    examples/maill.2.med
    examples/maillage_2D.med
    examples/maillage_migr3d.med
    examples/mer.brep
    examples/mesh.med
    examples/new_pointe.med
    examples/pointe.med
    examples/poupe.brep
    examples/puitsinst.med
    examples/resu.2.med
    examples/sections.brep
    examples/test18.med
    idl/Logger.idl
    idl/Makefile.in
    idl/SALOMEDS.idl
    idl/SALOMEDS_Attributes.idl
    idl/SALOME_Component.idl
    idl/SALOME_Exception.idl
    idl/SALOME_GenericObj.idl
    idl/SALOME_ModuleCatalog.idl
    idl/SALOME_Session.idl
    resources/Application-About.png
    resources/Application-Logo.png
    resources/Application-Splash.png
    resources/KERNELCatalog.xml
    resources/SALOMEDS_Resources
    salome_adm/Makefile.in
    salome_adm/unix/config_files/check_Kernel.m4
    salome_adm/unix/config_files/check_cas.m4
    salome_adm/unix/config_files/check_pyqt.m4
    salome_adm/unix/config_files/check_sip.m4
    salome_adm/unix/config_files/check_vtk.m4
    salome_adm/unix/make_commence.in
    salome_adm/unix/make_conclude.in
    salome_adm/unix/make_module.in
    salome_adm/unix/make_omniorb.in
    src/Container/Component_i.cxx
    src/Container/Container_i.cxx
    src/Container/Makefile.in
    src/Container/SALOME_ComponentPy.py
    src/Container/SALOME_Component_i.hxx
    src/Container/SALOME_Container.cxx
    src/Container/SALOME_ContainerPy.py
    src/DataTypeCatalog/Makefile.in
    src/DataTypeCatalog/SALOME_DataTypeCatalog_Server.cxx
    src/GenericObj/Makefile.in
    src/GenericObj/SALOME_GenericObj_i.cc
    src/GenericObj/SALOME_GenericObj_i.hh
    src/HDFPersist/HDFattrCreate.c
    src/HDFPersist/HDFattrRead.c
    src/HDFPersist/HDFattrWrite.c
    src/HDFPersist/HDFdatasetCreate.c
    src/HDFPersist/HDFdatasetGetType.c
    src/HDFPersist/HDFdatasetRead.c
    src/HDFPersist/HDFdatasetWrite.c
    src/HDFPersist/Makefile.in
    src/LifeCycleCORBA/Makefile.in
    src/Loader/InquireServersQThread.cxx
    src/Loader/InquireServersQThread.h
    src/Loader/Makefile.in
    src/Loader/SALOME_Session_Loader.cxx
    src/Logger/Makefile.in
    src/Logger/SALOME_Logger_Server.cxx
    src/Logger/SALOME_Logger_Server.hxx
    src/Logger/SALOME_Trace.cxx
    src/Logger/SALOME_Trace.hxx
    src/Logger/SALOME_Trace.py
    src/MPIContainer/Makefile.in
    src/MSG2QM/Makefile.in
    src/Makefile.in
    src/ModuleCatalog/Makefile.in
    src/ModuleCatalog/SALOME_ModuleCatalog_Acomponent_impl.cxx
    src/ModuleCatalog/SALOME_ModuleCatalog_Acomponent_impl.hxx
    src/ModuleCatalog/SALOME_ModuleCatalog_Handler.cxx
    src/ModuleCatalog/SALOME_ModuleCatalog_Handler.hxx
    src/ModuleCatalog/SALOME_ModuleCatalog_Parser.hxx
    src/ModuleCatalog/SALOME_ModuleCatalog_Server.cxx
    src/ModuleCatalog/SALOME_ModuleCatalog_impl.cxx
    src/ModuleGenerator/IDLparser.py
    src/ModuleGenerator/Makefile.in
    src/NOTIFICATION_SWIG/Makefile.in
    src/NamingService/Makefile.in
    src/NamingService/SALOME_NamingServicePy.py
    src/Notification/Makefile.in
    src/OBJECT/Makefile.in
    src/OBJECT/SALOME_Actor.cxx
    src/OBJECT/SALOME_Actor.h
    src/OCCViewer/Makefile.in
    src/OCCViewer/OCCViewer_ViewFrame.cxx
    src/OCCViewer/OCCViewer_ViewFrame.h
    src/PatchQt/Makefile.in
    src/Plot2d/Makefile.in
    src/Plot2d/Plot2d_ViewFrame.cxx
    src/Plot2d/Plot2d_ViewFrame.h
    src/Registry/Makefile.in
    src/Registry/SALOME_Registry_Server.cxx
    src/RegistryDisplay/Makefile.in
    src/RegistryDisplay/RegWidget.cxx
    src/RegistryDisplay/RegWidgetFactory.cxx
    src/RessourcesCatalog/Makefile.in
    src/RessourcesCatalog/SALOME_RessourcesCatalog_Server.cxx
    src/SALOMEDS/Handle_SALOMEDS_ExternalFileDef.hxx
    src/SALOMEDS/Handle_SALOMEDS_FileType.hxx
    src/SALOMEDS/Makefile.in
    src/SALOMEDS/README_attributes
    src/SALOMEDS/SALOMEDS_AttributeExternalFileDef_i.cxx
    src/SALOMEDS/SALOMEDS_AttributeExternalFileDef_i.hxx
    src/SALOMEDS/SALOMEDS_AttributeFileType_i.cxx
    src/SALOMEDS/SALOMEDS_AttributeFileType_i.hxx
    src/SALOMEDS/SALOMEDS_AttributeIOR_i.cxx
    src/SALOMEDS/SALOMEDS_ExternalFileDef.cdl
    src/SALOMEDS/SALOMEDS_ExternalFileDef.cxx
    src/SALOMEDS/SALOMEDS_ExternalFileDef.hxx
    src/SALOMEDS/SALOMEDS_ExternalFileDef.ixx
    src/SALOMEDS/SALOMEDS_ExternalFileDef.jxx
    src/SALOMEDS/SALOMEDS_FileType.cdl
    src/SALOMEDS/SALOMEDS_FileType.cxx
    src/SALOMEDS/SALOMEDS_FileType.hxx
    src/SALOMEDS/SALOMEDS_FileType.ixx
    src/SALOMEDS/SALOMEDS_FileType.jxx
    src/SALOMEDS/SALOMEDS_SObject_i.cxx
    src/SALOMEDS/SALOMEDS_Server.cxx
    src/SALOMEDS/SALOMEDS_StudyBuilder_i.cxx
    src/SALOMEDS/SALOMEDS_StudyBuilder_i.hxx
    src/SALOMEDS/SALOMEDS_StudyManager_i.cxx
    src/SALOMEDS/SALOMEDS_Study_i.cxx
    src/SALOMEDS/SALOMEDS_Study_i.hxx
    src/SALOMEDS/SALOMEDS_TableOfIntegerAttribute.cxx
    src/SALOMEDS/SALOMEDS_TableOfRealAttribute.cxx
    src/SALOMEDS/SALOMEDS_TableOfStringAttribute.cxx
    src/SALOMEGUI/CLIENT_msg_en.po
    src/SALOMEGUI/Makefile.in
    src/SALOMEGUI/PyInterp_base.cxx
    src/SALOMEGUI/QAD_Application.cxx
    src/SALOMEGUI/QAD_Desktop.cxx
    src/SALOMEGUI/QAD_Desktop.h
    src/SALOMEGUI/QAD_FileDlg.cxx
    src/SALOMEGUI/QAD_HelpWindow.cxx
    src/SALOMEGUI/QAD_Message.cxx
    src/SALOMEGUI/QAD_ObjectBrowser.cxx
    src/SALOMEGUI/QAD_ObjectBrowser.h
    src/SALOMEGUI/QAD_PyEditor.cxx
    src/SALOMEGUI/QAD_PyInterp.cxx
    src/SALOMEGUI/QAD_ResourceMgr.cxx
    src/SALOMEGUI/QAD_RightFrame.cxx
    src/SALOMEGUI/QAD_Study.cxx
    src/SALOMEGUI/QAD_Study.h
    src/SALOMEGUI/QAD_StudyFrame.cxx
    src/SALOMEGUI/QAD_StudyFrame.h
    src/SALOMEGUI/QAD_Tools.cxx
    src/SALOMEGUI/QAD_ViewFrame.h
    src/SALOMEGUI/QAD_icons.po
    src/SALOMEGUI/QAD_msg_en.po
    src/SALOMEGUI/QAD_msg_fr.po
    src/SALOMEGUI/SALOMEGUI_ActivateComponentDlg.cxx
    src/SALOMEGUI/SALOMEGUI_ActivateComponentDlg.h
    src/SALOMEGUI/SALOMEGUI_Application.cxx
    src/SALOMEGUI/SALOMEGUI_ExternalBrowserDlg.cxx
    src/SALOMEGUI/SALOMEGUI_ExternalBrowserDlg.h
    src/SALOMEGUI/SALOMEGUI_SetValueDlg.cxx
    src/SALOMEGUI/SALOMEGUI_SetValueDlg.h
    src/SALOMEGUI/SALOMEGUI_Swig.cxx
    src/SALOMEGUI/SALOMEGUI_Swig.hxx
    src/SALOMEGUI/SALOMEGUI_Swig.i
    src/SALOMEGUI/SALOMEGUI_msg_en.po
    src/SALOMEGUI/SALOMEGUI_msg_fr.po
    src/SALOMELocalTrace/Makefile.in
    src/SALOMELocalTrace/SALOME_Log.cxx
    src/SALOMELocalTrace/SALOME_Log.hxx
    src/SALOMELogger/Makefile.in
    src/SALOMELogger/SALOME_LoggerClient.cxx
    src/SALOME_PY/Makefile.in
    src/SALOME_PYQT/Makefile.in
    src/SALOME_PYQT/SALOME_PYQT_GUI.cxx
    src/SALOME_PYQT/SALOME_PYQT_GUI.hxx
    src/SALOME_PYQT/SalomePyQt.cxx
    src/SALOME_PYQT/SalomePyQt.hxx
    src/SALOME_PYQT/SalomePyQt.sip
    src/SALOME_SWIG/Makefile.in
    src/SALOME_SWIG/batchmode_salome.py
    src/SALOME_SWIG/import_hook.py
    src/SALOME_SWIG/kernel_shared_modules.py
    src/SALOME_SWIG/salome.py
    src/SALOME_SWIG/salome_shared_modules.py
    src/SALOME_SWIG/salome_test.py
    src/SUPERVGraph/Makefile.in
    src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx
    src/SUPERVGraph/SUPERVGraph_ViewFrame.h
    src/Session/Makefile.in
    src/Session/SALOME_Session_Server.cxx
    src/Session/SALOME_Session_i.cxx
    src/Session/SALOME_Session_i.hxx
    src/TOOLSDS/Makefile.in
    src/TOOLSGUI/Makefile.in
    src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx
    src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.h
    src/TOOLSGUI/ToolsGUI_msg_en.po
    src/TestContainer/Makefile.in
    src/TestContainer/TestContainer.cxx
    src/Utils/Makefile.in
    src/Utils/SALOME_utilities.py
    src/Utils/Utils_DESTRUCTEUR_GENERIQUE.cxx
    src/Utils/Utils_SALOME_Exception.cxx
    src/Utils/Utils_SINGLETON.hxx
    src/Utils/Utils_Timer.hxx
    src/Utils/utilities.h
    src/VTKFilter/Makefile.in
    src/VTKViewer/Makefile.in
    src/VTKViewer/VTKViewer_InteractorStyleSALOME.cxx
    src/VTKViewer/VTKViewer_InteractorStyleSALOME.h
    src/VTKViewer/VTKViewer_RenderWindow.cxx
    src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx
    src/VTKViewer/VTKViewer_RenderWindowInteractor.h
    src/VTKViewer/VTKViewer_Trihedron.cxx
    src/VTKViewer/VTKViewer_Trihedron.h
    src/VTKViewer/VTKViewer_Utilities.cxx
    src/VTKViewer/VTKViewer_Utilities.h
    src/VTKViewer/VTKViewer_VectorText.cxx
    src/VTKViewer/VTKViewer_VectorText.h
    src/VTKViewer/VTKViewer_ViewFrame.cxx
    src/VTKViewer/VTKViewer_ViewFrame.h
Delete:
    resources/CatalogModuleGeneral.xml
    salome_adm/unix/toto
    src/Loader/SALOME_Session_loader.cxx
    src/OBJECT/SALOME_Transform.cxx
    src/OBJECT/SALOME_Transform.h
    src/Utils/utilities.py

328 files changed:
INSTALL [new file with mode: 0644]
LICENCE [new file with mode: 0644]
Makefile.in [new file with mode: 0644]
adm_local/unix/config_files/README [new file with mode: 0644]
bin/VERSION [new file with mode: 0755]
bin/killSalome.py [new file with mode: 0755]
bin/orbmodule.py [new file with mode: 0755]
bin/runIDLparser.in [new file with mode: 0644]
bin/runNS.sh [new file with mode: 0755]
bin/runSalome [new file with mode: 0755]
bin/runSalome.py [new file with mode: 0755]
build_configure
configure.in.base
doc/DevelopersGuide.pdf [new file with mode: 0644]
doc/DevelopersGuide.ps [new file with mode: 0644]
doc/DevelopersGuide/DevelopersGuide.tex.in [new file with mode: 0644]
doc/DevelopersGuide/Makefile.in [new file with mode: 0644]
doc/DevelopersGuide/SALOME.png [new file with mode: 0644]
doc/DevelopersGuide/SALOME.ps [new file with mode: 0644]
doc/DevelopersGuide/bldtree.eps [new file with mode: 0644]
doc/DevelopersGuide/bldtree.fig [new file with mode: 0644]
doc/DevelopersGuide/bldtree.pdf [new file with mode: 0644]
doc/DevelopersGuide/makefile.skel [new file with mode: 0644]
doc/DevelopersGuide/makefile_own.skel [new file with mode: 0644]
doc/DevelopersGuide/srctree_module.eps [new file with mode: 0644]
doc/DevelopersGuide/srctree_module.fig [new file with mode: 0644]
doc/DevelopersGuide/srctree_module.pdf [new file with mode: 0644]
doc/DevelopersGuide/srctree_unit.eps [new file with mode: 0644]
doc/DevelopersGuide/srctree_unit.fig [new file with mode: 0644]
doc/DevelopersGuide/srctree_unit.pdf [new file with mode: 0644]
doc/DevelopersGuide/subtrees.eps [new file with mode: 0644]
doc/DevelopersGuide/subtrees.fig [new file with mode: 0644]
doc/DevelopersGuide/subtrees.pdf [new file with mode: 0644]
doc/KernelResources/kernel_resources-1.html [new file with mode: 0644]
doc/KernelResources/kernel_resources-2.html [new file with mode: 0644]
doc/KernelResources/kernel_resources-3.html [new file with mode: 0644]
doc/KernelResources/kernel_resources.html [new file with mode: 0644]
doc/KernelResources/kernel_resources.lyx [new file with mode: 0644]
doc/Makefile.in [new file with mode: 0644]
doc/OrganisationProduction_PAL.pdf [new file with mode: 0644]
doc/OrganisationProduction_PAL.ps [new file with mode: 0644]
doc/OrganisationProduction_PAL.sxw [new file with mode: 0644]
doc/Utilitaires_SALOME.doc [new file with mode: 0644]
doc/Utilitaires_SALOME.pdf [new file with mode: 0644]
doc/Utilitaires_SALOME.ps [new file with mode: 0644]
doc/html/INPUT/HTML/Logger.html [new file with mode: 0644]
doc/html/INPUT/HTML/SALOMEDS.html [new file with mode: 0644]
doc/html/INPUT/HTML/SALOMEDS_Attributes.html [new file with mode: 0644]
doc/html/INPUT/HTML/SALOME_Component.html [new file with mode: 0644]
doc/html/INPUT/HTML/SALOME_DataTypeCatalog.html [new file with mode: 0644]
doc/html/INPUT/HTML/SALOME_Exception.html [new file with mode: 0644]
doc/html/INPUT/HTML/SALOME_ModuleCatalog.html [new file with mode: 0644]
doc/html/INPUT/HTML/SALOME_Registry.html [new file with mode: 0644]
doc/html/INPUT/HTML/SALOME_RessourcesCatalog.html [new file with mode: 0644]
doc/html/INPUT/HTML/SALOME_Session.html [new file with mode: 0644]
doc/html/INPUT/HTML/SALOME_TestComponent.html [new file with mode: 0644]
doc/html/INPUT/HTML/TestNotif.html [new file with mode: 0644]
doc/html/INPUT/HTML/TypeData.html [new file with mode: 0644]
doc/html/INPUT/doxyfile [new file with mode: 0755]
doc/html/INPUT/exemple/Example1.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example10.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example11.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example12.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example13.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example14.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example15.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example16.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example17.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example18.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example19.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example2.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example20.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example21.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example22.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example23.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example3.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example4.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example5.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example6.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example7.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example8.html [new file with mode: 0755]
doc/html/INPUT/exemple/Example9.html [new file with mode: 0755]
doc/html/INPUT/sources/Application-About.png [new file with mode: 0755]
doc/html/INPUT/sources/Application-About1.jpg [new file with mode: 0755]
doc/html/INPUT/sources/application.gif [new file with mode: 0644]
doc/html/INPUT/sources/application.jpg [new file with mode: 0755]
doc/html/INPUT/sources/bg_salome.gif [new file with mode: 0755]
doc/html/INPUT/sources/logocorp.gif [new file with mode: 0755]
doc/html/INPUT/sources/myheader.html [new file with mode: 0755]
doc/html/INPUT/sources/occ.gif [new file with mode: 0755]
doc/html/INPUT/sources/static/Link.gif [new file with mode: 0755]
doc/html/INPUT/sources/static/SObject.gif [new file with mode: 0755]
doc/html/INPUT/sources/static/Study_Struct.gif [new file with mode: 0755]
doc/html/INPUT/sources/static/doxygen.css [new file with mode: 0755]
doc/html/INPUT/sources/static/examples_Kernel.html [new file with mode: 0755]
doc/html/INPUT/sources/static/examples_Life_cycle.html [new file with mode: 0755]
doc/html/INPUT/sources/static/examples_Naming.html [new file with mode: 0755]
doc/html/INPUT/sources/static/examples_Study.html [new file with mode: 0755]
doc/html/INPUT/sources/static/mapping.html [new file with mode: 0755]
doc/html/INPUT/sources/static/ns_f3-1.jpg [new file with mode: 0755]
doc/html/INPUT/sources/static/overview_Kernel.html [new file with mode: 0755]
doc/html/INPUT/sources/static/overview_Life_Cycle.html [new file with mode: 0755]
doc/html/INPUT/sources/static/overview_Naming.html [new file with mode: 0755]
doc/html/INPUT/sources/static/overview_Study.html [new file with mode: 0755]
doc/html/INPUT/sources/static/page2.html [new file with mode: 0755]
doc/html/INPUT/sources/static/tree.js [new file with mode: 0755]
doc/html/INPUT/sources/static/treeview.js [new file with mode: 0644]
doc/html/Makefile.in [new file with mode: 0644]
doc/kernel_resources.pdf [new file with mode: 0644]
doc/kernel_resources.ps [new file with mode: 0644]
examples/Carene.brep [new file with mode: 0644]
examples/Makefile.in [new file with mode: 0644]
examples/carre_en_quad4_seg2.med [new file with mode: 0644]
examples/champ1.med [new file with mode: 0644]
examples/clo.med [new file with mode: 0755]
examples/clo2.med [new file with mode: 0755]
examples/cube_hexa8_quad4.med [new file with mode: 0644]
examples/essaiminimail.med [new file with mode: 0755]
examples/flocon.brep [new file with mode: 0644]
examples/fra.med [new file with mode: 0755]
examples/fra1.med [new file with mode: 0755]
examples/jurassique.med [new file with mode: 0644]
examples/maill.0.med [new file with mode: 0644]
examples/maill.1.med [new file with mode: 0644]
examples/maill.2.med [new file with mode: 0644]
examples/maillage_2D.med [new file with mode: 0644]
examples/maillage_migr3d.med [new file with mode: 0644]
examples/mer.brep [new file with mode: 0644]
examples/mesh.med [new file with mode: 0644]
examples/new_pointe.med [new file with mode: 0644]
examples/pointe.med [new file with mode: 0644]
examples/poupe.brep [new file with mode: 0644]
examples/puitsinst.med [new file with mode: 0644]
examples/resu.2.med [new file with mode: 0644]
examples/sections.brep [new file with mode: 0644]
examples/test18.med [new file with mode: 0644]
idl/Logger.idl
idl/Makefile.in
idl/SALOMEDS.idl
idl/SALOMEDS_Attributes.idl
idl/SALOME_Component.idl
idl/SALOME_Exception.idl
idl/SALOME_GenericObj.idl [new file with mode: 0644]
idl/SALOME_ModuleCatalog.idl
idl/SALOME_Session.idl
resources/Application-About.png
resources/Application-Logo.png
resources/Application-Splash.png
resources/CatalogModuleGeneral.xml [deleted file]
resources/KERNELCatalog.xml [new file with mode: 0644]
resources/SALOMEDS_Resources
salome_adm/Makefile.in [new file with mode: 0644]
salome_adm/unix/config_files/check_Kernel.m4 [new file with mode: 0644]
salome_adm/unix/config_files/check_cas.m4
salome_adm/unix/config_files/check_pyqt.m4
salome_adm/unix/config_files/check_sip.m4
salome_adm/unix/config_files/check_vtk.m4
salome_adm/unix/make_commence.in
salome_adm/unix/make_conclude.in
salome_adm/unix/make_module.in
salome_adm/unix/make_omniorb.in
salome_adm/unix/toto [deleted file]
src/Container/Makefile.in
src/Container/SALOME_Container.cxx
src/Container/SALOME_ContainerPy.py
src/DataTypeCatalog/Makefile.in
src/DataTypeCatalog/SALOME_DataTypeCatalog_Server.cxx
src/GenericObj/Makefile.in [new file with mode: 0644]
src/GenericObj/SALOME_GenericObj_i.cc [new file with mode: 0644]
src/GenericObj/SALOME_GenericObj_i.hh [new file with mode: 0644]
src/HDFPersist/Makefile.in
src/LifeCycleCORBA/Makefile.in
src/Loader/InquireServersQThread.cxx
src/Loader/InquireServersQThread.h
src/Loader/Makefile.in
src/Loader/SALOME_Session_Loader.cxx [new file with mode: 0644]
src/Loader/SALOME_Session_loader.cxx [deleted file]
src/Logger/Makefile.in
src/Logger/SALOME_Logger_Server.cxx
src/Logger/SALOME_Trace.cxx
src/Logger/SALOME_Trace.hxx
src/Logger/SALOME_Trace.py
src/MPIContainer/Makefile.in
src/MSG2QM/Makefile.in
src/Makefile.in
src/ModuleCatalog/Makefile.in
src/ModuleCatalog/SALOME_ModuleCatalog_Acomponent_impl.cxx
src/ModuleCatalog/SALOME_ModuleCatalog_Acomponent_impl.hxx
src/ModuleCatalog/SALOME_ModuleCatalog_Handler.cxx
src/ModuleCatalog/SALOME_ModuleCatalog_Handler.hxx
src/ModuleCatalog/SALOME_ModuleCatalog_Parser.hxx
src/ModuleCatalog/SALOME_ModuleCatalog_Server.cxx
src/ModuleCatalog/SALOME_ModuleCatalog_impl.cxx
src/ModuleGenerator/IDLparser.py
src/ModuleGenerator/Makefile.in
src/NOTIFICATION_SWIG/Makefile.in
src/NamingService/Makefile.in
src/NamingService/SALOME_NamingServicePy.py
src/Notification/Makefile.in
src/OBJECT/Makefile.in
src/OBJECT/SALOME_Actor.cxx
src/OBJECT/SALOME_Actor.h
src/OBJECT/SALOME_Transform.cxx [deleted file]
src/OBJECT/SALOME_Transform.h [deleted file]
src/OCCViewer/Makefile.in
src/OCCViewer/OCCViewer_ViewFrame.cxx
src/OCCViewer/OCCViewer_ViewFrame.h
src/PatchQt/Makefile.in
src/Plot2d/Makefile.in
src/Plot2d/Plot2d_ViewFrame.h
src/Registry/Makefile.in
src/Registry/SALOME_Registry_Server.cxx
src/RegistryDisplay/Makefile.in
src/RegistryDisplay/RegWidget.cxx
src/RegistryDisplay/RegWidgetFactory.cxx
src/RessourcesCatalog/Makefile.in
src/RessourcesCatalog/SALOME_RessourcesCatalog_Server.cxx
src/SALOMEDS/Handle_SALOMEDS_ExternalFileDef.hxx [new file with mode: 0644]
src/SALOMEDS/Handle_SALOMEDS_FileType.hxx [new file with mode: 0644]
src/SALOMEDS/Makefile.in
src/SALOMEDS/README_attributes [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeExternalFileDef_i.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeExternalFileDef_i.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeFileType_i.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeFileType_i.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_AttributeIOR_i.cxx
src/SALOMEDS/SALOMEDS_ExternalFileDef.cdl [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_ExternalFileDef.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_ExternalFileDef.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_ExternalFileDef.ixx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_ExternalFileDef.jxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_FileType.cdl [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_FileType.cxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_FileType.hxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_FileType.ixx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_FileType.jxx [new file with mode: 0644]
src/SALOMEDS/SALOMEDS_SObject_i.cxx
src/SALOMEDS/SALOMEDS_Server.cxx
src/SALOMEDS/SALOMEDS_StudyBuilder_i.cxx
src/SALOMEDS/SALOMEDS_StudyBuilder_i.hxx
src/SALOMEDS/SALOMEDS_StudyManager_i.cxx
src/SALOMEDS/SALOMEDS_Study_i.cxx
src/SALOMEDS/SALOMEDS_Study_i.hxx
src/SALOMEDS/SALOMEDS_TableOfIntegerAttribute.cxx
src/SALOMEDS/SALOMEDS_TableOfRealAttribute.cxx
src/SALOMEDS/SALOMEDS_TableOfStringAttribute.cxx
src/SALOMEGUI/CLIENT_msg_en.po
src/SALOMEGUI/Makefile.in
src/SALOMEGUI/PyInterp_base.cxx
src/SALOMEGUI/QAD_Application.cxx
src/SALOMEGUI/QAD_Desktop.cxx
src/SALOMEGUI/QAD_Desktop.h
src/SALOMEGUI/QAD_FileDlg.cxx
src/SALOMEGUI/QAD_HelpWindow.cxx
src/SALOMEGUI/QAD_ObjectBrowser.cxx
src/SALOMEGUI/QAD_ObjectBrowser.h
src/SALOMEGUI/QAD_PyInterp.cxx
src/SALOMEGUI/QAD_ResourceMgr.cxx
src/SALOMEGUI/QAD_RightFrame.cxx
src/SALOMEGUI/QAD_Study.cxx
src/SALOMEGUI/QAD_Study.h
src/SALOMEGUI/QAD_StudyFrame.cxx
src/SALOMEGUI/QAD_StudyFrame.h
src/SALOMEGUI/QAD_Tools.cxx
src/SALOMEGUI/QAD_ViewFrame.h
src/SALOMEGUI/QAD_msg_en.po
src/SALOMEGUI/QAD_msg_fr.po
src/SALOMEGUI/SALOMEGUI_Application.cxx
src/SALOMEGUI/SALOMEGUI_SetValueDlg.cxx
src/SALOMEGUI/SALOMEGUI_SetValueDlg.h
src/SALOMEGUI/SALOMEGUI_Swig.cxx
src/SALOMEGUI/SALOMEGUI_Swig.hxx
src/SALOMEGUI/SALOMEGUI_Swig.i
src/SALOMEGUI/SALOMEGUI_msg_en.po
src/SALOMEGUI/SALOMEGUI_msg_fr.po
src/SALOMELocalTrace/Makefile.in [new file with mode: 0644]
src/SALOMELocalTrace/SALOME_Log.cxx [new file with mode: 0644]
src/SALOMELocalTrace/SALOME_Log.hxx [new file with mode: 0644]
src/SALOMELogger/Makefile.in [new file with mode: 0644]
src/SALOMELogger/SALOME_LoggerClient.cxx [new file with mode: 0644]
src/SALOME_PY/Makefile.in
src/SALOME_PYQT/Makefile.in
src/SALOME_PYQT/SALOME_PYQT_GUI.cxx [new file with mode: 0644]
src/SALOME_PYQT/SALOME_PYQT_GUI.hxx [new file with mode: 0644]
src/SALOME_PYQT/SalomePyQt.cxx
src/SALOME_PYQT/SalomePyQt.hxx
src/SALOME_PYQT/SalomePyQt.sip
src/SALOME_SWIG/Makefile.in
src/SALOME_SWIG/batchmode_salome.py
src/SALOME_SWIG/import_hook.py [new file with mode: 0644]
src/SALOME_SWIG/kernel_shared_modules.py [new file with mode: 0644]
src/SALOME_SWIG/salome.py
src/SALOME_SWIG/salome_shared_modules.py
src/SALOME_SWIG/salome_test.py
src/SUPERVGraph/Makefile.in
src/SUPERVGraph/SUPERVGraph_ViewFrame.cxx
src/SUPERVGraph/SUPERVGraph_ViewFrame.h
src/Session/Makefile.in
src/Session/SALOME_Session_Server.cxx
src/Session/SALOME_Session_i.cxx
src/Session/SALOME_Session_i.hxx
src/TOOLSDS/Makefile.in
src/TOOLSGUI/Makefile.in
src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx
src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.h
src/TOOLSGUI/ToolsGUI_msg_en.po
src/TestContainer/Makefile.in
src/TestContainer/TestContainer.cxx
src/Utils/Makefile.in
src/Utils/SALOME_utilities.py
src/Utils/Utils_DESTRUCTEUR_GENERIQUE.cxx
src/Utils/Utils_SALOME_Exception.cxx
src/Utils/Utils_SINGLETON.hxx
src/Utils/utilities.h
src/Utils/utilities.py [deleted file]
src/VTKFilter/Makefile.in
src/VTKViewer/Makefile.in
src/VTKViewer/VTKViewer_InteractorStyleSALOME.cxx
src/VTKViewer/VTKViewer_InteractorStyleSALOME.h
src/VTKViewer/VTKViewer_RenderWindow.cxx
src/VTKViewer/VTKViewer_RenderWindowInteractor.cxx
src/VTKViewer/VTKViewer_RenderWindowInteractor.h
src/VTKViewer/VTKViewer_Trihedron.cxx [new file with mode: 0644]
src/VTKViewer/VTKViewer_Trihedron.h [new file with mode: 0644]
src/VTKViewer/VTKViewer_Utilities.cxx [new file with mode: 0644]
src/VTKViewer/VTKViewer_Utilities.h [new file with mode: 0644]
src/VTKViewer/VTKViewer_ViewFrame.cxx
src/VTKViewer/VTKViewer_ViewFrame.h

diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..6334efe
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,5 @@
+This is the version 1.4.0 of KERNEL
+
+Previous versions :
+       - 1.3.0
+       - 1.2.1
diff --git a/LICENCE b/LICENCE
new file mode 100644 (file)
index 0000000..b1e3f5a
--- /dev/null
+++ b/LICENCE
@@ -0,0 +1,504 @@
+                 GNU LESSER GENERAL PUBLIC LICENSE
+                      Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+\f
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+\f
+                 GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+\f
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+\f
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+\f
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+\f
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+\f
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+\f
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                           NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/Makefile.in b/Makefile.in
new file mode 100644 (file)
index 0000000..2aeee3a
--- /dev/null
@@ -0,0 +1,172 @@
+# -* Makefile *- 
+#
+# Author : Patrick GOLDBRONN (CEA)
+# Date : 28/06/2001
+# $Header$
+#
+
+# source path
+top_srcdir=@top_srcdir@
+top_builddir=.
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/bin:@top_srcdir@/resources:./bin:@top_srcdir@/idl
+
+
+@COMMENCE@
+
+SUBDIRS = idl src examples salome_adm
+
+RESOURCES_FILES = \
+back.xpm \
+cascade.png \
+CatalogDataType.xml \
+KERNELCatalog.xml \
+CatalogRessources.xml \
+close.png \
+config \
+default.png \
+dl_delete.png \
+dl_insert.png \
+dl_moveup.png \
+dl_movedown.png \
+forward.xpm \
+help.png \
+home.xpm \
+new.png \
+open.png \
+print.png \
+redo.png \
+reset.png \
+Application-Logo.png \
+Application-Splash.png \
+Application-About.png \
+save.png \
+select1.png \
+tile.png \
+Tools_en.xml \
+undo.png \
+view_back.png \
+view_bottom.png \
+view_camera_dump.png \
+view_fitall.png \
+view_fitarea.png \
+view_front.png \
+view_glpan.png \
+view_left.png \
+view_pan.png \
+view_reset.png \
+view_right.png \
+view_rotate.png \
+view_top.png \
+view_triedre.png \
+view_zoom.png \
+copy.png \
+paste.png \
+plot2d_dump.png \
+plot2d_fitall.png \
+plot2d_fitarea.png \
+plot2d_legend.png \
+plot2d_linear.png \
+plot2d_linear_y.png \
+plot2d_lines.png \
+plot2d_log.png \
+plot2d_log_y.png \
+plot2d_pan.png \
+plot2d_points.png \
+plot2d_settings.png \
+plot2d_splines.png \
+plot2d_zoom.png \
+uc_add.png \
+uc_current.png \
+uc_del.png \
+uc_new.png \
+uc_clear.png \
+channel.cfg \
+Plugin \
+SALOMEDS_Resources
+
+BIN_SCRIPT= \
+runIDLparser \
+VERSION \
+orbmodule.py \
+runSalome.py \
+killSalome.py \
+runSalome \
+runNS.sh
+
+# copy header files in common directory
+ifeq ($(HAVE_SSTREAM),yes)
+  include_list=include/salome/SALOMEconfig.h
+else
+  include_list=include/salome/SALOMEconfig.h include/salome/sstream
+endif
+
+inc: idl $(include_list)
+
+include/salome/SALOMEconfig.h: salome_adm/unix/SALOMEconfig.ref
+       -$(RM) $@
+       $(LN_S) ../../$< $@
+
+# test if SALOMEconfig.h has changed (contents)
+salome_adm/unix/SALOMEconfig.ref: salome_adm/unix/SALOMEconfig.h
+       @if ! [ -a $@ ]; then \
+         cp -p $< $@;        \
+       fi;                   \
+       if ! cmp $< $@; then  \
+         cp -p $< $@;        \
+       fi;                   \
+
+include/salome/sstream: salome_adm/unix/sstream
+       -$(RM) $@
+       $(LN_S) ../../$< $@
+
+depend: depend_idl
+
+depend_idl:
+       (cd idl ; $(MAKE) $@) || exit 1
+
+# doc is already build : if you want to had documents, go manually to doc and run 'make doc'
+#doc:
+#      (cd doc && $(MAKE) $@) || exit 1
+
+# Install make_commence make_conclude ... for other modules
+install-make:
+       ($(INSTALL) -d  $(incmakedir) || exit 1);
+       (sed 's/^prefix=/#prefix=/' $(top_builddir)/salome_adm/unix/make_commence > $(incmakedir)/make_commence || exit 1);
+       (sed 's/^prefix=/#prefix=/' $(top_builddir)/salome_adm/unix/make_conclude > $(incmakedir)/make_conclude || exit 1);
+
+
+install-end:
+# finish libtool install
+#      @$(LT) --mode=finish $(libdir)
+
+install-include: $(include_list)
+       $(INSTALL) -d  $(includedir)
+       @for f in X $(include_list); do                         \
+          if test $$f != X; then                               \
+            (cp -p $$f $(includedir) || exit 1);               \
+          fi;                                                  \
+       done
+
+# install script in $(bindir) :
+install-bin: $(BIN_SCRIPT)
+       $(INSTALL) -d  $(bindir)
+       $(INSTALL_PROGRAM) $^ $(bindir)
+
+uninstall: uninstall-idl
+
+uninstall-idl:
+       $(RM) $(idldir)/*.idl
+
+distclean: distclean-other
+
+distclean-other:
+       -$(RM) salome_adm/unix/*~ salome_adm/unix/*% salome_adm/unix/*.bak salome_adm/unix/*.new salome_adm/unix/*.old
+       -$(RM) salome_adm/unix/make_* 
+       -$(RM) salome_adm/unix/depend salome_adm/unix/SALOMEconfig.h 
+       -$(RM) config.cache config.log config.status 
+
+@MODULE@
+
+install: install-bin install-include install-make install-end
+
diff --git a/adm_local/unix/config_files/README b/adm_local/unix/config_files/README
new file mode 100644 (file)
index 0000000..feb997b
--- /dev/null
@@ -0,0 +1,3 @@
+This file is only here for CVS:
+CVS does not always create empty directory, and adm_local/unix/config_file
+is needed by build_configure.
diff --git a/bin/VERSION b/bin/VERSION
new file mode 100755 (executable)
index 0000000..037ad6d
--- /dev/null
@@ -0,0 +1 @@
+THIS IS SALOME - KERNEL VERSION: 1.4.0
diff --git a/bin/killSalome.py b/bin/killSalome.py
new file mode 100755 (executable)
index 0000000..814420d
--- /dev/null
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+
+import sys,os,pickle,signal
+
+process_id={}
+
+# -----------------------------------------------------------------------------
+#
+# Fonction d'arrêt de salome
+#
+
+def killSalome():
+   print "arret des serveurs SALOME"
+   for pid, cmd in process_id.items():
+      print "arret du process %s : %s"% (pid, cmd[0])
+      try:
+         os.kill(pid,signal.SIGKILL)
+      except:
+         print "  ------------------ process %s : %s inexistant"% (pid, cmd[0])
+   print "arret du naming service"
+   os.system("killall -9 omniNames")
+   
+# -----------------------------------------------------------------------------
+
+filedict='/tmp/'+os.getenv('USER')+'_SALOME_pidict'
+#filedict='/tmp/'+os.getlogin()+'_SALOME_pidict'
+try:
+   fpid=open(filedict, 'r')
+except:
+   print "le fichier %s des process SALOME n'est pas accessible"% filedict
+   sys.exit(1)
+   
+process_id=pickle.load(fpid)
+fpid.close()
+
+killSalome()
+
+os.remove(filedict)
+
+
diff --git a/bin/orbmodule.py b/bin/orbmodule.py
new file mode 100755 (executable)
index 0000000..1154b01
--- /dev/null
@@ -0,0 +1,185 @@
+import sys,os,time
+import string
+from omniORB import CORBA
+
+# Import the stubs for the Naming service
+import CosNaming
+
+# -----------------------------------------------------------------------------
+
+class Server:
+   XTERM="/usr/bin/X11/xterm -iconic -e "
+   CMD=""
+
+   def run(self):
+       commande=self.XTERM+self.CMD
+       print commande
+       ier=os.system(commande)
+       if ier:print "Commande failed"
+
+# -----------------------------------------------------------------------------
+
+class NamingServer(Server):
+   XTERM=""
+   USER=os.getenv('USER')
+   if USER is None:
+      USER='anonymous'
+   LOGDIR="/tmp/logs/" + USER
+   os.system("mkdir -m 777 -p " + LOGDIR)
+   CMD="runNS.sh > " + LOGDIR + "/salomeNS.log 2>&1"
+
+# -----------------------------------------------------------------------------
+
+class client:
+
+   def __init__(self):
+      # Initialise the ORB
+      self.orb=CORBA.ORB_init(sys.argv, CORBA.ORB_ID)
+      # Initialise the Naming Service
+      self.initNS()
+
+   # --------------------------------------------------------------------------
+
+   def initNS(self):
+      # Obtain a reference to the root naming context
+      obj         = self.orb.resolve_initial_references("NameService")
+      try:
+          self.rootContext = obj._narrow(CosNaming.NamingContext)
+          return
+      except CORBA.COMM_FAILURE:
+          self.rootContext = None
+          print "Lancement du Naming Service",
+          
+      # On lance le Naming Server (doit etre dans le PATH)
+      NamingServer().run()
+      print "Searching Naming Service ",
+      ncount=0
+      delta=0.1
+      while(ncount < 10):
+          ncount += 1
+          try:
+              obj = self.orb.resolve_initial_references("NameService")
+              self.rootContext = obj._narrow(CosNaming.NamingContext)
+              break
+          except (CORBA.COMM_FAILURE,CORBA.OBJECT_NOT_EXIST):
+              self.rootContext = None
+              sys.stdout.write('+')
+              sys.stdout.flush()
+              time.sleep(delta)
+
+      if self.rootContext is None:
+          print "Failed to narrow the root naming context"
+          sys.exit(1)
+      print " found in %s seconds " % ((ncount-1)*delta)
+
+   # --------------------------------------------------------------------------
+
+   def showNScontext(self,context,dec=''):
+      bl,bi=context.list(0)
+      ok,b=bi.next_one()
+      while(ok):
+         for s in b.binding_name :
+            print "%s%s.%s" %(dec,s.id,s.kind)
+            if s.kind == "dir":
+               obj=context.resolve([s])
+               scontext = obj._narrow(CosNaming.NamingContext)
+               self.showNScontext(scontext,dec=dec+'  ')
+         ok,b=bi.next_one()
+
+   # --------------------------------------------------------------------------
+
+   def showNS(self):
+      """ Show the content of NS"""
+      self.showNScontext(self.rootContext)
+
+   # --------------------------------------------------------------------------
+
+   def Resolve(self, Path):
+      resolve_path=string.split(Path,'/')
+      if resolve_path[0] == '': del resolve_path[0]
+      dir_path=resolve_path[:-1]
+      context_name=[]
+      for e in dir_path:
+         context_name.append(CosNaming.NameComponent(e,"dir"))
+      context_name.append(CosNaming.NameComponent(resolve_path[-1],"object"))
+
+      try:
+          obj = self.rootContext.resolve(context_name)
+      except CosNaming.NamingContext.NotFound, ex:
+          obj = None
+      except CosNaming.NamingContext.InvalidName, ex:
+          obj = None
+      except CosNaming.NamingContext.CannotProceed, ex:
+          obj = None
+      except CORBA.COMM_FAILURE, ex:
+          obj = None
+      return obj
+
+   # --------------------------------------------------------------------------
+
+   def waitNS(self,name,typobj=None,maxcount=70):
+      count=0
+      delta=0.3
+      print "Searching %s in Naming Service " % name,
+      while(1):
+          count += 1
+          if count > maxcount : raise "Impossible de trouver %s" % name
+          obj=self.Resolve(name)
+          if obj : 
+              print " found in %s seconds " % ((count-1)*delta)
+              break
+          else:
+              sys.stdout.write('+')
+              sys.stdout.flush()
+              time.sleep(delta)
+      if typobj is None:return obj
+
+      nobj = obj._narrow(typobj)
+      if nobj is None:
+            print "%s exists but is not a %s" % (name,typobj)
+      return nobj
+
+   # --------------------------------------------------------------------------
+
+   def ResolveLogger(self, name):
+      context_name=[]
+      context_name.append(CosNaming.NameComponent(name,""))
+
+      try:
+          obj = self.rootContext.resolve(context_name)
+      except CosNaming.NamingContext.NotFound, ex:
+          obj = None
+      except CosNaming.NamingContext.InvalidName, ex:
+          obj = None
+      except CosNaming.NamingContext.CannotProceed, ex:
+          obj = None
+      except CORBA.COMM_FAILURE, ex:
+          obj = None
+      return obj
+   
+   # --------------------------------------------------------------------------
+
+   def waitLogger(self,name,typobj=None,maxcount=10):
+      count=0
+      delta=0.3
+      print "Searching %s in Naming Service " % name,
+      while(1):
+          count += 1
+          if count > maxcount : raise "Impossible de trouver %s" % name
+          obj=self.ResolveLogger(name)
+          if obj : 
+              print " found in %s seconds " % ((count-1)*delta)
+              break
+          else:
+              sys.stdout.write('+')
+              sys.stdout.flush()
+              time.sleep(delta)
+      if typobj is None:return obj
+
+      nobj = obj._narrow(typobj)
+      if nobj is None:
+            print "%s exists but is not a %s" % (name,typobj)
+      return nobj
+
diff --git a/bin/runIDLparser.in b/bin/runIDLparser.in
new file mode 100644 (file)
index 0000000..085ac77
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/bash
+
+# print the help message ====================================
+
+# test $@="-h" -o -z $@
+
+hh=0
+
+if test "$#" = "0";then
+    hh=1
+else
+    for a in $@; do
+       if test "$a" = "-h"; then
+           hh=1
+       fi
+    done
+fi
+
+if test "$hh" = "1" ; then
+    echo ""
+    echo "Usage : "
+    echo ""
+    echo "   to run IDLparser:"
+    echo ""
+    echo "        $0 -Wbcatalog=<my_catalog.xml>[,icon=<pngfile>][,version=<num>][,author=<name>][,name=<component_name>][,multistudy=<component_multistudy>][,remove=component_name] <file.idl>   "
+    echo ""
+    echo "   to have omniidl help:"
+    echo ""
+    echo "        $0 -u "
+    echo ""
+    exit 1
+fi
+#============================================================
+
+# environment ==============================================
+@ENVSCRIPT@
+
+cd $DIR
+
+PYTHONPATH=${PYTHONPATH}:${SALOME_HOME_DIR}/bin
+#============================================================
+
+# omiidl ====================================================
+omniidl -bIDLparser -I ${SALOME_SRC_DIR}/idl $@
+#============================================================
diff --git a/bin/runNS.sh b/bin/runNS.sh
new file mode 100755 (executable)
index 0000000..226bc9b
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+#log files localization
+
+BaseDir=/tmp
+Username=`/usr/bin/whoami`
+
+# kill OmniNames if exists
+
+#killall -q -9 omniNames
+
+# clear log files
+
+mkdir -m 775 ${BaseDir}/logs 
+mkdir ${BaseDir}/logs/${Username}
+touch ${BaseDir}/logs/${Username}/dummy
+\rm -f ${BaseDir}/logs/${Username}/omninames* ${BaseDir}/logs/${Username}/dummy ${BaseDir}/logs/${Username}/*.log
+
+echo "Name Service... "
+
+omniNames -start -logdir ${BaseDir}/logs/${Username} &
+
+# In LifeCycleCORBA, FactoryServer is started with rsh on the requested
+#    computer if this Container does not exist. Default is localhost.
+#    Others Containers are started with start_impl method of FactoryServer Container.
+# For using rsh it is necessary to have in the ${HOME} directory a .rhosts file
+# Warning : on RedHat the file /etc/hosts contains by default a line like :
+# 127.0.0.1               bordolex bordolex.paris1.matra-dtv.fr localhost.localdomain localhost  
+#   (bordolex is the station name). omniNames on bordolex will be accessible from other
+#   computers only if the computer name is removed on that line like :
+#   127.0.0.1               bordolex.paris1.matra-dtv.fr localhost.localdomain localhost
+
+# To start dynamically Containers on several computers you need to
+# put in the ${OMNIORB_CONFIG} file a computer name instead of "localhost"
+# example : ORBInitRef NameService=corbaname::dm2s0017
+
+# If you need to use several omniNames running on the same computer, you have to :
+#1. put in your ${OMNIORB_CONFIG} file a computer name and port number
+# example : ORBInitRef NameService=corbaname::dm2s0017:1515
+#2. start omninames with this port number in runNS.sh
+# example : omniNames -start 1515 -logdir ${BaseDir}/logs/${Username} &
+
+echo ok
+echo "to list contexts and objects bound int the context with the specified name : showNS "
diff --git a/bin/runSalome b/bin/runSalome
new file mode 100755 (executable)
index 0000000..3a3d0e2
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+python -i ${KERNEL_ROOT_DIR}/bin/salome/runSalome.py --gui --modules=GEOM,SMESH,VISU,SUPERV,MED --xterm --containers=cpp,python --killall
+#python -i ${KERNEL_ROOT_DIR}/bin/salome/runSalome.py --gui --modules=GEOM,SMESH,VISU,SUPERV,MED --logger --xterm
+#python -i ${KERNEL_ROOT_DIR}/bin/salome/runSalome.py --modules=GEOM,SMESH,VISU,SUPERV,MED
+#python -i ${KERNEL_ROOT_DIR}/bin/salome/runSalome.py --help
+
+# -----------------------------------------------------------------------------
+#
+# l'option -i permet de garder l'interpreteur python ouvert :
+# par defaut, les differents serveurs ouvrent des fenêtres xterm
+# (cf. runSalome.py)
+# le serveur Logger n'est pas obligatoire (commenté dans runSalome.py)
+# 
+# -----------------------------------------------------------------------------
diff --git a/bin/runSalome.py b/bin/runSalome.py
new file mode 100755 (executable)
index 0000000..b9ccbd4
--- /dev/null
@@ -0,0 +1,494 @@
+#!/usr/bin/env python
+
+usage="""USAGE: runSalome.py [options]
+
+[command line options] :
+--help                        : affichage de l'aide
+--gui                         : lancement du GUI
+--logger                     : redirection des messages dans un fichier
+--xterm                              : les serveurs ouvrent une fenêtre xterm et les messages sont affichés dans cette fenêtre
+--modules=module1,module2,... : où modulen est le nom d'un module Salome Ã  charger dans le catalogue
+--containers=cpp,python,superv: lancement des containers cpp, python et de supervision
+--killall                    : arrêt des serveurs de salome
+
+ La variable d'environnement <modulen>_ROOT_DIR doit etre préalablement
+ positionnée (modulen doit etre en majuscule).
+ KERNEL_ROOT_DIR est obligatoire.
+"""
+
+# -----------------------------------------------------------------------------
+#
+# Fonction d'arrêt de salome
+#
+
+def killSalome():
+   print "arret des serveurs SALOME"
+   for pid, cmd in process_id.items():
+      print "arret du process %s : %s"% (pid, cmd[0])
+      try:
+       os.kill(pid,signal.SIGKILL)
+      except:
+         print "  ------------------ process %s : %s inexistant"% (pid, cmd[0])
+   print "arret du naming service"
+   os.system("killall -9 omniNames")
+   
+# -----------------------------------------------------------------------------
+#
+# Fonction message
+#
+
+def message(code, msg=''):
+    if msg: print msg
+    sys.exit(code)
+
+import sys,os,string,glob,time,signal,pickle,getopt
+
+init_time=os.times()
+opts, args=getopt.getopt(sys.argv[1:], 'hmglxck:', ['help','modules=','gui','logger','xterm','containers=','killall'])
+modules_root_dir={}
+process_id={}
+liste_modules={}
+liste_containers={}
+with_gui=0
+with_logger=0
+with_xterm=0
+
+with_container_cpp=0
+with_container_python=0
+with_container_superv=0
+
+try:
+  for o, a in opts:
+    if o in ('-h', '--help'):
+      print usage
+      sys.exit(1)
+    elif o in ('-g', '--gui'):
+      with_gui=1
+    elif o in ('-l', '--logger'):
+      with_logger=1
+    elif o in ('-x', '--xterm'):
+      with_xterm=1
+    elif o in ('-m', '--modules'):
+      liste_modules = [x.upper() for x in a.split(',')]
+    elif o in ('-c', '--containers'):
+      liste_containers = [x.lower() for x in a.split(',')]
+      for r in liste_containers:
+        if r not in ('cpp', 'python', 'superv'):
+          message(1, 'Invalid -c/--containers option: %s' % a)
+      if 'cpp' in liste_containers:
+          with_container_cpp=1
+      else:
+          with_container_cpp=0
+      if 'python' in liste_containers:
+          with_container_python=1
+      else:
+          with_container_python=0
+      if 'superv' in liste_containers:
+          with_container_superv=1
+      else:
+          with_container_superv=0
+    elif o in ('-k', '--killall'):
+      filedict='/tmp/'+os.getenv('USER')+'_SALOME_pidict'
+      #filedict='/tmp/'+os.getlogin()+'_SALOME_pidict'
+      found = 0
+      try:
+         fpid=open(filedict, 'r')
+        found = 1
+      except:
+         print "le fichier %s des process SALOME n'est pas accessible"% filedict
+
+      if found:
+         process_id=pickle.load(fpid)
+         fpid.close()
+         killSalome()
+        process_id={}
+         os.remove(filedict)
+       
+except getopt.error, msg:
+  print usage
+  sys.exit(1)
+
+# -----------------------------------------------------------------------------
+#
+# Vérification des variables d'environnement
+#
+try:
+  kernel_root_dir=os.environ["KERNEL_ROOT_DIR"]
+  modules_root_dir["KERNEL"]=kernel_root_dir
+except:
+  print usage
+  sys.exit(1)
+
+for module in liste_modules :
+   try:
+      module=module.upper()
+      module_root_dir=os.environ[module +"_ROOT_DIR"]
+      modules_root_dir[module]=module_root_dir
+   except:
+      print usage
+      sys.exit(1)
+
+# il faut KERNEL en premier dans la liste des modules
+# - l'ordre des modules dans le catalogue sera identique
+# - la liste des modules presents dans le catalogue est exploitée pour charger les modules CORBA python,
+#   il faut charger les modules python du KERNEL en premier
+
+if "KERNEL" in liste_modules:liste_modules.remove("KERNEL")
+liste_modules[:0]=["KERNEL"]
+#print liste_modules
+#print modules_root_dir
+
+os.environ["SALOMEPATH"]=":".join(modules_root_dir.values())
+if "SUPERV" in liste_modules:with_container_superv=1
+
+
+# -----------------------------------------------------------------------------
+#
+# Définition des classes d'objets pour le lancement des Server CORBA
+#
+
+class Server:
+   CMD=[]
+   if with_xterm:
+       ARGS=['xterm', '-iconic', '-sb', '-sl', '500', '-e']
+   else:
+       ARGS=[] 
+
+   def run(self):
+      args = self.ARGS+self.CMD
+      #print "args = ", args
+      pid = os.spawnvp(os.P_NOWAIT, args[0], args)
+      process_id[pid]=self.CMD
+
+class CatalogServer(Server):
+   SCMD1=['SALOME_ModuleCatalog_Server','-common']
+   SCMD2=['-personal','${HOME}/Salome/resources/CatalogModulePersonnel.xml'] 
+
+   def setpath(self,liste_modules):
+      cata_path=[]
+      for module in liste_modules:
+          module_root_dir=modules_root_dir[module]
+          module_cata=module+"Catalog.xml"
+          print "   ", module_cata
+          cata_path.extend(glob.glob(os.path.join(module_root_dir,"share","salome","resources",module_cata)))
+      self.CMD=self.SCMD1 + [string.join(cata_path,':')] + self.SCMD2
+
+class SalomeDSServer(Server):
+   CMD=['SALOMEDS_Server']
+
+class RegistryServer(Server):
+   CMD=['SALOME_Registry_Server', '--salome_session','theSession']
+
+class ContainerCPPServer(Server):
+   CMD=['SALOME_Container','FactoryServer','-ORBInitRef','NameService=corbaname::localhost']
+
+class ContainerPYServer(Server):
+   CMD=['SALOME_ContainerPy.py','FactoryServerPy','-ORBInitRef','NameService=corbaname::localhost']
+
+class ContainerSUPERVServer(Server):
+   CMD=['SALOME_Container','SuperVisionContainer','-ORBInitRef','NameService=corbaname::localhost']
+
+class LoggerServer(Server):
+   CMD=['SALOME_Logger_Server', 'logger.log']
+
+class SessionLoader(Server):
+   CMD=['SALOME_Session_Loader']
+   if with_container_cpp:
+       CMD=CMD+['CPP']
+   if with_container_python:
+       CMD=CMD+['PY']
+   if with_container_superv:
+       CMD=CMD+['SUPERV']
+   if with_gui:
+       CMD=CMD+['GUI']
+
+class SessionServer(Server):
+   CMD=['SALOME_Session_Server']
+
+class NotifyServer(Server):
+   CMD=['notifd','-c','${KERNEL_ROOT_DIR}/share/salome/resources/channel.cfg -DFactoryIORFileName=/tmp/${LOGNAME}_rdifact.ior -DChannelIORFileName=/tmp/${LOGNAME}_rdichan.ior']
+
+# -----------------------------------------------------------------------------
+#
+# Fonction de test
+#
+
+def test(clt):
+   # create an LifeCycleCORBA instance
+   import LifeCycleCORBA 
+   lcc = LifeCycleCORBA.LifeCycleCORBA(clt.orb)
+   med = lcc.FindOrLoadComponent("FactoryServer", "MED")
+   #pycalc = lcc.FindOrLoadComponent("FactoryServerPy", "CalculatorPy")
+
+# -----------------------------------------------------------------------------
+#
+# Fonctions helper pour ajouter des variables d'environnement
+#
+
+def add_path(directory):
+   os.environ["PATH"]=directory + ":" + os.environ["PATH"]
+
+def add_ld_library_path(directory):
+   os.environ["LD_LIBRARY_PATH"]=directory + ":" + os.environ["LD_LIBRARY_PATH"]
+
+def add_python_path(directory):
+   os.environ["PYTHONPATH"]=directory + ":" + os.environ["PYTHONPATH"]
+   sys.path[:0]=[directory]
+
+# -----------------------------------------------------------------------------
+#
+# initialisation des variables d'environnement
+#
+
+python_version="python%d.%d" % sys.version_info[0:2]
+
+#
+# Ajout du chemin d'acces aux executables de KERNEL dans le PATH
+#
+
+add_path(os.path.join(kernel_root_dir,"bin","salome"))
+#print "PATH=",os.environ["PATH"]
+
+#
+# Ajout des modules dans le LD_LIBRARY_PATH
+#
+for module in liste_modules:
+    module_root_dir=modules_root_dir[module]
+    add_ld_library_path(os.path.join(module_root_dir,"lib","salome"))
+
+os.environ["SALOME_trace"]="local"
+if with_logger:
+   os.environ["SALOME_trace"]="with_logger"
+   locdir=os.environ['PWD']
+   libtracedir=os.path.join(locdir,"libSalomeTrace")
+   libtrace = os.path.join(kernel_root_dir,"lib","salome","libSALOMELoggerClient.so.0.0.0")
+   libtraceln = os.path.join(libtracedir,"libSALOMELocalTrace.so")
+   aCommand = 'rm -rf ' + libtracedir + "; "
+   aCommand += 'mkdir ' + libtracedir + "; "
+   aCommand += 'ln -s ' + libtrace + " " + libtraceln + "; "
+   aCommand += 'ln -s ' + libtrace + " " + libtraceln + ".0; "
+   aCommand += 'ln -s ' + libtrace + " " + libtraceln + ".0.0.0; "
+   os.system(aCommand)
+   add_ld_library_path(libtracedir)
+   
+#print "LD_LIBRARY_PATH=",os.environ["LD_LIBRARY_PATH"]
+
+#
+# Ajout des modules dans le PYTHONPATH (KERNEL prioritaire, donc en dernier)
+#
+
+liste_modules_reverse=liste_modules[:]
+liste_modules_reverse.reverse()
+#print liste_modules
+#print liste_modules_reverse
+for module in liste_modules_reverse:
+    module_root_dir=modules_root_dir[module]
+    add_python_path(os.path.join(module_root_dir,"bin","salome"))
+    add_python_path(os.path.join(module_root_dir,"lib",python_version,"site-packages","salome"))
+    add_python_path(os.path.join(module_root_dir,"lib","salome"))
+    add_python_path(os.path.join(module_root_dir,"lib",python_version,"site-packages","salome","shared_modules"))
+
+#print "PYTHONPATH=",sys.path
+
+import orbmodule
+
+#
+# -----------------------------------------------------------------------------
+#
+
+def startGUI():
+  import SALOME
+  session=clt.waitNS("/Kernel/Session",SALOME.Session)
+
+  #
+  # Activation du GUI de Session Server
+  #
+       
+  session.GetInterface()
+  
+#
+# -----------------------------------------------------------------------------
+#
+
+def startSalome():
+
+  #
+  # Lancement Session Loader
+  #
+
+  if with_gui:
+     SessionLoader().run()
+
+  #
+  # Initialisation ORB et Naming Service
+  #
+   
+  clt=orbmodule.client()
+
+  # (non obligatoire) Lancement Logger Server et attente de sa disponibilite dans le naming service
+  #
+
+  if with_logger:
+       LoggerServer().run()
+       clt.waitLogger("Logger")
+
+
+  #
+  # Lancement Registry Server
+  #
+
+  RegistryServer().run()
+
+  #
+  # Attente de la disponibilité du Registry dans le Naming Service
+  #
+
+  clt.waitNS("/Registry")
+
+  #
+  # Lancement Catalog Server
+  #
+
+  cataServer=CatalogServer()
+  cataServer.setpath(liste_modules)
+  cataServer.run()
+
+  #
+  # Attente de la disponibilité du Catalog Server dans le Naming Service
+  #
+
+  import SALOME_ModuleCatalog
+  clt.waitNS("/Kernel/ModulCatalog",SALOME_ModuleCatalog.ModuleCatalog)
+
+  #
+  # Lancement SalomeDS Server
+  #
+
+  os.environ["CSF_PluginDefaults"]=os.path.join(kernel_root_dir,"share","salome","resources")
+  os.environ["CSF_SALOMEDS_ResourcesDefaults"]=os.path.join(kernel_root_dir,"share","salome","resources")
+  SalomeDSServer().run()
+
+  if "GEOM" in liste_modules:
+       print "GEOM OCAF Resources"
+       os.environ["CSF_GEOMDS_ResourcesDefaults"]=os.path.join(modules_root_dir["GEOM"],"share","salome","resources")
+
+
+  #
+  # Attente de la disponibilité du SalomeDS dans le Naming Service
+  #
+
+  clt.waitNS("/myStudyManager")
+
+  #
+  # Lancement Session Server
+  #
+
+  SessionServer().run()
+
+  #
+  # Attente de la disponibilité du Session Server dans le Naming Service
+  #
+
+  import SALOME
+  session=clt.waitNS("/Kernel/Session",SALOME.Session)
+
+
+  theComputer = os.getenv("HOSTNAME")
+  computerSplitName = theComputer.split('.')
+  theComputer = computerSplitName[0]
+  
+  #
+  # Lancement Container C++ local
+  #
+  if with_container_cpp:
+         ContainerCPPServer().run()
+
+         #
+         # Attente de la disponibilité du Container C++ local dans le Naming Service
+         #
+
+         clt.waitNS("/Containers/" + theComputer + "/FactoryServer")
+
+  #
+  # Lancement Container Python local
+  #
+
+  if with_container_python:
+         ContainerPYServer().run()
+
+         #
+         # Attente de la disponibilité du Container Python local dans le Naming Service
+         #
+       
+         clt.waitNS("/Containers/" + theComputer + "/FactoryServerPy")
+
+  if with_container_superv:
+
+       #
+       # Lancement Container Supervision local
+       #
+
+       ContainerSUPERVServer().run()
+
+       #
+       # Attente de la disponibilité du Container Supervision local dans le Naming Service
+       #
+
+       clt.waitNS("/Containers/" + theComputer + "/SuperVisionContainer")
+
+
+  #
+  # Activation du GUI de Session Server
+  #
+       
+  #session.GetInterface()
+
+  end_time = os.times()
+  print
+  print "Start SALOME, elpased time : %5.1f seconds"% (end_time[4] - init_time[4])
+
+  return clt
+
+#
+# -----------------------------------------------------------------------------
+#
+
+if __name__ == "__main__":
+   clt=None
+   try:
+      clt = startSalome()
+   except:
+      print
+      print
+      print "--- erreur au lancement Salome ---"
+   
+   #print process_id
+   
+   
+   filedict='/tmp/'+os.getenv('USER')+'_SALOME_pidict'
+   #filedict='/tmp/'+os.getlogin()+'_SALOME_pidict'
+   
+   fpid=open(filedict, 'w')
+   pickle.dump(process_id,fpid)
+   fpid.close()
+   
+   print
+   print "Sauvegarde du dictionnaire des process dans ", filedict
+   print "Pour tuer les process SALOME, executer : python killSalome.py depuis"
+   print "une console, ou bien killSalome() depuis le present interpreteur,"
+   print "s'il n'est pas fermé."
+   print
+   print "runSalome, avec l'option --killall, commence par tuer les process restants d'une execution précédente."
+   print
+   print "Pour lancer uniquement le GUI, executer startGUI() depuis le present interpreteur,"
+   print "s'il n'est pas fermé."
+   
+   #
+   #  Impression arborescence Naming Service
+   #
+   
+   if clt != None:
+     print
+     print " --- registered objects tree in Naming Service ---"
+     clt.showNS()
+   
index 259f89c54e148ec21766c3ff9facb17d5d904ae0..0cf5fc380ad1cb9c6ef1809fefdc8e7d658e694f 100755 (executable)
@@ -89,6 +89,11 @@ then
 fi
 chmod u-w configure.in.base 
 
+#############################################
+echo '' >> configure.in_tmp1
+echo 'export TEMPO=${KERNEL_ROOT_DIR}' >> configure.in_tmp1
+echo 'export KERNEL_ROOT_DIR=${ROOT_SRCDIR}' >> configure.in_tmp1
+#############################################
 
 echo  "" >> configure.in_tmp1
 echo "AC_OUTPUT([ \\" >> configure.in_tmp1
@@ -99,24 +104,30 @@ echo "AC_OUTPUT([ \\" >> configure.in_tmp1
 # put them "manually"
 #
 
-echo " ./adm/unix/SALOMEconfig.h \\" >> configure.in_tmp1
-echo " ./adm/unix/F77config.h \\" >> configure.in_tmp1
-echo " ./adm/unix/sstream \\" >> configure.in_tmp1
-echo " ./adm/unix/depend \\" >> configure.in_tmp1
-echo " ./adm/unix/make_omniorb \\" >> configure.in_tmp1
-echo " ./adm/unix/envScript \\" >> configure.in_tmp1
-echo " ./adm/unix/make_commence \\" >> configure.in_tmp1
-echo " ./adm/unix/make_conclude \\" >> configure.in_tmp1
-echo " ./adm/unix/make_module \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/SALOMEconfig.h \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/F77config.h \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/sstream \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/depend \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/make_omniorb \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/envScript \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/make_commence \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/make_conclude \\" >> configure.in_tmp1
+echo " ./salome_adm/unix/make_module \\" >> configure.in_tmp1
+echo "  ./salome_adm/Makefile \\" >> configure.in_tmp1
 
 \rm -f configure.in_tmp2 configure.in_tmp3
 touch configure.in_tmp2
 find_in . configure.in_tmp2
-sed '/^...adm/d' configure.in_tmp2 >  configure.in_tmp3
+sed '/^...salome_adm/d' configure.in_tmp2 >  configure.in_tmp3
 sed '/configure.in/d' configure.in_tmp3 >  configure.in_tmp2
 sed 's/.in / /' configure.in_tmp2 >> configure.in_tmp1
 
 echo  "])" >> configure.in_tmp1
+
+#############################################
+echo 'export KERNEL_ROOT_DIR=${TEMPO}' >> configure.in_tmp1
+#############################################
+
 \mv configure.in_tmp1 configure.in_new
 \rm  -f configure.in_tmp2 configure.in_tmp3
 
@@ -172,7 +183,7 @@ else
        echo -n "Creating 'configure' script ...  "
 fi
 
-aclocal --acdir=adm/unix/config_files
+aclocal --acdir=adm_local/unix/config_files -I salome_adm/unix/config_files
 if autoconf
 then
        echo "done"
index 6d9d8bfe1ce6a72360efce026b90570dda8f60f4..c76d5a728f8fe83807e6c05214ebc318e27e365b 100644 (file)
@@ -15,8 +15,8 @@
 # Created from configure.in.base
 #
 
-AC_INIT(SALOME)
-AC_CONFIG_AUX_DIR(adm/unix/config_files)
+AC_INIT(src)
+AC_CONFIG_AUX_DIR(salome_adm/unix/config_files)
 AC_CANONICAL_HOST
 
 PACKAGE=salome
@@ -37,6 +37,10 @@ cd $ROOT_BUILDDIR
 
 AC_SUBST(ROOT_SRCDIR)
 AC_SUBST(ROOT_BUILDDIR)
+dnl ##########################################################
+AC_SUBST(KERNEL_ROOT_DIR)
+dnl ##########################################################
+
 
 echo
 echo Source root directory : $ROOT_SRCDIR
@@ -82,7 +86,7 @@ dnl Fix up the INSTALL macro if it s a relative path. We want the
 dnl full-path to the binary instead.
 case "$INSTALL" in
    *install-sh*)
-      INSTALL='\${top_srcdir}'/adm/unix/config_files/install-sh
+      INSTALL='\${top_srcdir}'/salome_adm/unix/config_files/install-sh
       ;;
 esac
 
@@ -191,7 +195,7 @@ CHECK_CORBA
 
 AC_SUBST_FILE(CORBA)
 corba=make_$ORB
-CORBA=adm/unix/$corba
+CORBA=salome_adm/unix/$corba
 
 echo
 echo ---------------------------------------------
@@ -294,12 +298,12 @@ echo
 
 dnl generals files which could be included in every makefile
 
-AC_SUBST_FILE(COMMENCE) COMMENCE=adm/unix/make_commence
-AC_SUBST_FILE(CONCLUDE) CONCLUDE=adm/unix/make_conclude
-AC_SUBST_FILE(MODULE) MODULE=adm/unix/make_module
+AC_SUBST_FILE(COMMENCE) COMMENCE=salome_adm/unix/make_commence
+AC_SUBST_FILE(CONCLUDE) CONCLUDE=salome_adm/unix/make_conclude
+AC_SUBST_FILE(MODULE) MODULE=salome_adm/unix/make_module
 
 dnl les dependences
-AC_SUBST_FILE(DEPEND) DEPEND=adm/unix/depend
+AC_SUBST_FILE(DEPEND) DEPEND=salome_adm/unix/depend
 
 dnl We don t need to say when we re entering directories if we re using
 dnl GNU make becuase make does it for us.
@@ -310,7 +314,7 @@ else
 fi
 
 # make other build directories
-for rep in adm bin include lib share/salome/resources share/salome/idl
+for rep in salome_adm adm_local doc bin/salome include/salome lib/salome share/salome/resources share/salome/doc idl
 do
 #   if test ! -d $rep ; then
 #      eval mkdir $rep
@@ -355,7 +359,7 @@ do
 done
 cd $ROOT_BUILDDIR
 
-AC_SUBST_FILE(ENVSCRIPT) ENVSCRIPT=adm/unix/envScript
+AC_SUBST_FILE(ENVSCRIPT) ENVSCRIPT=salome_adm/unix/envScript
 
 dnl copy xml files to the build tree (lib directory)
 dnl pourquoi ????
diff --git a/doc/DevelopersGuide.pdf b/doc/DevelopersGuide.pdf
new file mode 100644 (file)
index 0000000..67b6747
Binary files /dev/null and b/doc/DevelopersGuide.pdf differ
diff --git a/doc/DevelopersGuide.ps b/doc/DevelopersGuide.ps
new file mode 100644 (file)
index 0000000..e8508e5
--- /dev/null
@@ -0,0 +1,7207 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
+%%Title: DevelopersGuide.dvi
+%%Pages: 20
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%DocumentFonts: Times-Roman Helvetica-Bold Times-Bold Courier
+%%+ Times-Italic
+%%DocumentPaperSizes: a4
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips DevelopersGuide.dvi -o DevelopersGuide.ps
+%DVIPSParameters: dpi=600, compressed
+%DVIPSSource:  TeX output 2002.07.01:0900
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: 8r.enc
+% @@psencodingfile@{
+%   author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry",
+%   version = "0.6",
+%   date = "1 July 1998",
+%   filename = "8r.enc",
+%   email = "tex-fonts@@tug.org",
+%   docstring = "Encoding for TrueType or Type 1 fonts
+%                to be used with TeX."
+% @}
+% 
+% Idea is to have all the characters normally included in Type 1 fonts
+% available for typesetting. This is effectively the characters in Adobe
+% Standard Encoding + ISO Latin 1 + extra characters from Lucida.
+% 
+% Character code assignments were made as follows:
+% 
+% (1) the Windows ANSI characters are almost all in their Windows ANSI
+% positions, because some Windows users cannot easily reencode the
+% fonts, and it makes no difference on other systems. The only Windows
+% ANSI characters not available are those that make no sense for
+% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
+% (173). quotesingle and grave are moved just because it's such an
+% irritation not having them in TeX positions.
+% 
+% (2) Remaining characters are assigned arbitrarily to the lower part
+% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
+% 
+% (3) Y&Y Lucida Bright includes some extra text characters; in the
+% hopes that other PostScript fonts, perhaps created for public
+% consumption, will include them, they are included starting at 0x12.
+% 
+% (4) Remaining positions left undefined are for use in (hopefully)
+% upward-compatible revisions, if someday more characters are generally
+% available.
+% 
+% (5) hyphen appears twice for compatibility with both 
+% ASCII and Windows.
+% 
+/TeXBase1Encoding [
+% 0x00 (encoded characters from Adobe Standard not in Windows 3.1)
+  /.notdef /dotaccent /fi /fl
+  /fraction /hungarumlaut /Lslash /lslash
+  /ogonek /ring /.notdef
+  /breve /minus /.notdef 
+% These are the only two remaining unencoded characters, so may as
+% well include them.
+  /Zcaron /zcaron 
+% 0x10
+ /caron /dotlessi 
+% (unusual TeX characters available in, e.g., Lucida Bright)
+ /dotlessj /ff /ffi /ffl 
+ /.notdef /.notdef /.notdef /.notdef
+ /.notdef /.notdef /.notdef /.notdef
+ % very contentious; it's so painful not having quoteleft and quoteright
+ % at 96 and 145 that we move the things normally found there to here.
+ /grave /quotesingle 
+% 0x20 (ASCII begins)
+ /space /exclam /quotedbl /numbersign
+ /dollar /percent /ampersand /quoteright
+ /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+% 0x30
+ /zero /one /two /three /four /five /six /seven
+ /eight /nine /colon /semicolon /less /equal /greater /question
+% 0x40
+ /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
+% 0x50
+ /P /Q /R /S /T /U /V /W
+ /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
+% 0x60
+ /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
+% 0x70
+ /p /q /r /s /t /u /v /w
+ /x /y /z /braceleft /bar /braceright /asciitilde
+ /.notdef % rubout; ASCII ends
+% 0x80
+ /.notdef /.notdef /quotesinglbase /florin
+ /quotedblbase /ellipsis /dagger /daggerdbl
+ /circumflex /perthousand /Scaron /guilsinglleft
+ /OE /.notdef /.notdef /.notdef
+% 0x90
+ /.notdef /.notdef /.notdef /quotedblleft
+ /quotedblright /bullet /endash /emdash
+ /tilde /trademark /scaron /guilsinglright
+ /oe /.notdef /.notdef /Ydieresis
+% 0xA0
+ /.notdef % nobreakspace
+ /exclamdown /cent /sterling
+ /currency /yen /brokenbar /section
+ /dieresis /copyright /ordfeminine /guillemotleft
+ /logicalnot
+ /hyphen % Y&Y (also at 45); Windows' softhyphen
+ /registered
+ /macron
+% 0xD0
+ /degree /plusminus /twosuperior /threesuperior
+ /acute /mu /paragraph /periodcentered
+ /cedilla /onesuperior /ordmasculine /guillemotright
+ /onequarter /onehalf /threequarters /questiondown
+% 0xC0
+ /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
+ /Egrave /Eacute /Ecircumflex /Edieresis
+ /Igrave /Iacute /Icircumflex /Idieresis
+% 0xD0
+ /Eth /Ntilde /Ograve /Oacute
+ /Ocircumflex /Otilde /Odieresis /multiply
+ /Oslash /Ugrave /Uacute /Ucircumflex
+ /Udieresis /Yacute /Thorn /germandbls
+% 0xE0
+ /agrave /aacute /acircumflex /atilde
+ /adieresis /aring /ae /ccedilla
+ /egrave /eacute /ecircumflex /edieresis
+ /igrave /iacute /icircumflex /idieresis
+% 0xF0
+ /eth /ntilde /ograve /oacute
+ /ocircumflex /otilde /odieresis /divide
+ /oslash /ugrave /uacute /ucircumflex
+ /udieresis /yacute /thorn /ydieresis
+] def
+
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
+exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub
+dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
+ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict
+end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{
+dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1
+roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def
+dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}
+if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}
+def end
+
+%%EndProcSet
+%%BeginProcSet: special.pro
+%!
+TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
+/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
+/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
+/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
+/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
+X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
+/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
+/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
+{userdict/md get type/dicttype eq{userdict begin md length 10 add md
+maxlength ge{/md md dup length 20 add dict copy def}if end md begin
+/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
+atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
+itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
+transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
+curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
+pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
+if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
+-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
+get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
+yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
+neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
+noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
+90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
+neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
+1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
+2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
+-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
+TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
+Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
+}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
+save N userdict maxlength dict begin/magscale true def normalscale
+currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
+/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
+psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
+psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
+TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{
+psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
+roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
+moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict
+begin/SpecialSave save N gsave normalscale currentpoint TR
+@SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{
+CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
+closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
+sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
+}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
+CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
+lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N
+/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end}
+repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N
+/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX
+currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY
+moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X
+/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0
+1 startangle endangle arc savematrix setmatrix}N end
+
+%%EndProcSet
+%%BeginProcSet: color.pro
+%!
+TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop
+setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll
+}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def
+/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{
+setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{
+/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch
+known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC
+/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC
+/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0
+setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0
+setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61
+0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC
+/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0
+setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87
+0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{
+0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{
+0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC
+/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0
+setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0
+setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90
+0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC
+/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0
+setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0
+0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{
+0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{
+0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC
+/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0
+setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC
+/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0
+0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1
+0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11
+0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0
+setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0
+0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC
+/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0
+setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0
+0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0
+1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC
+/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0
+setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{
+0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor}
+DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70
+setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0
+setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1
+setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end
+
+%%EndProcSet
+TeXDict begin 39158280 55380996 1000 600 600 (DevelopersGuide.dvi)
+@start /Fa 188[60 23[60 43[{TeXBase1Encoding ReEncodeFont}2
+99.6264 /Courier rf /Fb 139[72 72 4[72 72 72 72 1[72
+2[72 72 3[72 19[72 30[72 46[{TeXBase1Encoding ReEncodeFont}12
+119.552 /Courier rf
+%DVIPSBitmapFont: Fc cmsy10 10.95 1
+/Fc 1 16 df<EB0FFCEB3FFF90B512C0000314F04880488048804880A2481580A3B712C0
+AA6C1580A36C1500A26C5C6C5C6C5C6C5CC614C0013F90C7FCEB0FFC22227BA72D>15
+D E
+%EndDVIPSBitmapFont
+/Fd 134[40 2[40 45 25 35 35 1[45 45 45 1[25 40 1[25 45
+2[40 45 40 45 45 10[56 1[51 2[66 1[66 2[51 61 2[66 66
+56 1[66 61 13[45 11[30 30 40[{TeXBase1Encoding ReEncodeFont}32
+90.9091 /Times-Italic rf /Fe 134[50 1[72 1[55 33 39 44
+1[55 50 55 83 28 55 1[28 55 50 33 44 55 44 1[50 11[72
+4[61 6[39 4[72 72 13[50 50 50 50 50 2[25 43[55 2[{
+TeXBase1Encoding ReEncodeFont}32 99.6264 /Times-Bold
+rf /Ff 130[55 1[55 1[55 55 55 55 55 55 55 55 55 55 55
+55 55 55 55 1[55 55 55 55 55 55 55 55 55 1[55 2[55 2[55
+55 1[55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
+55 55 55 55 55 55 55 1[55 55 55 1[55 4[55 1[55 55 55
+1[55 55 55 55 55 1[55 55 55 2[55 55 55 34[{
+TeXBase1Encoding ReEncodeFont}72 90.9091 /Courier rf
+/Fg 135[42 1[42 42 23 32 28 1[42 42 42 65 23 2[23 42
+42 28 37 42 37 42 37 12[51 46 3[60 1[74 51 6[51 3[60
+18[21 1[21 41[46 2[{TeXBase1Encoding ReEncodeFont}30
+83.022 /Times-Roman rf /Fh 139[28 32 37 14[37 46 42 31[60
+65[{TeXBase1Encoding ReEncodeFont}7 83.022 /Times-Bold
+rf /Fi 134[45 45 66 45 51 30 35 40 1[51 45 51 76 25 2[25
+51 45 30 40 51 40 51 45 7[66 1[91 66 2[51 2[56 71 1[86
+61 2[35 3[61 66 66 1[66 6[30 45 45 45 45 45 45 45 45
+45 45 2[30 3[30 30 30 5[30 30[51 2[{TeXBase1Encoding ReEncodeFont}52
+90.9091 /Times-Bold rf /Fj 134[60 1[86 60 66 40 47 53
+1[66 60 66 100 33 2[33 66 60 40 53 66 53 66 60 9[120
+3[66 2[73 93 1[113 80 2[47 3[80 86 86 1[86 7[60 60 60
+60 60 60 60 60 60 60 8[40 36[66 2[{TeXBase1Encoding ReEncodeFont}44
+119.552 /Times-Bold rf /Fk 139[28 1[33 2[50 50 78 28
+50 28 28 50 3[50 44 50 44 12[61 3[55 2[89 5[72 1[61 1[66
+1[72 18[25 46[{TeXBase1Encoding ReEncodeFont}22 99.6264
+/Times-Roman rf /Fl 140[56 48 2[72 72 4[40 3[64 14[104
+34[72 2[72 1[36 46[{TeXBase1Encoding ReEncodeFont}10
+143.462 /Times-Roman rf /Fm 134[96 2[96 105 57 96 67
+2[105 105 153 48 2[48 105 105 1[96 105 96 105 96 11[124
+1[115 3[134 1[143 105 6[115 3[124 62[105 2[{
+TeXBase1Encoding ReEncodeFont}26 172.188 /Helvetica-Bold
+rf /Fn 107[40 40 24[40 45 45 66 45 45 25 35 30 45 45
+45 45 71 25 45 25 25 45 45 30 40 45 40 45 40 7[66 66
+86 66 66 56 51 61 66 51 66 66 81 56 66 1[30 66 66 51
+56 66 61 61 66 84 4[25 25 45 45 45 45 45 45 45 45 45
+45 25 23 30 23 51 1[30 30 30 5[30 29[51 51 2[{
+TeXBase1Encoding ReEncodeFont}76 90.9091 /Times-Roman
+rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%BeginPaperSize: a4
+a4
+%%EndPaperSize
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop Black Black 1 TeXcolorgray 0 50 a Fn(.)p Black
+Black Black Black 510 3175 a @beginspecial 131 @llx 321
+@lly 481 @urx 471 @ury 3367 @rwi 1448 @rhi @setspecial
+%%BeginDocument: ../../../SALOME_ROOT/doc/DevelopersGuide/SALOME.ps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: /home/tajchman/superv/GRAPHIQUES/SALOME.ps
+%%Creator: XV Version 3.10a  Rev: 12/29/94 (PNG patch 1.2)  -  by John Bradley
+%%BoundingBox: 131 321 481 471
+%%Pages: 1
+%%DocumentFonts:
+%%EndComments
+%%EndProlog
+
+%%Page: 1 1
+
+% remember original state
+/origstate save def
+
+% build a temporary dictionary
+20 dict begin
+
+% define string to hold a scanline's worth of data
+/pix 1050 string def
+
+% define space for color conversions
+/grays 350 string def  % space for gray scale line
+/npixls 0 def
+/rgbindx 0 def
+
+% lower left corner
+131 321 translate
+
+% size of image (on paper, in 1/72inch coords)
+349.99200 149.97600 scale
+
+% define 'colorimage' if it isn't defined
+%   ('colortogray' and 'mergeprocs' come from xwd2ps
+%     via xgrab)
+/colorimage where   % do we know about 'colorimage'?
+  { pop }           % yes: pop off the 'dict' returned
+  {                 % no:  define one
+    /colortogray {  % define an RGB->I function
+      /rgbdata exch store    % call input 'rgbdata'
+      rgbdata length 3 idiv
+      /npixls exch store
+      /rgbindx 0 store
+      0 1 npixls 1 sub {
+        grays exch
+        rgbdata rgbindx       get 20 mul    % Red
+        rgbdata rgbindx 1 add get 32 mul    % Green
+        rgbdata rgbindx 2 add get 12 mul    % Blue
+        add add 64 idiv      % I = .5G + .31R + .18B
+        put
+        /rgbindx rgbindx 3 add store
+      } for
+      grays 0 npixls getinterval
+    } bind def
+
+    % Utility procedure for colorimage operator.
+    % This procedure takes two procedures off the
+    % stack and merges them into a single procedure.
+
+    /mergeprocs { % def
+      dup length
+      3 -1 roll
+      dup
+      length
+      dup
+      5 1 roll
+      3 -1 roll
+      add
+      array cvx
+      dup
+      3 -1 roll
+      0 exch
+      putinterval
+      dup
+      4 2 roll
+      putinterval
+    } bind def
+
+    /colorimage { % def
+      pop pop     % remove 'false 3' operands
+      {colortogray} mergeprocs
+      image
+    } bind def
+  } ifelse          % end of 'false' case
+
+
+
+350 150 8                      % dimensions of data
+[350 0 0 -150 0 150]           % mapping matrix
+{currentfile pix readhexstring pop}
+false 3 colorimage
+
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfd
+fefdfdfefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefdfefefefefefefefefefefefefe
+fffefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefeffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefefefefefefefefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefdfefefdfefefdfefefdfe
+fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefefefefefefefefefefefefefdfd
+fefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfd
+fefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfd
+fefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefdfefdfdfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefdfdfdfdfdfdfefdfefdfdfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefdfefdfdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefeffffffffffffffffff
+fefefefefefefdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefefefeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefeffffffffffffffffffffffffffffffffffff
+fffffffefefefefefefefefefefefefefdfdfefdfdfefdfdfefdfdfefdfdfdfdfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffefefefefefefefefefefefeffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefe
+fefefefefefefefefefefefefefefefefefeffffffffffffffffffffffffffffffffffff
+fefefefefefefefefefdfefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfd
+fdfdfdfdfcfcfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffefefefefefefefefefefefefefefefefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefe
+fefefefefefefefefefefefefefefefefefefffffffffffffffffffefefefefefefefefe
+fefefefefefefcfcfcfdfdfdfdfdfdfdfefefdfcfcfdfdfdfcfdfdfcfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfcfdf4f6fbeef1f8
+e9edf6e5eaf4e4eaf4e2e8f4e0e7f2e3e9f4e4eaf4e5ebf5eaeef6eff2f9f9fafcfefeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefffffffffffffefefffafafdfdfefeffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefefefefefefefefefefefefefefefeffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefefefefefefefefefefefefefefe
+fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffefefff8f9fceff2f9e8ecf5e3e9f3dfe6f2
+dfe6f1dfe6f1e0e7f2e4eaf3e8ecf5eff1f7f8f9fbfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfafafbf7f8faf6f7fa
+fbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfd
+fdfdfdfefefefefefefefefefefefefefefefffffffffefefefdfcfdfdfcfdfcfbfcfcfb
+fcfcfbfdfdfcfcfcfbfcfcfbfcfcfcfcfcfbfcfcfbfcfcfbfdfdfdfdfdfdfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfcfcfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffbfcfeecf0f8dbe3f1cad9eaadc6e08faed4779bca
+668dc35481bc5280bb4a79b84172b44c7bb95280bb5783bd678fc47fa1cea3bfdcc8d7e9
+dde4f2f2f5fafefeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefefefefefefefffffffffffffffffffffffffffffffbfcfdf1f3f9
+e7ecf5dee5f2d7dfefccdaebbbd1e5a7c1dec6d5e8ffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe
+fffffffffffffffffffffffffffffffffffff0f3f9dde4f1dae2f0dae2f0dae2f0dae2f0
+dae2f0dae2f0dae2f0dae2f0eaeef6fbfbfdfefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffdfdfeeff2f9dae2f0c4d5e8a1bcdb7c9fcc628cc2517fba4172b3
+3f71b33f71b34476b55582bc668fc382a4cea7c1ddc7d6e8dbe2efeff2f7fbfbfbfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf4f5f9dde3f0c8d7e8b3cae1a5bfdca4bfdb
+b6cde2c8d7e8d9e1eef0f3f8fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefdfdfdfdfcfcfcfcfb
+fcfcfbfcfcfbfcfcfbfcfcfbfcfcfbfcfcfbfcfcfcfdfdfdf7f8fae1e7f2d7dfedd7dfed
+d7dfedd7dfedd7dfeddce2eff4f6f9fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfbfcfceef0f7dee4f0d8e0eed7dfedd7dfedd7dfedd7dfedd7dfedd7dfed
+d7e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0ee
+d8e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0eedce3f0f9f9fbfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffff8f9fcd6dfefaec5df7aa0cc4d7eba2165a90459a000579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e01589f2366aa
+5282bc8aadd3c8d5eaf8fafcffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefefefefefefefefefefffffffffffffffffff1f4f9b9cbe487aad1
+6f97c75886be4376b52667ab0659a000579e2769abe9eef7ffffffffffffffffffffffff
+fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefeffffffffffffffffffffffff99b5d85281bc4a7cb84a7cb84a7cb84a7cb8
+4a7cb84a7cb84a7cb84d7db989a6d1e4e9f4fefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffbfcfde0e6f3b9cbe481a6cf4c7db91a62a701589f00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e02589f2266a95483bb88abd1bdcde4e1e7f2
+fafafbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfceff2f7aabfdc5885bd2265aa0459a000579e00579e
+02589f2366a94e7fba8daed2dae1effcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfb
+fcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfcfcfcfdfdfdfdfdfdfefefefefefefefefdfdfdfc
+fcfcfbfcfcfbfcfcfbfcfcfbfcfcfbfcfcfbfdfdfdf5f7fabacae3638ec2497bb7497bb7
+497bb7497bb7497bb75583bbb9c8e1f8f8fafcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfafafbd4deec8baad15a87bf4b7cb8497bb7497bb7497bb7497bb7497bb7497bb7
+497bb7497bb7497bb7497bb7497bb7497bb7497bb7497bb7497bb7497bb7497bb7497bb7
+497bb7497bb7497bb7497bb7497bb7497bb7497bb75383bce0e6f2fdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fefefefefefefefefefffffffefefefefdfefefdfefdfdfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd5deef95b4d64e82bb1861a600579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e01589f3a74b3c5d2e8ffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefefefefefefefefefefefefefffffffcfcfebed0e62c6dae00579e
+00579e00579e00579e00579e00579e00579e03599f9db2d9ffffffffffffffffffffffff
+fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefeffffffffffffffffff3a7bb301589e00579e00579e00579e00579e
+00579e00579e00579e00579e356eb0c7d3e8fefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefeffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefeff
+e3e9f4abc0dd5f8ec22567ab00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e01589f2c6bad6694c4
+b0c2dee6eaf4fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcf9fafbc2d2e6296bac00579e00579e00579e00579e00579e
+00579e00579e00579e055aa0638fc2ebeef5fafafafafafafafafafafafafafafafafafa
+fafafafbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfdfdfdfdfdfdfdfdfd
+fdfdfcfdfdfcfcfcfbfcfcfbfcfcfbfcfcfbfafafbcad6e93b76b300579e00579e00579e
+00579e00579e00579e00579e678cc2f0f3f7fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcdde3f06590c20d5da200579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e1b62a7d6e0eefcfcfcfdfdfdfdfdfd
+fdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdfdfdfd
+fefefefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+f8f9fcb6c6e14f84bc0d5ca200579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e88a2d0fffffffefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefefefefefefefefefefefefefefefeecf0f77ca2cd01589f00579e
+00579e00579e00579e00579e00579e00579e01579e447ab7f2f4faffffffffffffffffff
+fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefeffffff3177b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e336cafc6d2e7fefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfefebfcde5
+6292c32265a900579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+2767ab6b98c6c5d1e6fafbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfb
+fbfbfbfbfbfbfbfbfbfbfbfbf5f6f9a4beda00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e1161a4aabbdbf9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9
+f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fafafafafafafbfbfbfcfcfcfdfdfd
+fdfdfdfdfdfdfdfdfcfcfcfcfcfcfcfbfbfbe9eef56892c301589f00579e00579e00579e
+00579e00579e00579e00579e5c84beeff2f7fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fbfbfbb4c2df2e6eae00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e638ac1f1f3f7fcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfefefefefefe
+fefefefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5f7fb
+96b2d5306eae00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e819dcdfefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefefefefefefefefefefefefefdfdfecedbeb2e6fae00579e00579e
+00579e00579e00579e00579e00579e00579e00579e1061a5b7c5e3ffffffffffffffffff
+fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefe3177b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e336cafc6d2e7fefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefffffffffffffffffffffffff5f6fba3b9da3875b2
+01589f00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+01579e0f5da40c5ca300579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e0359a0427ab5a4bbd9f1f3f7fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfafafafafafa
+fafafaf9f9f9f9f9f9fafafaf4f5f8a3bcda00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e0559a04c81b9e5e9f1f8f8f8f8f8f8f7f7f7f7f7f7f7f7f7
+f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8f8f8f8f8f8f7f7f7f9f9f9fafafafbfbfb
+fbfbfbfcfcfcfcfcfcfcfcfcfcfcfcf8f9fa9bb3d7135fa400579e00579e00579e00579e
+00579e00579e00579e00579e5c84bdeef1f6fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfafafa
+fafafaadbddb296bac00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e065aa1adc2def8f9fafbfbfbfbfbfbfbfbfb
+fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfefefefefefe
+fefefefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfefe9eb5d8
+2368aa01589e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e819dcdfefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefef3f5fa8fadd30559a000579e00579e
+00579e00579e00579e00579e00579e00579e00579e055aa05a8abffcfcfeffffffffffff
+fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefe3177b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e336cafc6d2e7fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefef4f5fb8dacd22669ab01579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e2266a95685bd7da3cc
+9bbcd7a8c2dca6c1db95b7d4769ec94b7eb81961a600579e00579e00579e00579e00579e
+00579e00579e03589f2a6cac92aed2eff1f6f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9
+f9f9f9f9f9f9f8f8f8f8f8f8f3f4f6a3bcd900579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e1964a7a4b6d7f7f7f7f7f7f7f6f6f6f6f6f6f6f6f6
+f6f6f6f6f6f6f6f6f6f5f5f5f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f8f8f8
+f9f9f9fafafafbfbfbfbfbfbfcfcfccdd8ea276bac00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5c83bdeef1f6fafafafafafafafafaf9f9f9f9f9f9f9f9f8
+f8f8f7abbcda296bac00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e01589f4c80badfe6f0fafafafafafafafafafafafa
+fafafafafafafafafafafafafafafafbfbfbfcfcfcfcfcfcfcfcfcfdfdfdfefefefefefe
+fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc2cfe73573b1
+03589f00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+1a62a64c7db96a92c680a3ce86a9d186a9d184a7d07b9fcc6991c5517fbb2869ac075aa0
+00579e00579e00579e819dcdfefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefee2eaf33b74b300579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e01579e236babc9d4e9ffffffffffff
+fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe
+fdfdfdfefefefefefefefefefefefefefefe3177b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e336cafc5d1e6fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefef8f9fc92aed32168a902589f00579e
+00579e00579e00579e00579e00579e00579e00579e1862a66794c4b6c9e1dae1efeceef5
+f9fafafafafafafafaf6f7f8e8ebf3d3dceba7bedb5486bb115ea300579e00579e00579e
+00579e00579e00579e03589f266aab94b0d2f4f5f7f9f9f9f9f9f9f9f9f9f9f9f9f8f8f8
+f8f8f8f8f8f8f8f8f8f7f7f7f2f3f5a2bcd800579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e0559a04c83b8e1e4eef5f5f5f5f5f5f5f5f5f5f5f5
+f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f6f6f6f6f6f6
+f6f6f6f7f7f7f9f9f9fafafaf3f4f75485bc00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5c83bdedf0f5fafafaf9f9f9f9f9f9f8f8f8f8f8f8f7f7f7
+f6f6f5abbcda296bac00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e0b5ca23871b1628cc17ca0cc91b0d49bb8d89bb8d89bb8d89bb7d7
+9ab7d69ab7d69ab7d69ab7d69ab7d6a1bdd8cfd9e9f5f5f7f9f9f8f9f9f8f9f9f8f9f9f8
+f9f9f8f9f9f9f9f9f9f9f9f9fafafafbfbfbfcfcfcfcfcfcfdfdfdfefefefefefefefefe
+fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff5f6fb5e91c1085ba1
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e2c6bad83a4cf
+c6d6e9dee6f2e8ecf6eff2f9f1f3faf1f3f9eff2f9ecf0f7e7ebf5dfe6f2d2deedb1c7e1
+7c9ecc4877b62b69acb0c0e0fefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefef9fafca5bbdc085aa100579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e0d5ea37b9dcafefefeffffff
+fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e336cafc4d0e6fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fefefefefefefefefefefefefefefefefefefefefeb5c4e13070af03589f00579e00579e
+00579e00579e00579e00579e00579e00579e296aac9ab4d6e3e9f3f8f9fbfbfbfbfafafa
+fafafaf9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f3f4f7dbe3ed85a3cd1c64a700579e00579e
+00579e00579e00579e00579e03589f3372afb3c3def8f8f8f7f7f7f7f7f7f7f7f7f7f7f7
+f7f7f7f7f7f7f7f7f7f7f7f7f2f2f5a2bcd800579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e1f67a8a0b3d5f4f4f4f4f4f4f4f4f4f4f4f4
+f4f4f4f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f4f4f4f4f4f4
+f5f5f5f5f5f5f6f6f6f7f7f79bafd40c5ca200579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5c83bdeceff4f9f9f9f8f8f8f7f7f7f6f6f6f5f5f5f5f5f4
+f5f5f4aabbd9296bac00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e2064a9698fc3afc4ded4deece2e7f1ebeef5f1f3f7f4f5f9f4f5f8f4f5f8f3f4f7
+f3f4f6f3f4f6f3f4f6f3f4f6f3f4f6f5f6f7f9f9f8f9f9f9f9f9f8f9f9f8f9f9f8f8f8f7
+f8f8f7f9f9f8faf9f9fafafafafafafbfbfbfcfcfcfdfdfdfdfdfdfefefefefefefefefe
+fffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d0e82f72af00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e457db8bfcfe6f2f5fa
+fdfdfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefafbfc
+f0f3f9e6ebf4e1e9f2f4f6fafefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefef0f3f9537dba00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e01589e3777b2dce2f1fefefe
+fffffffffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefe
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e336cafc3cfe4f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9
+fafafafafafafbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfce4e8f35389bd055aa000579e00579e00579e
+00579e00579e00579e00579e00579e2266a99bb3d6f1f4f8fcfcfcfbfbfbfafafaf9f9f9
+f9f9f9f9f9f9f9f9f9f9f9f9f8f8f8f8f8f8f8f8f8f7f7f8ebedf2819fcb1561a500579e
+00579e00579e00579e00579e00579e0559a0578bbddbe1edf7f7f7f7f7f7f7f7f7f7f7f7
+f6f6f6f6f6f6f6f6f6f5f5f5f0f1f3a1bbd800579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e04599f4d85b8dce0eaf3f3f3f3f3f3f3f3f3
+f2f2f2f2f2f2f1f1f1f1f1f1f2f2f2f2f2f2f2f2f2f2f2f2f1f1f1f1f1f1f2f2f2f2f2f2
+f3f3f3f4f4f4f5f5f5cad3e6226aaa00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5c83bdebeef3f8f8f8f6f6f6f5f5f5f5f5f4f4f4f4f4f4f4
+f4f4f3aabbd8296bac00579e00579e00579e00579e00579e00579e00579e00579e0559a0
+447db6b6c6e0e8ecf3f6f7f9fbfbfbfafafafbfbfbfbfbfbfbfafafbfbfbfafaf9fafaf9
+fafaf9fafaf9fafaf9fbfbfafbfbfafbfbfafbfbfafafafaf9f9f9f9f9f9f9f9f9fafaf9
+f9f9f8f9faf9fafbfafbfbfbfbfbfbfcfcfcfdfdfdfefefefefefefefefeffffffffffff
+fffffffffffffffffffefefefefefefefefefefefefffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff94abd41962a600579e
+00579e00579e00579e00579e00579e00579e00579e00579e306eafb7c8e3fbfcfdfefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefdfdfec1cfe70559a000579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e1a64a79ab0d7fefefe
+fefefefffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefe
+fefefefdfdfdfdfdfdfdfdfdfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec2cee3f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8
+f8f8f8f8f8f8f9f9f9f9f9f9f9f9f9fafafafafafafbfbfbfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcaebfde286cac00579e00579e00579e00579e
+00579e00579e00579e00579e01589f6193c2e7eaf4fbfbfbfafafafafafaf9f9f9f8f8f8
+f8f8f8f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e4e7f0407db602589f
+00579e00579e00579e00579e00579e00579e286aaba9bad9f6f6f6f5f5f5f5f5f5f5f5f5
+f5f5f5f5f5f5f5f5f5f5f5f5eff0f3a0b9d600579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e2267a99fb2d4f1f1f1f0f0f0f0f0f0
+f0f0f0f1f1f1f0f0f0f0f0f0efefefefefefefefefefefeff0f0f0f0f0f0f0f0f0f1f1f1
+f1f1f1f2f2f2eaecef5183b90559a000579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5b83bdeaedf2f5f5f5f5f5f5f3f3f3f2f2f2f2f2f2f2f2f2
+f3f3f3a9bad7296bab00579e00579e00579e00579e00579e00579e00579e075aa05487bc
+d7deecf5f6f7f9f9f9f9f9f9f9f9f9fafafafbfafafbfbfbfbfbfbfafaf9fafaf9fafaf9
+fafaf9fafaf9fbfbfafbfbfafbfbfafbfbfafbfbfafbfbfafafaf9fafaf9fafaf9fafaf9
+fafafafcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfefefefefefefefefefefefeffffffffffff
+fffffffefefefefefefefefefefefefefefefffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff6597c40559a000579e
+00579e00579e00579e00579e00579e00579e00579e01589e73a0caf2f3f9fefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefafbfd5d86bf00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e01579e4684b9ebeff7
+fefefefefefefefefefffffffffffffffffffffffffefefefefefefefefefefefefefefe
+fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec1cee2f7f7f7f7f7f7f7f7f7f6f6f6f7f7f7f7f7f7
+f6f6f6f6f6f6f7f7f7f7f7f7f8f8f8f8f8f8f8f8f8f9f9f9f9f9f9fafafafafafafafafa
+fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfafafb719ec7075aa000579e00579e00579e00579e
+00579e00579e00579e00579e2265a9a3b6d8fafafafafafaf9f9f9f9f9f9f8f8f8f7f7f7
+f7f7f7f6f6f6f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6f6f6f6f6f6f6f6f68ca3ce1360a4
+00579e00579e00579e00579e00579e00579e01589f6d9cc5eeeff2f5f5f5f4f4f4f4f4f4
+f4f4f4f4f4f4f3f3f3f3f3f3edeef19fb9d500579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e4c84b7d5dae6efefefeeeeee
+eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefefef
+efefefedeeef8aa2cb1260a400579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5b82bce8ebf0f4f4f4f2f2f2f0f0f0f0f0f0f0f0f0f0f0f0
+f0f0f0a8b8d6296aab00579e00579e00579e00579e00579e00579e03599f447fb6dde1ed
+f6f6f6f7f7f7f8f8f8f9f9f9f9f9f9f9f9f9f9f9f8fafaf9f9f9f8fafaf9fafaf9fafaf9
+fafaf9f9f9f9f9f9f9f9f9f9fafaf9f9f9f9f9f9f9f8f8f8fafaf9fafaf9fafaf9fafaf9
+fbfbfafcfcfcfcfcfcfcfcfcfdfdfdfefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffafbfd5790bf00579e00579e
+00579e00579e00579e00579e00579e00579e00579e1760a59ab6d7fefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefed7dff0065aa000579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e246aaba9bcdc
+fefefefefefefefefefefefefffffffffffffffffffefefefefefefefefefefefefefefe
+fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec1cde2f7f7f7f6f6f6f7f7f7f7f7f7f7f7f7f6f6f6
+f7f7f7f7f7f7f6f6f6f7f7f7f6f6f6f7f7f7f7f7f7f8f8f8f8f8f8f8f8f8f9f9f9f9f9f9
+f9f9f9fafafafafafafafafafafafae5e9f2548bbd00579e00579e00579e00579e00579e
+00579e00579e00579e00579e2b6cacafbfddfafafaf9f9f9f9f9f9f8f8f8f8f8f8f7f7f7
+f6f6f6f7f7f7f7f7f7f6f6f6f6f6f6f6f6f6f6f6f6f5f5f5f5f5f5f5f5f5a2b4d61864a6
+00579e00579e00579e00579e00579e00579e00579e568abcd9deeaf3f3f3f3f3f3f3f3f3
+f3f3f3f2f2f2f2f2f2f3f3f3ecedf09db7d400579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e2367a99cb1d1ececedeeeeee
+eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
+ededeeb8c5dc266dab00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5b82bce6e9eef1f1f1f0f0f0efefefefefefefefefeeeeee
+eeeeeea7b7d5296aab00579e00579e00579e00579e00579e00579e1a65a7a2b4d6f5f5f5
+f5f5f5f6f6f6f7f7f7f8f8f8f9f8f8f9f8f8f8f8f7f8f8f7f8f8f8f8f8f8f8f8f8f8f8f8
+f8f8f8f8f8f8f8f8f8f8f8f7f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f9f9f9fafaf9fafaf9
+fcfcfcfcfcfcfcfcfcfdfdfdfefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffff1f3fa518bbd00579e00579e
+00579e00579e00579e00579e00579e00579e00579e1f64a8a4badafefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefdfdfd7395c800579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e075aa06595c4
+f2f4f9fefefefefefefefefefefefefffffffffffffffffffffffffefefefefefefefefe
+fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cce1f5f5f5f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6
+f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f6f6f6f6f6f6f7f7f7f7f7f7f7f7f7
+f7f7f7f7f7f7f8f8f8f8f8f8f8f8f8d8dfec4a84b900579e00579e00579e00579e00579e
+00579e00579e00579e00579e2b6cacaebedcf8f8f8f8f8f8f7f7f7f7f7f7f7f7f7f6f6f6
+f6f6f6f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a1b3d51863a6
+00579e00579e00579e00579e00579e00579e00579e4b81b7cdd4e4f2f2f2f2f2f2f2f2f2
+f1f1f1f1f1f1f1f1f1f1f1f1e9eaee94b0d000579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e01589f578abbd3d9e3ececec
+ecececececececececececececececedededededededededeeeeeeeeeeeeeeeeeeeeeeee
+d8dce65485b9075aa000579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5a82bae2e5eaededededededecececececececececececec
+edededa6b6d4296aab00579e00579e00579e00579e00579e00579e2970acd9dee9f4f4f4
+f4f4f4f5f5f5f6f6f5f6f6f5f6f6f5f6f6f5f5f5f5f5f5f5f5f4f4f5f4f4f5f5f5f5f5f5
+f5f5f5f5f5f5f5f5f4f5f5f4f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f6f6f5f8f8f7f9f9f9
+fbfbfbfcfcfcfcfcfcfdfdfdfefefefefefefefefefefefdfefefdfefefefefefefefefe
+fefefefefefefefefefefefefffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefeffffffffffffffffff5e94c202589f00579e
+00579e00579e00579e00579e00579e00579e00579e085aa17ea6cdf4f6fafefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdfefefe
+fefefefefefefefefefefefee1e6f21c66a800579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e3574b1
+bfcde5fefefefefefefefefefefefefefefefefefefffffffffffffefefefefefefefefe
+fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caebfcce1f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5
+f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f6f6f6f6f6f6f6f6f6
+f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d6ddeb4a83b900579e00579e00579e00579e00579e
+00579e00579e00579e00579e2b6cacadbddbf7f7f7f7f7f7f6f6f6f6f6f6f6f6f6f5f5f5
+f5f5f5f4f4f4f4f4f4f4f4f4f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3a0b2d51863a6
+00579e00579e00579e00579e00579e00579e00579e497fb7cad2e3f0f0f0f0f0f0efefef
+efefefefefefefefefeeeeeee4e6eb86a6cb00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e2468a99db3d1e8e8ea
+ecececececececececedededededededededeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5e7eb
+87a4ca1963a600579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5a81badfe2e7eaeaeae9e9e9e9e9e9e9e9e9e9e9e9eaeaea
+eaeaeaa4b4d2286aaa00579e00579e00579e00579e00579e00579e2d73ade9ebeef2f2f2
+f2f2f2f3f3f2f3f3f2f3f3f2f4f4f3f3f3f2f2f2f2f2f2f2f2f1f1f2f1f0f2f1f0f2f2f2
+f2f2f2f2f1f1f2f2f1f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f4f4f3f6f6f5f7f7f7
+f9f9f9fbfbfbfcfcfcfdfdfdfefefefefefefefefefdfdfcfdfdfcfefefefefefefefefe
+fefefefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefeffffff7ba1cb0e5da300579e
+00579e00579e00579e00579e00579e00579e00579e00579e3d79b5bdcde5f9fafcfefefe
+fefefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfd89a6d0075ba000579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e115ea4
+83a6cef5f7fafefefefefefefefefefefefefefefefefefefffffffefefefefefefefefe
+fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caebecbe0f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3
+f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5
+f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5d5dcea4983b800579e00579e00579e00579e00579e
+00579e00579e00579e00579e2b6bacacbcdaf6f6f6f5f5f5f5f5f5f5f5f5f4f4f4f3f3f3
+f3f3f3f3f3f3f3f3f3f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f1f1f1a0b1d41863a6
+00579e00579e00579e00579e00579e00579e00579e497fb6c8d0e1efefefeeeeeeeeeeee
+eeeeeeeeeeeeedededededede2e4e986a5cb00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e01589f5c8cbcd2d7e3
+ecececededededededededededededeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeecededb0c2d9
+3173ae00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5980b8dcdee3e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7
+e8e8e8a3b3d02869aa00579e00579e00579e00579e00579e00579e256daacad1e2efefef
+f0f0eff0f0f0f1f1f0f1f1f0f1f1f0f0f0efefefeeefeeeeefeeeeefeeedefeeedf0efee
+f0efeeefeeedefeeedefeeedefeeedefeeedefeeeef0efeff0f0f0f1f1f0f3f3f3f4f4f4
+f6f6f6f9f9f9fbfbfbfcfcfcfdfdfdfefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefeaabcdd2369ab00579e
+00579e00579e00579e00579e00579e00579e00579e00579e085aa15288bcbdcee5f5f7fa
+fefefefefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fbfbfbfbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfcfcfcfcfcfc
+fbfbfbfbfbfbfbfbfbe3e8f23775b202589f00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+4a82b9d2dbecfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caebecadff2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2
+f2f2f2f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f4f4f4f4f4f4f4f4f4f4f4f4
+f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4d4dbe94983b800579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6bacabbcd9f4f4f4f4f4f4f4f4f4f3f3f3f3f3f3f2f2f2
+f2f2f2f3f3f3f2f2f2f2f2f2f1f1f1f1f1f1f1f1f1f0f0f0f0f0f0f0f0f09fb0d31763a6
+00579e00579e00579e00579e00579e00579e00579e497eb6c8cfe0eeeeeeedededededed
+edededececececececebebebe1e3e886a5ca00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e2166a8a0b6d2
+e9e9ebeeeeeeeeeeeeeeeeeeeeeeeeefefefefefefefefefefefefefefefd2d8e45d8bbc
+085aa000579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5980b8dadde2e6e6e6e5e5e5e6e6e6e6e6e6e6e6e6e5e5e5
+e6e6e6a2b2cf2869aa00579e00579e00579e00579e00579e00579e1361a485a2c8e8e8ea
+ededeceeeeedededecededececececebebeaebeae9ebeae9ebeae9ebeae9ebeae9ecebea
+ecebeaebeae9ebeae9ebeae9ebeae9ebeaeaebeaeaecebebededecededeceeeeeef0f0f0
+f3f3f3f6f6f6f9f9f9fbfbfbfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefe
+fefefefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefedee4f1447fb703589f
+00579e00579e00579e00579e00579e00579e00579e00579e00579e075aa03c7bb494afd4
+dae1f0fbfbfdfdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfbfbfbfbfbfbfbfafafafafafa
+fafafafafafafafafafafafafafafafbfbfbfbfbfbfbfbfbfbfbfbf9f9f9f9f9f9f9f9f9
+f9f9f9f9f9f9f9f9f99eb2d71160a400579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+1a64a79ab7d7f9fafcfdfdfdfefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326cadbdc9def1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f2f2f2
+f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2
+f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d3dae84982b800579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6bacaabbd8f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f1f1f1
+f0f0f0f1f1f1f0f0f0efefefefefefefefefefefefefefefefefefefefef9fb0d31763a6
+00579e00579e00579e00579e00579e00579e00579e487eb5c6cedfecececebebebebebeb
+ebebebeaeaeae9e9e9e9e9e9dfe1e684a4c800579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e01589f5f8cbd
+d4dae5eeeeeeeeeeeeefefefefefeff0f0f0f0f0f0f0f0f0f0f0f0e4e6ec89a7cc1963a6
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5880b7d8dbe0e3e3e3e3e3e3e3e3e3e4e4e4e4e4e4e3e3e3
+e3e3e3a0b1ce2869a900579e00579e00579e00579e00579e00579e03589f3472aeb1bfd7
+e8e9eaeaeae9e8e8e8e8e8e8e8e8e7e8e7e6e7e7e6e7e6e5e7e6e6e8e7e7e8e7e7e8e8e7
+e8e8e7e8e8e7e8e7e7e8e7e7e8e8e7e8e8e8e7e7e7e8e8e8e8e8e8e9e9e8eaeaeaebebeb
+eeeeeef2f2f2f5f5f5f7f7f7f9f9f9fafafafbfbfbfbfbfbfcfcfcfcfcfcfefefefefefe
+fefefefffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfd94b0d51763a6
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e1c63a7
+4b84ba90abd2c6d1e8f6f7fafcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfafafafafafafafafafafafaf9f9f9f9f9f9
+f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f8f8f8f7f7f7f7f7f7
+f8f8f8f8f8f8e6e9f14b81b80559a000579e00579e00579e00579e00579e1863a65a89bd
+81a8cc739dc72d6fae05599f00579e00579e00579e00579e00579e00579e00579e00579e
+01589f6090c2dfe5f1fcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefe
+fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326badbcc9ddf0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0
+f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2
+f2f2f2f1f1f1f1f1f1f1f1f1f1f1f1d2d8e74982b700579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6baba9bad7f1f1f1f1f1f1f0f0f0f0f0f0f0f0f0efefef
+eeeeeeefefefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedededededed9eafd21763a6
+00579e00579e00579e00579e00579e00579e00579e487eb5c5cddde9e9e9e9e9e9e9e9e9
+e8e8e8e8e8e8e7e7e7e7e7e7dde0e483a3c700579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e1c65a7
+a4bad4e9eaeceeeeeeefefefefefefefefeff0f0f0f0f0f0eeeeefb3c5db3373af00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e587fb7d7dadee2e2e2e2e2e2e1e1e1e2e2e2e2e2e2e2e2e2
+e2e2e29fafcd2869a900579e00579e00579e00579e00579e00579e00579e095ba14479b3
+a7b8d2dddfe2e5e5e5e6e5e5e6e6e5e6e6e5e6e6e5e6e6e5e6e6e5e6e6e5e6e6e5e6e6e5
+e6e6e6e6e6e6e6e6e5e5e5e4e5e5e5e5e5e4e6e5e5e6e6e5e5e5e5e5e5e5e5e5e5e6e6e6
+e8e8e8ecececefefeff2f2f2f4f4f4f7f7f7f8f8f8fafafafcfcfcfdfdfdfefefeffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfde7ebf4678fc3
+0a5ca100579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e1961a63676b25b90c09bb1d6cad3e9f1f3f8fcfcfcfcfcfcfcfcfcfbfbfbfbfbfb
+fbfbfbfbfbfbfafafafafafafafafaf9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9
+f9f9f9f8f8f8f8f8f8f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7
+f7f7f7f6f6f6acbcda1d67a800579e00579e00579e00579e00579e0b5ca2628fc0d6dde9
+eceef2e4e8ef93add21e67a800579e00579e00579e00579e00579e00579e00579e00579e
+00579e276bacb3c7e0fbfcfcfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326badbcc9ddf0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0
+f0f0f0f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2
+f2f2f2f1f1f1f1f1f1f1f1f1f0f0f0d1d8e64882b700579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6baba8b8d6efefefefefefeeeeeeeeeeeeeeeeeeededed
+edededededededededededededededededededededecececebebebebebeb9caed01763a5
+00579e00579e00579e00579e00579e00579e00579e487db4c4cbdce7e7e7e7e7e7e7e7e7
+e7e7e7e6e6e6e6e6e6e6e6e6dcdee282a1c600579e00579e00579e00579e00579e00579e
+00579e00579e085ba15380b7789bc2628cbc1f63a600579e00579e00579e00579e01579e
+608abdd5dae4edededeeeeeeeeeeeeeeeeeeefefefefefefd1d8e55e8abd075aa000579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e587fb7d7dadee2e2e2e0e0e0e1e1e1e1e1e1e1e1e1e0e0e0
+e0e0e09eaecc2869a900579e00579e00579e00579e00579e00579e00579e00579e085aa0
+2c6eab7498c0bfc7d7dfe0e1e4e4e3e5e5e4e4e4e4e5e5e4e4e4e3e4e4e3e4e4e3e3e3e2
+e3e3e2e3e3e2e3e3e2e2e2e1e2e2e2e3e2e2e3e3e2e3e3e3e1e2e1e1e1e1e1e1e1e2e2e2
+e2e2e2e6e6e6e9e9e9edededf1f1f1f4f4f4f8f8f8fafafafcfcfcfefefeffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcdce4f0
+5c87bf0559a000579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e04599f1c65a82e72af4883b8799bc9a8b9dbd1d8ebf1f2f7fafafa
+fafafafafafaf9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f8f8f8f8f8f8f8f8f8f8f8f8
+f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6f6f6f6f6f6f6f6f6
+f5f5f5ebedf1588bbd075aa000579e00579e00579e00579e00579e266baba9bbd9f4f4f4
+f4f4f4f4f4f4dfe3ec407db502589f00579e00579e00579e00579e00579e00579e00579e
+00579e0559a0789ecae9ecf5fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326badbcc9ddf0f0f0f0f0f0f0f0f0f0f0f0f1f1f1f0f0f0
+f1f1f1f1f1f1f2f2f2f2f2f2f2f2f2f2f2f2f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f2f2f2
+f2f2f2f2f2f2f2f2f2f1f1f1f0f0f0d1d7e64881b700579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6baba8b8d5eeeeeeededededededededededededececec
+ecececececececececebebebebebebebebebebebebebebebeaeaeaeaeaea9caed01763a5
+00579e00579e00579e00579e00579e00579e00579e477db4c3cadbe7e7e7e6e6e6e6e6e6
+e6e6e6e5e5e5e4e4e4e4e4e4dadce082a1c600579e00579e00579e00579e00579e00579e
+00579e00579e82a2c5c7cddad6d9dfcad0db789bc200579e00579e00579e00579e00579e
+1360a491abcde2e3e8ebebebedededededededededd5dbe56e93c2115fa300579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5880b8d8dbe0e3e3e3e1e1e1e1e1e1e1e1e1e0e0e0e0e0e0
+e0e0e09eaecc2869a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+01579e1160a32e71ac648cbb9aabccbec7d8d9dae0e3e3e3e3e3e3e3e2e1e2e3e3e1e2e1
+e0e1e0e1e1e1e1e0e0e0e0e0e0e0e0e0e0e0e1e0e0e0e0e0dfdfdfdededededededddddd
+dededee1e1e1e5e5e5eaeaeaf0f0f0f4f4f4f9f9f9fbfbfbfdfdfdfefefeffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+e1e8f26b8fc400579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e03589f0e5da31a65a7246dab417cb57899c9
+b4c2dfebeef4f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f7f7f7f7f7f7f7f7f7f7f7f7
+f7f7f7f7f7f7f7f7f7f7f7f7f6f6f6f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5
+f5f5f5bac6df2b6fad00579e00579e00579e00579e00579e02589f4581b6dfe3ebf2f2f2
+f3f3f3f3f3f3f2f3f387a3cc1360a400579e00579e00579e00579e00579e00579e00579e
+00579e00579e3f75b4cbd6e9fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326badbcc9ddf0f0f0f0f0f0f0f0f0f1f1f1f1f1f1f1f1f1
+f2f2f2f2f2f2f2f2f2f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f5f5f5f4f4f4f4f4f4f4f4f4
+f3f3f3f2f2f2f2f2f2f2f2f2f1f1f1d1d7e54881b700579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6baba7b7d4ecececebebebebebebebebebebebebeaeaea
+eaeaeaebebebeaeaeae9e9e9e9e9e9e9e9e9e9e9e9e8e8e8e8e8e8e8e8e89badcf1763a5
+00579e00579e00579e00579e00579e00579e00579e477db3c1c9d9e5e5e5e5e5e5e4e4e4
+e3e3e3e3e3e3e2e2e2e2e2e2d9dbdf82a1c600579e00579e00579e00579e00579e00579e
+00579e00579ec4ced8e0e0e0e0e0e0e0e0e0b6c2d3336cac00579e00579e00579e00579e
+00579e1764a56f90c0b1bdd6d2d6e1c7cfdf99adcf4b7db50f5ea300579e00579e00579e
+00579e00579e00579e5481b8acbfd7bccedd6d93c200579e00579e00579e00579e00579e
+00579e00579e00579e00579e5980b8d9dce1e4e4e4e3e3e3e2e2e2e2e2e2e1e1e1e0e0e0
+e1e1e19fb0cd2869a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e0b5ca11863a5216aa8276faa3074ac497db4497db3497db4497db3
+4f7fb46f8fbdaab6cfd6d7dcdedededededededededddddddcdcdcdadadadadadad9d9d9
+dbdbdbdfdfdfe5e5e5ecececf2f2f2f7f7f7fbfbfbfdfdfdfefefeffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefdfdfdfdfdfd
+fdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfceef1f798b1d62365a900579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e03589f0a5ca1
+1262a52b6fad7f9ccbd4dbebf7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6f6f6
+f6f6f6f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5
+f2f2f36d98c30b5ca200579e00579e00579e00579e00579e1762a68fa8cef0f0f1f1f1f1
+f2f2f2f2f2f2f3f3f3cad3e5256dab00579e00579e00579e00579e00579e00579e00579e
+00579e00579e065aa093b2d4f2f4f8fbfbfbfbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfb3076b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326cadbdcadff2f2f2f2f2f2f3f3f3f3f3f3f3f3f3f3f3f3
+f4f4f4f4f4f4f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f6f6f6f6f6f6f6f6f6f6f6f6f5f5f5
+f6f6f6f4f4f4f3f3f3f3f3f3f2f2f2d1d7e64881b700579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6aaba6b5d2eaeaeae9e9e9e9e9e9e9e9e9e8e8e8e9e9e9
+e9e9e9e8e8e8e8e8e8e7e7e7e8e8e8e8e8e8e7e7e7e7e7e7e7e7e7e7e7e79bacce1763a5
+00579e00579e00579e00579e00579e00579e00579e477cb3c0c7d8e3e3e3e3e3e3e1e1e1
+e0e0e0e0e0e0e1e1e1e1e1e1d7d9de809fc400579e00579e00579e00579e00579e00579e
+00579e00579ec8d1d8dfdfdfdedededededed1d3da7296be00579e00579e00579e00579e
+00579e00579e0a5ba11261a41765a51564a50f5fa305599f00579e00579e00579e00579e
+00579e00579e4677b3c9d2dfe9eaebebededc9d5e200579e00579e00579e00579e00579e
+00579e00579e00579e00579e5980b8dbdee3e7e7e7e6e5e4e5e5e4e4e4e4e3e3e3e3e3e3
+e3e3e3a1b1ce2869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e01579e04599f04599f04599f04599f
+05599f095ba11863a57699bfced1d8dbdbdbdbdbdbd9d9d9d8d8d8d5d5d5d6d6d6d7d7d7
+dbdbdbe2e2e2eaeaeaf1f1f1f7f7f7fbfbfbfdfdfdffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe
+fefefefdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfb
+fbfbfbfbfbfbf8f8fae0e5f07e9ccb2769ab065aa002589f00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e01579e04599f0b5ea37593c6d7ddebf3f4f5f6f6f6f5f5f5f5f5f5f5f5f5f5f5f5
+f5f5f5f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f3f3f3f3f3f3f3f3f3
+c2cce13876b100579e00579e00579e00579e00579e00579e2e72adced5e4f0f0f0f0f0f0
+f1f1f1f2f2f2f3f3f3f3f4f45e8abe075aa000579e00579e00579e00579e00579e00579e
+00579e00579e00579e4f7fbad7deedfafafafafafafafafafafafafafafafafafafafafa
+fafafafafafafafafafafafafafafafafafa3076b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caebfcce0f4f4f4f4f4f4f5f5f5f5f5f5f5f5f5f5f5f5
+f5f5f5f5f5f5f6f6f6f6f6f6f7f7f7f7f7f7f7f7f7f8f8f8f8f8f8f8f8f8f8f8f8f7f7f7
+f6f6f6f6f6f6f5f5f5f5f5f5f3f3f3d2d9e74882b700579e00579e00579e00579e00579e
+00579e00579e00579e00579e296aaaa4b4d1e8e8e8e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7
+e7e7e7e7e7e7e7e7e7e7e7e7e6e6e6e7e7e7e6e6e6e6e6e6e5e5e5e5e5e59aaacc1762a5
+00579e00579e00579e00579e00579e00579e00579e467cb3bec6d6e1e1e1e0e0e0e0e0e0
+e0e0e0e0e0e0e0e0dfe0e0e0d6d8dd809fc300579e00579e00579e00579e00579e00579e
+00579e00579ec6cfd6dcdcdcdcdcdcdcdcdcdbdbdbacb9ce2e69aa00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e105da3a4bad3e6e7e8ebebebeaeaebbac8db00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5980b9dde0e5e8e8e8e7e7e7e8e8e8e7e7e7e6e6e6e7e7e7
+e6e6e6a2b2cf2869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e3e73afb1bbced9d9d9d7d7d7d4d4d4d2d2d2d2d2d2d5d5d5dbdbdb
+e2e2e2eaeaeaf1f1f1f7f7f7fbfbfbfdfdfdffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefefefefefefefefefefefefe
+fefefefefefefefefefdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfb
+fbfbfbfafafafafafafafafaf9f9f9e5eaf2a4b6da5684bc1e69a91161a40c5da204599f
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e01579e1f67a99bb0d4eaecf1f4f4f4f4f4f4f4f4f4f4f4f4
+f3f3f3f3f3f3f3f3f3f3f3f3f2f2f2f2f2f2f3f3f3f2f2f2f2f2f2f2f2f2f2f2f2eeeff0
+82a2c9135fa400579e00579e00579e00579e00579e0c5ca27193c2eeeeeeefefefefefef
+f0f0f0f2f2f2f3f3f3f5f5f5b0bedc1562a500579e00579e00579e00579e00579e00579e
+00579e00579e00579e085ba2abc3ddf6f6f8fafafafafafaf9f9f9f9f9f9f9f9f9f9f9f9
+f9f9f9f9f9f9fafafafafafafafafafafafa3076b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cce1f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5
+f6f6f6f7f7f7f8f8f8f9f9f9f9f9f9f9f9f9fafafafafafafbfbfbfbfbfbfafafafafafa
+f8f8f8f8f8f8f6f6f6f5f5f5f4f4f4d3d9e74882b700579e00579e00579e00579e00579e
+00579e00579e00579e00579e296aaaa4b4d0e6e6e6e6e6e6e6e6e6e6e6e6e7e7e7e6e6e6
+e7e7e7e6e6e6e6e6e6e6e6e6e5e5e5e5e5e5e4e4e4e4e4e4e3e3e3e3e3e399aacc1762a5
+00579e00579e00579e00579e00579e00579e00579e467cb2bec5d6e0e0e0e0e0e0e0e0e0
+dfdfdfdfdfdfdfdfdfdfdfdfd6d8dc809fc300579e00579e00579e00579e00579e00579e
+00579e00579ec5ced5d9dadadbdbdbdadadad9d9d9c9ccd5658db903589f00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+05599f6e93bfd3d7dfe6e6e6e7e7e7e5e6e6b3c2d700579e00579e00579e00579e00579e
+00579e00579e00579e00579e5981b9dee1e6eaeaeaeaeaeae9e9e9e9e9e9e8e8e8e8e8e8
+e8e8e8a2b3d02869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e065aa05280b4b9c0ced4d4d4d2d2d2d0d0d0d0d0d0d4d4d4dbdbdbe4e4e4
+ecececf3f3f3f9f9f9fcfcfcfefefeffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefffffffffffffffffffefefe
+fefefefefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfb
+fafafaf9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f7f8f8dee3efaebedd839dcc4d82b9
+2d73af226baa1864a70d5ca200579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e1360a47b9ac7e0e4ebf2f2f2f2f2f2f3f3f3
+f3f3f3f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f1f1f1f1f1f1f0f0f0f0f0f0f0f0f0ccd3e3
+467fb600579e00579e00579e00579e00579e00579e1c66a7b5c0daeeeeeeeeeeeeefefef
+f0f0f0f1f1f1f3f3f3f5f5f5ebedf23475b001589e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e628cc1e3e8f0f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9
+f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f93076af00579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec1cde2f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6
+f7f7f7f8f8f8f9f9f9fafafafafafafbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fafafaf8f8f8f7f7f7f5f5f5f4f4f4d3d9e74882b700579e00579e00579e00579e00579e
+00579e00579e00579e00579e296aaaa3b3d0e5e5e5e5e5e5e5e5e5e5e5e5e6e6e6e5e5e5
+e5e5e5e5e5e5e5e5e5e4e4e4e3e3e3e3e3e3e2e2e2e2e2e2e2e2e2e1e1e198aacb1762a5
+00579e00579e00579e00579e00579e00579e00579e467bb2bdc5d5e0e0e0e0e0e0e0e0e0
+dfdfdfdedfdfdfdfdfdfdfdfd5d7dc809fc300579e00579e00579e00579e00579e00579e
+00579e00579ec1cad3dadadad9d9d9d9d9d9d9d9d9d9d9d99db1c82366a700579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+3670adb6c3d5e2e2e2e3e3e3e3e3e3e2e3e4a2b4d000579e00579e00579e00579e00579e
+00579e00579e00579e00579e5980b9dee1e6eaeaeaeaeaeaeaeaeae9e9e9e9e9e9e8e8e8
+e8e8e8a2b3d02869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e03589f0e5da21964a51c66a61c65a61c65a61c65a61b65a61b65a51b65a51b65a5
+1c65a5216aa75382b4afb9cbd2d2d2d0d0d0cdcdcdccccccd1d1d1dadadae3e3e3eeeeee
+f5f5f5f9f9f9fdfdfdfefefeffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffefdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfb
+fafafaf9f9f9f9f9f9f9f9f9f9f9f9f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f9f9f9
+e9ecf4c8d0e7a2b5d87497c73b7db5246bab0e5da200579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e1661a57f9fc8e3e6ecf0f0f0f1f1f1
+f0f0f0f0f0f0f0f0f0f0f0f0efefefefefefefefefefefefefefefefefefebebed94adcf
+1d64a700579e00579e00579e00579e00579e03599f467db5e7e8ebeeeeeeeeeeeeeeeeee
+f0f0f0f1f1f1f3f3f3f5f5f5f5f5f592a7d0075ba000579e00579e00579e00579e00579e
+00579e00579e00579e00579e1c62a7c3d2e5f7f7f8f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9
+f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f93076af00579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cde2f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7
+f8f8f8f9f9f9f9f9f9fafafafbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfb
+fafafaf8f8f8f6f6f6f5f5f5f3f3f3d2d8e64881b700579e00579e00579e00579e00579e
+00579e00579e00579e00579e296aaaa2b2cfe3e3e3e4e4e4e4e4e4e4e4e4e5e5e5e4e4e4
+e4e4e4e3e3e3e3e3e3e3e3e3e2e2e2e2e2e2e1e1e1e1e1e1e1e1e1e0e0e098a9ca1762a5
+00579e00579e00579e00579e00579e00579e00579e467cb2bdc5d6e0e0e0e0e0e0e0e0e0
+e1e1e1e0e1e1e0e0e0e0e0e0d6d8dd809fc400579e00579e00579e00579e00579e00579e
+00579e00579eb1bdcfdadadadadadad9d9d9d9d9d9d9d9d9c2c8d35886b603589f00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e115fa3
+82a0c3d5d6dbdfdfdfdfdfdfdfdfdfdededf96abcb00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5980b8dcdfe4e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e7e8e8
+e7e8e8a2b3d02869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e
+085aa02f6fab7193bf9faecca9b5d0a8b4cfa8b4cea7b3cda6b2cca5b1cba5b1cba5b1ca
+a7b2cab9bfcecfd0d3d2d2d2cdcdcdcacacacacacacececed8d8d8e3e3e3edededf6f6f6
+fbfbfbfdfdfdfefefefefefeffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffefefefefefefefefefefefefdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfbfbfb
+f9f9f9f9f9f9f9f9f9f8f8f8f8f8f8f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6f6f6f6f6f6
+f7f7f7f8f8f8fafafafafbfbe7ebf4b1c1df7198c63274b00f5da300579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e276caba2b7d4ecedeeefefef
+eeeeeeeeeeeeefefefefefefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedededd2d8e45689bb
+01589f00579e00579e00579e00579e00579e0c5ea29aadd0ececececececedededeeeeee
+efefeff1f1f1f4f4f4f5f5f5f6f6f6d9deec1d65a800579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e7d9ecbeef0f5f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9
+f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f93076af00579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cde2f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7f7f7f7
+f8f8f8f9f9f9f9f9f9fbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfafafaf9fafaf9
+f8f8f7f6f6f5f4f5f4f3f3f3f1f1f1d0d7e44881b600579e00579e00579e00579e00579e
+00579e00579e00579e00579e296aaaa1b1cde2e2e2e3e3e3e3e3e3e4e4e4e4e4e4e3e3e3
+e3e3e3e2e2e2e2e2e2e2e2e2e1e1e1e1e1e0e0e0e0e0e0e0e0e0e0e0e0e097a8ca1762a5
+00579e00579e00579e00579e00579e00579e00579e467cb3c0c7d8e3e3e3e3e3e3e4e3e3
+e4e4e4e4e4e4e4e4e4e4e4e4dadce182a1c600579e00579e00579e00579e00579e00579e
+00579e00579eb0bdd0dbdbdbdadadad9d9d9d9d9d9d9d9d9d7d7d88ea7c41d64a500579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e05599f5281b4
+bdc4d2dadadadbdbdadbdbdadcdcdbdadadb8ca2c600579e00579e00579e00579e00579e
+00579e00579e00579e00579e5880b8d9dce1e5e5e5e6e6e6e5e6e6e6e6e6e6e6e6e6e7e6
+e6e7e7a2b2d02869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e
+2c6caaa0b1ccdddedfe0e0e0dfdfdfdedfdfdddddddbdbdbdadadad9dad9d9d9d8d8d8d8
+d6d6d6d4d4d4d1d1d1cdcdcdc8c8c8c6c6c6cacacad4d4d4e2e2e2edededf6f6f6fbfbfb
+fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefeffffff
+fffffffefefefefefefefefefefefefefefefefefefdfdfdfcfcfcfcfcfcfcfcfcfbfbfb
+fafafaf9f9f9f9f9f9f8f8f8f7f7f7f7f7f7f7f7f7f6f6f6f6f6f6f6f6f6f5f5f5f5f5f5
+f6f6f6f6f6f6f7f7f7f9f9f9fafafafbfbfbf0f3f7bfcde46d95c51c66a800579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e04599f598bbbd5dbe5eeeeee
+ededededededededededededededededededececececececececece9e9eaa2b7d32669aa
+00579e00579e00579e00579e00579e00579e2d6dabd5d9e3ebebebebebebecececeeeeee
+efefeff2f2f2f4f4f4f5f5f5f6f6f6f7f7f7628ac000579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e2f6daed8e0edfafafafafafafafafafafafafafafa
+fafafafafafafafafafafafafafafafafafa3076b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cde2f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7
+f8f8f8f9f9f9f9f9f9fbfbfbfcfcfcfcfcfbfbfbfbfbfbfafbfbfafafaf9f9f9f8f8f8f7
+f6f6f5f4f4f4f3f3f2f1f1f1efeeeeced5e34781b600579e00579e00579e00579e00579e
+00579e00579e00579e00579e2969a9a1b1cde2e2e2e3e3e3e4e4e4e4e4e4e4e4e4e3e3e3
+e3e3e3e2e2e2e2e2e2e2e2e2e1e1e1e0e0e0e0e0e0e0e0e0e0e0e0e0e0e098a8ca1762a4
+00579e00579e00579e00579e00579e00579e00579e477db4c4cbdce9e9e9eaeaeaeaeaea
+e9e9e9e9e9e9e9e9e9e9e9e9dfe1e684a3c800579e00579e00579e00579e00579e00579e
+00579e00579eb2bfd1dddddddcdcdcdbdbdbdadadad9d9d9d8d8d8bec4d14c80b202589f
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e266aa896acc6
+d6d6d8d9d9d9d8d8d8d8d9d8d9d9d8d6d6d7819ac100579e00579e00579e00579e00579e
+00579e00579e00579e00579e577eb6d6d8dde1e1e1e2e2e2e2e2e2e3e3e2e4e4e3e4e4e4
+e5e5e5a1b2cf2869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e
+467eb3c4cad8dfdfdfdedededcdddddcdcdcdadbdbd9dad9d8d9d8d9d9d9d8d8d8d7d7d7
+d5d5d5d2d2d2cecececacacac6c6c6c7c7c7cfcfcfddddddeaeaeaf5f5f5fbfbfbfdfdfd
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefdfdfdfcfcfcfcfcfcfcfcfcfcfcfc
+fafafaf9f9f9f9f9f9f8f8f8f8f8f8f7f7f7f6f6f6f5f5f5f5f5f5f5f5f5f4f4f4f4f4f4
+f4f4f4f4f4f4f5f5f5f6f6f6f6f6f6f8f8f8f9f9f9fafafae0e6f081a3cd1d67a800579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e2d6dacabbcd6ececec
+ececececececebebebebebebebebebebebebeaeaeaeaeaeaeaeaead7dbe36a94c00559a0
+00579e00579e00579e00579e00579e02589f7895c2e8e8e8eaeaeaeaeaeaebebebededed
+efefeff2f2f2f4f4f4f5f5f5f6f6f6f7f7f7b8c5df04599f00579e00579e00579e00579e
+00579e00579e00579e00579e00579e01589f9ab2d6f8f8fafbfbfbfbfbfbfbfbfbfbfbfb
+fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb3076b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cde2f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7
+f8f8f8f9f9f9fafafafbfbfbfbfbfbfafafafafaf9fbfbfaf9f9f8f9f9f8f7f7f6f5f5f4
+f3f3f2f2f2f1f0f0efeeeeedecececccd3e04780b500579e00579e00579e00579e00579e
+00579e00579e00579e00579e296aaaa2b1cee3e4e3e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4
+e3e3e3e2e2e2e2e2e2e2e2e2e1e1e1e1e1e1e1e1e1e1e1e1e2e2e2e2e2e299aacb1762a5
+00579e00579e00579e00579e00579e00579e00579e497fb6c9d0e1f0f0f0f1f1f1f0f0f0
+f0f0f0f0f0f0efefefeeeeeee3e6ea86a6cb00579e00579e00579e00579e00579e00579e
+00579e00579eb5c2d4e1e1e1dedededddddddcdcdcdadadad9d9d9d6d6d8819fc01862a4
+00579e00579e00579e00579e00579e00579e00579e00579e00579e105da26c90bac8ccd4
+d8d8d8d7d7d7d7d7d7d7d7d7d7d7d7d3d4d57692bd00579e00579e00579e00579e00579e
+00579e00579e00579e00579e577db5d3d5dadedededededddfdfdfdfdfdfe0e0e0e1e1e1
+e2e2e2a0b0ce2869a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+477fb3c4cad6dddddddcdcdbdbdbdbdadadad8d9d9d8d8d8d7d7d7d6d6d6d5d5d5d4d4d4
+d1d1d1cecececbcbcbc9c9c9c9c9c9cececed9d9d9e6e6e6f2f2f2fafafafdfdfdfefefe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffefefefefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefdfdfdfcfcfcfcfcfcfcfcfcfcfcfc
+fbfbfbf9f9f9f9f9f9f8f8f8f8f8f8f7f7f7f6f6f6f5f5f5f4f4f4f4f4f4f3f3f3f3f3f3
+f3f3f3f2f2f2f3f3f3f3f3f3f4f4f4f5f5f5f7f7f7f7f7f7f7f7f7dfe4ee7197c5115fa4
+00579e00579e00579e00579e00579e00579e00579e00579e00579e0d5ca284a6c9e8e8e9
+eaeaeae9e9e9e9e9e9e8e8e8e9e9e9e9e9e9e8e8e8e8e8e8e7e8e8b0c1d6306ead00579e
+00579e00579e00579e00579e00579e03589fa6b3d1e7e7e7e8e8e8e9e9e9ebebebededed
+efefeff2f2f2f4f4f4f5f5f5f6f6f6f7f7f7ebeef31460a500579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e3e77b3f0f3f7fcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cde2f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7
+f9f8f8f9f9f8fafaf9fafaf9fafaf9fafaf9fafaf9f9f9f8f7f7f6f6f6f5f4f4f3f3f3f2
+f1f1f0efefeeedececebebebe9e9e9cad1de467fb400579e00579e00579e00579e00579e
+00579e00579e00579e00579e296aaaa3b2cfe5e5e4e5e5e5e5e6e5e5e5e5e5e5e5e5e5e5
+e5e5e5e5e5e5e4e4e4e4e4e4e4e4e4e4e4e4e5e5e5e5e5e5e6e6e6e7e7e79badcf1763a5
+00579e00579e00579e00579e00579e00579e00579e4a80b8cdd5e6f5f5f5f6f6f6f5f5f5
+f5f5f5f5f5f5f4f4f4f2f2f2e7e9ee88a7cd00579e00579e00579e00579e00579e00579e
+00579e00579eb7c4d7e4e4e5e2e2e2dfdfdfdedededbdbdbdadadad9d9d9b9c1d03e79af
+01579e00579e00579e00579e00579e00579e00579e00579e01589e3b76adb0baccd7d6d6
+d7d7d7d6d6d6d6d6d6d6d6d6d6d6d6d2d3d56e8cbb00579e00579e00579e00579e00579e
+00579e00579e00579e00579e577db5d0d3d8dadadadadad9dbdbdbdcdcdcdddddddedede
+dfdfdf9eafcc2869a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+467eb2c3c9d5dbdcdbdadadad8d8d8d6d6d6d2d2d2d0d0d0cecececdcdcdcdcdcdcecece
+cececececececfcfcfd0d0d0d5d5d5dcdcdce6e6e6f0f0f0f8f8f8fdfdfdfefefeffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffdfdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfcfcfcfc
+fbfbfbfafafaf9f9f9f9f9f9f8f8f8f7f7f7f5f5f5f5f5f5f4f4f4f3f3f3f2f2f2f2f2f2
+f1f1f1f0f0f0f1f1f1f1f1f1f1f1f1f2f2f2f4f4f4f4f4f4f4f4f4f4f4f4becae03574b0
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e6795bfdbdee4
+e8e8e8e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d9dce27a9dc4085aa000579e
+00579e00579e00579e00579e00579e02589e7592c0dedfe2e6e6e6e7e7e7eaeaeaececec
+eeeeeef1f1f1f4f4f4f5f5f5f6f6f6f7f7f7c6d0e50b5ca200579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e085ba1b7c6e2fdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec1cde2f7f7f7f6f6f5f7f6f5f5f5f5f6f6f6f7f7f6
+f9f8f7f9f9f8fafaf9fafaf9fafaf9fafaf9f9f9f8f8f7f6f5f6f5f4f4f3f3f3f2f1f1f1
+efeeeeedecebeaeae9e8e8e8e7e7e7c9d0dc467fb300579e00579e00579e00579e00579e
+00579e00579e00579e00579e296aaaa4b4d0e8e7e7e8e8e7e8e8e8e8e8e8e8e8e8e8e8e8
+e8e8e8e8e8e8e8e8e8e8e8e8e9e9e9eaeaeaebebebecececedededefefef9fb1d31863a6
+00579e00579e00579e00579e00579e00579e00579e4b81b9d0d8eaf9f9f9f9f9f9f8f8f8
+f8f8f8f7f7f7f6f6f6f5f5f5e9ebf089a8cf00579e00579e00579e00579e00579e00579e
+00579e00579eb6c4d8e7e7e7e5e5e5e1e1e1dfdfdfdddddddbdbdbdadadad4d5d77898be
+1460a300579e00579e00579e00579e00579e00579e00579e1a64a5829ec1d1d3d6d7d8d7
+d7d7d7d7d7d6d6d7d6d5d6d5d5d5d5d1d2d56484b800579e00579e00579e00579e00579e
+00579e00579e00579e00579e567db4cdd0d5d8d7d7d8d7d7d8d8d8d9d9d9dadadadbdbdb
+dddede9dadca2768a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+467eb2c0c6d2d6d6d6d2d2d2ccccccc9c9c9c6c6c6c6c6c6c8c8c8cccccccfcfcfd4d4d4
+d8d8d8dbdbdbdededee2e2e2e6e6e6ecececf2f2f2f8f8f8fcfcfcfefefeffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfc
+fcfcfcfafafafafafaf9f9f9f8f8f8f7f7f7f5f5f5f5f5f5f4f4f4f3f3f3f1f1f1f0f0f0
+f0f0f0efefefefefefefefefefefeff0f0f0f0f0f0f1f1f1f1f1f1f1f1f1e6e8ec548abb
+03589f00579e00579e00579e00579e00579e00579e00579e00579e00579e5c8cbbd1d6e0
+e6e6e6e6e6e6e6e6e6e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5bec8d84075b000579e00579e
+00579e00579e00579e00579e00579e00579e1a63a55b8ab996a9cba8b6d1b1bcd5b3bed7
+b4c0dab6c1dcb7c3ddb8c4dea8b9d98ba4ce3676b100579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e5d86bffefefefefefefefefefefefe
+fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3076b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cde1f6f6f5f7f7f6f7f7f6f7f7f6f8f8f7f9f9f8
+fafaf9fbfbfafafaf9fbfaf9fbfaf9faf9f8f8f8f7f6f6f6f5f5f5f4f4f4f1f1f1f0f0f0
+eeeeededececebebeae8e8e8e8e8e8cad0dd467fb400579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6baba7b7d4ecececededededededededededededededed
+ededededededeeeeeeefefeff1f1f1f2f2f2f3f3f3f3f3f3f4f4f4f6f6f6a2b4d71864a6
+00579e00579e00579e00579e00579e00579e00579e4b82b9d2daecfbfbfbfbfbfbfafafa
+f9f9f9f9f9f9f8f8f8f6f6f6eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579ea7b9d5e7e8e8e6e6e6e2e2e2e0e0e0dedededbdbdbd9d9d9d9d9d9b4bdce
+3172ab00579e00579e00579e00579e00579e00579e085aa05282b4c6c9d3d9d8d8d9d9d9
+d8d8d8d8d8d8d8d7d7d8d8d7d7d7d7d1d2d45b80b500579e00579e00579e00579e00579e
+00579e00579e00579e00579e557cb3c9cdd1d5d5d4d7d6d6d8d8d8d9d9d9dadbdbdcdcdc
+dedede9eaecb2769a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+447cafb8becac9c9c9c3c3c3bfbfbfc0c0c0c6c6c6cdcdcdd6d6d6dddddde3e3e3e8e8e8
+ecececefefeff1f1f1f3f3f3f6f6f6f9f9f9fbfbfbfdfdfdfefefeffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfc
+fcfcfcfbfbfbfafafaf9f9f9f9f9f9f7f7f7f6f6f6f5f5f5f4f4f4f3f3f3f1f1f1f0f0f0
+efefefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeededed7097c2
+0d5ca200579e00579e00579e00579e00579e00579e00579e00579e00579e5a8abacfd4de
+e5e5e5e4e4e4e4e4e4e3e3e3e3e3e3e2e2e2e2e2e2dbdde08da9c90b5ba100579e00579e
+00579e00579e00579e00579e00579e00579e00579e085ba01a64a61f67a72269a8226aa9
+236aa9236aaa236aaa236baa1e67a81560a501579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e1360a4d7deeffefefefefefefefefe
+fdfdfdfcfcfcfbfbfbfafafaf8f8f8f7f7f72f76af00579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cde1f6f6f5f7f7f6f8f8f7fafaf9fbfbfbfcfbfb
+fcfbfbfdfcfbfcfbfbfbfbfafafaf9f9f8f8f8f7f7f6f6f6f4f4f4f3f3f3f2f1f1f1f0f0
+efefefeeedededecececebebebeaead0d5e14982b600579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6baca9bad7f1f1f1f1f1f1f2f2f2f2f2f2f3f3f3f3f3f3
+f3f3f3f4f4f4f5f5f5f6f6f6f7f7f7f7f7f7f8f8f8f9f9f9f9f9f9f9f9f9a4b5d91864a6
+00579e00579e00579e00579e00579e00579e00579e5085bbd6ddecfbfbfbfbfbfbfbfbfb
+fafafaf9f9f9f8f8f8f7f7f7eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579ea0b4d2e5e5e6e3e3e3e1e1e1dfdfdfdddddddbdbdbd9d9d9d9d9d9d4d5d8
+7090bc105ea200579e00579e00579e00579e03589f3170abaab7cbd9d9d9dbdadadadada
+dadadadadadadad9d9d9dad9d9dad9d3d4d75279b400579e00579e00579e00579e00579e
+00579e00579e00579e00579e567cb3cccfd4d7d8d8dbdbdadededddfdfdee1e1e0e1e1e1
+e2e3e3a0b0ce2869a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+4178acadb3bfbbbbbbbababac1c1c1cbcbcbd8d8d8e3e3e3ecececf2f2f2f6f6f6f9f9f9
+fafafafbfbfbfbfbfbfcfcfcfdfdfdfdfdfdfefefefefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfefefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfc
+fcfcfcfbfbfbfbfbfbf9f9f9f9f9f9f8f8f8f6f6f6f5f5f5f4f4f4f3f3f3f1f1f1f0f0f0
+efefefeeeeeeededededededececececececececececececebebebebebebeaeaea7899c3
+115ea300579e00579e00579e00579e00579e00579e00579e00579e00579e5b8bbaced3dc
+e2e2e2e2e2e2e1e1e1e1e1e1e1e1e1e0e0e0e0e0e0c7cdd94e7cb500579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e03589f839dcefefefefefefefcfcfc
+fbfbfbf9f9f9f7f7f7f5f5f5f2f2f2f0f0f02e74ae00579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cde1f6f6f6f8f8f7fafaf9fbfbfafbfbfafcfcfb
+fcfcfcfbfbfbfbfbfafbfbfafafaf9f9f9f8f7f7f6f7f7f6f6f6f5f4f4f3f4f4f3f3f3f2
+f2f2f1f1f1f0f1f1f0f0f0efefefefe3e5eb568cbb00579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6cacacbddaf6f6f6f6f6f6f7f7f7f7f7f7f8f8f7f9f9f8
+f9f9f9fafafafafafafbfbfbfbfbfbfbfbfbfafafafafafaf9f9f9f8f8f8a3b4d81864a6
+00579e00579e00579e00579e00579e00579e00579e5d8fbfe2e6f0f9f9f9fafafafafafa
+f9f9f9f9f9f9f8f8f8f7f7f7eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579e9eb1cfe2e2e3e0e0e0dfdfdfdcdcdcdbdbdbd9d9d9d9d9d9d9d9d9d9d9d9
+bcc2d14078af05599f0b5ca14270af6587b988a0c3b7c2d0d6d7d9dadadadadadadbdbdb
+dbdbdbdcdcdcdcdcdcdcdcdcdcdcdcd5d7da4973b100579e00579e00579e00579e00579e
+00579e00579e00579e00579e577db5d4d6dbe0e1e0e2e1e0e2e2e2e2e3e2e3e3e2e2e2e2
+e2e2e29fafcc2768a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+3e75a8a5abb6b9b9b9c4c4c4d3d3d3e1e1e1edededf4f4f4f9f9f9fcfcfcfdfdfdfefefe
+fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefefefefefefefdfdfdfdfdfdd2daed
+869fcd7c97c9bac5e2fafafaf9f9f9f8f8f8f7f7f7f6f6f6f4f4f4f3f3f3f1f1f1f0f0f0
+eeeeeeededededededeaeaeaeaeaeaeaeaeae9e9e9e9e9e9e8e8e8e8e8e8e3e4e6568bb8
+03599f00579e00579e00579e00579e00579e00579e00579e00579e00579e6b97bedadbdf
+e0e0e0e0e0e0dfdfdfe0e0e0dfdfdfdfdfdfdcdcde9fb4cc075ba100579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e01589f115ea4
+2365a82365a82366a91c62a70559a000579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e1f6aaaeaedf6fbfbfbf8f8f8
+f6f6f6f3f3f3f0f0f0edededeaeaeae8e8e82c73ac00579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cde1f7f8f7fafaf9fbfbfafbfbfafbfbfafcfcfb
+fcfcfbfdfcfbfcfbfbfcfbfafbfbfafbfbfafbfbfbfafafafafafaf8f8f8f7f7f7f7f7f7
+f6f7f7f7f6f6f6f5f4f5f5f4f5f5f4f5f5f584a4cb135fa400579e00579e00579e00579e
+00579e00579e00579e00579e2467aaa5b9d9fafbfafbfbfafbfcfbfafaf9fbfbfbfcfbfa
+fcfcfcfcfcfcfcfcfcfbfbfbf9f9f9f7f7f7f6f6f6f4f4f4f3f3f3f1f1f18ca3cc1360a4
+00579e00579e00579e00579e00579e00579e095ba17ea6cbf6f6f7f9f9f9f9f9f9f9f9f9
+f9f9f9f9f9f9f8f8f8f7f7f7eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579e9baecbdcdcdddcdcdcdbdad9d9d9d9d9d8d8d8d8d8d8d9d9d9d9d9d9d9d9
+d8d8d9ccd1d5b6c1d0c8ced4cfd2d7d2d4d7d6d7dad9d9dadbdbdbdcdcdcdbdbdbdcdcdc
+dddddddddddddedededddddddfdfdfd7d9dc3f70af00579e00579e00579e00579e00579e
+00579e00579e00579e00579e587fb7d7dbdfe2e2e2e2e2e2e2e2e2e0e0e0e0e0e0dfdfdf
+dedede9dadca2768a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+3e75a7aaafbac9c9c9d9d9d9e8e8e8f2f2f2f9f9f9fcfcfcffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefdfdfdfdfdfdfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdf8f9fbb3c3e0226bab
+00579e00579e0559a0537fbabccbe3eff1f5f4f5f6f6f6f6f4f4f4f3f3f3f1f1f1efefef
+eeeeeeedededebebebeaeaeae9e9e9e9e9e9e8e8e8e7e7e7e6e6e6e3e4e5a9b8d12c6eab
+00579e00579e00579e00579e00579e00579e00579e00579e00579e2566a89baecbe0e0e0
+e0e0e0dfdfdfdfdfdfdedededdddddddddddccd0d85780b500579e00579e00579e00579e
+00579e00579e00579e00579e02589e0a5ca11d66a66a87ba97a6c6bbc1d1d5d6dae2e2e2
+e8e8e8edededf2f2f2f5f5f5f5f5f6d6dceca9b8db6589c11162a50559a000579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e0c5da295abd4f6f6f6f3f3f3
+efefefececece8e8e8e6e6e6e2e2e2e0e0e02b71ab00579e00579e00579e00579e00579e
+00579e00579e00579e00579e2c69abb8c7ddf4f4f4f7f7f7f9f9f8fbfbfafbfbfafcfcfc
+fcfcfcfefdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfcfbfcfbfafbfbfafbfbfafafaf9fbfbfa
+fbfbfafbfbfafafaf9fafaf9fbfbfafbfbfabfcce43374b001579e00579e00579e00579e
+00579e00579e00579e00579e03589f6898c4eceef4fbfbfafbfbfafbfbfbfbfcfcfafafa
+f8f8f8f7f7f7f6f6f6f4f4f4f1f2f2eff0f0eeeeeeecebebe8e8e8d9dbe2417bb303589f
+00579e00579e00579e00579e00579e00579e3572b0b9c5dff6f6f6f8f8f8f9f9f9f9f9f9
+f8f8f8f8f8f8f7f7f7f6f6f6ebedf289a9cf00579e00579e00579e00579e00579e00579e
+00579e00579e98acc8d7d8d8d9d8d7d8d9d9d8d8d8d8d7d6d8d8d7d9d8d8d9d8d7d9d8d7
+dad9d9d9d9d9d9d9d9d9d9d9dbdbdbdadadadbdbdbdcdcdcdddddddddddddedededddddd
+dddddddededededededfdfdfdfdfdfd6d9dd2164a700579e00579e00579e00579e00579e
+00579e00579e00579e00579e587fb7d6d9dde0e0e0e0e0e0dfdfdfdcdcdcd9d9d9d8d8d8
+d7d7d799a9c62768a800579e00579e00579e00579e00579e00579e00579e00579e00579e
+4179acb8becaddddddeaeaeaf5f5f5fbfbfbfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefdfdfd
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf3f5f9a6bbdb246bab00579e
+00579e00579e00579e00579e115ea3638ac0b4c7dfe0e6eeeceef1f2f2f2f1f1f1efefef
+edededebebebeaeaeae9e9e9e8e8e8e7e7e7e5e5e5e3e4e4dcdde1b4c1d5457db404599f
+00579e00579e00579e00579e00579e00579e00579e00579e05599f5384b6c7ccd9e0e0e0
+dfdfdfdfdfdfdedededddddddddddddbdbdcaebdcf0c5ca100579e00579e00579e00579e
+00579e00579e00579e0b5ca12e6eaa90a4c5ced0d5d7d7d7d6d6d6d8d8d8dbdbdbe0e0e0
+e5e5e5ebebebf1f1f1f5f5f5f9f9f9fbfbfbfcfcfcfbfcfdcdd7ec5983bd0a5ca200579e
+00579e00579e00579e00579e00579e00579e00579e00579e02589f3a77b1e7e9edededed
+e9e9e9e6e6e6e2e2e2dfdfdfdddddddbdbdb2a70aa00579e00579e00579e00579e00579e
+00579e00579e00579e00579e02589f719ac4d4dbe6eff0f2f7f7f6f7f7f7f9f9f9fafafa
+fbfbfafbfbfafcfcfbfcfcfbfcfcfbfbfbfbfbfbfbfbfbfbfbfbfbfcfcfbfcfcfbfbfbfa
+fafafafbfbfbfafafafbfbfbfcfcfcfcfbfbf5f6f9749dc90e5ea300579e00579e00579e
+00579e00579e00579e00579e00579e286aaca3b9d8f0f2f5f6f6f6f6f6f6f4f4f4f2f2f1
+f1f1f1eeefeeecedecebebebe8e8e8e5e5e5e3e3e3e0e0e0d5d7dc809ac21761a400579e
+00579e00579e00579e00579e00579e0d5ea2739dc6edeef2f6f6f6f7f7f7f8f8f8f8f8f8
+f8f8f8f8f8f8f7f7f7f6f6f6eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579e97aac7d8d7d7d8d8d8d9d9d8d8d8d8d9d8d8d8d8d8d8d8d8d9d9d8d9d9d9
+d9d9d9dadadadadadadbdbdbdbdbdbdcdcdcdbdbdbdcdcdcdddddddedededededededede
+dedededfdfdfe0e0e0dfdfdfe0e0e0d8dbde1d62a600579e00579e00579e00579e00579e
+00579e00579e00579e00579e587fb7d5d8dddedededbdbdbd8d8d8d5d5d5d2d2d2d0d0d0
+cfcfcf94a4c02667a700579e00579e00579e00579e00579e00579e00579e00579e00579e
+3472acabb9d0e5e7e9f5f5f5fbfbfbfefefeffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefdfdfdfdfdfd
+fdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcaec2de296ead00579e00579e
+00579e00579e00579e00579e00579e00579e105ea34a7db791add0c0cfe0d4dbe7dde1e9
+e5e6eaeaeaebe9e9e9e7e7e7e2e2e5dadce2ced3ddbac6d688a3c6316fad01589f00579e
+00579e00579e00579e00579e00579e00579e00579e03589f326eaca4b3cee0e0e0e0e0e0
+dfdfdfdfdfdfdedededdddddddddddd4d6d96589b900579e00579e00579e00579e00579e
+00579e00579e1360a36689b9c4c9d3d8d9d9d7d7d7d5d5d5d4d4d4d4d4d4d8d8d8dddddd
+e3e3e3ebebebf1f1f1f5f5f5f9f9f9fcfcfcfcfcfcfefefefefefedfe6f2608bc0085aa1
+00579e00579e00579e00579e00579e00579e00579e00579e00579e1864a6a7b6d4e8e8e8
+e5e5e5e1e1e1dedededbdbdbdadadad8d9d92970a900579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e075aa15583b9a0b8d3c1d0e0c6d4e3c8d6e4c9d8e6
+cad8e6cad9e8cbd9e8cbd9e8cbd9e8ccdae8ccdae8ccdae8ccdae8cedae8d7dfece5e9f1
+f7f7f9fafafafafaf9fafaf9fafaf9fafaf9fafaf9d4dbeb4881b8065aa000579e00579e
+00579e00579e00579e00579e00579e00579e316fae9eb4d3dce0e8eaebebebebebe8e9e9
+e7e7e7e4e4e4e2e2e2dfdfdfdddddddadadad5d6d8c4c9d37f9ac01d64a600579e00579e
+00579e00579e00579e00579e075ba04e84b9d0d8e8f6f6f6f6f6f6f7f7f7f8f8f8f7f7f7
+f7f7f7f7f7f7f7f7f7f6f6f6eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579e8da1c3d7d7d7d7d8d7d9d8d8d9d8d7d8d8d8d8d8d8d9d8d8d9d9d9d9d9d9
+d9d9d9dadadadbdbdbdcdcdcdcdcdcdbdbdbdddddddddddddedededfdfdfdfdfdfdfdfdf
+dfdfdfe0e0e0e0e0e0e0e0e0e0e0e0d6dbde00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e587eb6d3d6dbdadadad5d5d5d0d0d0ccccccc8c8c8c6c6c6
+c6c6c690a0bc2667a600579e00579e00579e00579e00579e00579e00579e00579e00579e
+0459a0417ab4a0b8d6cad8e8d6e0eed8e1efd9e1f0d9e1f0d9e1f0d9e1f0d9e1f0d9e1f0
+d9e1f0d9e1f0d9e1f0d9e1f0d9e1f0d9e1f0dce4f1f0f3f9fefeffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefffffffefefdfefefdfcfcfc
+fcfcfbfbfbfafbfbfafcfcfcfcfcfcfbfbfbfafafafafafa81a8ce0e5ea300579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e2064a8507eb87197c4
+8dabcca2bcd3a3bcd2a1bbd192aecb7c9dc45d86ba2e6bab03599f00579e00579e00579e
+00579e00579e00579e00579e00579e00579e04589f286aa98aa4c5d8d9dddfdfdfdfdfdf
+dfdfdfdfdfdfdedededddddddcddddbdc6d31e62a600579e00579e00579e00579e00579e
+00579e125fa37192bdcaced5d9d9d9d9d9d9d7d7d7d4d4d4d2d2d2d2d2d2d4d4d4d9d9d9
+e0e0e0e8e8e8efefeff5f5f5fafafafcfcfcfdfdfdfefefefefefefefeffcbd9eb3c77b4
+00579e00579e00579e00579e00579e00579e00579e00579e00579e095aa15d86badcdde1
+e0e0e0dddddddbdbdbd9d9d9d9d9d9d8d8d82970a900579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e155fa41b62a61b62a61b62a6
+1b62a61b62a61b62a61b62a71b62a71b62a71b62a71b62a71b62a72465a94174b46f95c6
+b9cbe1eff0f3f7f7f6f6f6f5f6f6f5f6f5f4f5f5f4f5f5f4bbc6de3d78b204599f00579e
+00579e00579e00579e00579e00579e00579e00579e1f63a76b92bfaebdd4c7cedad3d6dc
+dbdbdcd9dadad8d8d8d3d4d5c9cbd3b9c1ce99adc65a83b5165fa400579e00579e00579e
+00579e00579e00579e075aa0457db5bcc9e0f6f6f6f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7
+f7f7f7f7f7f7f7f7f7f6f6f6eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579e849bc2d6d7d7d8d8d8d8d8d7d8d9d9d8d8d8d9d8d8d9d9d9d9dadadadada
+dbdbdbdbdbdbdbdbdbdddddddddddddddddddddddddedededfdfdfdfdfdfdfdfdfe0e0e0
+e0e0e0e1e1e1e2e2e2e2e2e2e2e2e2d3d8de00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e577db5ced1d6d2d2d2cccccbc5c5c5c1c1c1c0c0c0c2c2c2
+c6c6c692a1be2667a700579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e0559a01f64a8376eb03c70b23c70b23c70b23c70b23c70b23c70b23c70b2
+3c70b23c70b23c70b23c70b23c70b23c70b24576b687a7d1ecf0f8ffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefffffffffffffffffffefefd
+fefefdfdfdfcfcfcfbfcfcfbfbfcfcfcfcfbfbfbfbfbfbfbccd6e96693c3266aab0659a0
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e065aa03772ad8ca5c5d4d6d9dddddddddddddddddd
+dddddddddddddddddddddddddbdcdc7a95bf00579e00579e00579e00579e00579e00579e
+05599f5b86b7c2c8d3d9d9d9d8d8d8d8d8d8d7d7d7d4d4d4d2d2d2d1d1d1d1d1d1d5d5d5
+dbdbdbe3e3e3ecececf4f4f4fafafafcfcfcfdfdfdfefefefefefefffffff3f5fa91b0d5
+115ea400579e00579e00579e00579e00579e00579e00579e00579e00579e256ba9b1bcd2
+dddddddbdbdbd9d9d9d8d8d8d8d8d8d8d8d82970a900579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e02589f
+2e6eadb5c2daeeeeedededececececececececebebebebeaebeaeab2bed6447cb3075aa0
+00579e00579e00579e00579e00579e00579e00579e00579e00579e2766a85280b57096bc
+84a5c08da9c28ba7c17e9fbd698fb94979b11b61a500579e00579e00579e00579e00579e
+00579e00579e0b5da24f84b9bdc9e0f5f5f5f6f6f6f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7
+f7f7f7f7f7f7f7f7f7f6f6f6eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579e849bc1d6d7d7d9d9d9d9d8d8d8d9d8d9d9d8d9d9d9d9d9d9dadadadbdbdb
+dbdbdbdcdcdcdcdcdcdcdcdcdddddddedededfdfdfdfdfdfe0e0e0e0e0e0e1e1e1e1e1e1
+e2e2e2e2e2e2e3e3e3e4e4e4e4e4e4c5cddb00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e567db4c5c8cdc4c4c4bcbcbcbabababcbcbcc2c2c2cbcbcb
+d4d4d49aabc82769a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e075aa1aabddefefeffffffffffffff
+fffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffefefefefefefefefefcfcfcfcfcfcfcfcfcfcfcfcfbfbfbdfe4f0a8bcda6593c3
+3471b00459a000579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e1f64a65786b6a7b4ccd6d7d9dadadadadadadadadadadada
+dbdbdbdbdbdbdbdbdbdbdbdbcacfd72b68a900579e00579e00579e00579e00579e00579e
+2c6ca9a3b5cad7d7d8d9d9d9d8d8d8d8d8d8d7d7d7d6d6d6d3d3d3d1d1d1d0d0d0d2d2d2
+d7d7d7e0e0e0e9e9e9f2f2f2f9f9f9fcfcfcfdfdfdfefefefffffffffffffefefecfd9eb
+487db700579e00579e00579e00579e00579e00579e00579e00579e00579e0f5ea26e93bc
+d6d7d9d9d9d9d8d8d8d6d6d6d6d6d6d7d7d73774ac02589f00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+0d5ca26f91bfe5e5e5e5e5e4e5e4e4e4e4e4e4e4e4e3e4e3e3e3e2e2e2e2bbc3d5608db9
+2165a700579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e0b5ba1095aa000579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e2969ab729cc6ced5e6f5f5f5f6f6f6f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6f6f6
+f6f6f6f7f7f7f7f7f7f6f6f6eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579e849bc1d7d7d7d8d8d8d9d9d9d9d8d8d9d9d8dadadadadbdbdadadadbdbdb
+dbdbdbdcdcdcdddddddddddddedededfdfdfdfdfdfe0e0e0e1e1e1e1e1e1e1e1e1e2e2e2
+e4e4e4e4e4e4e4e4e4e5e5e5e5e5e5bdc7d900579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5378aeb0b2b7b3b3b3b4b4b4bebebecacacad6d6d6e1e1e1
+eaeaeaa6b7d5296aab00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e4a7db9fafbfdffffffffffff
+fffffffffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfce7eaf4
+bac8e27aa4cb457cb7145fa500579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e2565a75080b292a8c5c5cad4dadadadadadad9d9d9d8d8d8d8d8d8d9d9d9
+d9d9d9d8d8d8d9d9d9d9d9d991a3c500579e00579e00579e00579e00579e00579e095ba0
+6e93bbcbced5d9d9d9d9d9d9d8d8d8d8d8d8d7d7d7d6d6d6d4d4d4d2d2d2d0d0d0d1d1d1
+d4d4d4dcdcdce6e6e6eeeeeef6f6f6fbfbfbfdfdfdfefefefefefefefefefefefef1f3f8
+8aabd1125fa400579e00579e00579e00579e00579e00579e00579e00579e01579e3675ad
+bac1d0d7d7d7d7d7d7d6d6d6d6d6d6d6d6d66e8fba0a5ca100579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+1260a386a0c3dfdfdfdfdfdedededddddddddcdcdcdbdcdcdbdbdbdadadad8d8d8cbcdd4
+8fa4c2487bb01760a300579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e2466a9
+598bbdaabcd9e8eaf0f5f5f5f6f6f6f7f7f7f7f7f7f7f7f7f6f6f6f6f6f6f6f6f6f7f7f7
+f7f7f7f8f8f8f8f8f8f7f7f7eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579e849bc2d6d7d7d9d8d8d9d9d9d9d9d8d9d8d8dadadadbdbdbdbdbdbdbdbdb
+dcdcdcdddddddededededededfdfdfe0e0e0e0e0e0e0e0e0e1e1e1e2e2e2e3e3e3e3e3e3
+e4e4e4e5e5e5e5e5e5e6e6e6e7e7e7b0bdd600579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5075a8a9acb0bbbbbbc9c9c9d8d8d8e4e4e4eeeeeef5f5f5
+f8f8f8b4c3df2f6fae00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e0b5ca2d0d9edffffffffffff
+fffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefefefefefefdfdfdfdfdfdfdfdfd
+fbfbfbf1f3f7cbd5e8a0bbd96c97c63b74b30f5da300579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e01589f1e62a6
+4577b06b93bb9aacc6bcc2ced6d6d6d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9d8d8d8d9d9d9
+d8d8d8d8d8d8d8d8d8d8d8d84d79b200579e00579e00579e00579e01579e1861a45984b6
+b2bfced8d8d9d9d9d9d9d9d9d8d8d8d8d8d8d7d7d7d7d7d7d6d6d6d3d3d3d2d2d2d1d1d1
+d3d3d3d8d8d8e0e0e0e9e9e9f2f2f2f8f8f8fcfcfcfdfdfdfefefefefefefdfdfdfcfcfc
+d4ddeb7196c52066a903589f00579e00579e00579e00579e00579e00579e00579e286ba9
+a3b0c9d7d7d7d6d6d6d6d6d6d6d6d6d6d6d6bac1ce5e88b62565a700579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e03599f366eac
+7498bec5cbd4dadadad9d9d9d8d8d8d7d8d7d7d7d7d7d7d7d7d7d6d6d6d5d5d5d4d5d5d5
+d2d3d4b8bfce8ca5c35986b62969a904599f00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e095ba1326fae6894c2a8bcd8
+d7ddeaf4f4f5f5f5f5f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7f7f7f7f8f8f8f8f8f8
+f9f9f9f9f9f9f9f9f9f7f7f7eceef197b2d20659a000579e00579e00579e00579e00579e
+00579e00579e8ea3c4d6d8d8d9d8d8d9d9d9dadadadadad9dadadadcdcdcdcdcdcdcdcdc
+dddddddedededfdfdfdfdfdfe0e0e0e0e0e0e0e0e0e1e1e1e1e1e1e1e1e1dedededcdcdc
+dededee1e1e1e4e4e4e7e7e7e9e9e9bac5d90a5ba100579e00579e00579e00579e00579e
+00579e00579e00579e04589f6c89b3c5c6cadadadae7e7e7f1f1f1f7f7f7fafafafdfdfd
+fefefee0e6f2769bca1d65a803589f00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579ea7b9ddffffffffffff
+fffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefefefefe
+fcfcfcfcfcfcfcfcfcf9f9fbe5e9f3c9d6e8a7c1dc7ca1cb5482bb326dae0d5ca200579e
+00579e00579e00579e00579e00579e01589e0f5da22e6aaa4979b26289b87f9fc09eb1c8
+b6bfcfcdcfd6d6d7d7d5d5d5d4d4d4d5d5d5d7d7d7d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9
+d8d8d8d8d8d8d8d8d8d7d7d79fb2c780a0c07f9fbf7f9fbf7f9fbf84a3c19aafc6bdc4d0
+d4d4d6d7d7d7d7d7d7d7d7d7d7d7d7d8d8d8d8d8d8d7d7d7d7d7d7d6d6d6d4d4d4d3d3d3
+d3d3d3d5d5d5dbdbdbe3e3e3ecececf4f4f4f9f9f9fcfcfcfdfdfdfdfdfdfcfcfcfafafa
+f4f5f6dadfeab1c5da94b2cf89a9c986a6c785a5c583a4c382a2c381a1c182a2c197aec6
+c5cad2d7d7d7d6d6d6d5d5d5d6d6d6d6d6d6d5d5d5c0c5d0a3b3c888a6c17e9ebe7e9dbe
+7c9cbc7c9bbc7b9bbb7c9cbc7e9ebe80a0c184a4c487a8c78aaaca8caccc8eaecf8fafd0
+8fb0d18fb0d18fafd08eaecf8dadce8caccd8babcc8aa9ca89a9c988a8c995b2ccb7c2d5
+d3d6dddfdfdfdddedddddddcdcdcdbdcdcdcdcdbdbdcdcdbdcdcdbdcdcdcdcdcdcdcdcdc
+dcdcdcdddddddadadcc8cdd8acbcd187a6c7628bbb4375b21f64a70559a000579e00579e
+00579e00579e00579e00579e085aa12868ab4c7cb86f96c499b6d4bfcee1dee3ecf2f3f4
+f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7f8f8f8f8f8f8f9f9f9f9f9f9fafafa
+fafafaf8f8f8f7f7f7f5f5f5efeff0d1d9e392afcc87a7c786a5c584a4c482a2c281a1c1
+81a1c184a3c1c1c7d1d8d9d8d9d8d8d9d9d9dadbdadadadadadadadcdcdcdddddddedede
+dedededfdfdfe0e0e0e0e0e0e1e1e1e1e1e1e1e1e1e1e1e1dfdfdfdadadad5d5d5d4d4d4
+dadadae2e2e2e8e8e8eaeaeaebebebdfe1e799b4d086a6c77e9ebe7191af6787a56383a1
+6686a46d8dab7696b688a5c2c3cad7e7e7e8f2f2f2f8f8f8fbfbfbfefefefefefefefefe
+fffffffdfdfee1e7f3bacfe4a0bedb96b6d795b5d795b5d795b5d795b5d795b5d795b5d7
+95b5d795b5d795b5d795b5d795b5d795b5d795b5d795b5d795b5d795b5d795b5d795b5d7
+95b5d795b5d795b5d795b5d795b5d795b5d795b5d795b5d79cbbd9e0e7f3ffffffffffff
+fffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefdfdfdfcfcfcfcfcfcfcfcfcfcfcfcf9fafbebeef6dbe1eecbd7e7bacddfa3bcd5
+8da9cc83a2c780a0c5809fc391abc79ab2c8a7bbccb3bfcfbdc4d1c6cad3d1d2d6d7d7d7
+d7d7d7d8d8d8d7d7d7d7d7d7d5d5d5d5d5d5d5d5d5d6d6d6d8d8d8d8d8d8d8d8d8d8d8d8
+d9d9d9d9d9d9d9d9d9d8d8d8d7d7d7d2d3d6d1d2d6d1d2d5d1d2d5d2d2d5d5d5d5d6d6d6
+d6d6d6d5d5d5d5d5d5d5d5d5d5d5d5d6d6d6d6d6d6d6d6d6d6d6d6d7d7d7d6d6d6d5d5d5
+d4d4d4d5d5d5d8d8d8dddddde5e5e5edededf3f3f3f8f8f8fbfbfbfbfbfbfafafaf8f8f8
+f5f5f5f1f1f1ededede5e6e8dfe0e3dbdcdfd9daddd5d7dad3d4d8d2d3d7d2d3d6d4d4d6
+d6d6d6d6d6d6d6d6d6d6d6d6d5d5d5d6d6d6d5d5d5d5d5d5d6d6d6d3d3d5cecfd2cdced2
+ccced1cbccd0cacbcecacbcecccdd0d0d1d4d5d6dadadcdfe0e1e5e4e6e9e9ebeeedeff2
+eff0f4f0f1f5f0f1f5f0f1f4eef0f3edeef2ecedf0ebecf0e9ebeee8eaedececedededed
+ebebebeaeaeaeaeaeae9eae9e9e9e9e8e8e8e7e6e6e7e7e7e6e6e6e6e6e6e6e6e6e6e6e6
+e7e7e7e8e8e8e8e8e8e9e9e9e8e8e8e2e3e7d6dae4cbd3e1bdccddaec4d99fbad58baacf
+89a9cf8aa9ce92b0d2a6bfdab7ccdfc7d4e5d5dceae3e7f0f1f2f5f7f7f7f7f7f7f6f6f6
+f7f7f7f7f7f7f7f7f7f7f7f7f8f8f8f9f9f9f9f9f9fafafafafafafbfbfbfafafafafafa
+f9f9f9f7f7f7f4f4f4f1f1f1ececece8e8e8e1e2e4dbdde0d8daddd6d7dad4d5d8d3d4d6
+d3d4d7d4d5d7d8d8d9d9d8d7d8d9d9dadad9dadadadbdbdbdcdcdbdddddddededededede
+dfdfdfe0e0e0e1e1e1e1e1e1e2e2e2e2e2e2e3e3e3e2e2e2e0e0e0dcdcdcdbdbdbdddddd
+e2e2e2e5e5e5e4e4e4e1e1e1dedededbdbdbd1d1d3c1c3c6b5b6baabacafa8aaacaeafb2
+b9babdc6c7cad2d3d6dfe0e2ebebecf2f2f2f6f6f6f9f9f9fbfbfbfdfdfdfdfdfdfefefe
+fffffffffffffffffffffffffafbfdf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fc
+f7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fc
+f7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcfafafdffffffffffffffffff
+fffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefefefefefefefefefefdfdfdfdfdfdfdfdfdfefefefdfdfdfbfbfbf8f8f8f0f0f2
+e6e7ebdfe1e6dbdde2d6d9dddadbdddadbdcdadadad9d9d9d9d9d9d8d8d8d8d8d8d7d7d7
+d7d7d7d8d8d8d7d7d7d8d8d8d8d8d8d6d6d6d5d5d5d5d5d5d5d5d5d6d6d6d7d7d7d7d7d7
+d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d8d8d8d7d7d7d7d7d7
+d7d7d7d6d6d6d5d5d5d5d5d5d5d5d5d5d5d5d4d4d4d4d4d4d5d5d5d5d5d5d5d5d5d5d5d5
+d5d5d5d4d4d4d5d5d5d8d8d8dededee4e4e4ebebebf1f1f1f6f6f6f8f8f8f6f6f6f5f5f5
+f2f2f2eeeeeeeaeaeae6e6e6e3e3e3e0e0e0dddddddbdbdbd9d9d9d7d7d7d7d7d7d6d6d6
+d6d6d6d5d5d5d5d5d5d6d6d6d5d5d5d5d5d5d5d5d5d6d6d6d5d5d5d5d5d5d5d5d5d3d3d3
+d2d2d2d2d2d2d1d1d1d1d1d1d2d2d1d4d4d4d7d7d7dbdbdbe0e0e0e5e5e5eaeaeaf0f0f0
+f4f4f4f6f6f6f8f8f8f9f9f9fafafafafafafafafafafafafafafaf9f9f9f8f8f8f7f7f7
+f6f6f6f4f4f4f4f4f4f4f4f4f3f3f3f2f2f2f1f1f1f1f1f1f1f1f1f0f0f0f0f0f0f0f0f0
+f0f0f0f1f1f1f2f2f2f2f2f2f2f2f2f2f2f2f3f3f3f3f3f3f4f4f4f3f4f4f1f2f4edeff3
+eceff3edeff3eff0f4f3f3f6f7f7f7f8f8f8f8f8f7fafafafafafafafafafafafaf9f9f9
+f9f9f9fafafafafafafafafafbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfafafaf9f9f9
+f6f6f6f3f3f3efefefebebebe7e7e7e4e4e4e1e1e1dedededcdcdcdadadad9d9d9d8d9d8
+d9d9d8d9d9d8d8d9d8d8d8d8d8d8d7d9d8d7d9d9d8dcdcdbdededddfdfdfdfdededfdfdf
+e0e0e0e1e1e1e1e1e1e1e1e1e3e3e3e4e4e4e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e4e4e4
+ddddddd1d1d1c5c5c5bebebebdbdbdbdbdbdbebebebfbfbfc2c2c2c7c7c7cececed6d6d6
+dddddde3e3e3e6e6e6e8e8e8eaeaeaececececececeeeeeef2f2f2f6f6f6f9f9f9fcfcfc
+fdfdfdfefefefefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefefefefefefefefefefefefefefefefdfdfdfbfbfbf8f8f8
+f4f4f4efefefeaeaeae4e4e4e1e1e1dedededcdcdcdadadad9d9d9d9d9d9d8d8d8d8d8d8
+d9d9d9d9d9d9d8d8d8d9d9d9d9d9d9d9d9d9d8d8d8d7d7d7d6d6d6d6d6d6d6d6d6d7d7d7
+d7d7d7d8d8d8d9d9d9d9d9d9d9d9d9dadadad9d9d9d9d9d9d9d9d9dadadad9d9d9d9d9d9
+d9d9d9d9d9d9d8d8d8d8d8d8d7d7d7d6d6d6d6d6d6d5d5d5d5d5d5d5d5d5d5d5d5d4d4d4
+d4d4d4d3d3d3d4d4d4d4d4d4d7d7d7dadadae0e0e0e7e7e7edededf0f0f0f2f2f2f2f2f2
+efefefececece8e8e8e5e5e5e1e1e1dfdfdfdcdcdcdadadad8d8d8d8d8d8d6d6d6d6d6d6
+d5d5d5d5d5d5d5d5d5d5d5d5d6d6d6d5d5d5d6d6d6d5d5d5d6d6d6d4d4d4d4d4d4d5d5d5
+d4d4d4d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d4d5d5d7d7d7d9d9d9dddddde1e1e1e6e6e6
+ebebebefefeff3f3f3f6f6f6f9f9f9fbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fbfbfbfafafafafafafafafafafafafafafaf9f9f9f9f9f9f8f8f8f8f8f8f7f7f7f7f7f7
+f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8f8f8f8f8f8f8f8f8f8f8f8f9f9f9f9f9f8
+f9f8f7f7f7f7f6f6f6f5f5f4f5f4f3f6f5f5f8f8f8fbfbfbfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfafafaf8f8f8f6f6f6f3f3f3
+efefefececece9e9e9e6e6e6e2e2e2e0e0e0dedededbdbdbdadadadadad9d9d9d8d9d9d8
+dad9d9d8d9d9dad9d9d9d9d8d5d4d4d2d3d2d4d3d2d8d8d7dddddcdfdfdfe1e1e1e2e2e2
+e2e2e2e2e2e1e3e3e2e4e4e4e6e5e5e6e7e6e6e7e7e6e7e7e8e7e7e7e7e7e2e2e2d4d3d3
+c0bfbfafafafaaaaaaaeaeadbababac4c4c4ccccccd3d3d3d9d9d9dfdfdfe4e4e4e7e7e7
+e7e8e7e7e7e6e6e6e5e4e4e4e1e2e2e1e1e1e0e0e0e3e3e3e8e8e8eeeeeef3f3f3f7f7f7
+fbfbfbfdfdfdfefefefefefeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfeffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffefefefefefefefefefefefefefefefdfdfdfcfcfc
+fafafaf6f6f6f1f1f1ececece7e7e7e3e3e3e0e0e0dddddddcdcdcdbdbdbd9d9d9d9d9d9
+d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d8d8d8d9d9d9d9d9d9d9d9d9d8d8d8d7d7d7d6d6d6
+d5d5d5d6d6d6d8d8d8d9d9d9d9d9d9d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9dadadadadada
+dbdbdbdadadadadadad9d9d9d9d9d9dadadad9d9d9d9d9d9d8d8d8d8d8d8d7d7d7d6d6d6
+d6d6d6d5d5d5d5d5d5d4d4d4d4d4d4d4d4d4d6d6d6dbdbdbe0e0e0e4e4e4e8e8e8e9e9e9
+e9e9e9e7e7e7e5e5e5e2e2e2e0e0e0dedededbdbdbd9d9d9d8d8d8d7d7d7d6d6d6d7d7d7
+d6d6d6d6d6d6d5d5d5d6d6d6d6d6d6d6d6d6d5d5d5d6d5d5d5d5d5d5d5d5d4d5d5d5d5d5
+d5d5d5d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d5d5d5d6d6d6d6d6d6d8d8d8dadada
+dfdfdfe4e4e4e9e9e9efefeef3f3f2f5f6f5f7f7f6f9f9f9fbfbfbfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfcfcfcfcfcfcfafaf9
+f9f8f7f6f6f5f2f1f0edededebebebedededf0f0f0f5f5f5f9f9f9fcfcfcfdfdfdfdfdfd
+fdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfbfbfbf9f9f9f7f7f7f4f4f4f1f1f1efefefececec
+e8e8e8e4e4e4e2e2e2dfdfdfdedededcdcdcdadadad9d9d9d9d9d9d9d9d9d9d9d9dadada
+dadadadbdbdbdbdadad9d9d8d5d4d4cccdccc7c7c7cacacad1d1d0d9d8d7dededde1e1e0
+e4e3e3e3e3e2e3e3e3e4e4e4e3e3e3e3e4e4e3e2e1e1e0dfdddddcd4d4d4c8c8c8bbbaba
+b1b1b0b0b0afb5b4b3bebdbccecdccd9d9d9e1e1e0e7e7e7ebebebedededeeeeeeedeeed
+eaeaeae7e7e7e4e4e3e0e1e0dddddcdcdcdcdcdbdbdfdfdee2e2e2e7e7e7ecececf2f2f2
+f6f6f6fafafafdfdfdfefefefefefeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfeffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefefefefe
+fdfdfdfcfcfcf9f9f9f4f4f4efefefebebebe6e6e6e2e2e2e0e0e0dedededcdcdcdbdbdb
+dadadadadadad9d9d9d9d9d9d9d9d9d9d9d9dadadadadadad9d9d9dadadadadadad9d9d9
+d9d9d9d8d8d8d7d7d7d9d9d9d8d8d8d7d7d7d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9dadada
+dadadadbdbdbdadadadbdbdbdadadadcdcdcdbdbdbdbdbdbdbdbdbdadadadadadad9d9d9
+d9d9d9d9d9d9d8d8d8d7d7d7d6d6d6d5d5d5d4d4d4d5d5d5d7d7d7dadadadddddde0e0e0
+e1e1e1e1e1e1e0e0e0dfdfdfdddddddcdcdcd9d9d9d9d9d9d9d9d9d7d7d7d6d6d6d6d6d6
+d6d6d6d5d5d5d5d5d5d5d5d5d5d5d5d6d6d6d6d6d6d6d6d6d5d5d5d6d6d6d6d6d6d6d6d6
+d6d7d7d6d6d6d7d6d6d7d7d6d7d7d7d7d6d6d6d5d5d6d6d5d5d5d5d3d3d3d2d2d1d1d1d0
+d3d3d3d8d8d8e0e0e0e7e8e7eeeeedf2f2f1f3f3f3f5f4f4f6f6f6f7f6f6f7f7f7f7f7f7
+f7f7f7f8f8f8f8f8f8f8f8f8f9f9f9fafafafbfbfbfbfbfbfbfbfbfbfbfbfcfcfcfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfbfbfbfbfaf9f8f8f8
+f3f4f3f1f1f1ebebeae4e4e3dfe0dfe0e0e0e6e6e6edededf4f4f4fafafafcfcfcfcfcfc
+fcfcfcfbfbfbfbfbfbf9f9f9f7f7f7f5f5f5f3f3f3efefefececece9e9e9e7e7e7e4e4e4
+e1e1e1dedededcdcdcdadadad9d9d9d9d9d9d9d9d9d9d9d9dadadadadadad9d9d9d9dad9
+dbdadadadad9dbdcdbdbdbdbd5d6d5cccccbc1c1c0bbbbbac0c0c0c9c9c9d0d0d0d3d4d4
+d6d5d5d5d5d5d4d4d3d4d4d3d3d3d2d1d1d1cfcfcecacacac6c6c6c0c0bfbcbbbbbababa
+bcbcbcc1c1c0cacac8d3d2d1dbdbdbe1e1e0e7e8e7ecececf0efeef3f3f2f4f5f4f3f3f2
+f0f0efededeceaeae9e5e5e4e3e3e3e2e1e0e0e0e0e0e0dfe2e2e2e5e5e5eaeaeaefefef
+f4f4f4f9f9f9fcfcfcfdfdfdfefefeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefdfdfcfcfcfbf9f9f9f8f8f7f2f2f1eeeeedebebebe7e7e7e3e3e3e1e1e1e0e0e0
+dededededededcdcdcdbdbdbdadadadadadadadadadadadadadadadadadadbdbdbdcdcdc
+dbdbdbdadadadadadad9d9d9dadadad9d9d9d8d8d8d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9
+d9d9d9dadadadadadadadadadadadadbdbdbdcdcdcdcdcdcdcdcdcdcdcdcdbdbdbdcdcdc
+dcdcdcdbdbdbdbdbdbdadadad9d9d9d9d9d9d8d8d8d7d7d7d6d6d6d7d7d7d8d8d8d9d9d9
+dadadadbdbdbdbdbdbdbdbdbdbdbdbdadadad9d9d9d9d9d9d7d7d7d8d8d8d8d8d8d7d7d7
+d7d7d7d6d6d6d6d6d6d5d5d5d6d6d6d6d6d6d6d6d6d5d5d5d6d6d6d6d6d6d7d7d7d6d6d6
+d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d6d6d6d5d5d5d1d1d1cccbcb
+cacbcacdcdccd5d6d5dfdfdfe8e8e8edededf0efeef0f0eff0f0f0f0f0f0eeeeeeededed
+ececececececececececececeeeeeeefefeff1f1f1f2f2f2f4f4f4f4f4f4f6f6f6f9f9f9
+f9f9f9fafafafbfbfbfbfbfbfbfbfbfbfbfbfafafaf9f9f9f7f7f7f5f5f5f4f3f3f1f1f1
+edecece8e8e8e2e2e2dadbdad6d6d6d6d6d6dbdbdbe3e3e3ecececf3f3f3f6f6f6f6f6f6
+f7f7f7f5f5f5f3f3f3f1f1f1eeeeeeecececeaeaeae6e6e6e4e4e4e1e1e1dedededddddd
+dbdbdbdadadad9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadadadadadadbdbdbdbdbdbdbdbdb
+dcdcdbdcdbdbdcdbdbdcdbdad8d8d8d0d0d0c4c5c4bababab8b8b7c0c0bfcacac9d1d1d0
+d3d3d2d3d3d2d3d3d2d2d2d2d1d1d0cecececacacac7c7c7c6c6c6c6c6c6c7c7c7c9c9c9
+cececed3d3d2d7d7d7dbdbdbdfdfdfe2e2e2e5e5e5eaeaeaefefeff3f3f3f6f6f6f8f8f8
+f6f7f6f3f3f3f0f0efececebe8e8e8e7e6e6e6e6e5e7e7e7e9e9e9ebebebf0f0f0f4f4f4
+f8f8f8fcfcfcfdfdfdfefefeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffefefefdfdfcfcfcfcfbfbfbfafaf9f6f6f5f3f3f2efefefebebebe8e8e8e5e5e5
+e3e3e3e2e2e2e0e0e0dedededddddddcdcdcdcdcdcdbdbdbdcdcdcdcdcdcdcdcdcdddddd
+dddddddddddddddddddcdcdcdcdcdcdbdbdbdbdbdbdbdbdbdadadadadadadadadad9d9d9
+d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadadadbdbdbdbdbdbdbdbdbdcdcdcdcdcdcdcdcdc
+dbdbdbdcdcdcdcdcdcdbdbdbdbdbdbdbdbdbdadadad9d9d9d8d8d8d9d9d9d9d9d9d9d9d9
+d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d8d8d8d7d7d7d8d8d8d8d8d8d7d7d7d8d8d8d7d7d7
+d7d7d7d7d7d7d6d6d6d6d6d6d6d6d6d6d6d6d7d7d7d6d6d6d6d6d6d6d6d6d7d7d7d6d6d6
+d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d8d8d8d8d7d7d8d8d8d7d7d7d6d6d5d3d3d2cecece
+c8c8c7c8c7c6cdcdccd7d8d7e1e1e1e7e7e7ebebeaebebebebebebeaeaeae7e7e7e6e6e6
+e3e4e3e3e2e1e2e2e2e3e3e2e2e2e2e3e3e2e3e3e3e5e5e5e6e6e6e6e6e6e8e8e8eaeaea
+ecececf0f0eff2f2f2f4f4f4f4f4f4f4f4f4f3f3f3f1f1f1efefefedededebeae9e6e7e6
+e3e3e3dededed9d9d9d4d4d4d0d1d1d1d1d1d5d5d5dddddde5e5e5ebebebedededeeeeee
+eeeeeeecececebebebe9e9e9e5e5e5e3e3e3e0e0e0dedededcdcdcdadadad9d9d9d9d9d9
+d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadadadbdbdbdbdbdbdbdbdbdbdbdbdcdcdcdcdcdb
+dbdadadadadadbdbdbd9d9d8d7d6d6d3d3d3cdcecdc6c5c5c1c2c1c5c5c5cecdccd8d5d5
+dfdedde2e2e0dfdfdedadad9d2d2d1cdcdcdcccccccdcdcdcececed0d0d0d2d2d2d4d4d4
+d7d7d7d9d9d9d9dad9dbdbdbdcdcdcdfdfdfe2e2e2e9e9e9f0f0f0f5f5f5f9f9f9fbfbfb
+fafafaf9f9f9f7f7f7f5f5f5f4f4f4f3f3f3f3f3f3f4f4f4f6f6f6f7f7f7f8f8f8fbfbfb
+fdfdfdfdfdfdfefefefefefefefefeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefefefefcfcfcfbfbfbfafafaf7f7f6f3f3f2efefefececeb
+e9e9e9e8e8e8e5e5e5e3e3e3e1e1e1e0e0e0dfdfdfdedededddddddddddddddddddddddd
+dddddddededededededfdfdfdedededfdfdfdfdfdfdedededddddddcdcdcdcdcdcdcdcdc
+dbdbdbdadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadbdbdb
+dbdbdbdbdbdbdcdcdcdbdbdbdbdbdbdbdbdbd9d9d9d7d7d7d6d6d6d6d6d6d7d7d7d9d9d9
+d9d9d9dadadad9d9d9d9d9d9d9d9d9d8d8d8d8d8d8d8d8d8d7d7d7d8d8d8d7d7d7d6d6d6
+d7d7d7d6d6d6d7d7d7d7d7d7d7d7d7d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d6d6d6d7d7d7
+d7d7d7d7d7d7d8d8d8d9d9d9d8d8d8d8d8d8d7d8d8d8d8d8d8d8d8d8d8d7d7d6d5d2d2d1
+ccccccc9c9c8cbcbcad2d2d1dadbdae1e1e1e4e4e4e5e5e5e4e4e4e4e4e3e2e2e1e1e1e0
+e0dfdfdfdededfdfdedfdfdedfdfdedededddedfdedfdfdedfdfdedfdededfdfdfdedede
+e0e0e0e3e2e2e7e6e6eaeaeaebecebebebebeaeaeae7e8e8e5e5e4e2e2e1dfdfdedcdcdb
+d9d9d9d8d8d7d5d5d5d3d3d3d3d3d3d5d5d5d8d8d8dededee2e2e2e4e4e4e5e5e5e5e5e5
+e4e4e4e3e3e3e0e0e0dedededddddddbdbdbdadadadadadad9d9d9d9d9d9d9d9d9d9d9d9
+d9d9d9d9d9d9d9d9d9dbdbdbdbdbdbdbdbdbdbdbdbdadadad9d9d9d7d7d7d6d6d6d4d4d4
+d4d4d4d5d5d5d5d5d5d4d4d4d5d5d5d7d6d6d8d8d8dadbdadbdbdbdcdcdcdedddddedddd
+dedddcdadad9d3d3d3cdcdcdcdcdcdcececed2d2d2d4d4d4d5d5d5d6d5d5d6d5d5d7d7d6
+d8d8d7d9dadadbdbdadadadadadadadddddde3e3e3ebebebf2f2f2f8f8f8fcfcfcfdfdfd
+fdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfcfcfcfcfcfc
+fbfbfbfbfbfbfbfbfbfafafafbfbfbfcfcfcfcfcfcfdfdfdfefefeffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefefefdfdfcfbfbfbf7f7f6f2f2f2
+efefeeecebebe9e9e9e7e7e7e4e4e4e4e4e4e2e2e2e1e1e1e1e1e1e1e1e1e0e0e0e0e0e0
+dfdfdfdfdfdfdfdfdfe0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0dfdfdf
+dfdfdfdedededddddddddddddddddddcdcdcdbdbdbdadadadbdbdbdadadadadadadbdbdb
+dadadadadadadadadadadadadadadadadadad7d7d7d4d4d4d1d1d1d1d1d1d3d3d3d5d5d5
+d6d6d6d7d7d7d8d8d8d8d8d8d8d8d8d8d8d8d9d9d9d8d8d8d8d8d8d7d7d7d7d7d7d7d7d7
+d7d7d7d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d8d8d8d8d8d8d8d8d8d7d7d7d8d8d8d8d8d8
+d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9d8d8d8d8d8d8d8d9d9d9d9d9d9d8d7d6d6d6
+d4d4d3d1d1d0d1d1d0d5d5d4d9dadadededee0e0e0e1e0e0dfdfdfdfdfdedddddcdcdcdb
+dcdcdbdbdbdbdbdbdbdbdbdbdbdbdadbdbdbdbdbdbdcdcdbdbdbdbdbdbdbdbdbdbdbdcdc
+dbdbdbdddddce0e0e0e2e2e2e2e3e2e2e1e1dfdfdfdddedddbdbdbd9d9d9d8d8d8d7d7d6
+d6d5d5d6d6d5d5d6d6d6d6d6d7d7d7d9d9d9dbdbdbdcdcdcdddddddddddddddddddddddd
+dcdcdcdadadadadadad9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadada
+dadadadadadadbdbdbdbdbdbd8d8d8d7d7d7d5d5d5d2d2d2d0d0d0cfcfcfcfcfcfd1d1d1
+d5d5d5d8d8d8dcdcdcdededee0e0e0e4e3e3e4e4e4e5e5e5e1e1e1dadadad4d4d4cecece
+cbcbcbcbcbcbcdcdcdcfcfcfd3d3d3d5d5d5d7d7d7d7d7d7d7d7d7d6d6d6d6d7d6d7d8d7
+d9d8d8d9d9d9dadad9d8d8d8d9d9d9dcdcdce5e5e5eeeeeef5f5f5f9f9f9fcfcfcfdfdfd
+fcfcfcfcfcfcfcfcfcfbfbfbfbfbfbfafafafafafafafafaf9f9f9f8f8f8f7f7f7f6f6f6
+f4f4f4f4f4f4f3f3f3f4f4f4f5f5f5f8f8f8fafafafcfcfcfefefeffffffffffffffffff
+fffffffffffffffffffefefefefefefffffffffffeffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfdfdfbfbfa
+f7f7f6f3f3f2efefeeebebeae7e7e7e5e5e5e3e3e3e3e3e3e4e4e4e5e5e5e4e4e4e4e4e4
+e3e3e3e2e2e2e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e2e2e2e2e2e2e2e2e2
+e2e2e2e2e2e2e1e1e1e1e1e1e0e0e0e0e0e0dfdfdfdedededededededededcdcdcdbdbdb
+dbdbdbdbdbdbdadadadadadad9d9d9dadadad7d7d7d0d0d0cbcbcbcccccccececed1d1d1
+d3d3d3d4d4d4d5d5d5d6d6d6d5d5d5d6d6d6d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7
+d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d8d8d8d8d8d8d8d8d8d9d9d9d9d9d9d8d8d8
+d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d8d9d9d8dad9d9d8d8d8
+d9d9d8d8d8d7d9d9d8dbdbdadddddddfdfdedfdfdfdfdedddddddddcdddcdcdcdbdadada
+dad9d9d9d9d9d8d9d8d9d9d8d8d9d8d9d9d8d9d8d8d9d9d9d8d8d8d8d8d7d8d8d8d9d9d9
+d8d9d8dadad9dadadadadbdadbdbdbdadadad8d8d8d8d8d8d7d7d7d6d6d6d7d7d7d6d6d6
+d6d6d6d6d6d6d6d7d7d7d7d7d8d8d8d8d8d8d9d9d9d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9
+d9d9d9d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadadadadadadbdbdb
+dbdbdbd9d9d9d6d6d6d0d0d0cdcdcdcdcdcdcdcdcdcececed1d1d1d3d4d4d6d6d6d9d9d9
+dddddde0e0e0e2e2e2e1e1e1dededed9d9d9d2d2d2cbcbcbc4c4c4bfbfbfbfbfbfc2c2c2
+c9c9c9cfcfcfd5d5d5d8d8d8d9d9d9d9d9d9d7d7d7d6d6d6d5d5d5d5d5d5d6d6d6d8d8d7
+d9d9d9d9d9d9d8d8d8d6d6d6d8d8d8dddddde6e6e6edededf2f2f2f4f4f4f6f6f6f6f6f6
+f6f6f6f6f6f6f5f5f5f5f5f5f4f4f4f4f4f4f4f4f4f3f3f3f1f1f1f0f0f0eeeeeeececec
+ebebebebebebecececeeeeeef2f2f2f6f6f6fafafafcfcfcfefefeffffffffffffffffff
+fffffffffffffffffffefefdfdfdfcfefefdfdfdfcfefefdffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfffefeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fdfdfdfcfcfcf9f9f9f5f5f5f0f0f0ededede8e8e8e4e4e4e3e3e3e2e2e2e2e2e2e3e3e3
+e5e5e5e5e5e5e4e4e4e4e4e4e3e3e3e3e3e3e4e4e4e3e3e3e3e3e3e4e4e4e4e4e4e4e4e4
+e4e4e4e4e4e4e4e4e4e4e4e4e3e3e3e4e4e4e3e3e3e2e2e2e1e1e1e1e1e1e0e0e0dfdfdf
+dfdfdfdededededededddddddcdcdcdcdcdcdcdcdcd2d2d2c7c7c7c5c5c5c8c8c8cdcdcd
+d1d1d1d3d3d3d3d3d3d3d3d3d4d4d4d4d4d4d4d4d4d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5
+d5d5d5d5d5d5d6d6d6d6d6d6d6d6d6d7d7d7d7d7d7d8d8d8d9d9d9d8d8d8d8d8d8d8d8d8
+d9d9d9d9d9d9d9d9d9d9d9d9dadadadadadadadadadadadadadadadadadadadadad9d9d9
+dadadadadadadbdadadadad9dadad9d8d9d8d7d8d7d7d8d7d8d8d7d9d9d9dadadadadada
+d9d9d9dadadadadad9d9dad9d9d9d9d9d9d8d9d8d8d9d9d9d7d8d7d7d7d7d8d8d8d8d8d8
+d7d8d8d8d8d8d8d8d8d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d6d6d6d6d6d6d7d7d7
+d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d8d8d8d8d8d8d8d8d8d8d8d8d9d9d9d8d8d8d9d9d9
+d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadadadadadadadadadbdbdbdbdbdbdbdbdbd7d7d7
+d2d2d2cdcdcdc8c8c8c6c6c6cacacacececed1d1d1d4d4d4d5d5d5d5d5d5d5d5d5d5d5d5
+d4d4d4d3d3d3d2d2d2cececec9c9c9c3c3c3c0c0c0bfbfbfc1c1c1c4c4c4cacacad0d0d0
+d6d6d6dadadadddddddddddddcdcdcdadadad8d8d8d8d8d8d8d8d8d9d9d9dadadadbdbdb
+dcdcdcdbdbdbdadadad9d9d9dcdcdce1e1e1e7e7e7ebebebedededeeeeeeefefefefefef
+eeeeeeeeeeeeeeeeeeeeeeeeedededececececececeaeaeae9e9e9e7e7e7e6e6e6e7e7e7
+e8e8e8eaeaeaedededf1f1f1f5f5f5f9f9f9fcfcfcfdfdfdfefefeffffffffffffffffff
+fffffffffffffffffffefefefcfcfcfcfcfbfdfdfcfdfdfcfefefeffffffffffffffffff
+fffffffffffffffffffffffffffffffefefefefdfefefdfefdfdfdfdfdfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffdfdfdfbfbfbf9f9f9f5f5f4f0f0f0ececece7e7e7e3e3e3e1e1e1
+e1e1e1e0e1e1e2e2e2e4e4e4e5e5e5e6e6e6e5e5e5e5e5e5e5e5e5e6e6e6e5e5e5e5e5e5
+e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e5e5e5e6e6e6e5e5e5e4e4e4e3e3e3e3e3e3
+e3e3e3e2e2e2e2e2e2e1e1e1e1e1e1e0e0e0e0e0e0dbdbdbccccccc1c1c1c0c0c0c7c7c7
+cececed2d2d2d3d3d3d4d4d4d4d4d4d5d5d5d5d5d5d4d4d4d5d5d5d4d4d4d5d5d5d4d4d4
+d4d4d4d4d4d4d5d5d5d5d5d5d5d5d5d7d7d7d7d7d7d7d7d7d8d8d8d7d7d7d7d7d7d7d7d7
+d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9dadadadadadadadadadcdcdcdbdbdadadad9
+dadadad9d8d7d5d5d4d2d2d1d0d0d0d0d0d0d1d1d1d4d4d4d7d7d7dcdcdbdcdddcdddddd
+dcdcdcdbdcdbdbdbdbdbdad9dbdadadadadad9d9d9d9d9d9d9d9d9d8d9d8d9d9d9d9d9d9
+d8d8d8d9d9d9d8d8d8d7d7d7d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d7d7d7d7d7d7d8d8d8
+d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9
+d9d9d9d9d9d9dadadadadadadadadadbdbdbdbdbdbdcdcdcdcdcdcd9d9d9d3d3d3cbcbcb
+c6c6c6c4c4c4c7c7c7cbcbcbd0d0d0d3d3d3d4d4d4d3d3d3d3d3d3d2d2d2d2d2d2d1d1d1
+d0d0d0cfcfcfcfcfcfcecececdcdcdcfcfcfd0d0d0d4d4d4d8d8d8dbdbdbdfdfdfe2e2e2
+e3e3e3e4e4e4e3e3e3e1e1e1dfdfdfdddddddbdbdbdbdbdbdadadadadadadadadadadada
+d9d9d9d9d9d9d9d9d9dadadadcdcdce0e0e0e3e3e3e6e6e6e8e8e8e8e8e8e9e9e9e9e9e9
+e9e9e9e9e9e9e9e9e9eaeaeaeaeaeaeaeaeaeaeaeaeaeaeaebebebebebebecececeeeeee
+f1f1f1f3f3f3f6f6f6f9f9f9fbfbfbfdfdfdfefefeffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefdfdfdfdfdfdfefefefdfdfdffffffffffffffffffffffff
+fffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfdfdffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefefefefdfdfdfdfdfcfafbfaf8f7f7f4f4f3efefefeaeaea
+e6e6e6e3e3e2e2e2e2e4e4e3e5e4e4e5e6e5e5e5e5e5e6e6e6e6e6e7e7e6e7e7e7e7e7e6
+e8e7e7e8e8e8e9e9e9e9e9e9eaeaeae9e9e9e9e9e9e7e7e7e7e7e7e7e7e7e6e6e6e6e6e6
+e6e6e6e6e6e6e5e5e5e4e4e4e4e4e4e4e4e4e3e3e3e3e3e3dbdbdbcbcbcbbfbfbfc0c0c0
+c8c8c8cfcfcfd2d2d2d4d4d4d5d5d5d5d5d5d6d6d6d5d5d5d6d6d6d5d5d5d5d5d5d5d5d5
+d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d5d5d5d6d6d6
+d6d6d6d7d7d7d7d7d7d8d8d8d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9dadadad9dadad8d9d8
+d5d5d4d0d1d0cccccccacbcbcbcbcbcdcdcdd3d3d2d9d9d8dedddde0e0dfdfe0dfdfe0df
+dedededddcdcdcdddcdddcdcdcdcdcdbdbdbdadbdbdadbdbdadadad9dadadadadad9d9d9
+d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d8d8d8d8d8d8
+d8d8d8d7d7d7d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadadadadadad9d9d9
+dadadadadadadbdbdbdcdcdcdddddddddddddcdcdcd9d9d9d4d4d4cdcdcdc8c8c8c6c6c6
+c7c7c7c9c9c9cececed1d1d1d3d3d3d4d4d4d5d5d5d5d5d5d5d5d5d5d5d5d6d6d6d7d7d7
+d8d8d8d9d9d9dbdbdbdcdcdcdfdfdfe1e1e1e3e3e3e4e4e4e4e4e4e3e3e3e2e2e2e0e0e0
+dedededbdbdbd8d8d8d6d6d6d5d5d5d3d3d3d2d2d2d2d2d2d2d2d2d3d3d3d4d4d4d5d5d5
+d6d6d6d8d8d8dbdbdbdedededfdfdfe4e4e4e7e7e7e9e9e9ebebebecececedededefefef
+f0f0f0f0f0f0f1f1f1f2f2f2f2f2f2f3f3f3f4f4f4f5f5f5f6f6f6f7f7f7f9f9f9fafafa
+fbfbfbfcfcfcfdfdfdfefefefefefeffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefefefefefefefefefefefefeffffffffffffffffffffffff
+fffffffffffffefefefefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffefefefefefdfcfcfbfbfbfaf9f9f8f6f6f6f3f2f2
+eeeeeeeaeaeae6e6e5e3e3e3e1e0e0dfe0dfdfdfdfdededee0e0dfdfdfdfdfdfdfe0e0df
+e0e0dfe0e0e0e1e1e1e2e2e2e6e6e6e9e9e9ededededededebebebeaeaeae8e8e8e8e8e8
+e8e8e8e8e8e8e7e7e7e7e7e7e7e7e7e7e7e7e6e6e6e6e6e6e6e6e6e0e0e0d3d3d3c4c4c4
+c2c2c2c8c8c8cececed2d2d2d5d5d5d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7
+d7d7d7d6d6d6d6d6d6d7d7d7d7d7d7d6d6d6d6d6d6d5d5d5d5d5d5d5d5d5d4d4d4d5d5d5
+d5d5d5d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d7d7d7d7d7d7d8d8d8d7d7d7d6d5d4d3d3d3
+cdcdcdc9c9c9c7c8c7c8c9c8cbcbcad0d0d0d8d8d7dededee2e2e2e3e3e3e2e1e1e0e0e0
+dfdfdfdedededededddedddddddddcdcdddcdcdddcdcdcdcdadbdbdadbdbdbdbdbdbdbdb
+dadadadadadadadadadadadadadadadadadadadadad9d9d9d9d9d9d8d8d8d8d8d8d5d5d5
+d4d4d4d5d5d5d6d6d6d8d8d8dadadadbdbdbdadadadadadadbdbdbdbdbdbdbdbdbdbdbdb
+dcdcdcdddddddddddddddddddbdbdbd8d7d7d2d1d1ccccccc9c9c9c8c8c8c9c9c9cacaca
+cccccccececed1d1d1d3d3d3d5d5d5d7d7d7d8d8d8d9d9d9dbdbdbdddddddfe0dfe3e3e3
+e4e4e4e5e5e5e5e4e4e5e5e5e1e0e0dedededadadad6d6d6d3d3d3d0d0d0cdcdcdcccccc
+cdcdcdcdcdcdcecececfcfcfd2d2d2d4d4d4d7d7d7dadadadddddde0e0e0e3e3e3e6e6e6
+e8e8e8eaeaeaeeeeeef0f0f0f1f1f1f3f3f3f5f5f5f7f7f7f7f7f7f8f8f8f9f9f9fafafa
+fafafafafafafbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfdfdfdfefefefefefefefefefefefe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffefefefefdfdfdfcfcfcfafafaf6f6f6
+f1f1f0ebebeae4e4e3dedfded9d9d8d4d4d4d2d2d2d0d0cfcfcfcececececdcdcdcdcdcd
+cdcdcdcdcdcdcdcdcdcececed0d0d0d4d4d4dadadae5e5e5edededf1f1f1eeeeeeececec
+ebebebeaeaeaeaeaeaeaeaeae9e9e9e9e9e9e9e9e9e7e7e7e7e7e7e8e8e8e6e6e6dddddd
+d0d0d0c8c8c8cacacacececed1d1d1d3d3d3d4d4d4d4d4d4d6d6d6d6d6d6d7d7d7d8d8d8
+d7d7d7d7d7d7d7d7d7d7d7d7d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d6d6d6d6d6d6
+d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d5d5d5d5d5d5d5d5d5d5d5d5d4d4d4d1d2d2cececd
+cbcbcbcacac9cbcbcbcdcdcdd1d1d0d6d5d5dbdbdbe0e0dfe3e3e2e3e3e3e1e1e1e1e1e1
+e0e0e0e0e0e0e0e0e0dfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdddddddededededededddddd
+dddddddcdcdcdbdbdbdadadadbdbdbdbdbdbdcdcdcdcdcdcdbdbdbdadadadadadad8d8d8
+d8d8d8d8d8d8dadadadbdbdbdddddddedededddddddddddddddddddedededededededede
+dedededddddddadadad6d6d6d0d0d0ccccccc9c9c9c8c8c8c9c9c9cacacacccccccdcdcd
+cfcfcfd1d1d1d5d5d5d8d8d8dbdbdbdededee1e1e1e5e5e5e7e7e7e9e9e9e8e8e8e5e5e5
+e0e0e0dadadad3d3d3cdcdcdc8c8c8c7c7c7c6c6c6c7c7c7cacacacececed2d2d2d5d5d5
+dadadadededee2e2e2e6e6e6e9e9e9ecececefefeff1f1f1f3f3f3f5f5f5f7f7f7f9f9f9
+fafafafafafafbfbfbfcfcfcfdfdfdfdfdfdfefefefefefefefefefefefefefefeffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefe
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefdfdfdfcfcfc
+f9f9f9f5f5f5f1f1f1ececece6e6e6e2e2e2dedededbdbdad8d8d8d6d6d5d4d4d3d3d3d2
+d2d2d1d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2d2d2d3d3d3d7d7d7e0e0e0ecececf2f2f2
+f2f2f2f0f0f0edededecececebebebeaeaeaebebebeaeaeae9e9e9e8e8e8e8e8e8e9e9e9
+e7e7e7dededed4d4d4d1d1d1d2d2d2d2d2d2d4d4d4d4d4d4d5d5d5d4d4d4d5d5d5d5d5d5
+d5d5d5d6d6d6d6d6d6d6d6d6d6d6d6d7d7d7d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7
+d7d7d7d7d7d7d7d7d7d6d6d6d6d6d6d6d6d6d5d5d5d5d5d5d4d4d4d4d3d3d2d1d0d0cfce
+cecfcfcecfcfd0d0d0d3d3d3d6d6d6d8d7d7dbdbdbdfdfdfe1e0e0e0dfdfe0e0e0dfdfdf
+dfdfdfe0dfdfe0e0e0e1e1e1e1e1e1e0e0e0e0e0e0e0e0e0e0e0e0dfdfdfdfdfdfdfdfdf
+dcdcdcd8d8d8d4d4d4d4d4d4d7d7d7dadadadddddddedededededededededddddddcdcdc
+dcdcdcdddddddddddddddddddedededfdfdfdededededededfdfdfdedededadadad9d9d9
+d3d4d4cfd0d0cccdcdc9c9c9c6c6c6c6c6c6c7c7c7c9c9c9cbcbcbcececed1d1d1d4d4d4
+d8d8d8dcdcdce0e0e0e4e4e4e8e8e8e9eaeae7e8e8e5e5e5dfdfded7d7d7d0d0d0c8c8c8
+c2c2c2c0c0c0c2c2c2c5c5c5cbcbcbd2d2d2d9d9d9dfdfdfe4e4e4e9e9e9eeeeeef1f1f1
+f4f4f4f7f7f7f8f8f8fafafafbfbfbfcfcfcfcfcfcfdfdfdfefefefefefefefefefefefe
+fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfffeffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefdfdfdfcfcfcfafafaf8f8f8f7f7f7f5f5f5f4f4f4f3f3f3f3f3f3f2f2f2
+f1f1f1f1f1f1f1f1f1f0f0f0f0f0f0efefefeeeeeeebebebe6e6e6e0e0e0dcdcdce1e1e1
+e9e9e9efefeff3f3f3f3f3f3f0f0f0efefefedededecececebebebebebebebebebeaeaea
+ebebebebebebe9e9e9e3e3e3dfdfdfdcdcdcdadadadadadadadadad8d8d8d7d7d7d6d6d6
+d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d4d4d4d5d5d5d4d4d4d5d5d5d5d5d5d6d6d6d6d6d6
+d7d7d7d6d6d6d6d6d6d7d7d7d7d7d7d6d6d6d5d5d5d6d6d6d6d6d6d5d5d5d4d4d4d5d4d4
+d4d4d4d5d4d4d5d5d5d5d6d5d6d6d6d7d8d8d9d9d9dbdbdbdcdcdbdddddcdbdbdbdbdbdb
+dcdcdcdddddde0e0e0e2e2e2e4e4e4e4e4e4e3e3e3e1e1e1e1e1e1e0e0e0e0e0e0dcdcdc
+d8d8d8d2d2d2cfcfcfcfcfcfd2d2d2d6d6d6d9d9d9dcdcdcdedededfdfdfdedededddddd
+dddddddddddddddddddddddddddddddcdcdcdcdcdcd9d9d9d3d3d3ccccccc5c5c5c2c2c2
+c1c1c1c2c2c2c3c3c3c5c5c5c7c7c7cacacacfcfcfd3d3d3d6d6d6dadadadededee1e1e1
+e3e3e3e5e5e5e2e2e2dededed9d9d9d3d3d3ccccccc7c7c7c6c6c6c5c5c5c7c7c7cbcbcb
+d2d2d2d8d8d8dfdfdfe6e6e6ecececf1f1f1f4f4f4f7f7f7fafafafcfcfcfcfcfcfdfdfd
+fffffffffffffefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffefefefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfefefefefffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefefeffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefefefefefefefefefefefefefefe
+fefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfcfcfcfbfbfbfbfbfbf9f9f9f4f4f4eeeeee
+e7e7e7e3e3e3e6e6e6ebebebf0f0f0f3f3f3f3f3f3f1f1f1efefefefefefeeeeeeeeeeee
+edededececececececedededebebebe9e9e9e7e7e7e5e5e5e3e3e3e2e2e2e1e1e1e0e0e0
+dedededcdcdcdbdbdbdbdbdbdadadad9d9d9d8d8d8d7d7d7d5d5d5d5d5d5d5d5d5d5d5d5
+d5d5d5d5d5d5d4d4d4d4d4d4d5d5d5d5d5d5d6d6d6d5d5d5d6d6d6d6d6d6d6d6d6d6d6d6
+d8d8d8d9d9d9d8d8d8d6d6d6d5d4d4d6d6d6d8d8d8d8d8d8d9d9d8d8d8d8d8d8d8d8d8d8
+d8d8d8dadadadddddde2e2e2e6e7e6e7e7e7e7e7e7e5e5e5e3e3e3e3e3e3e3e3e3e0e0e0
+dcdcdcd8d8d8d4d4d4d3d3d3d2d2d2d3d3d3d5d5d5d8d8d8dbdbdbdedededfdfdfdedede
+dededededededddddddddddddddddddcdcdcd9d9d9d4d4d4cececec8c8c8c6c6c6c3c3c3
+c4c4c4c6c6c6cacacacececed2d2d2d6d6d6dadadadcdcdcdedededfdfdfdedededddddd
+d9d9d9d5d5d5d3d3d3d0d0d0d0d0d0d1d1d1d4d4d4d8d8d8dcdcdce1e1e1e7e7e7ebebeb
+efefeff2f2f2f7f7f7fafafafcfcfcfdfdfdfefefeffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefeffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfefdfefefefefffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefe
+fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fbfbfbf5f5f5eeeeeee8e8e8e4e4e4e7e7e7ebebebefefeff1f1f1f1f1f1f0f0f0f0f0f0
+efefefefefefeeeeeeeeeeeeefefefefefefeeeeeeededededededecececeaeaeae9e9e9
+e9e9e9e8e8e8e7e7e7e5e5e5e5e5e5e3e3e3e2e2e2e1e1e1dfdfdfdddddddbdbdbdadada
+d9d9d9d9d9d9d8d8d8d6d6d6d5d5d5d4d4d4d5d5d5d5d5d5d4d4d4d4d4d4d5d5d5d6d6d6
+d8d8d7d8d8d7d8d8d7d5d5d5d2d2d2d2d2d2d5d5d5d8d8d8dadad9d9d9d8d7d7d6d6d6d6
+d6d6d5d7d8d8dbdcdbe1e1e1e7e7e7eaeae9e9e9e9e8e8e8e7e7e7e7e7e7e6e5e5e6e5e5
+e4e4e4e2e2e1e1e1e1dedededadadad6d6d6d3d3d3d3d3d3d6d6d6d9d9d9dcdcdcdedede
+dfdfdfe0e0e0dededededededededededededcdcdcdbdbdbd9d9d9d7d7d7d5d5d5d3d3d3
+d1d1d1d1d1d1d3d3d3d6d6d6d7d7d7d7d7d7d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8dadada
+dcdcdcdededee2e2e2e5e5e5e9e9e9edededf1f1f1f3f3f3f6f6f6f8f8f8fbfbfbfcfcfc
+fdfdfdfefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefefefeffffffffffffffffff
+fffffffefefefefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfdfdfefefefffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfefefefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffefefefafafaf4f4f4eeeeeee7e7e7e3e3e3e2e2e2e4e4e4e5e5e5e6e6e6
+e8e8e8eaeaeaebebebedededeeeeeeeeeeeeeeeeeeefefeff0f0f0efefeff0f0f0efefef
+efefefefefefeeeeeeeeeeeeedededebebebebebebebebebeaeaeae9e9e9e7e7e7e5e5e5
+e4e4e4e3e3e3e3e3e3e0e0e0dedededcdcdcdbdbdbdadadad9d9d9d8d8d8d7d6d6d7d7d7
+d7d7d6d8d8d7d7d7d6d5d5d4d1d1d0cecececfcfcfd4d4d3dadad9dedfdedfdfdedfe0df
+e0e0e0e1e1e0e4e4e3e6e7e6e9e9e9ebecebebebebebebebeaeaeaeaeaeae8e7e7e9e8e8
+e9e8e7e8e8e7e7e7e7e6e6e6e3e3e3dededed8d8d8d3d3d3d2d2d2d3d3d3d6d6d6d8d8d8
+dbdbdbdddddddddddddddddddedededededededededededededededddddddcdcdcd9d9d9
+d4d4d4d0d0d0cbcbcbcbcbcbcccccccfcfcfd4d4d4d9d9d9dededee3e3e3e8e8e8ececec
+f0f0f0f3f3f3f6f6f6f8f8f8fafafafcfcfcfdfdfdfefefefefefeffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfefefefefefefe
+fdfdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fefdfefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfdfefefefeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffefefefdfdfdf9f9f9f3f3f3ececece5e5e5e0e0e0dcdcdc
+dadadad9d9d9d9d9d9dadadadcdcdcdededee0e0e0e2e2e2e4e4e4e7e7e7e9e9e9ececec
+eeeeeeefefeff0f0f0f0f0f0f0f0f0f1f1f1f1f1f1f0f0f0f0f0f0efefefefefefefefef
+eeeeeeedededecececebebebeaeaeae9e9e9e8e8e8e6e6e6e4e4e4e2e2e2e1e0e0dedede
+dddddcdcdcdcdbdbdad9d9d8d6d6d5d2d2d1cececdcccccccfd0cfd7d7d7dededde5e5e4
+eaebebeeeeedefefefeff0efeeefeeeeeeedeeedededededececececececebebebebebeb
+ebebeaebeae9eaeaeaeaeaeae9e9e9e8e8e7e3e2e2dcdcdcd7d7d7d4d4d4d3d3d3d4d4d4
+d5d5d5d6d6d6d8d8d8d9d9d9dadadadcdcdcdcdcdcdcdcdcdadadad4d4d4cdcdcdc4c4c4
+bebebebcbcbcbfbfbfc7c7c7d1d1d1dbdbdbe4e4e4ebebebf1f1f1f5f5f5f7f7f7fafafa
+fcfcfcfdfdfdfefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfe
+fefefefffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfefeffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefefefcfcfcf9f9f9f5f5f5f0f0f0
+eaeaeae5e5e5e0e0e0dcdcdcd8d8d8d6d6d6d6d6d6d4d4d4d3d3d3d4d4d4d5d5d5d7d7d7
+dadadadededee1e1e1e4e4e4e7e7e7e9e9e9ecececeeeeeef0f0f0f1f1f1f2f2f2f3f3f3
+f3f3f3f3f3f3f2f2f2f1f1f1f1f1f1f1f1f1f1f1f1f0f0f0efefefeeeeeeedededececec
+eae9e9e8e8e8e6e6e6e5e5e4e2e2e1dfdfdedbdad9d5d5d4cfcfcfcccccccdcdcdd1d1d1
+d7d7d6dededde4e4e3e9eae9eeeeeef0f0eff0f1f0f1f1f0f0f1f1f1f1f0f1f0f0f0efef
+efefefefeeeeedededeeeeeeedeeeeecececebeaeae9e8e8e4e4e4dfdfdfdcdcdcdadada
+dbdbdbdcdcdcdedededfe0dfe0e0e0dedededadadad3d3d3c9c9c9bebebeb8b8b8b6b6b6
+bcbcbcc8c8c8d4d4d4e0e0e0e9e9e9f1f1f1f6f6f6fafafafcfcfcfdfdfdfefefefefefe
+fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfefdfefefefeffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefdfeffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fcfcfcf9f9f9f7f7f7f4f4f4f0f0f0ededede9e9e9e6e6e6e2e2e2dfdfdfdbdbdbd9d9d9
+d6d6d6d5d5d5d5d5d5d5d5d5d5d5d5d6d6d6d8d8d8dadadadddddde1e1e1e5e5e5e8e8e8
+ebebebedededf0f0f0f2f2f2f4f4f4f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f4f4f4f3f3f3
+f2f2f2f2f2f2f1f1f1f1f0f0efefeeedececebeaeae9e9e9e5e5e5dfdfded9d9d9d1d2d2
+cbcbcbc7c7c7c6c6c6cacac9d2d2d1dadadae1e1e0e4e5e4e7e7e7e9e9e9eae9e9edeceb
+efefeef0f0eff0f0f0f1f1f1f1f1f1f1f1f0f0f0f0efefefefefeeececebeae9e9e6e5e5
+e2e3e3e1e1e1dfdfdfdbdcdcd5d6d6cdcdcdc5c5c5bdbdbdb9b9b9bbbbbbc2c2c2cdcdcd
+dadadae6e6e6efefeff5f5f5f9f9f9fdfdfdfefefefefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefdfefefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefdfdfdfcfcfcfbfbfbfafafaf8f8f8f6f6f6f4f4f4f2f2f2
+efefefececece9e9e9e6e6e6e2e2e2dfdfdfdcdcdcd9d9d9d7d7d7d6d6d6d5d5d5d6d6d6
+d6d6d6d8d8d8dadadadededee3e3e3e7e7e7eaeaeaeeeeeef1f1f1f3f3f3f5f5f5f6f6f6
+f5f5f5f6f6f6f5f5f5f5f5f5f4f4f4f4f3f3f3f3f3f3f3f3f3f3f3f2f1f1efefefececec
+e7e7e7ddddddd2d2d2c5c5c5bbbbbbbababac2c2c1c9c9c9cccccccbcccccacac9cececd
+d4d4d4d9d9d9dcdcdcdedededfdfdfdfdedededededcdddddbdbdbd8d8d8d4d4d4cecece
+c8c9c9c4c4c4c2c2c2c1c1c1c0c0c0c0c0c0c1c1c1c6c6c6cececed7d7d7e1e1e1ebebeb
+f3f3f3f8f8f8fcfcfcfefefefefefeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfdfdfefdfefefefefffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefdfefefefeffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefe
+fdfdfdfcfcfcfbfbfbfafafaf8f8f8f6f6f6f4f4f4f2f2f2eeeeeeebebebe7e7e7e4e4e4
+e1e1e1dddddddadadad8d8d8d6d6d6d5d5d5d6d6d6d7d7d7dbdbdbdededee3e3e3e9e9e9
+eeeeeef3f3f3f6f6f6f6f6f6f6f6f6f5f5f5f5f5f5f5f5f5f6f6f6f6f6f6f7f7f7f6f6f6
+f6f6f6f4f4f4f1f1f1e9e9e9d8d8d8c2c2c2b6b6b6b9b9b9bdbdbdbdbdbdc0c0c0c6c6c6
+cdcdcdd0d0d0d0d0d0d0d0d0cecececccccccacacac8c8c8c7c7c7c5c5c5c4c4c4c2c2c2
+c4c4c4c6c6c6cacacad0d0d0d6d6d6dbdbdbe1e1e1e8e8e8eeeeeef4f4f4f7f7f7fbfbfb
+fdfdfdfefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfefdfefffffffffffffffffffefdfefefdfefefdfefefdfefdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefdfe
+fefdfefefefefefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffefefefefefefefefefdfdfdfcfcfcfafafaf8f8f8
+f7f7f7f5f5f5f2f2f2efefefececece8e8e8e4e4e4e1e1e1dddddddcdcdcdddddde0e0e0
+e5e5e5ebebebf1f1f1f6f6f6f8f8f8f7f7f7f6f6f6f6f6f6f6f6f6f8f8f8f9f9f9f8f8f8
+f7f7f7f7f7f7f7f7f7f8f8f8f6f6f6e8e8e8ccccccb2b2b2adadadb9b9b9ccccccdadada
+e1e1e1e2e2e2e3e3e3e4e4e4e5e5e5e3e3e3e2e2e2e0e0e0e0e0e0e0e0e0e1e1e1e2e2e2
+e5e5e5e8e8e8ecececf0f0f0f3f3f3f6f6f6f9f9f9fbfbfbfcfcfcfefefefefefeffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfefdfefefdfefefdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfefefefefefefefefefefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefdfdfdfcfcfcfbfbfbfafafaf8f8f8f6f6f6f2f2f2eeeeeeeaeaea
+e7e7e7e8e8e8ecececf1f1f1f6f6f6f8f8f8f8f8f8f5f5f5eeeeeee9e9e9ecececf6f6f6
+f9f9f9f9f9f9f8f8f8f8f8f8f9f9f9f6f6f6e4e4e4bbbbbba0a0a0afafafd1d1d1e3e3e3
+e5e5e5e3e3e3e6e6e6edededf5f5f5f9f9f9fafafaf9f9f9f9f9f9f9f9f9f9f9f9fafafa
+fbfbfbfcfcfcfcfcfcfdfdfdfefefefefefeffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefefefefefefefefefefefefefefe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfdfdfafafa
+f6f6f6f2f2f2efefefefefeff1f1f1f4f4f4f8f8f8f8f8f8f2f2f2e4e4e4d7d7d7dbdbdb
+edededfafafafcfcfcfbfbfbfafafaf7f7f7e9e9e9c7c7c7a3a3a3abababcececee4e4e4
+e3e3e3d8d8d8d3d3d3ddddddebebebf6f6f6fcfcfcfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfdfefdfdfefdfdfefdfdfefdfdfefefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefcfcfcf8f8f8f2f2f2efefefefefeff3f3f3f8f8f8fbfbfbf8f8f8ebebebd5d5d5
+c5c5c5cbcbcbe1e1e1f3f3f3fbfbfbfcfcfcf7f7f7e3e3e3c1c1c1b2b2b2c5c5c5dcdcdc
+e4e4e4dcdcdcccccccc7c7c7d1d1d1e0e0e0efefeff8f8f8fdfdfdfefefeffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfdfffefeffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffefefefafafaf4f4f4f0f0f0efefeff1f1f1f6f6f6fbfbfbfcfcfcf4f4f4
+ddddddbdbdbdabababb3b3b3cccccce5e5e5f5f5f5f9f9f9eeeeeed6d6d6c7c7c7cdcdcd
+d9d9d9e0e0e0dcdcdcd0d0d0c6c6c6c9c9c9d5d5d5e5e5e5f1f1f1f9f9f9fcfcfcfefefe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefefefefefefefefefe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffdfdfdfbfbfbf7f7f7f1f1f1eeeeeeeeeeeef2f2f2f7f7f7f9f9f9
+f8f8f8ecececd4d4d4bbbbbbb1b1b1b8b8b8cacacadededeeeeeeef1f1f1e4e4e4d1d1d1
+ccccccd4d4d4dddddddededed6d6d6ccccccc7c7c7cdcdcddadadae8e8e8f3f3f3fafafa
+fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefefefefefefefefefefdfdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfcfbfcfcfbfcfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfd
+fefdfefefdfefefdfefefdfefefdfefefdfeffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffdfdfdf9f9f9f2f2f2ececece8e8e8e7e7e7eaeaea
+edededf2f2f2f5f5f5f2f2f2e9e9e9ddddddd3d3d3cfcfcfd3d3d3dcdcdce5e5e5e4e4e4
+d5d5d5cbcbcbcfcfcfd8d8d8dedededbdbdbd2d2d2c9c9c9c7c7c7d0d0d0dededeececec
+f7f7f7fbfbfbfefefefefefeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffefefefdfdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfcfbfce6e5e6cac9cac2c1c2c0bfc0c2c2c2ecebecfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefefefefefefefefefefefeffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffefefefcfcfcf7f7f7efefefe7e7e7e1e1e1
+dcdcdcdcdcdce0e0e0e6e6e6edededf2f2f2f4f4f4f1f1f1ebebebe4e4e4dfdfdfe4e4e4
+e4e4e4dcdcdcd2d2d2d1d1d1d7d7d7dcdcdcdbdbdbd3d3d3c8c8c8c1c1c1c7c7c7d4d4d4
+e4e4e4eeeeeef5f5f5f9f8f8fcfcfcfdfdfdfefefefefefefefefeffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfde8e7e893908e5a53444b422f42392738342b8a8a89f8f7f8fdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfcf8f8f8f2f2f2
+ebebebe4e4e4e0e0e0dddddddddddde0e0e0e4e4e4e9e9e9efefeff2f2f2f2f2f2f0f0f0
+f0f0f0f0f0f0ebebebe4e4e4e1e1e1e0e0e0e0e0e0dededed8d8d8cfcfcfcacacacacaca
+d0d0d0d8d8d8dfdfdfe6e5e5ececebf0f0eff3f3f2f5f5f5f7f6f6f8f8f8f9f9f9fafafa
+fbfbfbfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdc4c3c3847a64a4863ea9873394762c7561312a2823e6e6e7fdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfcfbfcf2f1f2
+dedddecccbcccbcacbc6c5c6c7c6c7cfcfcfe6e5e6f9f9fafdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefe
+fcfcfcfafafaf7f7f7f3f3f3eeeeeeeaeaeae5e5e5e2e2e2e0e0e0e0e0e0e2e2e2e7e7e7
+eaeaeaedededf0f0f0f2f3f2f3f3f3f2f2f2f0f0f0eeeeeeecececebebebe7e7e7e2e2e2
+dcdcdcd9d9d9d7d7d6d9d9d8dcdcdcdededee1e1e0e3e3e3e4e3e3e5e5e5e7e7e6e9e9e9
+ebebeaedededf0f0f0f1f1f1f2f2f2f3f3f3f3f3f3f3f3f3f3f3f3f4f4f3f5f5f5f6f6f6
+f7f7f7f9f9f9f9f9f9fafaf9fbfbfafbfbfbfcfcfcfdfdfdfefefefefefefefefeffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdc5c4c3a18f66c4992abc8f17a07a138b6d1c332e24dcdcdcfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf4f3f4d1d1d1b4b3b3999895
+8f8c83857e6f94897195886c8f846c847e72898884a7a6a6dedddefbfafbfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefdfdfdfcfcfcf8f8f8f4f4f4eeeeeee8e8e8e3e3e3dfdfdf
+dcdcdcdcdcdcdddddddedfdedfdfdfe2e2e2e6e6e5e7e7e7e9e9e8ebebebeeeeeef1f1f1
+f1f1f1efefefebebebe9e9e9e8e8e8e7e7e7e6e6e6e5e5e5e3e3e2e1e1e0dfdfdedfdfde
+dedededfdfdfe1e1e1e2e2e2e4e3e3e5e5e4e6e6e5e5e5e4e4e4e4e3e3e3e3e3e2e3e3e3
+e5e5e5e8e8e7e9e9e8eaeaeaebebeaedececeeeeeeefefeff1f1f0f3f3f2f5f5f4f7f7f6
+f8f8f8fafaf9fafafafbfbfbfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefe
+fefefefffffffffffffefefeffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdc6c5c4a19066c1972bb98d1c9f7a188b6d1d373227ddddddfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf1f0f1c4c3c3a2a09f8f897b978662a38741
+b99433c49d36cfa849cea955cca74ebf9b3ca3863e82745776746fbfbebff6f6f6fdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefefefdfdfdfbfbfbf7f7f7f3f3f3
+eeeeeee9e9e9e3e3e3dededed8d8d7d3d3d3d2d2d1cfd0d0cfcfcecfcececfceced5d4d4
+e0dedeeaeae9edededefefeff0f0f0f2f2f2f2f2f2f3f3f3f2f2f2f1f1f1efefefededed
+ecececebebebebebebececececececededededededecececeaeaeae8e8e8e4e4e4e1e1e1
+e1e1e1e2e2e2e4e4e4e4e4e4e3e3e3e3e3e3e1e1e1dfdfdfdededee0dfdfe2e2e1e4e4e3
+e6e6e5e7e7e6e9e9e8ebebeaeeeeedeeeeeeefefeff0f0f0f0f0eff1f1f0f2f2f1f3f3f2
+f4f4f4f6f6f6f8f8f8f8f8f8fafafafbfbfbfdfdfdfdfdfdfefefefefefeffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdc7c6c4a19067c19829b98e1aa07b168b6d1c363126dededefdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfcfbfcf2f1f2c8c7c79d9c998c8472a08a52c59e3ae1b031f2bb28
+deb144a88d42927d488f7d53958151a98e4acaa64cd3a94191793e5d5950bdbdbdf8f7f8
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefe
+fdfdfdfbfbfbf8f8f8f5f5f5f1f1f1ececece7e8e7e3e3e2dfdfdedbdbdad7d6d6d4d3d2
+d5d4d3dadad9d7d6d6d2d1d1d2d2d1d5d5d4d7d6d6dddddde2e2e2e5e5e5e8e8e8ececec
+eeeeeeefefefefefefefefefefefeff0f0f0f0f0f0f1f1f1f2f2f2f3f3f3f3f3f3f3f3f3
+f3f3f3f2f2f2f3f3f3f2f2f2f2f2f2f0f0f0eeeeeeeaeaeae8e8e8e6e6e6e4e4e4e3e3e3
+e1e1e1e0e0e0e0e0e0e1e1e0e2e2e2e2e2e2e3e3e3e4e4e4e3e3e3e2e2e2e1e1e1e1e1e1
+e3e3e3e4e4e4e6e6e5e7e7e7eaeaeaececebedededf0f0eff3f3f3f6f6f6f9f9f9fbfbfb
+fdfdfdfefefefefefefefefefffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdf1f0f1d4d4d4bcbcbcb4b4b4b4b4b4b5b4b5b5b4b5b5b4b5b5b4b5b5b4b5b5b4b5
+b5b4b5b5b5b5b3b3b38c8b8a91805ac09936b89029a17e238c6f273632288b8a8abab9ba
+b7b7b7b9b8b9b9b9b9babababbbbbbbcbbbcbcbbbcbcbbbcbcbbbcbcbbbcc5c5c5e1e1e1
+f9f8f9fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdf5f4f5d7d7d7aaaaaa82807e746d5f937f4cb89433d5a628e8b221f1b924bc9b48
+65593f83817aafaeacbfbebdbcbbb9a6a39e8a816ba98f4fd6aa3b957c3f59564fd3d2d3
+fcfbfcfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefefefefdfdfdfcfcfcfafafaf8f8f8f7f7f7f5f5f5f1f1f0
+efefeeebebebe5e5e5dededdd9d9d9d6d6d5d2d2d1cfcfcfcdcdcdcac9c9cccbcbcfcfce
+d1d1d1cdcdcdcbcac9c9c8c8c7c7c6c8c7c7c8c8c8cacacad1d1d1dbdbdbe0e0dfe2e2e2
+e3e3e3e3e3e3e4e3e3e4e4e4e9e9e8edeeedf1f1f1f3f3f3f4f4f4f4f4f4f4f4f4f4f4f4
+f3f3f3f2f2f2f1f1f1f0f0f0f0f0f0f0f0f0f1f1f1f0f0f0eeeeeeebebebe7e7e7e4e4e4
+e2e2e2e1e1e1e0e0e0e0e0e0e0e0e0e0e0dfdfdfdfdedededfdfdfe2e2e2e7e7e7ececec
+f1f1f1f5f5f5f8f8f8fbfbfbfdfdfdfefefefffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfcfbfcfcfbfcfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdefefef
+b3b3b3807d7980796a91866b94876a94876a94876a94876a94876a94876a94876a94876a
+94876a94876b93866a908365ac9664cbab60c9a85cc0a058b799588c7c5786795e8b8065
+8479617d735c756c576d6452635c4c585345524d41504b3f4f493f4e493f4c4840474543
+777675c7c6c7fbfafbfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf6f5f6e1e1e1bebdbe
+9594937978745a574f69604a7562368d6f22ac861ec59820d6a521e5b021b697495a5344
+a1a09fe4e4e4f5f5f5fafafaf8f8f8efefefd0d0d0969289a99057dbae3d7b693d8e8d8b
+f0eff0fdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefe
+fefefefbfbfafafaf9f8f8f8f5f5f4f2f2f1f0f0efeeeeedeaeaeae7e7e7e3e3e3dfdfde
+dbdbdbd5d5d4d0d0d0cecdcdcdcdcdcdcccccdcdcccccbcbcecdcdcfcfcecccbcac6c5c5
+c2c1c1bdbdbdbab9b9bfbebec5c5c5c9c9c9cfcfcfd2d1d1d4d3d3dadadae0e0e0e2e2e2
+e4e4e4e7e7e7ebebeaefefefefefefefefefefefeff1f1f1f3f3f3f3f3f3f2f2f2eeeeee
+ebebebe7e7e7e5e5e5e5e5e5e6e6e6e6e6e6e5e5e5e2e2e2ddddddd9d9d9d9d9d9dadada
+dddddde1e1e1e6e6e6ebebebf0f0f0f5f5f5f9f9f9fcfcfcfdfdfdfdfdfdfcfcfdfdfcfd
+fdfcfdededed9a99997b7a795b5a597d7c7c898888888787888787888787888787888787
+8887878887878887878584848382828584848887878d8c8c8d8c8c8d8c8c8c8b8b8f8e8e
+a5a5a5bbbbbbc1c0c1c8c8c8cac9cac9c9c9c9c9c9c9c9c9c9c9c9c7c7c79e9d9e62615e
+9c9075c8a654e2b236e8b52ce9b52ce9b52be9b52be9b52be9b52ae9b52ae9b529e9b428
+e9b427e9b427e9b326eab425edb82befbb32efba33eeb931ebb72fe6b126ddaa24d0a122
+c1951fad851d9573197d6116664f1253400f44350d3d2f0b3a2d0b3a2d0b3a2d0c3c3011
+3c342433312f5c5c5cb4b4b4cfcfcfcececeb5b4b58f8e8e666666484846524f48565043
+544a35584b2a594615644e11785c138e6d17a6801bbb9120d1a01cc69f42554b369a9a99
+f1f1f1fffffffffffffffffffffffffffffffcfcfcd8d7d78b877ebf9b42c4a253544f42
+dad9dafcfbfc
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffefefefefefefefefefdfcfcfbfcfcfbfafaf9fafafa
+f7f7f6f6f6f6f4f4f4f2f2f2f2f2f2f2f2f2f2f2f2f2f2f1f1f1f1efefeeedececeae9e9
+e5e5e5e1e1e1dedededddddddcdcdcd8d8d8d5d4d4d1d0d0cdcdcdcdcdcdcbcbcac5c5c4
+c3c1c2c3c1c1c8c8c8cacacac7c7c7c6c6c6c6c6c6c8c8c7cac9c9cccacad1d0d0d4d4d4
+d3d3d3d1d1d1d4d4d4dadadae1e1e1e6e6e6e9e9e9e9e9e9e6e6e6e3e3e3e0e0e0dedede
+dddddddbdbdbdadadadad9d9dddcdce3e3e3eaeaeaf1f1f1f7f7f7fbfbfbfcfcfcfdfcfd
+faf9faa3a2a1877c62b59a5ebc9d5cb99c5fb99d60b99e60b99e60b99e60b99e60b99e61
+b99e61b99e61ba9e61b79c61a99360a38e5ea08c609e8b619788619485618d7f5f87795e
+81765d7e745e78705b726b59726b58726b58726b58726b58726b58726a586e6654837659
+d0b26ce6bf66e1bb66e0bb67e0bb68e1bd69e1bd6be2be6ce3bf6fe4c171e4c274e4c376
+e6c579e7c67ce8c880e9ca83eacc87eace8aeacf8be9ce8be8cd8ae7cb88e3c785dfc280
+d8bb7aceb373c3a96bb79d63aa925aa0895397814e917b498c7646897343867141846d3d
+816b3b7465445c55465953455650434f493e4641373d382f36322a504936675836655531
+62532e62522f624f27604a126f55128566179c781bb58c1ccc9d2189744365635fe4e4e4
+fffffffffffffffffffffffffffffffffffffffffffdfdfdb1b1b1998a67deb240655837
+b2b2b1f9f8f9
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffefefefdfffffffffffffffffffffffffffffffefefe
+fdfdfdfcfcfcfbfbfbfbfbfbfcfcfcf9f9f9f9f9f8f6f6f6f5f5f5f1f1f0ededede9e9e9
+e5e5e4e2e2e1dfdfdfdbdbdbd7d7d7d5d5d5d4d4d4d4d4d4d2d3d2d0d0d0d0d0d0d0d0cf
+cdcdcdcbcbcacbcacacecececfcfced2d1d0d3d1d1d7d6d6dededddfdfdfdfdfdfe0e0e0
+e0e0e0e0e0e0dcdcdcd9d9d9d5d5d5d5d5d5dcdcdce4e4e4eeeeeef6f6f6fbfbfbfdfcfd
+f6f5f6aea797d2a635f5ba1af6be28f6bf2ef7bc22f6bb1cf6bb1af6bb1af6bb1af6bc1b
+f6bb1bf6bb1bf6bb1bf6bc1af6bc1bf6bc1bf7bc1cf7bc1cf7bc1cf8bc1cf8bc1ef8bc1e
+f8bd1ef8bd1ff8be22f8bf26f8bf26f8bf27f8bf27f8bf27f8bf27f8bf29f8c02bf8c02d
+f6c033f5c039f5c03cf6c140f6c346f7c44bf7c753f7c95ef7cb6af7cd73f8d17cf8d584
+f9d88df9db96fadfa0fbe2a9fbe4b1fbe7b7fce9bcfceabffceabffdeabdfce9bafce6b3
+fce4abfce1a2fbdd99fbda8ffad787fad37ef9d076f8cd6df4c760eebf53e6b749d9ad3e
+cba034bb9328a9841f967419856616745913664e115b460f523e0c49370a46360c47360e
+47360e47370f53431f6553296950117c5f15937219ad8418b79132584c33969695f4f4f4
+ffffffffffffffffffffffffffffffffffffffffffffffffd8d8d88d887dd2a735877446
+888784f5f4f5
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefefdfdfd
+fcfcfbfcfcfbf9f9f9f9f9f9f7f7f7f6f6f6f5f5f4f5f5f4f5f5f4f4f4f3f2f2f1f0f0ef
+eeeeedededecedededebebeaeaeae9e6e6e5e1e0dfdddcdcd8d8d7d3d3d2d5d4d3d6d6d5
+d7d7d7d6d6d6d3d3d3d0d0d0cfcfcfd2d2d2d9d9d9e3e3e3ecececf4f4f4fafafafdfcfd
+f3f2f3aba290c59d35e1af28e0af2adfad2be3b029e3b028e3af28e4b028e5b128e7b328
+e6b228e6b127e8b328e9b429ebb629ecb729eeb829f0b92af2bb29f3bc29f4bc29f6be29
+f6bf29f7bf29f8bf28f8bf27f8bf27f8bf27f8bf28f8bf28f8c029f8bf2bf8c02cf8c02d
+f8c02ff8c032f8c135f8c239f8c33ef8c544f9c74cf9ca57f9cc65f9ce72fad27afad582
+fad88dfbdd97fce1a0fce3aafce6b2fce8bafdebbffdebc1fdebc1fdebc0fce9bbfce6b4
+fce4abfce1a2fbdc98fad98ef8d484f6ce7af2c970edc363e7bb54dfb247d4a93cc69c31
+b79028a7822296741c846617735813654e115a450e503d0c48370b46350a44330a43320a
+43320a42310a4b3b1464532a644e13765a138d6c18a67f16a5853748402fb0b0b0f9f9f9
+ffffffffffffffffffffffffffffffffffffffffffffffffe8e8e88d8a85caa4428b784b
+7f7d7af4f3f4
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfefdfdfefdfdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefffffffefefdfefefdfefefdfffffefefefefdfdfcfdfdfc
+fdfdfcfdfdfdfdfdfdfcfcfbfcfcfbfafafaf9f9f9f7f7f7f4f4f4efefefe9e9e8e5e4e3
+e2e1e1dedfdfdcdcdbdbdbdbdcdcdcdededee5e5e5ebebebf2f2f2f7f7f7fbfbfbfdfcfd
+eeeeee9f9889a8862fbc9120bd9324c19625c59924c59924c49824c79a22ca9c22cb9c23
+c99b22c99b22cb9d23cea024d2a324d6a625daa926deab26e2ae27e5b128e8b328ebb529
+eeb829f2bb2af4bc2bf5be2bf7bf2bf8c02bf8c02bf8c02bf8c02bf8c02cf8c02df8c02e
+f7c031f7c034f7c136f7c23af7c33ff8c548f9c851f9cb5df9ce6bfad075fad47efad787
+fbda92fbdf9dfce2a8fce5b1fde9bafdecc3fdedc8fdeecbfdeecbfdeec9fdecc4fdeabc
+fce6b3fbe3a9fadd9df8d892f6d387f2cd7ceec771e7c065deb556d3ab47c89f3bb79130
+a6832796752085671b745a16664f125b4610523f0e4b390d47360b44330b44330b44330b
+44330b44330b4d3e18615027614b107157138668179f7a15a483324b422fa4a3a3f7f7f7
+ffffffffffffffffffffffffffffffffffffffffffffffffe0e0e08c8881cea53d8a7648
+848380f5f4f5
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefffffffffffffefefefefefe
+fefefefefefefefdfefdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffefefefdfdfdfdfdfdfbfbfb
+f8f8f8f5f6f6f3f4f4f2f2f2f2f2f2f2f2f2f5f5f5f8f8f8fafafafcfcfcfdfcfdfdfcfd
+f5f4f5aaa8a383724c8a6e258e70219072238f71259173249475249473219a78229f7b22
+9d791e9b781a9f7a19a37e19a9821aaf871bb68c1ebc9120c29622c89a23cd9f24d3a324
+dba925e2af27e8b428edb729f1ba2af3bc2af5be2bf6be2bf7bf2bf8c02cf8c02df8c02f
+f8c031f8c134f8c136f8c33af8c440f9c649f9c953f9cb5ff9ce6dfad077fad481fad88b
+fbdc95fbe0a1fce4acfce7b7fdebc1fdeec8fdefcefdf0d2fdf1d2fdefcffdeecafdebc3
+fbe7b8fae3acf9dea1f7d995f3d188edca7ce8c370dfb964d4ad54c8a146b99438a7842c
+96752486681d765c186850145c471152400f4b3a0d47370c46350b44330b44330b44330b
+44330b44340c5344205b4a205d470e6e5413816416977316a883255f52337b7a78ededed
+ffffffffffffffffffffffffffffffffffffffffffffffffc2c2c28b8270d7aa367c6c41
+9f9e9cf7f6f7
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffefefefefefefefdfdfefdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fefdfefefefefefefefefefefefefefefefefefefefefdfdfefdfdfefdfdfefdfdfefdfd
+fefdfdfefdfdfefdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfd
+fefdfdfefdfdfefdfdfefdfdfefdfefefefeffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffefefefefefefdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefefdfefdfcfd
+fdfcfde0dfe09f9e9c7c786d746b596f654e6f654d71674f72685072685074684e6e5f3f
+61512b6150236552206b551c745b1c7c611a86681a8e6e179471179a7618a27d1bac851e
+b78d1fc39722cfa024d9a825e1af27e8b328edb729f0ba29f3bc2bf5bf2df7bf2df7c02e
+f8c031f8c134f8c236f8c33af8c441f9c649f9c953f9cc60f9ce6efad078fad481fad98c
+fbdd97fbe1a3fce4affce9b9fdecc4fdeeccfdf1d2fdf2d6fdf2d6fdf1d3fdefcdfcecc5
+fbe8baf9e3aef7dda3f4d795eece87e8c57ae0bc6dd5b161c9a450b99541a98833977728
+856820765c1a6951155d481254410f4d3b0d48380c46360b45340b44330b44330b44330b
+44330b4738125849265542145b460e6a51127b5f158e6d17a37d1886703a4c4941c1c0c0
+fcfcfcffffffffffffffffffffffffffffffffffffededed989795a58d54d8af48685d43
+cdcdcdfbfafb
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffefefffefefefefefefdfefdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fefdfefffffffffffffffffffffffffffffffffffffffefefffefefffefefffefefffefe
+fffefefffefefffefefefefefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefefefffefe
+fffefefffefefffefefffefeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfd
+fdfcfdfdfcfdf6f5f6dbdadbc2c1c2b6b5b5b5b5b4b7b7b6b7b7b6b9b9b8b5b4b3a09e9d
+8b8a8888878383817c7d7a737872666f6654685b3e58471d65511c6f571a765b147e6114
+88691796741aa6801db58b1fc29622ce9f24d8a725e0ad27e7b329edb82bf1bb2df4bd2d
+f6bf31f7c133f8c236f8c33bf8c442f9c649f9c954f9cc60f9ce6ffad178fad581fad98c
+fbdd98fbe1a4fce5b0fce9bbfdedc4fdefccfdf1d4fef3d7fef3d7fdf2d4fceecefbecc5
+fae7baf7e1aef4dba1efd393e9ca84e0c076d6b368c9a75cbb994ca9883a997a2f866a24
+765d1c6952165f4a135643114e3c0e49380d47360c46360b45340b44330b44330b44330b
+43330b51422056461f4f3c0c5a450f664e11755a148466169572159f7e295c4f325d5c59
+c8c8c8fcfcfcfffffffffffffffffffefefeeaeaeaa3a3a2857a62d3a93da98e4a7b776f
+e8e8e8fdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefdfefdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfcfbfc
+faf9faf6f5f6eeeeeee4e3e4d4d4d4c3c2c3b0aead8785816e6a5f584f3b4a3c1b594718
+634d126c5210785d1387681795731aa47f1cb38a1fc19521cea024dbaa27e3b02aeab62c
+f0bb2ff3be33f6c035f7c23bf7c441f9c649f9c953f9cb60f9ce6efad178fad481fad98c
+fbdd97fbe1a4fce5affce9bafdecc3fdeecbfdf1d2fdf2d5fdf2d5fcf0d2fbedcbfae9c3
+f8e5b8f5deabf0d79eeace8fe2c480d7b871caa962bb9b55ab8b45997b35886d29775e20
+6953195f4a145743124f3d104a390d47370c47360c46360b45340b44330b44330b443309
+4d3d1b5546234c3b0f4e3c0c59450f624c116e55137a5e1587681696731591752c594e33
+5b5a58a4a4a4cececee1e1e1ddddddbfbfbf92918f7d735dbb9740caa44373684ebcbbba
+f8f7f8fdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfe
+fefdfefefdfefefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfaf9faecebeccfcfcfb1b0af83817d5d584c
+463c254b3c17594511614a0d6a5211765b14846616937119a6811db88f21c89b24d6a628
+e1af2de9b631efbb34f3bf39f5c240f7c548f9c852f9cb5ef9ce6dfad077fad480fad88a
+fbdc95fbe0a1fce4abfce7b7fceac0fcecc7fcefcdfcf0d0fcefcffbedcdfaebc7f8e7bd
+f5e2b3f0daa5ebd198e2c688d8bb79cbad6abd9e5bac8f4d9a7e3c896e2f7a61246a541b
+604b17584413503e104b3a0f47370d47360c47360c46360b45340b44330b43320a493915
+5647274c3c1348360a4f3d0d57430e5e4910664e116f5513785d14836515906e16917427
+6c5a32655d4d726f697d7b78827f7a7f7867957f4bc59f3ec29d4083744fa09e9beeedee
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefdfefefdfefefdfefefdfefefdfefdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf9f8f9e7e6e7c8c7c7
+9897955e5b52423926483915503d0c55410c5e4810695112795d158b6b19a07b1db48c21
+c69a26d5a62ce1b031eab836f0bd3ef4c246f7c650f8c95cf9cd6bf9cf75fad37efad787
+fbda92fbde9cfce2a7fce5b1fbe8b9fceac0fcecc5fbecc8faebc7faebc5f8e6bef5e2b6
+f1dcaaebd39de3c98ed8bd7fcbb06fbda160ad91529b80448a71357a62296d5720614c18
+5946155240114c3b1049380e47360c47360c46360b45350b44330b43320a493916504122
+4a3a1446350a48370a4e3b0b54400b59440b5e470b634b0c6a510d72580e7d5f0f8a690e
+94721c9474219275278e7949a3863ebb9531c49f43ad924f7f7459a2a09deae9e9fcfbfc
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfefefdfefefdfe
+fefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfbfafb
+efeeefd3d2d2969594514d4340371f49390e4a380a4e3c0d58430f654e12755a15896a19
+9f7b1eb48c25c69b2ad6a830e1b239eaba42f0c04bf4c657f7ca66f8cd71f9d179fad583
+fad98dfbdc96fbdfa0fbe2a8fbe4b0fae7b8fbe8bcfae8bef9e7bdf7e5baf3e0b3f0dbab
+e9d39fe2c992d7bd83cbb074bda164ad92569d83498b733b7c642e6e5823634e1c5a4716
+5441134e3d114a390f47370d47360c47360c46360b45340b42330b4b3c1a534424483811
+4534074a390a4b3a0d4d3c124e3f1850401e50411f4a3d1e493d1e4f43235648275f502a
+68582e725f3279663676684782704589764782765a8f8b82c2c1c0edecedfcfbfcfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffefffffefffffefffefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfcfbfcf0eff0cccbcb73716d37322647381547360847350b4d3b0e56430f634d12
+755b16896b1c9f7c22b48d28c69b31d5a93ae1b343e9bc4feec25df2c96bf6cc74f7d17d
+f8d586f9d88ff9db98f9dea0f9e0a7f9e2adf8e2b0f6e0b1f3deb0f1dcadecd6a4e6cf9b
+dec690d4bc83c8ae74baa166ab92579b824a8b733e7c65326f592764501f5c4919564315
+513f114d3c1149380e47370d47360c47360c47360a48360b4b3c1a544523504017493b1c
+3f361d322b1b302a1e3c372d5b574e66635d7977728d8c889795929b99969f9d9aa19f9c
+a1a09ca2a09ca19f9a9f9d99a6a4a0c2c1bed8d7d7e9e8e9f8f7f8fdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fffefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfafafaedecec9c9b9b45423b41372048370a47350949380c4e3c0e
+594510664f14775d198b6d1ea07d25b48e2ec59d39d2a944dcb351e4bd5fe9c26bedc773
+f0cb7bf1d084f2d38cf3d593f2d799f2d99ff1d9a1eed6a1ebd4a0e7cf9be1c993d7c089
+ceb67ec2aa71b69d64a78f5799804b89723f7c6635705b2b6651215e4a1b584617534113
+4e3d114c3b1049380e47370d47360c4736094536104137224a422e3c352529251d5a5852
+80807da8a7a6c7c7c7dadadae8e7e7edecedf0efeff2f2f2f4f3f4f4f3f4f5f4f5f5f4f5
+f5f4f5f5f4f5f4f3f4f4f3f4f5f4f5f9f8f9fcfbfcfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfefdfefefefefaf9fad4d4d45554532f2a204b3b1747350847370b
+49390d513f0f5b4713675016765c1b886b219a7a2aab8a34ba9640c6a14dd0ac5bd6b363
+dcb96ce0be74e2c37ce4c582e4c687e3c78be1c88ddec68ddac18ad4bd85cbb37dc2aa74
+b89f69ab945e9e8753917a48846e3e7964356e592b6551235e4b1d594619554315513f12
+4d3c114a390f48370d47360b47370b413417221e151414135554539e9e9dd8d8d8f4f3f4
+f9f8f9faf9fafcfbfcfcfbfcfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffff919191484541453c2449380e
+47360b48370c4d3b0f5341115b4714665018735a1d8066258f722d9c7e37a78942b0924e
+b89956bfa05dc4a765c7ac6ac9af6fcaaf73c8ae74c4ab73bfa770b9a16cb09863a8905d
+9c8654927c4b8872437e683b7460346c592c665225604c1f5a481a5643165341134f3e11
+4c3b0f4a390d47360c443613342d20333231767676cfcfcff7f7f7fdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffefefe
+fdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfdfdfefefefffefefffefffffefffffefffffefffffefffbfafbcfcecf6a6a683e3930
+473b1e47370e49380d4b3a0e4e3d105542125c4816624e1a6c551f765f267e672d876f36
+90763f967d469d844ca28a51a58c55a58d57a68e59a48d58a08a579a8453937e4e8e7849
+8670437f6a3e776337705d316a572b645224604d205b481b574417544114513f114e3c10
+4a390e4335113a322134332f656464cac9caf9f8f9fdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdefeeefa7a6a6
+5e5d5a484236473a1d4838114d3b0f4f3d0f5340125643145b4718614d1d6652216b5727
+715c2d7761337d6738826c3c856f40887142897244887244867143836e417f6b3e7b673b
+776338725f346d5a2f68552a645124604d1f5c491b5845175643145341134c3b11413413
+3b33243e3c39636262b8b7b8f4f3f4fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfbfafb
+e1e1e29e9e9e62615f4b463a453a204839144f3e145442135643145845165c491a5f4c1e
+624f226753276b592c6f5c2f725e32746035766136766237766137756136725f34705d31
+6d5a2f6a572b665326635021604d1d5d4a1a594619534218493b163d3219413b2f474745
+706f6fbababaf2f1f2fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfaf9fadddcdda8a7a77674735a564e4b433243371c493b1954441b58471b5b481a
+5e4b1b604d1e614f2264512567542869562a6a572c6b582d6c582d6b582d6a572b685528
+675325655123614e225d4b2255451f483b1b3e341c47403253514b636261929192cdcccd
+f6f5f6fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfcfbfcecebecc4c4c49b9b9a767574615e59554f413e3622453a20
+4c3f205a4b2665532a64522a64522966542a68562b68562c67552c65532d63522b635129
+544627493d22433923463e2e56524861605c727271989898c2c2c2eae9eafbfafbfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf9f9fae7e7e7cdcccdb3b3b3919090848381
+6765615b523f8c753e8a7135796536715e346a593165542f5f502c5a4a28594821534932
+4947417978758a8a899d9c9cbab9b9d2d1d2eaeaeafaf9fafdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfcfbfcf6f5f6eaeaea
+cdcdcd8e8a837a6b4a977f46987e4687703f7662376655305d4e2a56482b443a23444039
+aaaaaae3e2e3f1f0f1f9f8f9fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+faf9fad8d7d785827c8e7843c59e3aab882f876b2767521f554316453b27474542b5b5b4
+f4f3f4fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdf6f6f7b0ada99c813cd3a224af861d8164165e48104a3808362e1b777777f8f7f8
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdf2f1f2aeaba3a7893ad2a120a7811c795e1458430f4635083b311b737271fcfbfc
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdeaeaeaaaa598b3913ad2a11fa6801d775c1455410e463408463819353432f6f5f6
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfddededea59b85c7a03ad4a31ea8821d795d1456430e46350a473711242220e3e3e3
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdd4d3d2a39470d8ac39d6a41fad861e7d611659440f48360b4735092d2a22bcbcbc
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+faf9facdcbc7af985ce8b52ddba823b58c1f8667175f491049380c4635073730218c8b8b
+fcfbfcfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+f0eff0b6b1a5b79741f1b923dfac26bf9321927019674f114c3b0d44330842351b5d5b59
+f4f3f4fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+e2e1e1a99e83d7ac3ef2ba22e4b027c99b239e7a1b715613523f0e45340b44350c36332e
+cecdcefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf9f8f9
+cbcac6a4905af0ba2ef4bb26e8b328d1a124aa831e7b5f1559440f48360b4434083d3626
+8a8a89faf9fafdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdedeced
+aba596bf9d46f7be22f5bd2aecb629d8a725b58b1f876817614b104a380c443309423415
+53504ddddcddfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfaf9fad8d6d4
+ad9d73ebb833f7be25f6be2befb829ddab27be93219270196850124d3b0d44330a42330a
+40392d999897faf9fafdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf0efefa8a293
+cfac55f8be22f8bf2af6be2bf1ba2ae2af27c599229b781b70561354400e46350b44330a
+413414575450cecdcefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf9f8f9b9b7b4a5905b
+f0ba2af8bf27f8c02bf6be2bf1bb2ae5b127cc9d23a47f1c785c1559450f47370c44330b
+44330a443b2383827feae9eafdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdd5d5d4b0a485e8b632
+f8be23f8c02bf8c02bf7bf2bf3bc2ae9b428d2a224ad851d8164175f491049380c45340b
+44330a44350f504839a3a1a0f5f5f6fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfddbdbdbaca490e5b63ef8bd21
+f8c02bf8c02bf8c02bf7bf2bf4bd2aebb629d8a625b68c1f8a6a17644d104c3a0d46350b
+44330b44340a433511524c3fabaaa8f6f5f6fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfcfbfcf9f7f8c1c0beb3a992ecba37f8bd20f8c02b
+f8c02bf8c02bf8c02bf7bf2bf5be2aeeb829dcaa26bd93219472196b5212503e0d46350b
+44330b46350b4635094435105048379a9894e6e6e6fbfafbfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfbfafbf8f8f8f6f5f5f2f1f0d8d5d1b0a897b59c61f0ba2af8bd21f8c02bf8c02b
+f8c02bf8c02bf7bf2bf6be2bf4bd2aedb729deac27c498229d791b73591456420f47360b
+44330b45340b46350b46350a44340c493d2369655ab4b2b0e6e5e5f3f2f2f8f7f8fbfafb
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfcfbfc
+f4f3f4dfdcd8cec9bdc2baa6bbae8abaa061deb23ff5bc21f8bf25f8c02bf8c02bf8c02b
+f8c02bf8c02bf7bf2bf5bd2bf2bb2aeab528dcaa26c59822a37e1c7c60155e48104c3b0d
+46350b44330b46350b46350b45340a453409423311382f1a615a4a908b83b3b1adc6c5c3
+e7e6e6fcfbfcfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf4f3f4
+c9c5bcad996ac5a04bdbae43efb92df7bc1df8bd1ff8bf26f8bf27f8bf26f8bf26f8bf26
+f8bf26f7be26f6bd26f3ba25ecb624e2ae23d3a221bd921da17c19816314644c0f513e0c
+47360a45340a45340a46350a46350a46350a46350946350743330a4032123c3115372f1b
+76736febeaebfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf1f0f1ecebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececececedededeeedeeeeeeeeefeeeff0eff0f1f0f1f2f1f2f3f3f3f5f4f5d6d6d6
+968d79c29d48deac2eddad2edeae2fdeae31deae32deae32deae32deaf32deaf32deaf32
+deae32ddae32dcac31d6a730cba02dbd942aad87259b792186691d71581a5a46144b3b10
+41330e3f310e3f310e3f310e3f310e3f310e3f310e3f310e3f320d3f310c3e300c41320d
+33302aacacacf5f4f5f4f3f4f2f2f2f1f0f1f0eff0efeeefeeeeeeeeedeeedecedececec
+ececececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebecf8f7f8fdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd9e9d9e787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+7878787979797a7a7a7b7b7b7c7c7c7d7d7d7f7f7f8080808282828585858787876f6f6f
+413e385a4e36675837655737655737655737655737655737655737655837655837655837
+6557376456366154355d5133574c3050452c483e274038233a321f332c1c282316211d12
+1d19101c180f1c180f1c180f1c180f1c180f1c180f1c180f1c180f1c180f1c180f1d190f
+171613504f4f8787878686868383838181817f7f7f7d7d7d7c7c7c7b7b7b797979787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878777777cfcfcffbfafb
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd8b8a8b5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5e5e5e5e5e5e6060606060605e5e5e5d5d5d5d5d5d5d5d5d5c5c5c5c5c5c5c5c5c5d5d5d
+5d5d5d5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b5b5b5b5b5b5c5c5c
+5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5c5c5c5c5c5c5c5c5c5c5c5c5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5b5b5bc5c5c5faf9fa
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdeaeaeae3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e4e3e4e5e4e5e5e4e5e3e3e3e3e2e3e3e2e3e2e1e2e2e1e2e2e1e2e2e1e2e2e2e2
+e2e2e2e2e1e2e1e1e1e2e1e2e1e1e1e2e1e2e2e1e2e2e1e2e2e1e2e1e0e1e1e0e1e1e1e1
+e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e2e1e2e2e1e2e2e1e2e2e1e2e2e2e2e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e2e2e2e1e0e1f4f3f4fdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+
+showpage
+
+% stop using temporary dictionary
+end
+
+% restore original state
+origstate restore
+
+%%Trailer
+
+%%EndDocument
+ @endspecial Black Black Black 21 3808 a Fm(Using)48
+b(the)g(SALOME)h(con\002guration)g(and)f(b)m(uilding)1046
+3980 y(system)f(en)-7 b(vir)m(onment)1587 4265 y Fl(V)-16
+b(ersion)34 b(0.3)50 5367 y Fk(P)o(atrick)99 b(Goldbronn)f(C.E.A.)50
+5485 y(Marc)170 b(T)-8 b(ajchman)140 b(C.E.A.)p Black
+Black eop
+%%Page: 2 2
+2 1 bop Black Black 0 50 a Fj(Successi)o(v)o(e)30 b(v)o(ersions)p
+0 1579 3588 4 v -2 1795 4 217 v 50 1730 a Fi(Date)p 570
+1795 V 391 w(V)-9 b(ersion)p 1024 1795 V 161 w(Description)p
+3014 1795 V 1541 w(A)k(uthor\(s\))p 3586 1795 V 0 1799
+3588 4 v -2 2016 4 217 v 50 1950 a Fn(10/07/2001)p 570
+2016 V 162 w(0.0)p 1024 2016 V 341 w(Initial)25 b(v)o(ersion)p
+3014 2016 V 1485 w(PG)p 3586 2016 V 0 2019 3588 4 v -2
+2236 4 217 v 50 2171 a(25/07/2001)p 570 2236 V 162 w(0.1)p
+1024 2236 V 341 w(English)f(traduction,)i(re)n(writing)p
+3014 2236 V 946 w(MT)p 3586 2236 V 0 2239 3588 4 v -2
+2456 4 217 v 50 2391 a(29/08/2001)p 570 2456 V 162 w(0.2)p
+1024 2456 V 341 w(Add)d(source)i(creation,)g(some)f(precision)p
+3014 2456 V 667 w(PG)p 3586 2456 V 0 2459 3588 4 v -2
+2676 4 217 v 50 2611 a(24/05/2002)p 570 2676 V 162 w(0.3)p
+1024 2676 V 341 w(Add)f(instruction)k(to)c(do)h(installation)j
+(correctly)p 3014 2676 V 444 w(PG)p 3586 2676 V 0 2679
+3588 4 v Black 0 5644 3827 9 v 0 5757 a(SALOME)415 b(Using)24
+b(the)g(SALOME)d(con\002guration)26 b(and)e(b)n(uilding)i(system)e(V)
+-12 b(.)23 b(0.3)607 b(2/20)p Black eop
+%%Page: 3 3
+3 2 bop Black Black Black Black 1759 50 a Fh(Abstract)p
+Black Black 352 227 a Fg(This)20 b(document)e(contains)i(rules)g(and)g
+(advices)f(to)i(con\002gure,)d(b)n(uild)i(and)f(e)o(xtend)g(the)h
+(SALOME)g(platform.)p Black 0 5644 3827 9 v 0 5757 a
+Fn(SALOME)415 b(Using)24 b(the)g(SALOME)d(con\002guration)26
+b(and)e(b)n(uilding)i(system)e(V)-12 b(.)23 b(0.3)607
+b(3/20)p Black eop
+%%Page: 4 4
+4 3 bop Black Black 0 50 a Fj(Contents)0 279 y Fi(1)91
+b(SALOME)21 b(Con\002guration)2683 b(5)136 415 y Fn(1.1)96
+b(Directories)26 b(or)n(ganisation)35 b(.)45 b(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)
+g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)p Black 122
+w(5)p Black 136 550 a(1.2)96 b(PreCon\002guration)26
+b(step)43 b(.)i(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)p Black 122 w(5)p Black 136 686 a(1.3)96
+b(Con\002guration)26 b(step)h(.)46 b(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)
+g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g
+(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)p Black
+122 w(6)p Black 136 821 a(1.4)96 b(PostCon\002guration)27
+b(step)75 b(.)45 b(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)p Black 122 w(7)p Black 0 1048 a Fi(2)91
+b(SALOME)21 b(compilation)2770 b(7)0 1274 y(3)91 b(Module)23
+b(cr)n(eation)3010 b(8)0 1501 y(4)91 b(De)o(v)o(elopment)24
+b(unit)e(cr)n(eation)2621 b(9)0 1727 y(5)91 b(Cr)n(eating)25
+b(a)e Ff(Makefile.in)50 b Fi(\002le)22 b(in)h(a)g(new)f(unit)1871
+b(10)136 1862 y Fn(5.1)96 b(Using)24 b(prede\002ned)i(mak)o(e)e(rules)
+69 b(.)45 b(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g
+(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)p
+Black 77 w(10)p Black 136 1998 a(5.2)96 b(Using)24 b(your)h(o)n(wn)e
+(mak)o(e\002les)h(in)f(an)h(unit)63 b(.)45 b(.)h(.)f(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)p Black 77 w(14)p Black 0 2224 a Fi(6)91
+b(Add)22 b(or)h(r)n(emo)o(v)o(e)i(a)f(script)2705 b(15)0
+2451 y(7)91 b(Add)22 b(or)h(r)n(emo)o(v)o(e)i(an)e(IDL)f(\002le)2576
+b(15)0 2677 y(8)91 b(Pr)n(ede\002ned)23 b(symbols)h(used)e(in)h
+Ff(Makefile.in)1920 b Fi(15)0 2904 y(9)91 b(Location)25
+b(of)e(generated)h(\002les)g(in)e(the)h(b)n(uild)f(tr)n(ee)1941
+b(18)0 3130 y(10)46 b(What')m(s)24 b(matter)g(when)e(launch)g
+Ff(make)53 b(install)1839 b Fi(18)0 3356 y(11)46 b(Cr)n(eating)25
+b(sour)n(ce)f(\002les)g(according)g(to)g(SALOME)c(b)n(uilding)j(system)
+1260 b(19)136 3492 y Fn(11.1)51 b Ff(C)23 b Fn(or)g Ff(C++)f
+Fn(source)j(\002les)63 b(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f
+(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)p Black 77 w(20)p Black
+136 3627 a(11.2)51 b(idl)24 b(\002les)90 b(.)45 b(.)g(.)g(.)g(.)g(.)h
+(.)f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)
+g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)h(.)f(.)g
+(.)g(.)g(.)p Black 77 w(20)p Black 136 3763 a(11.3)51
+b(Included)26 b(header)f(\002le)e(generated)j(from)e(idl)f(\002le)32
+b(.)45 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)h(.)
+f(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)p Black 77 w(20)p
+Black Black 0 5644 3827 9 v 0 5757 a(SALOME)415 b(Using)24
+b(the)g(SALOME)d(con\002guration)26 b(and)e(b)n(uilding)i(system)e(V)
+-12 b(.)23 b(0.3)607 b(4/20)p Black eop
+%%Page: 5 5
+5 4 bop Black Black 0 50 a Fj(1)119 b(SALOME)30 b(Con\002guration)0
+331 y Fe(1.1)99 b(Dir)n(ectories)26 b(or)o(ganisation)0
+575 y Fn(W)-7 b(e)32 b(suppose)k(here)d(that)h(you)g(unpack)h(the)e
+(SALOME)d(distrib)n(ution)37 b(from)c(scratch.)60 b(The)33
+b(path)g(to)h(the)f(SALOME)0 710 y(sources)25 b(will)f(be)f(named)h
+(\223top)g(source)h(directory\224)i(or)c Ff(SALOME)p
+2097 710 28 4 v 30 w(ROOT)p Fn(.)0 893 y(It)35 b(is)g(possible,)41
+b(b)n(ut)36 b(not)g(advised,)k(to)35 b(b)n(uild)i(the)f(set)f(of)h
+(binaries)h(and)f(libraries)i(in)d(the)h(same)f(subtree.)67
+b(Instead,)0 1028 y(we)23 b(suppose)j(you)e(ha)n(v)o(e)g(choosen)i(a)d
+(dif)n(ferent)j(subtree)f(where)f(to)g(put)g(b)n(uilded)i(\002les)d
+(\(you)i(can)f(so)g(b)n(uild)h(to)e(multiples)0 1164
+y(architectures)h(from)c(the)g(same)g(source)i(tree\).)28
+b(The)20 b(root)h(of)f(the)g(b)n(uild)i(subtree)g(will)d(be)i(named)f
+(\223top)h(b)n(uild)h(directory\224.)0 1347 y(At)j(the)i(end)f(of)g
+(con\002guration)j(and)e(compilation)h(processs,)h(you)e(may)e(install)
+j(b)n(uilded)g(\002les)e(in)g(a)f(separate)k(subtree,)0
+1482 y(name)22 b(\223installation)j(subtree\224.)30 b(The)21
+b(root)h(of)g(the)g(installation)i(subtree)g(will)d(be)g(named)h
+(\223top)h(installation)i(directory\224.)0 1665 y(The)e(\002gure)h(1)f
+(sho)n(ws)h(subtrees)h(or)n(ganisation.)p Black 0 3576
+a @beginspecial 0 @llx 0 @lly 466 @urx 215 @ury 4660
+@rwi @setspecial
+%%BeginDocument: ../../../SALOME_ROOT/doc/DevelopersGuide/subtrees.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: subtrees.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3c
+%%CreationDate: Thu Jul 26 11:57:22 2001
+%%For: tajchman@nikyo (Marc Tajchman - SFME/LGLS)
+%%BoundingBox: 0 0 466 215
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 215 moveto 0 0 lineto 466 0 lineto 466 215 lineto closepath clip newpath
+-58.0 236.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+7.500 slw
+n 3900 1950 m 5175 1950 l 5175 2550 l 3900 2550 l
+ cp gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+4050 2175 m
+gs 1 -1 sc (Top Build) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+4050 2400 m
+gs 1 -1 sc (Directory) col0 sh gr
+% Polyline
+n 1275 1425 m 3000 1425 l 3000 2250 l 1275 2250 l
+ cp gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+1425 1650 m
+gs 1 -1 sc (Top Source) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+1425 1875 m
+gs 1 -1 sc (Directory) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+1425 2100 m
+gs 1 -1 sc (\(SALOME_ROOT\)) col0 sh gr
+% Polyline
+n 4350 2550 m
+ 3825 3300 l gs col0 s gr 
+% Polyline
+n 4575 2550 m
+ 4650 3300 l gs col0 s gr 
+% Polyline
+n 7350 1650 m
+ 7575 2475 l gs col0 s gr 
+% Polyline
+n 7800 1650 m
+ 8175 2550 l gs col0 s gr 
+% Polyline
+n 7050 1650 m
+ 6750 2550 l gs col0 s gr 
+% Polyline
+n 6675 1050 m 8100 1050 l 8100 1650 l 6675 1650 l
+ cp gs col0 s gr 
+% Polyline
+n 1939 2238 m
+ 1189 2913 l gs col0 s gr 
+% Polyline
+n 2175 2250 m
+ 2175 2850 l gs col0 s gr 
+% Polyline
+n 2442 2270 m
+ 2892 3020 l gs col0 s gr 
+% Polyline
+15.000 slw
+n 3780 1650 m 3600 1650 3600 3720 180 arcto 4 {pop} repeat
+  3600 3900 5595 3900 180 arcto 4 {pop} repeat
+  5775 3900 5775 1830 180 arcto 4 {pop} repeat
+  5775 1650 3780 1650 180 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+n 1230 1050 m 1050 1050 1050 3570 180 arcto 4 {pop} repeat
+  1050 3750 3045 3750 180 arcto 4 {pop} repeat
+  3225 3750 3225 1230 180 arcto 4 {pop} repeat
+  3225 1050 1230 1050 180 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+n 6705 825 m 6525 825 6525 2820 180 arcto 4 {pop} repeat
+  6525 3000 8520 3000 180 arcto 4 {pop} repeat
+  8700 3000 8700 1005 180 arcto 4 {pop} repeat
+  8700 825 6705 825 180 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+7.500 slw
+n 2025 1425 m
+ 3000 375 l gs col0 s gr 
+% Polyline
+n 4575 1950 m
+ 4425 675 l gs col0 s gr 
+% Polyline
+n 7275 1050 m
+ 5925 375 l gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+6825 1275 m
+gs 1 -1 sc (Top Installation) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+6825 1500 m
+gs 1 -1 sc (Directory) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+7125 675 m
+gs 1 -1 sc (Install Subtree) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+975 900 m
+gs 1 -1 sc (Source Subtree) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+4650 1500 m
+gs 1 -1 sc (Build Subtree) col0 sh gr
+$F2psEnd
+rs
+
+%%EndDocument
+ @endspecial Black 1342 3794 a(Figure)f(1:)29 b(Subtrees)c(or)n
+(ganisation)p Black Black 0 4166 a Fe(1.2)99 b(Pr)n(eCon\002guration)26
+b(step)0 4411 y Fn(SALOME)21 b(needs)k(some)f(en)l(vironment)i(v)n
+(ariables)g(\(to)e(be)g(de\002ned)h(for)f(e)o(xample)g(in)g(a)f(.cshrc)
+i(or)e(.bashrc)i(\002le)e(in)h(your)0 4546 y(home)g(directory\))i(:)p
+Black 0 5644 3827 9 v 0 5757 a(SALOME)415 b(Using)24
+b(the)g(SALOME)d(con\002guration)26 b(and)e(b)n(uilding)i(system)e(V)
+-12 b(.)23 b(0.3)607 b(5/20)p Black eop
+%%Page: 6 6
+6 5 bop Black Black 0 -38 3625 4 v -2 179 4 217 v 50
+114 a Fd(variable)p 925 179 V 626 w(set)24 b(value)h(and)f(c)o(hec)n(k)
+p 3623 179 V 0 182 3625 4 v -2 399 4 217 v 50 334 a Ff(QTDIR)p
+925 399 V 651 w Fn(root)g(directory)i(of)e(qt)f(distrib)n(ution)k(\()p
+Ff($QTDIR/lib)19 b Fn(must)k(contain)j(libqt.so\))p 3623
+399 V 0 402 3625 4 v -2 754 4 353 v 50 554 a Ff(HDF5HOME)p
+925 754 V 486 w Fn(root)21 b(directory)h(of)e(hdf5)h(distrib)n(ution)j
+(\()p Ff($HDF5HOME/lib)13 b Fn(must)20 b(contain)i(lib-)976
+689 y(hdf5.so\))p 3623 754 V 0 758 3625 4 v -2 1110 4
+353 v 50 909 a Ff(VTKHOME)p 925 1110 V 541 w Fn(root)33
+b(directory)i(of)e(vtk)f(distrib)n(ution)k(\()p Ff($VTKHOME/common)26
+b Fn(must)32 b(contain)976 1045 y(libVTKCommon.so\))p
+3623 1110 V 0 1113 3625 4 v -2 1466 4 353 v 50 1265 a
+Ff(CASROOT)p 925 1466 V 541 w Fn(root)25 b(directory)i(of)e
+(OpenCascade)h(distrib)n(ution)j(\()p Ff($CASROOT/Linux)o(/li)o(b)976
+1400 y Fn(must)24 b(contain)h(libTK)n(ernel.so\))p 3623
+1466 V 0 1469 3625 4 v -2 1821 4 353 v 50 1621 a Ff(PYTHONHOME)p
+925 1821 V 376 w Fn(root)184 b(directory)i(of)d(p)o(ython)i(distrib)n
+(ution)i(\()p Ff($PYTHON-)976 1756 y(HOME/lib/python)o(XX)o(X/c)o(on)o
+(fi)o(g)17 b Fn(must)23 b(contain)i(libp)o(ythonXXX.a\))p
+3623 1821 V 0 1824 3625 4 v -2 2177 4 353 v 50 1976 a
+Ff(OMNIORB)p 440 1976 28 4 v 29 w(CONFIG)p 925 2177 4
+353 v 182 w Fn(path)30 b(to)g(the)f(omniORB.cfg)g(\002le)g(\(this)h
+(\002le)f(contains)j(def)o(ault)f(options)g(to)e(om-)976
+2112 y(niORB,)22 b(see)i(belo)n(w\))p 3623 2177 V 0 2180
+3625 4 v 0 2388 a(Create)29 b(a)f(\002le)f(named)i(omniORB.cfg)f(in)h
+(your)g(root)g(tree,)g(containing)j(def)o(ault)e(options)g(to)e
+(omniORB.)f(Put)h(in)g(this)0 2523 y(\002le,)23 b(the)g(follo)n(wing)i
+(line)g(:)p Black Black 0 2769 a Ff(ORBInitRef)50 b(NameService=cor)o
+(ba)o(na)o(me)o(::l)o(oc)o(al)o(ho)o(st)0 3015 y Fn(\(tells)25
+b(omniORB)d(that)i(the)g(CORB)m(A)d(name)i(service)j(is)d(local\).)0
+3332 y Fe(1.3)99 b(Con\002guration)26 b(step)p Black
+114 3529 a Fn(1.)p Black 45 w(There)e(are)g(tw)o(o)f(cases)h(:)p
+Black 336 3700 a Fc(\017)p Black 46 w Fn(There)i(is)g(a)f
+Ff(configure)c Fn(\002le)k(in)g(the)h(top)g(source)i(directory)-6
+b(,)28 b(and)e(you)g(didn')n(t)i(change)f(the)f(SALOME)427
+3835 y(structure)g(\(adding)g(a)d(module)h(or)g(unit,)f(see)h(sections)
+i(3)d(or)h(4)f(belo)n(w\).)29 b(Go)23 b(to)g(point)i(3.)p
+Black 336 4004 a Fc(\017)p Black 46 w Fn(Y)-10 b(ou)26
+b(don')n(t)h(ha)n(v)o(e)g(a)e Ff(configure)c Fn(\002le)k(or)h(you)h
+(add)f(a)f(module/unit)k(in)d(the)g(SALOME)c(system.)37
+b(Go)25 b(to)427 4139 y(point)g(2)p Black 114 4310 a(2.)p
+Black 45 w(Go)e(to)h(the)f(top)h(source)h(directory)h(and)e(type)g(:)p
+Black Black 227 4445 a Ff(./reconfigure)227 4539 y Fn(This)32
+b(script)h(\002nd)e(all)h(\002le)f(with)g(suf)n(\002x)h
+Ff(.in)d Fn(\(which)j(will)g(be)f(generate)j(by)e Ff(configure)26
+b Fn(script\))33 b(and)f(add)227 4675 y(them)24 b(in)f
+Ff(configure.in)18 b Fn(\002le,)k(launch)j Ff(aclocal)20
+b Fn(and)k Ff(autoconf)19 b Fn(to)k(generete)j Ff(configure)19
+b Fn(script.)227 4810 y(Continue)25 b(with)f(point)g(3)p
+Black 114 4979 a(3.)p Black 45 w(Go)f(to)h(the)f(top)h(b)n(uild)h
+(directory)h(you)e(choose.)227 5114 y(If)30 b(you)g(plan)h(to)e
+(install)j(SALOME)26 b(\002les)k(after)g(b)n(uilding)j(in)c(a)h
+(non-standard)j(location)f(\(i.e.)47 b(dif)n(ferent)32
+b(from)227 5250 y(/usr/local\),)26 b(type)f(:)p Black
+Black 227 5385 a Ff(<path)53 b(to)g(the)g(top)h(source)d
+(directory>/confi)o(gu)o(re)d(\\)1209 5521 y(--prefix=<insta)o(ll)o(at)
+o(ion)g(directory>)p Black 0 5644 3827 9 v 0 5757 a Fn(SALOME)415
+b(Using)24 b(the)g(SALOME)d(con\002guration)26 b(and)e(b)n(uilding)i
+(system)e(V)-12 b(.)23 b(0.3)607 b(6/20)p Black eop
+%%Page: 7 7
+7 6 bop Black Black 227 50 a Fn(otherwise,)25 b(type)f(:)p
+Black Black 227 185 a Ff(<path)53 b(to)g(the)g(top)h(source)d
+(directory>/confi)o(gu)o(re)227 279 y Fn(where)24 b(\223path)h(to)e
+(the)h(top)g(source)h(directory\224)h(is)e(to)f(be)h(replaced)h(by)f
+(the)g(path)g(to)f(the)h(SALOME)d(sources.)227 415 y(F)o(or)i(other)h
+(options)i(to)d(the)h(con\002gure)h(command,)f(type)h(:)p
+Black Black 227 550 a Ff(<path)53 b(to)g(the)g(top)h(source)d
+(directory>/confi)o(gu)o(re)d(--help)227 644 y Fn(This)18
+b(will)g(create)h(a)f(mirror)h(subtree)h(of)e(the)g(sources)i(into)f
+(the)g(top)f(b)n(uild)i(directory)g(where)f(object)g(\002les,)g
+(binaries)227 780 y(and)24 b(libraries)i(will)d(be)h(b)n(uilded.)30
+b(Also)24 b(a)f(mak)o(e\002le)h(system)g(will)f(be)h(created)h(into)f
+(the)g(b)n(uild)h(tree.)0 1099 y Fe(1.4)99 b(P)n(ostCon\002guration)26
+b(step)0 1344 y Fn(This)d(phase)h(is)f(optional,)i(to)e(be)g(used)h
+(only)f(if)g(the)h(compilation)h(process)g(\(see)e(ne)o(xt)h(section\))
+h(f)o(ails)f(to)f(use)g Ff(libtool)0 1479 y Fn(script.)0
+1662 y(On)29 b(some)i(systems,)h(the)f Ff(libtool)26
+b Fn(script)31 b(generated)i(by)d(the)h(con\002gure)h(command)e(will)g
+(not)h(operate)h(correctly)0 1797 y(during)26 b(compilation)g(\(see)f
+(ne)o(xt)g(section\).)32 b(If)24 b(you)h(encounter)h(this)f(situation,)
+h(cop)o(y)g(the)e(local)h(libtool)h(script)f(in)f(your)0
+1933 y(system)f(\(e.g.)29 b(in)22 b(the)h(/usr/bin)i(directory\))g(to)e
+(the)g(top)g(b)n(uild)h(directory)h(after)f(con\002guration)h(and)e
+(before)h(compilation)0 2068 y(phases.)0 2251 y(Check)g(the)g(follo)n
+(wing)h(line)f(in)f(libtool)j(script)e(:)p Black Black
+0 2508 a Ff(deplibs_check_m)o(et)o(ho)o(d=)o(...)0 2766
+y Fn(If)f(needed,)i(replace)g(this)f(line)h(by)p Black
+Black 0 3023 a Ff(deplibs_check_m)o(et)o(ho)o(d=)o("pa)o(ss)o(_a)o(ll)o
+(")0 3393 y Fj(2)119 b(SALOME)30 b(compilation)0 3670
+y Fn(From)23 b(the)h(top)f(b)n(uild)i(directory)-6 b(,)26
+b(type)p Black Black 0 3927 a Ff(make)0 4185 y Fn(After)35
+b(some)g(time)g(\(be)g(patient)i(...\),)f(it)f(will)f(create)j(v)n
+(arious)f(binaries.)65 b(Building)37 b(SALOME)31 b(is)k(split)h(in)f
+(se)n(v)o(eral)0 4320 y(phases)25 b(:)p Black 136 4603
+a Fc(\017)p Black 46 w Ff(make)53 b(inc)26 b Fn(:)37
+b(cop)o(y/update)32 b(header)d(\002les)f(e)o(xported)i(by)e(de)n(v)o
+(elopment)i(units)f(in)f(the)g(directory)i Ff(inc)c Fn(of)i(the)227
+4738 y(b)n(uild)d(tree)f(;)p Black 136 4907 a Fc(\017)p
+Black 46 w Ff(make)53 b(depend)p 835 4907 28 4 v 30 w(idl)31
+b Fn(:)48 b(determine)35 b(dependencies)i(between)d(idl)g(\002les)e
+(\(useful)j(when)f(recompiling)h(SA-)227 5042 y(LOME)22
+b(after)i(idl)g(modi\002cation\);)p Black 136 5211 a
+Fc(\017)p Black 46 w Ff(make)53 b(depend)f(\(make)g(dep\))30
+b Fn(:)48 b(determine)34 b(dependencies)j(between)d(source)h(\002les)d
+(and)i(header)g(\002les)227 5347 y(\(useful)25 b(when)f(recompiling)i
+(SALOME)21 b(after)j(source)h(modi\002cation\);)p Black
+136 5515 a Fc(\017)p Black 46 w Ff(make)53 b(lib)21 b
+Fn(:)29 b(generate)c(libraries,)h(put)e(a)f(cop)o(y/link)j(into)e(the)g
+Ff(lib)d Fn(directory)26 b(of)e(the)g(b)n(uild)g(tree;)p
+Black 0 5644 3827 9 v 0 5757 a(SALOME)415 b(Using)24
+b(the)g(SALOME)d(con\002guration)26 b(and)e(b)n(uilding)i(system)e(V)
+-12 b(.)23 b(0.3)607 b(7/20)p Black eop
+%%Page: 8 8
+8 7 bop Black Black Black 136 50 a Fc(\017)p Black 46
+w Ff(make)53 b(bin)21 b Fn(:)29 b(generate)c(binaries;)p
+Black 136 219 a Fc(\017)p Black 46 w Ff(make)53 b(tests)f(\(make)h
+(check\))20 b Fn(:)28 b(b)n(uild)d(and)f(run)g(tests)g(\(not)g(yet)g
+(implemented\).)0 485 y(After)34 b(b)n(uilding,)39 b(testing,)f(the)d
+(user)f(may)g(install)i(the)e(system)h(in)f(a)g(choosen)i(directory)h
+(\(dif)n(ferent)f(from)e(and)h(not)0 620 y(included)26
+b(in)d(the)h(top)g(source)h(directory)h(and)e(the)g(top)g(b)n(uild)g
+(directory\).)0 803 y(From)f(the)h(top)f(b)n(uild)i(directory)-6
+b(,)26 b(type)e(:)p Black Black 227 1047 a Ff(make)53
+b(install)21 b Fn(:)32 b(install)27 b(libraries,)h(header)e(and)g(idl)f
+(\002les,)h(binaries,)h(resource)g(\002les)e(in)h(the)f(instal-)227
+1182 y(lation)g(directory)0 1549 y Fj(3)119 b(Module)31
+b(cr)n(eation)0 1826 y Fn(In)22 b(this)h(section,)g(the)g(ne)n(w)e
+(module)i(will)f(be)g(named)h Ff(<Module>)p Fn(.)g(Replace)h(each)e
+(occurence)j(with)d(the)g(real)h(name)f(of)0 1962 y(your)i(module.)p
+Black 114 2228 a(1.)p Black 45 w(In)g(the)g(source)h(tree)f(root)g
+Ff(SALOME)p 1383 2228 28 4 v 30 w(ROOT)p Fn(,)c(create)25
+b(a)e(ne)n(w)g(directory)j Ff(<Module>)19 b Fn(:)p Black
+Black 227 2363 a Ff(cd)54 b(SALOME_ROOT)227 2499 y(mkdir)f(<Module>)p
+Black 114 2667 a Fn(2.)p Black 45 w(Modify)25 b(the)f
+Ff(Makefile.in)49 b Fn(\002le)23 b(in)g(the)h Ff(SALOME)p
+2012 2667 V 30 w(ROOT)d Fn(directory)26 b(to)e(add)g(the)f(ne)n(w)g
+(module)i(:)227 2803 y(Append)g(to)e(the)h(line)g(be)o(ginning)i(with)p
+Black Black 227 2938 a Ff(SUBDIRS)52 b(=)227 3032 y Fn(the)24
+b(name)g(of)f(the)h(ne)n(w)f(module.)p Black 114 3201
+a(3.)p Black 45 w(In)36 b(the)g(module)h(root)g(directory)-6
+b(,)41 b(create)c(tw)o(o)f(subdirectories)k Ff(src)34
+b Fn(and)i Ff(resources)31 b Fn(and)37 b(create)g(a)f(\002le)227
+3336 y Ff(Makefile.in)50 b Fn(\(e.g.)29 b(cop)o(y)24
+b(the)g(corresponding)k(\002le)23 b(in)g Ff(GEOM)e Fn(module)j(for)g(e)
+o(xample\))h(:)p Black Black 227 3472 a Ff(cd)54 b(<Module>)227
+3607 y(mkdir)f(src)227 3743 y(mkdir)g(resources)227 3878
+y(cp)h(../GEOM/Makefil)o(e.)o(in)48 b(.)p Black 114 4047
+a Fn(4.)p Black 45 w(In)18 b(the)h Ff(src)d Fn(subdirectory)-6
+b(,)22 b(cop)o(y)d(a)f Ff(Makefile.in)49 b Fn(\002le)18
+b(\(e.g.)27 b(from)18 b(the)g(corresponding)23 b(\002le)17
+b(in)h Ff(GEOM/src)227 4183 y Fn(subdirectory)27 b(for)d(e)o(xample\))h
+(:)p Black Black 227 4318 a Ff(cd)54 b(src)227 4454 y(cp)g
+(../../GEOM/src/)o(Ma)o(ke)o(fi)o(le)o(.in)48 b(.)p Black
+114 4622 a Fn(5.)p Black 45 w(Edit)24 b(this)g(\002le)f(and)h(replace)h
+(the)f(line)p Black Black 227 4758 a Ff(MODULE)52 b(=)i(GEOM)227
+4852 y Fn(with)p Black Black 227 4987 a Ff(MODULE)e(=)i(<Module>)p
+Black 114 5156 a Fn(6.)p Black 45 w(Edit)24 b(this)g(\002le)f(and)h
+(replace)h(the)f(line)p Black Black 227 5291 a Ff(SUBDIRS)52
+b(=)i(GEOMDS)e(GEOM)g(GEOMGUI)227 5385 y Fn(with)p Black
+Black 227 5521 a Ff(SUBDIRS)g(=)p Black 0 5644 3827 9
+v 0 5757 a Fn(SALOME)415 b(Using)24 b(the)g(SALOME)d(con\002guration)26
+b(and)e(b)n(uilding)i(system)e(V)-12 b(.)23 b(0.3)607
+b(8/20)p Black eop
+%%Page: 9 9
+9 8 bop Black Black 227 50 a Fn(\(empty)25 b(list)e(of)h(de)n(v)o
+(elopment)i(units)e(in)g(this)g(module\).)p Black 114
+219 a(7.)p Black 45 w(Edit)g(this)g(\002le)f(and)h(replace)h(the)f
+(line)p Black Black 227 354 a Ff(RESOURCES_FILES)48 b(=)54
+b(arc.png)d(\\)227 489 y(...)227 583 y Fn(with)p Black
+Black 227 719 a Ff(RESOURCES_FILES)d(=)227 813 y Fn(\(list)24
+b(of)g(all)g(ressources)i(for)e(this)g(module\).)p Black
+114 982 a(8.)p Black 45 w(Add)g(the)f(ne)n(w)g Ff(Makefile.in)50
+b Fn(\002les)23 b(in)h(the)f(global)i(list)f(of)g(.in)f(\002les.)227
+1117 y(In)h(the)g(root)g(directory)i(of)d(the)h(source)h(tree,)f(e)o(x)
+o(ecute)g(the)g Ff(reconfigure)18 b Fn(script)25 b(or)e(manually)i(:)p
+Black 281 1253 a(\(a\))p Black 46 w(edit)19 b(the)f(con\002gure.in)i
+(\002le)e(in)g(the)g(source)i(tree)e(root,)i(add)e Ff(Makefile.in)50
+b Fn(\002les)18 b(into)g(the)h Ff(AC)p 3483 1253 28 4
+v 32 w(OUTPUT)427 1388 y Fn(list,)p Black 276 1557 a(\(b\))p
+Black 46 w(from)36 b(the)f(source)i(tree)f(root)g(directory)-6
+b(,)41 b(run)36 b(the)f Ff(genconf)d Fn(script)k(which)g(launch)h
+Ff(aclocal)31 b Fn(and)427 1692 y Ff(autoconf)p Fn(.)0
+1975 y(Figure)24 b(2)f(summarize)i(these)f(changes.)p
+Black 0 4377 a @beginspecial 0 @llx 0 @lly 405 @urx 274
+@ury 4050 @rwi @setspecial
+%%BeginDocument: ../../../SALOME_ROOT/doc/DevelopersGuide/srctree_module.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: srctree_module.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3c
+%%CreationDate: Thu Jul 26 11:57:52 2001
+%%For: tajchman@nikyo (Marc Tajchman - SFME/LGLS)
+%%BoundingBox: 0 0 405 274
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 274 moveto 0 0 lineto 405 0 lineto 405 274 lineto closepath clip newpath
+-33.0 371.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 2925 5700 m 3825 5700 l 3825 6150 l 2925 6150 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+3075 6000 m
+gs 1 -1 sc (src) col0 sh gr
+% Polyline
+n 1650 5700 m 2625 5700 l 2625 6150 l 1650 6150 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+1725 6000 m
+gs 1 -1 sc (resources) col0 sh gr
+% Polyline
+n 1200 3825 m 2175 3825 l 2175 4275 l 1200 4275 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+1500 4125 m
+gs 1 -1 sc (idl) col0 sh gr
+% Polyline
+n 2400 3825 m 3600 3825 l 3600 4275 l 2400 4275 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+2550 4125 m
+gs 1 -1 sc (New module) col0 sh gr
+% Polyline
+n 1005 2475 m 825 2475 825 3195 180 arcto 4 {pop} repeat
+  825 3375 2295 3375 180 arcto 4 {pop} repeat
+  2475 3375 2475 2655 180 arcto 4 {pop} repeat
+  2475 2475 1005 2475 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+975 2775 m
+gs 1 -1 sc (Run reconfigure) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+975 3000 m
+gs 1 -1 sc (script or edit) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+975 3225 m
+gs 1 -1 sc (configure.in file) col0 sh gr
+% Polyline
+n 3150 2625 m 4800 2625 l 4800 3225 l 3150 3225 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+3300 3000 m
+gs 1 -1 sc (Root Source Tree) col0 sh gr
+% Polyline
+n 3825 3825 m 4875 3825 l 4875 4275 l 3825 4275 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+3975 4125 m
+gs 1 -1 sc (resources) col0 sh gr
+% Polyline
+n 5025 3825 m 6075 3825 l 6075 4275 l 5025 4275 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+5250 4125 m
+gs 1 -1 sc (bin) col0 sh gr
+% Polyline
+n 4350 3225 m
+ 4350 3825 l gs col0 s gr 
+% Polyline
+n 3450 3225 m
+ 1725 3825 l gs col0 s gr 
+% Polyline
+n 2625 4275 m
+ 2325 5700 l gs col0 s gr 
+% Polyline
+n 4575 3225 m
+ 5400 3825 l gs col0 s gr 
+% Polyline
+n 2925 3825 m
+ 3675 3225 l gs col0 s gr 
+% Polyline
+n 3139 4261 m
+ 3439 5686 l gs col0 s gr 
+% Polyline
+gs  clippath
+3159 3023 m 3179 2935 l 3034 2902 l 3135 2971 l 3015 2990 l cp
+eoclip
+n 2480 2826 m
+ 3155 2976 l gs col0 s gr gr
+
+% arrowhead
+n 3015 2990 m 3135 2971 l 3034 2902 l 3047 2951 l 3015 2990 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+n 783 4753 m 588 4753 588 5177 195 arcto 4 {pop} repeat
+  588 5372 1768 5372 195 arcto 4 {pop} repeat
+  1963 5372 1963 4948 195 arcto 4 {pop} repeat
+  1963 4753 783 4753 195 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 4605 4575 m 4425 4575 4425 5070 180 arcto 4 {pop} repeat
+  4425 5250 6045 5250 180 arcto 4 {pop} repeat
+  6225 5250 6225 4755 180 arcto 4 {pop} repeat
+  6225 4575 4605 4575 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 5580 2700 m 5400 2700 5400 3195 180 arcto 4 {pop} repeat
+  5400 3375 7020 3375 180 arcto 4 {pop} repeat
+  7200 3375 7200 2880 180 arcto 4 {pop} repeat
+  7200 2700 5580 2700 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 5655 1650 m 5475 1650 5475 2145 180 arcto 4 {pop} repeat
+  5475 2325 7095 2325 180 arcto 4 {pop} repeat
+  7275 2325 7275 1830 180 arcto 4 {pop} repeat
+  7275 1650 5655 1650 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+% Polyline
+2 slj
+gs  clippath
+4677 2619 m 4759 2657 l 4822 2523 l 4734 2606 l 4741 2485 l cp
+eoclip
+n 5475 1875 m 5474 1875 l 5472 1874 l 5468 1874 l 5461 1873 l 5453 1872 l
+ 5442 1871 l 5430 1870 l 5415 1869 l 5399 1869 l 5381 1870 l
+ 5363 1872 l 5343 1875 l 5322 1880 l 5300 1887 l 5277 1896 l
+ 5252 1908 l 5226 1923 l 5197 1942 l 5166 1965 l 5134 1993 l
+ 5100 2025 l 5071 2055 l 5043 2086 l 5017 2119 l 4992 2151 l
+ 4968 2183 l 4946 2216 l 4925 2247 l 4905 2279 l 4886 2310 l
+ 4868 2342 l 4851 2372 l 4834 2403 l 4819 2433 l 4804 2462 l
+ 4790 2490 l 4777 2516 l 4765 2540 l 4755 2561 l 4746 2579 l
+ 4739 2595 l 4734 2606 l
+ 4725 2625 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 4741 2485 m 4734 2606 l 4822 2523 l 4772 2524 l 4741 2485 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+1980 5683 m 2051 5739 l 2143 5623 l 2038 5684 l 2072 5567 l cp
+eoclip
+n 1950 5025 m 1952 5026 l 1956 5029 l 1964 5034 l 1974 5041 l 1988 5051 l
+ 2004 5063 l 2022 5077 l 2041 5093 l 2061 5110 l 2080 5129 l
+ 2098 5149 l 2116 5172 l 2132 5196 l 2146 5224 l 2159 5254 l
+ 2169 5288 l 2175 5325 l 2177 5359 l 2176 5392 l 2171 5423 l
+ 2165 5453 l 2157 5480 l 2147 5506 l 2136 5531 l 2124 5555 l
+ 2111 5578 l 2098 5599 l 2084 5620 l 2071 5638 l 2059 5655 l
+ 2049 5669 l 2040 5681 l
+ 2025 5700 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 2072 5567 m 2038 5684 l 2143 5623 l 2093 5613 l 2072 5567 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+3116 5733 m 3196 5693 l 3142 5583 l 3142 5684 l 3061 5623 l cp
+eoclip
+n 1950 5025 m 1951 5025 l 1954 5024 l 1959 5023 l 1967 5021 l 1978 5019 l
+ 1992 5016 l 2009 5012 l 2029 5009 l 2052 5005 l 2077 5001 l
+ 2104 4998 l 2133 4995 l 2163 4992 l 2194 4991 l 2226 4990 l
+ 2259 4991 l 2293 4993 l 2329 4997 l 2366 5004 l 2405 5012 l
+ 2446 5023 l 2488 5037 l 2533 5055 l 2579 5076 l 2625 5100 l
+ 2667 5125 l 2708 5152 l 2746 5181 l 2782 5209 l 2815 5238 l
+ 2846 5268 l 2875 5297 l 2902 5326 l 2927 5356 l 2950 5385 l
+ 2973 5414 l 2994 5443 l 3014 5472 l 3033 5501 l 3051 5529 l
+ 3067 5555 l 3083 5581 l 3097 5604 l 3109 5626 l 3120 5645 l
+ 3129 5661 l 3136 5674 l 3142 5684 l
+ 3150 5700 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 3061 5623 m 3142 5684 l 3142 5583 l  col0 s
+% Polyline
+2 slj
+gs  clippath
+2596 4285 m 2519 4238 l 2442 4366 l 2539 4293 l 2519 4412 l cp
+eoclip
+n 2025 4950 m 2026 4949 l 2029 4947 l 2034 4944 l 2041 4940 l 2050 4933 l
+ 2061 4925 l 2074 4915 l 2089 4903 l 2104 4889 l 2122 4872 l
+ 2142 4853 l 2164 4829 l 2189 4800 l 2218 4765 l 2250 4725 l
+ 2274 4694 l 2298 4662 l 2320 4630 l 2342 4600 l 2362 4570 l
+ 2382 4542 l 2401 4514 l 2418 4486 l 2436 4460 l 2452 4434 l
+ 2468 4409 l 2483 4384 l 2497 4362 l 2510 4341 l 2521 4323 l
+ 2530 4307 l 2538 4295 l
+ 2550 4275 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 2519 4412 m 2539 4293 l 2442 4366 l 2492 4370 l 2519 4412 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+3406 4239 m 3328 4283 l 3400 4413 l 3385 4293 l 3479 4368 l cp
+eoclip
+n 4425 4950 m 4424 4950 l 4420 4950 l 4415 4950 l 4406 4951 l 4394 4951 l
+ 4378 4951 l 4360 4951 l 4338 4951 l 4315 4950 l 4289 4949 l
+ 4261 4948 l 4232 4945 l 4202 4942 l 4170 4937 l 4138 4931 l
+ 4105 4923 l 4070 4914 l 4033 4902 l 3995 4888 l 3955 4871 l
+ 3912 4850 l 3869 4827 l 3825 4800 l 3785 4773 l 3747 4745 l
+ 3712 4716 l 3679 4688 l 3649 4659 l 3621 4631 l 3595 4603 l
+ 3572 4575 l 3549 4548 l 3529 4521 l 3509 4494 l 3491 4467 l
+ 3473 4441 l 3457 4416 l 3442 4392 l 3429 4370 l 3416 4349 l
+ 3406 4330 l 3397 4314 l 3389 4301 l 3384 4291 l
+ 3375 4275 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 3479 4368 m 3385 4293 l 3400 4413 l 3429 4371 l 3479 4368 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+3477 5705 m 3565 5724 l 3596 5579 l 3529 5680 l 3508 5560 l cp
+eoclip
+n 4425 4950 m 4423 4950 l 4420 4950 l 4414 4949 l 4404 4948 l 4391 4947 l
+ 4374 4946 l 4354 4946 l 4330 4945 l 4304 4944 l 4276 4945 l
+ 4247 4945 l 4216 4947 l 4185 4950 l 4152 4954 l 4119 4960 l
+ 4085 4967 l 4051 4977 l 4015 4989 l 3978 5004 l 3941 5022 l
+ 3902 5045 l 3863 5070 l 3825 5100 l 3789 5133 l 3755 5167 l
+ 3726 5202 l 3699 5237 l 3676 5272 l 3655 5306 l 3637 5341 l
+ 3621 5375 l 3606 5409 l 3594 5442 l 3582 5475 l 3572 5508 l
+ 3563 5539 l 3555 5569 l 3548 5597 l 3542 5622 l 3537 5644 l
+ 3533 5663 l 3530 5677 l
+ 3525 5700 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 3508 5560 m 3529 5680 l 3596 5579 l 3548 5592 l 3508 5560 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+4602 3819 m 4684 3857 l 4747 3723 l 4659 3806 l 4666 3685 l cp
+eoclip
+n 5400 3075 m 5399 3075 l 5397 3074 l 5393 3074 l 5386 3073 l 5378 3072 l
+ 5367 3071 l 5355 3070 l 5340 3069 l 5324 3069 l 5306 3070 l
+ 5288 3072 l 5268 3075 l 5247 3080 l 5225 3087 l 5202 3096 l
+ 5177 3108 l 5151 3123 l 5122 3142 l 5091 3165 l 5059 3193 l
+ 5025 3225 l 4996 3255 l 4968 3286 l 4942 3319 l 4917 3351 l
+ 4893 3383 l 4871 3416 l 4850 3447 l 4830 3479 l 4811 3510 l
+ 4793 3542 l 4776 3572 l 4759 3603 l 4744 3633 l 4729 3662 l
+ 4715 3690 l 4702 3716 l 4690 3740 l 4680 3761 l 4671 3779 l
+ 4664 3795 l 4659 3806 l
+ 4650 3825 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 4666 3685 m 4659 3806 l 4747 3723 l 4697 3724 l 4666 3685 l 
+ cp gs 0.00 setgray ef gr  col0 s
+/Times-Bold ff 180.00 scf sf
+750 5025 m
+gs 1 -1 sc (Create) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+750 5250 m
+gs 1 -1 sc (directories) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+4575 4875 m
+gs 1 -1 sc (Copy and/or) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+4575 5100 m
+gs 1 -1 sc (create Makefile.in) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+5550 3225 m
+gs 1 -1 sc (files \(module level\)) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+5550 3000 m
+gs 1 -1 sc (Exported resource) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+5625 1950 m
+gs 1 -1 sc (Update SUBDIRS ) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+5625 2175 m
+gs 1 -1 sc (list in Makefile.in) col0 sh gr
+$F2psEnd
+rs
+
+%%EndDocument
+ @endspecial Black 727 4596 a(Figure)g(2:)29 b(Source)c(tree)f(:)k
+(modi\002cation)d(when)f(adding)h(an)f(ne)n(w)f(module)p
+Black Black 0 5018 a Fj(4)119 b(De)n(v)o(elopment)31
+b(unit)g(cr)n(eation)0 5295 y Fn(Here)24 b(we)f(w)o(ant)g(to)h(add)g(a)
+g(de)n(v)o(elopment)i(unit)e(named)g Ff(<Unit>)d Fn(in)i(the)h(e)o
+(xisting)i(module)f Ff(<Module>)19 b Fn(\(replace)26
+b(the)0 5430 y(names)e Ff(<Unit>)c Fn(and)k Ff(<Module>)19
+b Fn(with)k(real)h(ones\).)p Black 0 5644 3827 9 v 0
+5757 a(SALOME)415 b(Using)24 b(the)g(SALOME)d(con\002guration)26
+b(and)e(b)n(uilding)i(system)e(V)-12 b(.)23 b(0.3)607
+b(9/20)p Black eop
+%%Page: 10 10
+10 9 bop Black Black Black 114 50 a Fn(1.)p Black 45
+w(In)24 b(the)g Ff(src)d Fn(subdirectory)27 b(of)d Ff(<Module>)p
+Fn(,)18 b(create)25 b(a)e(subdirectory)k(named)d Ff(<Unit>)c
+Fn(:)p Black Black 227 185 a Ff(cd)54 b(<path)e(to)i(<Module>)d(>/src)
+227 321 y(mkdir)i(<Unit>)227 373 y Fn(Modify)38 b(then)g
+Ff(Makefile.in)49 b Fn(\002le)37 b(in)g(the)g Ff(src)e
+Fn(directory)k(to)e(add)g(the)g(ne)n(w)g(unit)g(to)g(the)g(compilation)
+227 509 y(process)26 b(:)227 644 y(Complete)f(the)e(line)h(be)o
+(ginning)i(with)p Black Black 227 780 a Ff(SUBDIRS)52
+b(=)i(...)227 874 y Fn(with)24 b(the)f(name)h(of)g(the)f(ne)n(w)g
+(directory)p Black Black 227 1009 a Ff(SUBDIRS)52 b(=)i(...)f(<Unit>)p
+Black 114 1178 a Fn(2.)p Black 45 w(Create)25 b(a)f Ff(Makefile.in)50
+b Fn(\002le)24 b(in)g(the)h(ne)n(w)f Ff(<Unit>)d Fn(directory)27
+b(\(you)e(can)g(cop)o(y)h(a)e Ff(Makefile.in)50 b Fn(\002le)227
+1313 y(from)31 b(the)h(corresponding)j(subdirectory)g(in)c
+Ff(GEOM)e Fn(module)j(:)44 b Ff(GEOM/src/GEOMG)o(UI)24
+b Fn(subdirectory)35 b(for)227 1449 y(e)o(xample,)24
+b(and)g(modify)h(as)e(you)h(need\))p Black Black 227
+1584 a Ff(cd)54 b(<Unit>)227 1720 y(...)f(create)f(Makefile.in)227
+1772 y Fn(The)23 b(details)i(of)f Ff(Makefile.in)49 b
+Fn(creation)26 b(is)d(detailed)j(in)d(the)h(ne)o(xt)g(section.)0
+2055 y(The)f(dif)n(ferent)j(\002les)d(of)g(your)i(unit)f(must)f(be)h
+(located)h(in)f(se)n(v)o(eral)g(directories)j(\(see)d(\002gure)g(3)f
+(and)h(the)g(list)f(belo)n(w\).)p Black 136 2337 a Fc(\017)p
+Black 46 w Fn(Pri)n(v)n(ate)h(source)h(and)f(header)h(\002les)e(of)h
+(your)g(unit)227 2473 y(Place)29 b(the)f(only)h(cop)o(y)h(of)e(these)h
+(\002les)f(in)g(your)h(unit.)44 b(If)28 b(you)h(use)g(the)f(proposed)j
+(mak)o(e\002le)e(system,)g(dont)h(put)227 2608 y(them)24
+b(in)f(subdirectories)28 b(of)23 b(your)i(unit.)227 2744
+y(Note)p Black Black 427 2916 a(Using)k(a)g(non-\003at)g(directory)i
+(structure)g(for)e(an)g(unit,)h(has)f(not)h(been)f(tested)h(b)n(ut)f
+(it)g(should)h(w)o(ork.)427 3052 y(Y)-10 b(ou)24 b(must)f(write)h(your)
+g(mak)o(e\002le)g(to)f(tak)o(e)i(care)f(of)f(subdirectories.)p
+Black 136 3225 a Fc(\017)p Black 46 w Fn(Exported)i(idl)f(\002les)f
+(from)h(a)f(unit)227 3360 y(These)h(\002les)f(are)h(pro)o(vided)i(by)d
+(the)h(unit)g(for)g(CORB)m(A)d(communication)26 b(with)d(other)i
+(units.)227 3496 y(Place)f(the)g(only)g(cop)o(y)h(of)e(these)i(\002les)
+e(into)h(the)g(idl)g(subdirectory)j(of)c(the)h(root)g(source)h(tree.)p
+Black 136 3664 a Fc(\017)p Black 46 w Fn(Exported)g(header)g(\002les)f
+(from)f(a)g(unit)227 3800 y(These)34 b(\002les)g(are)g(pro)o(vided)i
+(by)e(the)g(unit)g(for)g(direct)h(communication)i(from)d(other)g(units)
+h(\(using)h(the)e(unit')-5 b(s)227 3935 y(library\).)227
+4071 y(Place)24 b(the)g(master)g(cop)o(y)g(of)g(these)g(\002les)g(in)f
+(your)h(unit)h(subtree.)227 4206 y(Assure)e(that)g(these)g(\002les)g
+(are)f(automatically)j(or)e(manually)h(copied)f(in)g(the)f(inc)h
+(subdirectory)j(of)c(the)h(root)g(b)n(uild)227 4342 y(tree.)0
+4712 y Fj(5)119 b(Cr)n(eating)31 b(a)e Fb(Makefile.in)69
+b Fj(\002le)31 b(in)f(a)g(new)h(unit)0 4992 y Fe(5.1)99
+b(Using)25 b(pr)n(ede\002ned)j(mak)o(e)d(rules)0 5237
+y Fn(Cop)o(y)f(the)g(follo)n(wing)h Ff(Makefile.in)72
+b Fn(sk)o(eleton)26 b(in)d(the)h(unit)g(directory)i(:)p
+Black Black 0 5519 a Ff(#)54 b(begin)e(copy)h(here)g(==============)o
+(===)o(==)o(==)o(==)o(==)o(===)o(==)o(==)o(==)o(==)o(===)o(==)o(=)p
+Black 0 5644 3827 9 v 0 5757 a Fn(SALOME)415 b(Using)24
+b(the)g(SALOME)d(con\002guration)26 b(and)e(b)n(uilding)i(system)e(V)
+-12 b(.)23 b(0.3)562 b(10/20)p Black eop
+%%Page: 11 11
+11 10 bop Black Black Black 0 3100 a @beginspecial 0
+@llx 0 @lly 404 @urx 377 @ury 4040 @rwi @setspecial
+%%BeginDocument: ../../../SALOME_ROOT/doc/DevelopersGuide/srctree_unit.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: srctree_unit.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3c
+%%CreationDate: Thu Jul 26 11:57:40 2001
+%%For: tajchman@nikyo (Marc Tajchman - SFME/LGLS)
+%%BoundingBox: 0 0 404 377
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 377 moveto 0 0 lineto 404 0 lineto 404 377 lineto closepath clip newpath
+-12.0 416.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 1530 675 m 1350 675 1350 1395 180 arcto 4 {pop} repeat
+  1350 1575 2820 1575 180 arcto 4 {pop} repeat
+  3000 1575 3000 855 180 arcto 4 {pop} repeat
+  3000 675 1530 675 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+1500 975 m
+gs 1 -1 sc (Run reconfigure) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+1500 1200 m
+gs 1 -1 sc (script or edit) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+1500 1425 m
+gs 1 -1 sc (configure.in file) col0 sh gr
+% Polyline
+n 855 3000 m 675 3000 675 3495 180 arcto 4 {pop} repeat
+  675 3675 1770 3675 180 arcto 4 {pop} repeat
+  1950 3675 1950 3180 180 arcto 4 {pop} repeat
+  1950 3000 855 3000 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+825 3300 m
+gs 1 -1 sc (Exported) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+825 3525 m
+gs 1 -1 sc (idl files) col0 sh gr
+% Polyline
+n 2475 2025 m 3450 2025 l 3450 2475 l 2475 2475 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+2625 2325 m
+gs 1 -1 sc (Module 1) col0 sh gr
+% Polyline
+n 3000 3900 m 3900 3900 l 3900 4350 l 3000 4350 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+3150 4200 m
+gs 1 -1 sc (src) col0 sh gr
+% Polyline
+n 1725 3900 m 2700 3900 l 2700 4350 l 1725 4350 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+1800 4200 m
+gs 1 -1 sc (resources) col0 sh gr
+% Polyline
+n 1275 2025 m 2250 2025 l 2250 2475 l 1275 2475 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+1575 2325 m
+gs 1 -1 sc (idl) col0 sh gr
+% Polyline
+n 5205 3150 m 5025 3150 5025 3645 180 arcto 4 {pop} repeat
+  5025 3825 6495 3825 180 arcto 4 {pop} repeat
+  6675 3825 6675 3330 180 arcto 4 {pop} repeat
+  6675 3150 5205 3150 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+5175 3450 m
+gs 1 -1 sc (Exported shell) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+5175 3675 m
+gs 1 -1 sc (scripts) col0 sh gr
+% Polyline
+n 5430 4275 m 5250 4275 5250 4770 180 arcto 4 {pop} repeat
+  5250 4950 6720 4950 180 arcto 4 {pop} repeat
+  6900 4950 6900 4455 180 arcto 4 {pop} repeat
+  6900 4275 5430 4275 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+5400 4575 m
+gs 1 -1 sc (Update SUBDIR) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+5400 4800 m
+gs 1 -1 sc (list in Makefile.in) col0 sh gr
+% Polyline
+n 4275 2025 m 5325 2025 l 5325 2475 l 4275 2475 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+4425 2325 m
+gs 1 -1 sc (resources) col0 sh gr
+% Polyline
+n 5625 2025 m 6675 2025 l 6675 2475 l 5625 2475 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+5850 2325 m
+gs 1 -1 sc (bin) col0 sh gr
+% Polyline
+n 2700 5100 m 3675 5100 l 3675 5550 l 2700 5550 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+2775 5400 m
+gs 1 -1 sc (New unit) col0 sh gr
+% Polyline
+n 1380 6225 m 1200 6225 1200 6720 180 arcto 4 {pop} repeat
+  1200 6900 2670 6900 180 arcto 4 {pop} repeat
+  2850 6900 2850 6405 180 arcto 4 {pop} repeat
+  2850 6225 1380 6225 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+1350 6750 m
+gs 1 -1 sc (and header files) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+1350 6525 m
+gs 1 -1 sc (Private source) col0 sh gr
+% Polyline
+n 3330 6225 m 3150 6225 3150 6720 180 arcto 4 {pop} repeat
+  3150 6900 4620 6900 180 arcto 4 {pop} repeat
+  4800 6900 4800 6405 180 arcto 4 {pop} repeat
+  4800 6225 3330 6225 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+3300 6525 m
+gs 1 -1 sc (Exported header) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+3300 6750 m
+gs 1 -1 sc (files) col0 sh gr
+% Polyline
+n 3675 825 m 5325 825 l 5325 1425 l 3675 1425 l
+ cp gs col0 s gr 
+% Polyline
+n 4725 1425 m
+ 4875 2025 l gs col0 s gr 
+% Polyline
+n 3975 1425 m
+ 1800 2025 l gs col0 s gr 
+% Polyline
+n 2700 2475 m
+ 2400 3900 l gs col0 s gr 
+% Polyline
+gs  clippath
+3679 1172 m 3699 1084 l 3554 1051 l 3655 1120 l 3535 1139 l cp
+eoclip
+n 3000 975 m
+ 3675 1125 l gs col0 s gr gr
+
+% arrowhead
+n 3535 1139 m 3655 1120 l 3554 1051 l 3567 1100 l 3535 1139 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+n 5100 1425 m
+ 5625 2025 l gs col0 s gr 
+% Polyline
+n 3000 2025 m
+ 4200 1425 l gs col0 s gr 
+% Polyline
+n 3300 4350 m
+ 3150 5100 l gs col0 s gr 
+% Polyline
+n 3075 2475 m
+ 3375 3900 l gs col0 s gr 
+% Polyline
+ [60] 0 sd
+n 3675 4350 m
+ 4425 5025 l gs col0 s gr  [] 0 sd
+% Polyline
+ [60] 0 sd
+n 3450 4350 m
+ 3900 5025 l gs col0 s gr  [] 0 sd
+% Polyline
+ [60] 0 sd
+n 4350 1425 m
+ 3675 2025 l gs col0 s gr  [] 0 sd
+% Polyline
+ [60] 0 sd
+n 4500 1425 m
+ 4050 2025 l gs col0 s gr  [] 0 sd
+% Polyline
+n 405 4950 m 225 4950 225 5445 180 arcto 4 {pop} repeat
+  225 5625 1845 5625 180 arcto 4 {pop} repeat
+  2025 5625 2025 5130 180 arcto 4 {pop} repeat
+  2025 4950 405 4950 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 4305 5325 m 4125 5325 4125 5820 180 arcto 4 {pop} repeat
+  4125 6000 5745 6000 180 arcto 4 {pop} repeat
+  5925 6000 5925 5505 180 arcto 4 {pop} repeat
+  5925 5325 4305 5325 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+% Polyline
+2 slj
+gs  clippath
+2663 5277 m 2610 5204 l 2490 5291 l 2608 5262 l 2543 5364 l cp
+eoclip
+n 2100 6225 m 2099 6224 l 2098 6221 l 2095 6217 l 2091 6210 l 2086 6201 l
+ 2080 6189 l 2073 6174 l 2065 6158 l 2058 6140 l 2051 6120 l
+ 2044 6098 l 2039 6075 l 2035 6051 l 2033 6025 l 2032 5997 l
+ 2035 5967 l 2040 5934 l 2049 5899 l 2061 5860 l 2078 5819 l
+ 2100 5775 l 2122 5737 l 2145 5701 l 2170 5665 l 2197 5631 l
+ 2223 5599 l 2250 5568 l 2278 5539 l 2305 5512 l 2333 5485 l
+ 2361 5459 l 2389 5435 l 2417 5411 l 2445 5388 l 2471 5367 l
+ 2497 5346 l 2522 5327 l 2544 5310 l 2564 5295 l 2582 5282 l
+ 2596 5271 l 2607 5263 l
+ 2625 5250 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 2543 5364 m 2608 5262 l 2490 5291 l 2535 5314 l 2543 5364 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+3241 5505 m 3185 5576 l 3301 5668 l 3241 5563 l 3357 5597 l cp
+eoclip
+n 3675 6225 m 3675 6224 l 3676 6221 l 3677 6216 l 3679 6209 l 3680 6199 l
+ 3682 6187 l 3684 6173 l 3684 6157 l 3684 6140 l 3683 6121 l
+ 3680 6101 l 3675 6078 l 3667 6054 l 3656 6026 l 3642 5996 l
+ 3623 5962 l 3600 5925 l 3579 5894 l 3556 5864 l 3532 5835 l
+ 3509 5808 l 3485 5782 l 3462 5758 l 3438 5734 l 3415 5712 l
+ 3392 5691 l 3369 5670 l 3347 5651 l 3325 5632 l 3305 5615 l
+ 3286 5599 l 3269 5586 l 3255 5574 l 3244 5565 l
+ 3225 5550 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 3357 5597 m 3241 5563 l 3301 5668 l 3311 5618 l 3357 5597 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+3892 4003 m 3878 4092 l 4025 4114 l 3921 4053 l 4039 4026 l cp
+eoclip
+n 5250 4500 m 5250 4499 l 5249 4498 l 5248 4496 l 5246 4492 l 5244 4487 l
+ 5240 4480 l 5236 4473 l 5229 4464 l 5222 4454 l 5212 4444 l
+ 5201 4433 l 5188 4421 l 5172 4408 l 5152 4395 l 5129 4381 l
+ 5102 4366 l 5069 4350 l 5031 4333 l 4986 4315 l 4934 4295 l
+ 4875 4275 l 4829 4260 l 4781 4245 l 4733 4231 l 4686 4218 l
+ 4638 4205 l 4591 4193 l 4545 4182 l 4500 4171 l 4456 4160 l
+ 4412 4150 l 4368 4141 l 4325 4132 l 4283 4123 l 4241 4114 l
+ 4200 4106 l 4160 4098 l 4122 4091 l 4086 4084 l 4052 4078 l
+ 4021 4072 l 3993 4067 l 3969 4062 l 3948 4059 l 3932 4056 l
+ 3919 4053 l
+ 3900 4050 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 4039 4026 m 3921 4053 l 4025 4114 l 4009 4067 l 4039 4026 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+1302 2288 m 1276 2202 l 1134 2245 l 1255 2256 l 1160 2331 l cp
+eoclip
+n 675 3300 m 674 3299 l 671 3296 l 666 3292 l 659 3285 l 648 3275 l
+ 635 3262 l 620 3247 l 602 3229 l 583 3208 l 562 3186 l
+ 541 3162 l 520 3136 l 500 3109 l 480 3081 l 462 3053 l
+ 446 3023 l 432 2993 l 420 2961 l 411 2928 l 406 2894 l
+ 405 2858 l 408 2820 l 416 2781 l 430 2741 l 450 2700 l
+ 472 2665 l 498 2632 l 527 2601 l 558 2571 l 591 2544 l
+ 625 2518 l 661 2494 l 697 2472 l 735 2451 l 773 2432 l
+ 812 2413 l 851 2396 l 891 2379 l 931 2363 l 970 2348 l
+ 1009 2334 l 1047 2321 l 1084 2309 l 1118 2298 l 1150 2288 l
+ 1178 2279 l 1203 2271 l 1224 2265 l 1242 2260 l 1255 2256 l
+
+ 1275 2250 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 1160 2331 m 1255 2256 l 1134 2245 l 1168 2281 l 1160 2331 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+1765 4073 m 1706 4006 l 1594 4104 l 1709 4064 l 1653 4171 l cp
+eoclip
+n 1050 4950 m 1050 4949 l 1050 4947 l 1049 4942 l 1049 4936 l 1049 4927 l
+ 1049 4916 l 1049 4902 l 1050 4887 l 1052 4870 l 1056 4852 l
+ 1060 4832 l 1067 4810 l 1075 4786 l 1086 4759 l 1101 4729 l
+ 1119 4696 l 1141 4660 l 1168 4619 l 1200 4575 l 1227 4540 l
+ 1255 4505 l 1284 4472 l 1312 4439 l 1341 4408 l 1369 4378 l
+ 1397 4349 l 1425 4321 l 1452 4295 l 1479 4269 l 1506 4243 l
+ 1533 4219 l 1559 4195 l 1584 4173 l 1608 4151 l 1630 4131 l
+ 1651 4113 l 1670 4097 l 1686 4084 l 1699 4072 l 1709 4064 l
+
+ 1725 4050 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 1653 4171 m 1709 4064 l 1594 4104 l 1641 4123 l 1653 4171 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+6234 2428 m 6189 2506 l 6317 2580 l 6243 2485 l 6362 2502 l cp
+eoclip
+n 6675 3225 m 6676 3224 l 6677 3221 l 6680 3215 l 6685 3208 l 6690 3197 l
+ 6696 3184 l 6703 3168 l 6710 3150 l 6717 3131 l 6723 3111 l
+ 6728 3089 l 6732 3066 l 6733 3041 l 6732 3015 l 6729 2987 l
+ 6722 2956 l 6711 2923 l 6695 2887 l 6675 2850 l 6655 2819 l
+ 6633 2789 l 6609 2760 l 6585 2734 l 6560 2709 l 6534 2685 l
+ 6509 2663 l 6483 2642 l 6457 2623 l 6431 2604 l 6405 2586 l
+ 6380 2569 l 6355 2553 l 6331 2538 l 6308 2524 l 6288 2512 l
+ 6270 2501 l 6256 2492 l 6244 2486 l
+ 6225 2475 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 6362 2502 m 6243 2485 l 6317 2580 l 6320 2530 l 6362 2502 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+3700 5285 m 3630 5341 l 3722 5457 l 3688 5341 l 3793 5401 l cp
+eoclip
+n 4125 5625 m 4123 5625 l 4118 5625 l 4110 5624 l 4099 5624 l 4085 5622 l
+ 4069 5620 l 4051 5617 l 4031 5613 l 4010 5606 l 3987 5597 l
+ 3961 5585 l 3932 5570 l 3900 5550 l 3872 5530 l 3846 5510 l
+ 3823 5490 l 3801 5470 l 3782 5451 l 3764 5432 l 3747 5413 l
+ 3731 5395 l 3717 5378 l 3704 5363 l 3694 5349 l
+ 3675 5325 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 3793 5401 m 3688 5341 l 3722 5457 l 3743 5411 l 3793 5401 l 
+ cp gs 0.00 setgray ef gr  col0 s
+/Times-Roman ff 180.00 scf sf
+3825 1200 m
+gs 1 -1 sc (Root Source Tree) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+4275 5625 m
+gs 1 -1 sc (Copy and/or) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+4275 5850 m
+gs 1 -1 sc (create Makefile.in) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+375 5250 m
+gs 1 -1 sc (Exported resource) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+375 5475 m
+gs 1 -1 sc (files \(xml, ...\)) col0 sh gr
+$F2psEnd
+rs
+
+%%EndDocument
+ @endspecial Black 390 3319 a Fn(Figure)24 b(3:)29 b(Source)24
+b(tree)g(:)k(modi\002cation)e(when)d(adding)i(an)f(ne)n(w)f(unit)h(in)g
+(an)f(e)o(xisting)i(module)p Black Black 0 3731 a Ff(top_srcdir=@top)o
+(_s)o(rc)o(di)o(r@)0 3867 y(top_builddir=..)o(/.)o(./)o(..)0
+4002 y(srcdir=@srcdir@)0 4138 y(VPATH=.:@srcdir)o(@)0
+4409 y(@COMMENCE@)0 4680 y(#)54 b(Libraries)d(targets)0
+4815 y(LIB)i(=)0 4951 y(LIB_SRC)e(=)0 5086 y(LIB_MOC)g(=)0
+5222 y(LIB_CLIENT_IDL)d(=)0 5357 y(LIB_SERVER_IDL)g(=)p
+Black 0 5644 3827 9 v 0 5757 a Fn(SALOME)415 b(Using)24
+b(the)g(SALOME)d(con\002guration)26 b(and)e(b)n(uilding)i(system)e(V)
+-12 b(.)23 b(0.3)562 b(11/20)p Black eop
+%%Page: 12 12
+12 11 bop Black Black 0 50 a Ff(#)54 b(Executable)c(targets)0
+185 y(BIN)j(=)0 321 y(BIN_SRC)e(=)0 456 y(BIN_MOC)g(=)0
+592 y(BIN_CLIENT_IDL)d(=)0 727 y(BIN_SERVER_IDL)g(=)0
+998 y(#)54 b(exported)d(header)h(files)0 1134 y(EXPORT_HEADERS)c(=)0
+1405 y(#)54 b(exported)d(python)h(executable)e(files)0
+1540 y(EXPORT_PYSCRIPT)o(S)e(=)0 1811 y(#)54 b(list)f(of)g(files)g(in)g
+(resources)e(directory)f(\(copy)j(when)f(do)i(make)f(install\))0
+1947 y(RESOURCES_FILES)48 b(=)0 2218 y(#)54 b(po)g(ressources)c(files)i
+(\(to)h(transform)e(them)h(in)i(qm)g(file\))e(:)0 2353
+y(PO_FILES)f(=)0 2624 y(#)j(put)f(here)g(additional)d(rules,)i(or)h
+(extra)g(compiler)e(options)g(...)0 2895 y(@CONCLUDE@)0
+3166 y(#)j(end)f(copy)g(here)g(==============)o(==)o(===)o(==)o(==)o
+(==)o(==)o(===)o(==)o(==)o(==)o(==)o(===)o(==)o(=)0 3432
+y Fn(Adapt)24 b(this)g Ff(Makefile.in)50 b Fn(sk)o(eleton)25
+b(to)f(your)g(particular)i(needs)f(:)p Black 136 3677
+a Fc(\017)p Black 46 w Fn(if)f(you)g(ha)n(v)o(e)g(to)f(compile)i(a)e
+(library)p Black 314 3812 a(1.)p Black 45 w(Complete)i(the)e(line)p
+Black Black 427 3948 a Ff(LIB)53 b(=)427 4042 y Fn(as)p
+Black Black 427 4177 a Ff(LIB)g(=)i(lib<MyLibrary>)o(.l)o(a)427
+4271 y Fn(Example)24 b(:)p Black Black 427 4406 a Ff(LIB)53
+b(=)i(libGeometryGui)o(.l)o(a)427 4500 y Fn(Notes)p Black
+451 4650 a(\(a\))p Black 46 w(the)25 b(library)g(name)f
+Fi(must)g Fn(be)o(gin)g(with)g Ff(lib)e Fn(and)j(end)f(with)g
+Ff(.la)e Fn(\(this)j(allo)n(ws)f(automatic)i(creation)597
+4785 y(of)e(shared)h(libraries)g(with)f(libtool\).)p
+Black 446 4954 a(\(b\))p Black 46 w(there)h(must)e(be)h(only)g(one)g
+(library)h(by)f(de)n(v)o(elopment)i(unit)p Black 314
+5123 a(2.)p Black 45 w(Also)e(add)g(to)f(the)h(line)g(:)p
+Black Black 427 5258 a Ff(LIB_SRC)52 b(=)427 5352 y Fn(the)24
+b(list)g(of)f(sources)j(\002les)d(\(in)h(this)g(unit\))g(needed)i(to)d
+(b)n(uild)i(the)f(library)p Black 314 5521 a(3.)p Black
+45 w(If)g(your)g(library)h(uses)f(QT)e(MOC)g(\002le,)h(add)h(to)f(the)h
+(line)g(:)p Black 0 5644 3827 9 v 0 5757 a(SALOME)415
+b(Using)24 b(the)g(SALOME)d(con\002guration)26 b(and)e(b)n(uilding)i
+(system)e(V)-12 b(.)23 b(0.3)562 b(12/20)p Black eop
+%%Page: 13 13
+13 12 bop Black Black Black Black 427 50 a Ff(LIB_MOC)52
+b(=)427 144 y Fn(the)24 b(list)g(of)f(headers)j(\002les)d(to)h
+(transform)h(with)e(moc.)p Black 314 312 a(4.)p Black
+45 w(If)g(your)h(library)h(uses)f(CORB)m(A)c(functionnalities)28
+b(from)23 b(other)h(units)g(\(i.e.)29 b(uses)24 b(idl)f(\002les)g(e)o
+(xported)i(from)427 448 y(other)g(units\),)f(add)g(to)g(the)g(line)g(:)
+p Black Black 427 583 a Ff(LIB_CLIENT_IDL)48 b(=)427
+677 y Fn(the)24 b(list)g(of)f(idl)h(\002les.)p Black
+314 846 a(5.)p Black 45 w(If)i(your)h(unit)f(pro)o(vides)i(CORB)m(A)23
+b(functionnalities)31 b(\(i.e.)36 b(e)o(xports)27 b(idl)f(\002les)g(to)
+g(the)g(other)h(units\),)h(add)e(to)427 982 y(the)e(line)g(:)p
+Black Black 427 1117 a Ff(LIB_SERVER_IDL)48 b(=)427 1211
+y Fn(the)24 b(list)g(of)f(idl)h(\002les.)p Black 136
+1380 a Fc(\017)p Black 46 w Fn(if)g(you)g(w)o(ant)f(to)h(b)n(uild)g
+(one)g(or)g(more)f(e)o(x)o(ecutables)k(:)p Black 314
+1515 a(1.)p Black 45 w(Complete)e(the)e(line)p Black
+Black 427 1651 a Ff(BIN)53 b(=)427 1745 y Fn(as)p Black
+Black 427 1880 a Ff(BIN)g(=)i(<MyBin1>)50 b(<MyBin2>)h(..)427
+2016 y(.)427 2110 y Fn(Note)p Black Black 597 2262 a(F)o(or)21
+b(each)h(e)o(x)o(ecutable)i(in)d(the)h Ff(BIN)d Fn(list,)j(say)g
+Ff(MyBin1)p Fn(,)c(the)j(main)h(function)h Fi(must)e
+Fn(be)g(in)h(a)f(\002le)597 2397 y(named)j(accordingly)-6
+b(,)27 b(in)d(this)g(e)o(xample)g(:)k Ff(MyBin1.cxx)19
+b Fn(and)24 b Ff(MyBin2.cxx)p Fn(.)p Black 314 2566 a(2.)p
+Black 45 w(Also)g(add)g(to)f(the)h(line)g(:)p Black Black
+427 2702 a Ff(BIN_SRC)52 b(=)427 2796 y Fn(the)30 b(list)f(of)g(source)
+h(\002les)f(\(in)g(this)h(unit\))g(needed)g(to)f(b)n(uild)h
+Fi(all)g Fn(the)f(e)o(x)o(ecutables,)j Fi(excluding)d(\002les)g(con-)
+427 2931 y(taining)24 b(main)f(function\(s\))p Fn(.)427
+3066 y(Notes)h(:)p Black 451 3219 a(\(a\))p Black 46
+w(The)34 b(mak)o(e\002le)g(system)h(will)e(automatically)k(add)e(to)f
+(each)g(e)o(x)o(ecutable,)39 b(its)34 b(main)g(function)i(\002le.)597
+3354 y(That')-5 b(s)24 b(why)f(these)i(\002les)e(must)g(not)h(be)g
+(included)i(in)d(the)h Ff(BIN)p 2590 3354 28 4 v 31 w(SRC)e
+Fn(list)p Black 446 3523 a(\(b\))p Black 46 w(The)33
+b(object)h(\002les)f(\(compiled)i(from)e(the)g(source)h(\002les)f(in)g
+(the)g Ff(BIN)p 2831 3523 V 32 w(SRC)d Fn(list\))k(will)f(be)g
+(properly)597 3658 y(dispatched)27 b(between)d(the)g(e)o(x)o(ecutables)
+i(by)e(the)g(link)o(er)-5 b(.)p Black 314 3827 a(3.)p
+Black 45 w(If)24 b(your)g(binaries)h(uses)g(QT)d(MOC)f(\002le,)i(add)h
+(to)g(the)f(line)h(:)p Black Black 427 3962 a Ff(BIN_MOC)52
+b(=)427 4056 y Fn(the)24 b(list)g(of)f(headers)j(\002les)d(to)h
+(transform)h(with)e(moc.)p Black 314 4225 a(4.)p Black
+45 w(If)d(your)g(binaries)i(uses)f(CORB)m(A)16 b(functionnalities)25
+b(from)20 b(other)g(units)h(\(i.e.)27 b(uses)21 b(idl)f(\002les)f(e)o
+(xported)j(from)427 4361 y(other)j(units\),)f(add)g(to)g(the)g(line)g
+(:)p Black Black 427 4496 a Ff(BIN_CLIENT_IDL)48 b(=)427
+4590 y Fn(the)24 b(list)g(of)f(idl)h(\002les.)p Black
+314 4759 a(5.)p Black 45 w(If)i(your)h(unit)f(pro)o(vides)i(CORB)m(A)23
+b(functionnalities)31 b(\(i.e.)36 b(e)o(xports)27 b(idl)f(\002les)g(to)
+g(the)g(other)h(units\),)h(add)e(to)427 4894 y(the)e(line)g(:)p
+Black Black 427 5030 a Ff(BIN_SERVER_IDL)48 b(=)427 5124
+y Fn(the)24 b(list)g(of)f(idl)h(\002les.)p Black 136
+5292 a Fc(\017)p Black 46 w Fn(List)f(the)h(e)o(xported)i(header)f
+(\002les)e(that)h(your)g(unit)h(pro)o(vides)g(to)f(other)g(de)n(v)o
+(elopments)i(units)f(:)227 5428 y(Complete)g(the)e(line)p
+Black 0 5644 3827 9 v 0 5757 a(SALOME)415 b(Using)24
+b(the)g(SALOME)d(con\002guration)26 b(and)e(b)n(uilding)i(system)e(V)
+-12 b(.)23 b(0.3)562 b(13/20)p Black eop
+%%Page: 14 14
+14 13 bop Black Black Black Black 227 50 a Ff(EXPORT_HEADERS)48
+b(=)227 144 y Fn(with)24 b(the)f(list)h(header)h(\002les.)227
+279 y(Note)p Black Black 427 452 a(The)e(mak)o(e\002le)h(system)g(will)
+f(automatically)j(cop)o(y)f(these)f(\002les)f(in)h(a)e(subdirectory)27
+b Ff(inc)22 b Fn(in)h(the)h(top)427 588 y(b)n(uild)i(directory)-6
+b(,)28 b(and)d(maintain)h(coherence)i(with)d(your)g(pri)n(v)n(ate)h
+(cop)o(y)g(inside)g(your)g(unit)g(subtree.)427 723 y(This)d(is)f(to)g
+(assure)i(name)f(uniqueness)i(of)e(dif)n(ferents)i(e)o(xported)f
+(header)g(\002les)e(from)h(dif)n(ferent)h(units)427 859
+y(and)g(to)g(write)f(easier)i(mak)o(e\002les.)p Black
+136 1031 a Fc(\017)p Black 46 w Fn(List)e(the)h(p)o(ython)i(scripts)f
+(\002les)e(that)h(your)g(unit)h(e)o(xport)f(:)227 1167
+y(Complete)h(the)e(line)p Black Black 227 1302 a Ff(EXPORT_PYSCRIPT)o
+(S)49 b(=)p Black 136 1471 a Fc(\017)p Black 46 w Fn(T)-7
+b(o)23 b(generate)i(qm)e(\002le)g(from)h(po)f(\002le)g(\(use)h(by)g
+(QT\),)e(list)i(po)f(\002les)h(in)f(:)p Black Black 227
+1607 a Ff(PO_FILES)51 b(=)227 1659 y Fn(Note)p Black
+Black 427 1832 a(The)33 b(resulting)j(qm)c(\002les)h(will)g(ge)g
+(generated)j(directory)f(which)f(contain)h(Mak)o(e\002le.)58
+b(It)33 b(will)g(be)427 1967 y(copied)25 b(in)f(resources)i(directory)g
+(when)d(do)h Ff('make)52 b(install')p Fn(.)0 2287 y Fe(5.2)99
+b(Using)25 b(y)n(our)f(o)o(wn)h(mak)o(e\002les)h(in)f(an)g(unit)0
+2531 y Fn(If)d(the)g(proposed)i(mak)o(e\002le)f(system)f(don')n(t)i
+(suit)e(your)h(needs)g(\(se)n(v)o(eral)g(libraries,)h(non)f(\003at)e
+(unit)i(subtree)g(structure,)i(...\).)0 2667 y(It')-5
+b(s)24 b(possible)i(to)d(write)h(your)g(o)n(wn)f(mak)o(e\002les.)p
+Black 114 2949 a(1.)p Black 45 w(Create)h(a)f(\002le)g
+Ff(Makefile.in)227 3085 y Fn(This)h(\002le)f(must)g(be)o(gin)h(with)g
+(the)g(lines)p Black Black 227 3220 a Ff(#)54 b(begin)f(copy)f(here)h
+(===============)o(==)o(==)o(===)o(==)o(==)o(==)o(==)o(===)o(==)o(==)o
+(==)o(==)o(=)227 3491 y(top_srcdir=@top)o(_sr)o(cd)o(ir)o(@)227
+3627 y(top_builddir=..)o(/..)o(/.)o(.)227 3762 y(srcdir=@srcdir@)227
+3898 y(VPATH=.:@srcdir)o(@)227 4169 y(@COMMENCE@)227
+4439 y(#)h(end)g(copy)e(here)h(===============)o(==)o(==)o(==)o(===)o
+(==)o(==)o(==)o(==)o(===)o(==)o(==)o(==)o(==)o(=)227
+4592 y Fn(The)23 b(rest)h(of)g(the)g(\002le)f(has)g(the)h(standard)i
+(GNU)c(mak)o(e)h(format.)227 4727 y(Y)-10 b(ou)24 b(must)f(de\002ne)h
+(the)g(follo)n(wing)h(tar)n(gets)g(:)p Black 281 4863
+a(\(a\))p Black 46 w Ff(inc)d Fn(:)28 b(cop)o(y/update)f(the)d(e)o
+(xported)i(header)f(\002les)e(to)g(the)h Ff($top)p 2498
+4863 28 4 v 31 w(builddir/inc)17 b Fn(directory)p Black
+276 5031 a(\(b\))p Black 46 w Ff(dep)22 b Fn(:)28 b(update)d
+(dependencies)p Black 281 5200 a(\(c\))p Black 46 w Ff(lib)d
+Fn(:)28 b(b)n(uild)d(libraries)h(and)e(link)g(them)f(into)h(the)g
+Ff($top)p 2241 5200 V 31 w(builddir/lib)17 b Fn(directory)p
+Black 276 5369 a(\(d\))p Black 46 w Ff(bin)22 b Fn(:)28
+b(b)n(uild)d(e)o(x)o(ecutables)h(and)e(link)g(them)g(into)g(the)g
+Ff($top)p 2365 5369 V 31 w(builddir/bin)17 b Fn(directory)227
+5500 y(Some)23 b(of)h(these)g(tar)n(gets)i(may)d(be)g(empty)-6
+b(,)24 b(if)f(not)h(applicable.)p Black 0 5644 3827 9
+v 0 5757 a(SALOME)415 b(Using)24 b(the)g(SALOME)d(con\002guration)26
+b(and)e(b)n(uilding)i(system)e(V)-12 b(.)23 b(0.3)562
+b(14/20)p Black eop
+%%Page: 15 15
+15 14 bop Black Black 0 50 a Fn(The)23 b(line)p Black
+Black 0 307 a Ff(@\\texttt{COMMEN)o(CE)o(}@)0 565 y Fn(pro)o(vides)38
+b(a)e(number)h(of)f(prede\002ned)i(v)n(ariables)g(that)e(you)h(can)f
+(use)h(in)f(your)h(mak)o(e\002le)f(rules)h(\(de\002ning)h(standard)0
+700 y(libraries)26 b(locations,)f(compiler)g(options,)g(...,)d(see)i
+(ne)o(xt)g(section\).)0 1070 y Fj(6)119 b(Add)31 b(or)f(r)n(emo)o(v)o
+(e)f(a)h(script)0 1347 y Fn(If)18 b(you)g(w)o(ant)h(to)f(add)g(a)g(ne)n
+(w)f(shell)i(script)g(in)f Ff(SALOME)p 1716 1347 28 4
+v 30 w(ROOT/bin)p Fn(,)d(you)k(must)f(edit)g Ff(SALOME)p
+3055 1347 V 30 w(ROOT/Makefile.i)o(n)0 1482 y Fn(to)23
+b(add)h(it)g(in)f Ff(BIN)p 584 1482 V 32 w(SCRIPT)p Fn(.)0
+1665 y(If)h(this)h(script)h(ha)n(v)o(e)f(some)f(package)i(dependent)i
+(v)n(ariable,)e(you)f(must)f(create)h(a)f(\224.in\224)h(\002le)f(and)h
+(add)f(this)h(reference)i(to)0 1801 y Ff(configure.in)17
+b Fn(\002le.)0 1983 y(T)-7 b(o)29 b(remo)o(v)o(e)h(an)g(e)o(xisting)i
+(script,)g(you)f(must)f(of)g(course)h(remo)o(v)o(e)f(it)g(from)g(CVS)e
+(archi)n(v)o(e)j(and)g(also)f(remo)o(v)o(e)g(it)g(from)0
+2119 y Ff(SALOME)p 335 2119 V 30 w(ROOT/Makefile.i)o(n)16
+b Fn(and)24 b(if)g(an)o(y)-6 b(,)23 b(from)h Ff(configure.in)p
+Fn(.)0 2301 y(If)e(you)g(w)o(ant)g(to)g(add)g(a)f(ne)n(w)h(p)o(ython)h
+(script,)g(put)g(it)e(in)h Ff(EXPORT)p 2066 2301 V 30
+w(PYSCRIPTS)17 b Fn(v)n(ariable.)30 b(It)21 b(will)h(be)g(copied)h(at)f
+(same)0 2437 y(place)j(than)f(others)h(e)o(x)o(ecutables.)0
+2807 y Fj(7)119 b(Add)31 b(or)f(r)n(emo)o(v)o(e)f(an)h(IDL)g(\002le)0
+3084 y Fn(If)18 b(you)g(w)o(ant)h(to)f(add)g(a)g(ne)n(w)f(IDL)g(\002le)
+g(in)h Ff(SALOME)p 1610 3084 V 30 w(ROOT/idl)p Fn(,)d(you)j(must)h
+(edit)f Ff(SALOME)p 2949 3084 V 30 w(ROOT/idl/Makefi)o(le)o(.in)0
+3219 y Fn(and)24 b(add)g(its)g(in)f Ff(IDL)p 680 3219
+V 31 w(FILES)p Fn(.)0 3402 y(T)-7 b(o)24 b(remo)o(v)o(e)h(an)g(e)o
+(xisting)i(IDL)d(\002le,)g(you)i(must)f(of)g(course)i(remo)o(v)o(e)e
+(it)g(from)g(CVS)e(archi)n(v)o(e)j(and)f(also)h(remo)o(v)o(e)f(it)g
+(from)0 3537 y Ff(SALOME)p 335 3537 V 30 w(ROOT/idl/Makefi)o(le)o(.i)o
+(n)p Fn(.)0 3907 y Fj(8)119 b(Pr)n(ede\002ned)32 b(symbols)d(used)h(in)
+h Fb(Makefile.in)0 4184 y Fn(Y)-10 b(ou)23 b(can)h(use)g(prede\002ned)i
+(symbols)e(in)g(you)g Ff(Makefile.in)18 b Fn(\002les.)28
+b(These)c(symbols)h(de\002ne)p Black 136 4441 a Fc(\017)p
+Black 46 w Fn(compilation)h(\003ags)e(for)g(source)h(compiling,)p
+Black 136 4610 a Fc(\017)p Black 46 w Fn(header)g(\002les)f(location)h
+(in)f(your)g(local)g(system,)p Black 136 4779 a Fc(\017)p
+Black 46 w Fn(libraries)i(needed)f(for)f(binaries)h(linking.)0
+5036 y(F)o(or)e(e)o(xample)h(to)f(use)h(the)g(OpenCascade)i(libraries)f
+(in)f(your)g(unit,)g(you)g(will)f(add)h(the)p Black 136
+5294 a Fc(\017)p Black 46 w Ff($OCC)p 452 5294 V 31 w(INCLUDES)19
+b Fn(symbol)25 b(to)e(the)h(included)i(header)f(\002le)e(locations,)p
+Black 136 5462 a Fc(\017)p Black 46 w Ff($OCC)p 452 5462
+V 31 w(CXXFLAGS)c Fn(symbol)25 b(to)e(the)h(compilation)i(\003ags,)p
+Black 0 5644 3827 9 v 0 5757 a(SALOME)415 b(Using)24
+b(the)g(SALOME)d(con\002guration)26 b(and)e(b)n(uilding)i(system)e(V)
+-12 b(.)23 b(0.3)562 b(15/20)p Black eop
+%%Page: 16 16
+16 15 bop Black Black Black 136 50 a Fc(\017)p Black
+46 w Ff($OCC)p 452 50 28 4 v 31 w(LIBS)21 b Fn(symbol)k(to)e(the)h
+(link)o(er')-5 b(s)25 b(\003ags)0 307 y(If)e(you)h(use)g(the)g
+(prede\002ned)i(mak)o(e)d(rules,)h(add)g(the)g(lines)p
+Black Black 0 565 a Ff(CPPFLAGS+=$\(OCC)o(_I)o(NC)o(LU)o(DES)o(\))0
+700 y(CXXFLAGS+=$\(OCC)o(_C)o(XX)o(FL)o(AGS)o(\))0 836
+y(LDFLAGS+=$\(OCC_)o(LI)o(BS)o(\))0 1093 y Fn(in)f(your)i
+Ff(Makefile.in)18 b Fn(\002le)k(after)j(the)f(@)p Ff(COMMENCE)p
+Fn(@)18 b(line.)0 1276 y(F)o(or)34 b(each)h(standard)i(tool)e(you)h
+(need)f(in)g(SALOME)c(\(QT)-7 b(,)34 b(p)o(ython,)39
+b(OpenCascade,)g(CORB)m(A,)32 b(VTK,)g(.)14 b(.)g(.)g(\),)35
+b(main)0 1411 y(symbols)25 b(listed)g(belo)n(w)-6 b(.)p
+Black 114 1793 a(1.)p Black 45 w Fd(Corba)p 361 1923
+3105 4 v 361 1923 V 359 2140 4 217 v 411 2075 a(variable)p
+1215 2140 V 555 w(value)p 3464 2140 V 361 2143 3105 4
+v 361 2143 V 359 2360 4 217 v 411 2295 a Ff(CORBA)p 691
+2295 28 4 v 30 w(ROOT)p 1215 2360 4 217 v 330 w Fn(CORB)m(A)21
+b(home)j(base)p 3464 2360 V 361 2363 3105 4 v 361 2363
+V 359 2580 4 217 v 411 2515 a Ff(CORBA)p 691 2515 28
+4 v 30 w(INCLUDES)p 1215 2580 4 217 v 110 w Fn(compiler)h(options)h(to)
+d(include)j(CORB)m(A)20 b(headers)p 3464 2580 V 361 2583
+3105 4 v 361 2583 V 359 2800 4 217 v 411 2735 a Ff(CORBA)p
+691 2735 28 4 v 30 w(LIBS)p 1215 2800 4 217 v 330 w Fn(libraries)26
+b(needed)f(to)f(link)g(with)f(CORB)m(A)p 3464 2800 V
+361 2803 3105 4 v 361 2803 V 359 3156 4 353 v 411 2955
+a Ff(CORBA)p 691 2955 28 4 v 30 w(CXXFLAGS)p 1215 3156
+4 353 v 110 w Fn(C++)g(compiler)i(options)h(to)d(use)h(with)f(CORB)m(A)
+p 3464 3156 V 361 3159 3105 4 v 361 3159 V 359 3376 4
+217 v 411 3311 a Ff(IDL)p 1215 3376 V 690 w Fn(idl)h(compiler)p
+3464 3376 V 361 3379 3105 4 v 361 3379 V 359 3731 4 353
+v 411 3531 a Ff(IDLCXXFLAGS)p 1215 3731 V 250 w Fn(options)g(to)e(the)g
+(idl)g(compiler)h(to)f(generate)i(C++)d(stub)h(or)g(sk)o(eleton)1266
+3666 y(code)p 3464 3731 V 361 3735 3105 4 v 361 3735
+V 359 4087 4 353 v 411 3886 a Ff(IDLPYFLAGS)p 1215 4087
+V 305 w Fn(options)i(to)d(the)h(idl)g(compiler)h(to)e(generate)j(p)o
+(ython)f(stub)f(or)g(sk)o(ele-)1266 4022 y(ton)i(code)p
+3464 4087 V 361 4090 3105 4 v 361 4090 V 359 4307 4 217
+v 411 4242 a Ff(IDL)p 581 4242 28 4 v 31 w(CLN)p 777
+4242 V 32 w(H)p 1215 4307 4 217 v 407 w Fn(e)o(xtension)i(of)e
+(generated)i(CORB)m(A)20 b(header)25 b(\002les)f(\(client)h(side\))p
+3464 4307 V 361 4310 3105 4 v 361 4310 V 359 4527 4 217
+v 411 4462 a Ff(IDL)p 581 4462 28 4 v 31 w(CLN)p 777
+4462 V 32 w(CXX)p 1215 4527 4 217 v 297 w Fn(e)o(xtension)h(of)e
+(generated)i(CORB)m(A)20 b(source)25 b(\002les)f(\(client)h(side\))p
+3464 4527 V 361 4530 3105 4 v 361 4530 V 359 4747 4 217
+v 411 4682 a Ff(IDL)p 581 4682 28 4 v 31 w(CLN)p 777
+4682 V 32 w(OBJ)p 1215 4747 4 217 v 297 w Fn(e)o(xtension)h(of)e
+(generated)i(CORB)m(A)20 b(object)25 b(\002les)f(\(client)h(side\))p
+3464 4747 V 361 4751 3105 4 v 361 4751 V 359 4967 4 217
+v 411 4902 a Ff(IDL)p 581 4902 28 4 v 31 w(SRV)p 777
+4902 V 32 w(H)p 1215 4967 4 217 v 407 w Fn(e)o(xtension)h(of)e
+(generated)i(CORB)m(A)20 b(header)25 b(\002les)f(\(serv)o(er)g(side\))p
+3464 4967 V 361 4971 3105 4 v 361 4971 V 359 5187 4 217
+v 411 5122 a Ff(IDL)p 581 5122 28 4 v 31 w(SRV)p 777
+5122 V 32 w(CXX)p 1215 5187 4 217 v 297 w Fn(e)o(xtension)i(of)e
+(generated)i(CORB)m(A)20 b(source)25 b(\002les)f(\(serv)o(er)g(side\))p
+3464 5187 V 361 5191 3105 4 v 361 5191 V 359 5408 4 217
+v 411 5342 a Ff(IDL)p 581 5342 28 4 v 31 w(SRV)p 777
+5342 V 32 w(OBJ)p 1215 5408 4 217 v 297 w Fn(e)o(xtension)i(of)e
+(generated)i(CORB)m(A)20 b(object)25 b(\002les)f(\(serv)o(er)g(side\))p
+3464 5408 V 361 5411 3105 4 v 361 5411 V Black 0 5644
+3827 9 v 0 5757 a(SALOME)415 b(Using)24 b(the)g(SALOME)d
+(con\002guration)26 b(and)e(b)n(uilding)i(system)e(V)-12
+b(.)23 b(0.3)562 b(16/20)p Black eop
+%%Page: 17 17
+17 16 bop Black Black Black 114 50 a Fn(2.)p Black 45
+w Fd(python)p 361 196 3105 4 v 361 196 V 359 413 4 217
+v 411 348 a(variable)p 1215 413 V 555 w(value)p 3464
+413 V 361 417 3105 4 v 361 417 V 359 633 4 217 v 411
+568 a Ff(PYTHON)p 1215 633 V 525 w Fn(p)o(ython)26 b(interpreter)g
+(\(absolute)g(path)e(to\))p 3464 633 V 361 637 3105 4
+v 361 637 V 359 853 4 217 v 411 788 a Ff(PYTHON)p 746
+788 28 4 v 30 w(VERSION)p 1215 853 4 217 v 110 w Fn(p)o(ython)i(v)o
+(ersion)p 3464 853 V 361 857 3105 4 v 361 857 V 359 1074
+4 217 v 411 1009 a Ff(PYTHONHOME)p 1215 1074 V 305 w
+Fn(p)o(ython)g(home)d(base)i(\(sometimes)g(needed)g(to)e(run)h(p)o
+(ython\))p 3464 1074 V 361 1077 3105 4 v 361 1077 V 359
+1294 4 217 v 411 1229 a Ff(PYTHON)p 746 1229 28 4 v 30
+w(INCLUDES)p 1215 1294 4 217 v 55 w Fn(compiler)h(options)h(to)d
+(include)j(p)o(ython)f(header)g(\002les)p 3464 1294 V
+361 1297 3105 4 v 361 1297 V 359 1514 4 217 v 411 1449
+a Ff(PYTHON)p 746 1449 28 4 v 30 w(LIBS)p 1215 1514 4
+217 v 275 w Fn(libraries)h(needed)f(to)f(link)g(with)f(p)o(ython)p
+3464 1514 V 361 1517 3105 4 v 361 1517 V Black 114 1866
+a(3.)p Black 45 w Fd(QT)p 361 2011 V 361 2011 V 359 2227
+4 217 v 411 2162 a(variable)p 1215 2227 V 555 w(value)p
+3464 2227 V 361 2231 3105 4 v 361 2231 V 359 2447 4 217
+v 411 2382 a Ff(MOC)p 1215 2447 V 690 w Fn(moc)h(compiler)p
+3464 2447 V 361 2451 3105 4 v 361 2451 V 359 2668 4 217
+v 411 2603 a Ff(UIC)p 1215 2668 V 690 w Fn(uic)g(graphical)i(compiler)p
+3464 2668 V 361 2671 3105 4 v 361 2671 V 359 2888 4 217
+v 411 2823 a Ff(QTDIR)p 1215 2888 V 580 w Fn(QT)c(home)i(base)p
+3464 2888 V 361 2891 3105 4 v 361 2891 V 359 3108 4 217
+v 411 3043 a Ff(QT)p 526 3043 28 4 v 32 w(ROOT)p 1215
+3108 4 217 v 493 w Fn(QT)e(home)i(base)p 3464 3108 V
+361 3111 3105 4 v 361 3111 V 359 3328 4 217 v 411 3263
+a Ff(QT)p 526 3263 28 4 v 32 w(INCLUDES)p 1215 3328 4
+217 v 273 w Fn(compiler)h(options)h(to)d(include)j(QT)21
+b(headers)p 3464 3328 V 361 3331 3105 4 v 361 3331 V
+359 3548 4 217 v 411 3483 a Ff(QT)p 526 3483 28 4 v 32
+w(MT)p 668 3483 V 31 w(INCLUDES)p 1215 3548 4 217 v 132
+w Fn(same)j(as)f(abo)o(v)o(e,)h(for)g(multithreaded)j(applications)p
+3464 3548 V 361 3551 3105 4 v 361 3551 V 359 3768 4 217
+v 411 3703 a Ff(QT)p 526 3703 28 4 v 32 w(LIBS)p 1215
+3768 4 217 v 493 w Fn(libraries)f(needed)f(to)f(link)g(with)f(QT)f
+(\(single)j(threaded\))p 3464 3768 V 361 3771 3105 4
+v 361 3771 V 359 3988 4 217 v 411 3923 a Ff(QT)p 526
+3923 28 4 v 32 w(MT)p 668 3923 V 31 w(LIBS)p 1215 3988
+4 217 v 352 w Fn(same)f(as)f(abo)o(v)o(e,)h(for)g(multithreaded)j
+(applications)p 3464 3988 V 361 3992 3105 4 v 361 3992
+V 227 4210 a(F)o(or)c(SALOME)d(de)n(v)o(elopments,)26
+b(multithreaded)h(v)o(ersions)e(of)f(qt)f(options)j(and)e(libraries)h
+(are)f(needed.)p Black 114 4479 a(4.)p Black 45 w Fd(OpenGL)p
+361 4625 V 361 4625 V 359 4842 4 217 v 411 4777 a(variable)p
+1215 4842 V 555 w(value)p 3464 4842 V 361 4845 3105 4
+v 361 4845 V 359 5062 4 217 v 411 4997 a Ff(OGL)p 581
+4997 28 4 v 31 w(INCLUDES)p 1215 5062 4 217 v 219 w Fn(compiler)h
+(options)h(to)d(include)j(OpenGL)c(headers)p 3464 5062
+V 361 5065 3105 4 v 361 5065 V 359 5282 4 217 v 411 5217
+a Ff(OGL)p 581 5217 28 4 v 31 w(LIBS)p 1215 5282 4 217
+v 439 w Fn(libraries)k(needed)f(to)f(link)g(with)f(OpenGL)p
+3464 5282 V 361 5285 3105 4 v 361 5285 V Black 0 5644
+3827 9 v 0 5757 a(SALOME)415 b(Using)24 b(the)g(SALOME)d
+(con\002guration)26 b(and)e(b)n(uilding)i(system)e(V)-12
+b(.)23 b(0.3)562 b(17/20)p Black eop
+%%Page: 18 18
+18 17 bop Black Black Black 114 50 a Fn(5.)p Black 45
+w Fd(VTK)p 361 179 3105 4 v 361 179 V 359 396 4 217 v
+411 331 a(variable)p 1215 396 V 555 w(value)p 3464 396
+V 361 399 3105 4 v 361 399 V 359 616 4 217 v 411 551
+a Ff(VTK)p 581 551 28 4 v 31 w(INCLUDES)p 1215 616 4
+217 v 219 w Fn(compiler)25 b(options)h(to)d(include)j(VTK)21
+b(headers)p 3464 616 V 361 620 3105 4 v 361 620 V 359
+836 4 217 v 411 771 a Ff(VTK)p 581 771 28 4 v 31 w(LIBS)p
+1215 836 4 217 v 439 w Fn(libraries)26 b(needed)f(to)f(link)g(with)f
+(VTK)p 3464 836 V 361 840 3105 4 v 361 840 V Black 114
+1206 a(6.)p Black 45 w Fd(HDF)f(\(v5\))p 361 1350 V 361
+1350 V 359 1567 4 217 v 411 1502 a(variable)p 1215 1567
+V 555 w(value)p 3464 1567 V 361 1570 3105 4 v 361 1570
+V 359 1787 4 217 v 411 1722 a Ff(HDF5)p 636 1722 28 4
+v 31 w(INCLUDES)p 1215 1787 4 217 v 164 w Fn(compiler)j(options)h(to)d
+(include)j(HDF)21 b(headers)p 3464 1787 V 361 1790 3105
+4 v 361 1790 V 359 2007 4 217 v 411 1942 a Ff(HDF5)p
+636 1942 28 4 v 31 w(LIBS)p 1215 2007 4 217 v 384 w Fn(libraries)26
+b(needed)f(to)f(link)g(with)f(HDF)p 3464 2007 V 361 2011
+3105 4 v 361 2011 V 359 2227 4 217 v 411 2162 a Ff(HDF5)p
+636 2162 28 4 v 31 w(MT)p 777 2162 V 32 w(LIBS)p 1215
+2227 4 217 v 242 w Fn(libraries)j(needed)f(to)f(link)g(with)f(HDF)f
+(\(multithreaded)27 b(v)o(ersion\))p 3464 2227 V 361
+2231 3105 4 v 361 2231 V Black 114 2582 a(7.)p Black
+45 w Fd(OpenCascade)p 361 2729 V 361 2729 V 359 2946
+4 217 v 411 2881 a(variable)p 1215 2946 V 555 w(value)p
+3464 2946 V 361 2949 3105 4 v 361 2949 V 359 3166 4 217
+v 411 3101 a Ff(OCC)p 581 3101 28 4 v 31 w(INCLUDES)p
+1215 3166 4 217 v 219 w Fn(compiler)e(options)h(to)d(include)j
+(OpenCascade)f(headers)p 3464 3166 V 361 3169 3105 4
+v 361 3169 V 359 3386 4 217 v 411 3321 a Ff(OCC)p 581
+3321 28 4 v 31 w(LIBS)p 1215 3386 4 217 v 439 w Fn(libraries)h(needed)f
+(to)f(link)g(with)f(OpenCascade)p 3464 3386 V 361 3389
+3105 4 v 361 3389 V 359 3606 4 217 v 411 3541 a Ff(OCC)p
+581 3541 28 4 v 31 w(CXXFLAGS)p 1215 3606 4 217 v 219
+w Fn(C++)g(compiler)i(options)h(to)d(use)h(with)f(OpenCascade)p
+3464 3606 V 361 3609 3105 4 v 361 3609 V 0 3960 a Fj(9)119
+b(Location)30 b(of)f(generated)i(\002les)f(in)h(the)f(b)n(uild)h(tr)n
+(ee)0 4237 y Fn(A)22 b(partial)j(vie)n(w)f(of)f(the)h(b)n(uild)h(tree)f
+(sho)n(ws)f(the)h(location)i(of)d(\002les)h(generated)i(during)f(the)f
+(compilation)i(process.)0 4607 y Fj(10)119 b(What')l(s)28
+b(matter)i(when)h(launch)g Fb(make)71 b(install)0 4884
+y Fn(When)23 b(all)f(libraries)j(and)e(binaries)h(\002les)e(are)h
+(generated,)i(mak)o(e)e(copies)h(all)e(identi\002ed)i(\002les)e(as)h
+Ff(configure)17 b Fn(param-)0 5019 y(eters)24 b Ff(--prefix)p
+Fn(,)19 b Ff(bindir)p Fn(,)h Ff(datadir)p Fn(,)f(...)28
+b(\(see)c Ff(configure)50 b(--help)20 b Fn(for)k(details\).)0
+5202 y(If)f(you)h(specify)i(nothing,)f(all)f(are)f(installed)j(in)e
+Ff(<prefix>=/usr/)o(lo)o(ca)o(l)p Fn(.)0 5385 y(All)19
+b(e)o(x)o(ecutables)j(\(binaries)f(and)f(scripts\))h(are)f(placed)h(in)
+e Ff(<prefix>/bin)13 b Fn(\(see)20 b(BIN)e(and)i(BIN)p
+3147 5385 28 4 v 32 w(SCRIPT)d(v)n(ariables)0 5520 y(in)23
+b Ff(Makefile)p Fn(\).)p Black 0 5644 3827 9 v 0 5757
+a(SALOME)415 b(Using)24 b(the)g(SALOME)d(con\002guration)26
+b(and)e(b)n(uilding)i(system)e(V)-12 b(.)23 b(0.3)562
+b(18/20)p Black eop
+%%Page: 19 19
+19 18 bop Black Black Black 0 2350 a @beginspecial 0
+@llx 0 @lly 437 @urx 287 @ury 4370 @rwi @setspecial
+%%BeginDocument: ../../../SALOME_ROOT/doc/DevelopersGuide/bldtree.eps
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: bldtree.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3c
+%%CreationDate: Thu Jul 26 11:57:29 2001
+%%For: tajchman@nikyo (Marc Tajchman - SFME/LGLS)
+%%BoundingBox: 0 0 437 287
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 287 moveto 0 0 lineto 437 0 lineto 437 287 lineto closepath clip newpath
+-46.0 335.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 2475 2025 m 3450 2025 l 3450 2475 l 2475 2475 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+2625 2325 m
+gs 1 -1 sc (Module 1) col0 sh gr
+% Polyline
+n 3000 3900 m 3900 3900 l 3900 4350 l 3000 4350 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+3150 4200 m
+gs 1 -1 sc (src) col0 sh gr
+% Polyline
+n 1725 3900 m 2700 3900 l 2700 4350 l 1725 4350 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+1800 4200 m
+gs 1 -1 sc (resources) col0 sh gr
+% Polyline
+n 1275 2025 m 2250 2025 l 2250 2475 l 1275 2475 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+1575 2325 m
+gs 1 -1 sc (inc) col0 sh gr
+% Polyline
+n 1080 2775 m 900 2775 900 3270 180 arcto 4 {pop} repeat
+  900 3450 1995 3450 180 arcto 4 {pop} repeat
+  2175 3450 2175 2955 180 arcto 4 {pop} repeat
+  2175 2775 1080 2775 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+1050 3075 m
+gs 1 -1 sc (Exported) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+1050 3300 m
+gs 1 -1 sc (header files) col0 sh gr
+% Polyline
+n 5040 4725 m 4800 4725 4800 5310 240 arcto 4 {pop} repeat
+  4800 5550 5910 5550 240 arcto 4 {pop} repeat
+  6150 5550 6150 4965 240 arcto 4 {pop} repeat
+  6150 4725 5040 4725 240 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+5025 4950 m
+gs 1 -1 sc (Object files) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+5025 5175 m
+gs 1 -1 sc (libraries) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+5025 5400 m
+gs 1 -1 sc (executables) col0 sh gr
+% Polyline
+n 4125 2025 m 5175 2025 l 5175 2475 l 4125 2475 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+4275 2325 m
+gs 1 -1 sc (resources) col0 sh gr
+% Polyline
+n 5325 2025 m 6375 2025 l 6375 2475 l 5325 2475 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+5550 2325 m
+gs 1 -1 sc (bin) col0 sh gr
+% Polyline
+n 6525 2025 m 7575 2025 l 7575 2475 l 6525 2475 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+6750 2325 m
+gs 1 -1 sc (lib) col0 sh gr
+% Polyline
+n 6330 975 m 6150 975 6150 1170 180 arcto 4 {pop} repeat
+  6150 1350 7695 1350 180 arcto 4 {pop} repeat
+  7875 1350 7875 1155 180 arcto 4 {pop} repeat
+  7875 975 6330 975 180 arcto 4 {pop} repeat
+ cp gs col2 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+6375 1200 m
+gs 1 -1 sc (Links to libraries) col0 sh gr
+% Polyline
+n 3705 2850 m 3525 2850 3525 3345 180 arcto 4 {pop} repeat
+  3525 3525 5670 3525 180 arcto 4 {pop} repeat
+  5850 3525 5850 3030 180 arcto 4 {pop} repeat
+  5850 2850 3705 2850 180 arcto 4 {pop} repeat
+ cp gs col2 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+3675 3150 m
+gs 1 -1 sc (Link to corresponding) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+3675 3375 m
+gs 1 -1 sc (directories in source tree) col0 sh gr
+% Polyline
+n 6255 2850 m 6075 2850 6075 3345 180 arcto 4 {pop} repeat
+  6075 3525 7845 3525 180 arcto 4 {pop} repeat
+  8025 3525 8025 3030 180 arcto 4 {pop} repeat
+  8025 2850 6255 2850 180 arcto 4 {pop} repeat
+ cp gs col2 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+6225 3150 m
+gs 1 -1 sc (Shell scripts) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+6225 3375 m
+gs 1 -1 sc (Links to executables) col0 sh gr
+% Polyline
+n 2700 5100 m 3675 5100 l 3675 5550 l 2700 5550 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+2775 5400 m
+gs 1 -1 sc (Unit 1) col0 sh gr
+% Polyline
+n 3675 825 m 5325 825 l 5325 1425 l 3675 1425 l
+ cp gs col0 s gr 
+% Polyline
+n 4725 1425 m
+ 4875 2025 l gs col0 s gr 
+% Polyline
+n 3975 1425 m
+ 1800 2025 l gs col0 s gr 
+% Polyline
+n 5100 1425 m
+ 7050 2025 l gs col0 s gr 
+% Polyline
+n 3000 2025 m
+ 4200 1425 l gs col0 s gr 
+% Polyline
+ [60] 0 sd
+n 3675 4350 m
+ 4425 5025 l gs col0 s gr  [] 0 sd
+% Polyline
+ [60] 0 sd
+n 3450 4350 m
+ 3900 5025 l gs col0 s gr  [] 0 sd
+% Polyline
+ [60] 0 sd
+n 4350 1425 m
+ 3675 2025 l gs col0 s gr  [] 0 sd
+% Polyline
+ [60] 0 sd
+n 4500 1425 m
+ 3975 2025 l gs col0 s gr  [] 0 sd
+% Polyline
+n 5100 1425 m
+ 5625 2025 l gs col0 s gr 
+% Polyline
+n 3300 4350 m
+ 3150 5100 l gs col0 s gr 
+% Polyline
+n 2700 2475 m
+ 2400 3900 l gs col0 s gr 
+% Polyline
+n 3075 2475 m
+ 3375 3900 l gs col0 s gr 
+% Polyline
+2 slj
+gs  clippath
+1287 2295 m 1292 2205 l 1143 2198 l 1254 2249 l 1139 2288 l cp
+eoclip
+n 900 3225 m 899 3223 l 898 3220 l 896 3213 l 893 3202 l 888 3188 l
+ 882 3169 l 875 3146 l 868 3120 l 859 3091 l 850 3058 l
+ 841 3024 l 832 2988 l 823 2951 l 815 2914 l 808 2875 l
+ 801 2836 l 796 2797 l 792 2758 l 790 2718 l 790 2677 l
+ 792 2637 l 796 2595 l 802 2554 l 812 2514 l 825 2475 l
+ 842 2436 l 862 2402 l 884 2373 l 907 2348 l 931 2327 l
+ 956 2309 l 981 2295 l 1007 2283 l 1034 2274 l 1060 2267 l
+ 1087 2261 l 1113 2257 l 1139 2254 l 1164 2252 l 1187 2250 l
+ 1209 2250 l 1227 2249 l 1243 2249 l 1255 2249 l
+ 1275 2250 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 1139 2288 m 1254 2249 l 1143 2198 l 1164 2244 l 1139 2288 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+7160 2051 m 7247 2027 l 7207 1884 l 7194 2005 l 7120 1908 l cp
+eoclip
+n 7125 1350 m 7125 1352 l 7124 1356 l 7123 1362 l 7122 1372 l 7121 1385 l
+ 7119 1400 l 7118 1418 l 7117 1437 l 7116 1459 l 7115 1482 l
+ 7115 1509 l 7116 1538 l 7118 1571 l 7121 1609 l 7125 1650 l
+ 7130 1688 l 7135 1724 l 7140 1758 l 7146 1790 l 7151 1820 l
+ 7157 1848 l 7163 1875 l 7169 1900 l 7174 1924 l 7180 1947 l
+ 7185 1967 l 7189 1985 l 7193 2000 l
+ 7200 2025 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 7120 1908 m 7194 2005 l 7207 1884 l 7169 1918 l 7120 1908 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+2055 3883 m 2125 3939 l 2218 3824 l 2113 3884 l 2148 3768 l cp
+eoclip
+n 3525 3150 m 3524 3150 l 3522 3149 l 3517 3147 l 3510 3145 l 3501 3142 l
+ 3489 3139 l 3474 3135 l 3456 3130 l 3436 3126 l 3413 3121 l
+ 3389 3116 l 3363 3112 l 3336 3109 l 3307 3107 l 3276 3106 l
+ 3244 3106 l 3211 3109 l 3175 3113 l 3137 3119 l 3096 3128 l
+ 3053 3140 l 3006 3156 l 2957 3175 l 2904 3198 l 2850 3225 l
+ 2803 3251 l 2756 3279 l 2710 3308 l 2667 3338 l 2625 3369 l
+ 2586 3399 l 2548 3430 l 2512 3461 l 2477 3491 l 2444 3522 l
+ 2412 3553 l 2381 3584 l 2351 3615 l 2322 3645 l 2295 3675 l
+ 2268 3704 l 2243 3733 l 2219 3760 l 2197 3785 l 2177 3808 l
+ 2159 3829 l 2143 3848 l 2130 3863 l 2120 3876 l 2112 3885 l
+
+ 2100 3900 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 2148 3768 m 2113 3884 l 2218 3824 l 2169 3813 l 2148 3768 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+4154 2287 m 4124 2202 l 3983 2251 l 4105 2257 l 4013 2336 l cp
+eoclip
+n 3525 3150 m 3524 3149 l 3523 3146 l 3521 3141 l 3517 3133 l 3512 3122 l
+ 3506 3109 l 3499 3092 l 3492 3073 l 3484 3052 l 3476 3029 l
+ 3469 3005 l 3462 2979 l 3456 2952 l 3451 2925 l 3449 2897 l
+ 3447 2867 l 3449 2837 l 3452 2805 l 3459 2772 l 3469 2737 l
+ 3484 2700 l 3502 2663 l 3525 2625 l 3550 2591 l 3577 2559 l
+ 3606 2529 l 3635 2501 l 3666 2475 l 3697 2452 l 3728 2431 l
+ 3760 2411 l 3791 2392 l 3823 2375 l 3855 2359 l 3887 2344 l
+ 3919 2330 l 3950 2317 l 3979 2304 l 4007 2293 l 4033 2283 l
+ 4056 2275 l 4076 2267 l 4092 2261 l 4105 2257 l
+ 4125 2250 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 4013 2336 m 4105 2257 l 3983 2251 l 4020 2286 l 4013 2336 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+3657 5355 m 3662 5445 l 3810 5437 l 3696 5399 l 3805 5347 l cp
+eoclip
+n 4800 5175 m 4799 5176 l 4796 5177 l 4791 5180 l 4784 5184 l 4774 5189 l
+ 4761 5195 l 4746 5203 l 4728 5211 l 4709 5220 l 4687 5229 l
+ 4663 5238 l 4637 5248 l 4608 5258 l 4576 5269 l 4541 5279 l
+ 4500 5290 l 4455 5302 l 4405 5313 l 4350 5325 l 4306 5333 l
+ 4263 5341 l 4220 5348 l 4179 5355 l 4139 5360 l 4101 5365 l
+ 4064 5370 l 4028 5374 l 3993 5377 l 3960 5380 l 3927 5383 l
+ 3896 5386 l 3865 5388 l 3835 5390 l 3808 5392 l 3782 5394 l
+ 3758 5395 l 3737 5397 l 3719 5398 l 3704 5398 l 3693 5399 l
+
+ 3675 5400 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 3805 5347 m 3696 5399 l 3810 5437 l 3785 5394 l 3805 5347 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+5786 2428 m 5738 2505 l 5864 2584 l 5793 2486 l 5912 2508 l cp
+eoclip
+n 6450 2850 m 6449 2849 l 6446 2848 l 6441 2846 l 6434 2843 l 6424 2839 l
+ 6412 2833 l 6398 2827 l 6382 2820 l 6365 2811 l 6346 2803 l
+ 6326 2793 l 6303 2782 l 6279 2769 l 6251 2755 l 6221 2739 l
+ 6187 2720 l 6150 2700 l 6116 2681 l 6083 2662 l 6052 2644 l
+ 6022 2627 l 5995 2611 l 5969 2595 l 5944 2580 l 5920 2566 l
+ 5897 2552 l 5876 2538 l 5855 2526 l 5837 2514 l 5820 2503 l
+ 5806 2494 l 5794 2487 l
+ 5775 2475 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 5912 2508 m 5793 2486 l 5864 2584 l 5869 2534 l 5912 2508 l 
+ cp gs 0.00 setgray ef gr  col0 s
+/Times-Roman ff 180.00 scf sf
+3825 1200 m
+gs 1 -1 sc (Root Build Tree) col0 sh gr
+$F2psEnd
+rs
+
+%%EndDocument
+ @endspecial Black 557 2569 a Fn(Figure)24 b(4:)29 b(P)o(artial)24
+b(vie)n(w)f(of)h(the)f(b)n(uild)i(tree)f(:)29 b(generated)d(\002les)d
+(during)i(compilation)p Black Black 0 2846 a(All)e(libraries)j(are)d
+(placed)i(in)f Ff(<prefix>/lib)17 b Fn(\(see)24 b(LIB)e(v)n(ariable)k
+(in)d Ff(Makefile)p Fn(\).)0 3028 y(All)g(includes)j(are)d(placed)i(in)
+f Ff(<prefix>/inclu)o(de)16 b Fn(\(see)24 b(EXPOR)-5
+b(T)p 2372 3028 28 4 v 30 w(HEADERS)20 b(v)n(ariable)25
+b(in)f Ff(Makefile)p Fn(\).)0 3211 y(All)f(idls)h(are)g(placed)h(in)e
+Ff(<prefix>/idl)17 b Fn(\(see)25 b(IDL)p 1784 3211 V
+32 w(FILES)c(v)n(ariable)k(in)f Ff(Makefile)p Fn(\).)0
+3394 y(All)g(p)o(ython)i(srcipts)f(are)g(placed)h(in)e
+Ff(<prefix>/lib/p)o(yth)o(on)o(2.)o(1/)o(..)o(.)g Fn(\(see)h
+Ff(EXPORT)p 3118 3394 V 30 w(PYSCRIPTS)19 b Fn(v)n(ari-)0
+3529 y(able)24 b(in)g Ff(Makefile)p Fn(\).)0 3712 y(All)17
+b(ressources)k(\002les)d(\(icons,)i(messages,)h(con\002guration,)h
+(...\))k(are)18 b(placed)h(in)f Ff(<prefix>/share/s)o(al)o(om)o(e/)o
+(res)o(so)o(ur)o(ce)o(s)0 3848 y Fn(\(see)24 b(RESOURCES)p
+703 3848 V 29 w(FILES)d(v)n(ariable)26 b(in)d Ff(Makefile)p
+Fn(\).)0 4217 y Fj(11)119 b(Cr)n(eating)30 b(sour)n(ce)g(\002les)g
+(according)h(to)e(SALOME)h(b)n(uilding)i(system)0 4494
+y Fn(Building)24 b(system)g(use)f(dependencies)k(between)d(\002les)f
+(writing)g(in)g(Mak)o(e\002le)h(rules.)29 b(W)-7 b(e)22
+b(use)h Ff(C)f Fn(or)h Ff(C++)d Fn(preprocessor)0 4630
+y(to)j(automatically)k(generate)f(this)e(dependencies)j(rules.)0
+4812 y(There)37 b(are)f(some)h(con\002guration)j(and)c(useful)i(macro)f
+(de\002ned)h(in)e(header)i(\002le)e Ff(SALOMEconfig.h)p
+Fn(.)60 b Fi(All)36 b(\002les)0 4948 y(should)24 b(be)f(included)h
+(this)g(header)h(!)32 b Fn(Y)-10 b(ou)24 b(must)h(include)i(it)d
+(ussing)i Ff(<>)d Fn(delimiter)j(because)h Ff(SALOMEconfig.h)0
+5083 y Fn(must)d(not)f(appear)i(in)f(dependencies)j(rules)e(\(see)f
+(belo)n(w)g(11.1\).)0 5266 y(When)31 b(a)e Ff(Makefile)d
+Fn(is)k(re)o(generate)j(with)d Ff(config.status)23 b
+Fn(script,)33 b(all)e(\002les)f(are)g(re)o(generates)j(\(in)d
+(particular)0 5402 y Ff(SALOMEconfig.h)p Fn(\).It)15
+b(is)22 b(a)f(restriction)k(of)d Ff(autoconf)51 b(2.13)19
+b Fn(which)j(could)h(not)f(re)o(generate)j(only)d(one)h(partic-)p
+Black 0 5644 3827 9 v 0 5757 a(SALOME)415 b(Using)24
+b(the)g(SALOME)d(con\002guration)26 b(and)e(b)n(uilding)i(system)e(V)
+-12 b(.)23 b(0.3)562 b(19/20)p Black eop
+%%Page: 20 20
+20 19 bop Black Black 0 50 a Fn(ular)26 b(\002le.)33
+b(So,)25 b(all)h(\002les)f(which)g(depend)j(of)d Ff(SALOMEconfig.h)18
+b Fn(are)26 b(reb)n(uild)h(e)n(v)o(en)e(if)g(it)h(does)g(not)f(change.)
+36 b(If)25 b(you)0 185 y(ef)n(fecti)n(v)o(ely)h(change)f
+Ff(SALOMEconfig.h)16 b Fn(\002le,)23 b(you)h(must)f(clean)i(all)f(and)g
+(reb)n(uild.)0 505 y Fe(11.1)99 b Fa(C)25 b Fe(or)g Fa(C++)f
+Fe(sour)n(ce)i(\002les)0 749 y Fi(Y)-10 b(ou)22 b(must)h(name)g(y)n
+(our)g Ff(C)f Fi(\002le)h Ff(<myCFile>.c)18 b Fi(and)k(header)i(\002le)
+e Ff(<myCHeaderFile>.)o(h)0 932 y Fi(Y)-10 b(ou)22 b(must)h(name)g(y)n
+(our)g Ff(C++)e Fi(\002le)i Ff(<myC++File>.cxx)16 b Fi(and)22
+b(header)i(\002le)f Ff(<myC++HeaderFi)o(le)o(>.h)o(xx)0
+1115 y Fn(T)-7 b(o)23 b(ha)n(v)o(e)i(right)h(dependencies)i(rules,)d
+(you)g(must)g(correctly)i(write)d(the)h(include)h(statement)g(in)f
+(your)g(source)h(\002les.)31 b(W)-7 b(e)0 1250 y(only)33
+b(tak)o(e)h(care)f(about)h(SALOME)c(package)k(header)g(\002les)f(to)f
+(generate)j(dependencies.)60 b(W)-7 b(e)32 b(suppose)j(that)e(other)0
+1386 y(header)d(\002les)d(\(qt,)j(vtk,)f(OpenCascade,)i(...\))42
+b(are)28 b(stables)i(and)e(are)h(not)f(modi\002ed)h(when)f(we)f(b)n
+(uild)j(some)e(SALOME)0 1521 y(modules.)0 1704 y(According)33
+b(to)e(cpp)g(documentation,)36 b(local)c(header)g(\002les)f(must)g(be)g
+(included)i(with)d Ff("")g Fn(statement)i(and)f(system)h(or)0
+1839 y(tools)25 b(headers)g(\002les)e(must)h(be)f(included)j(with)d
+Ff(<>)f Fn(statement.)0 2022 y(If)36 b(you)h(do)g(not)g(respect)h(this)
+f(notation,)42 b(dependencies)e(w)o(ould)d(not)g(be)g(true)g(and)g
+(some)g(reb)n(uilding)i(trouble)g(can)0 2157 y(appear)48
+b(!)0 2477 y Fe(11.2)99 b(idl)25 b(\002les)0 2721 y Fn(W)-7
+b(e)25 b(use)i Ff(C)e Fn(preprocessor)k(to)d(b)n(uild)i(dependencies)i
+(between)d(idl)f(\002les.)37 b(The)25 b(same)h(con)l(v)o(ention)k(must)
+c(be)g(applied)i(as)0 2857 y Ff(C)22 b Fn(or)i Ff(C++)d
+Fn(source)k(\002les.)0 3039 y(If)c(included)j(\002le)d(is)g(an)h(e)o
+(xternal)h(\002les,)e(you)h(must)g(use)g(statement)h
+Ff(<>)d Fn(because)j(this)f(\002le)f(will)g(not)h(be)f(modi\002ed)h
+(during)0 3175 y(SALOME)16 b(de)n(vloppement)22 b(and/or)f(b)n
+(uilding.)30 b(If)19 b(included)i(\002le)e(is)g(part)h(of)f(SALOME)d
+(\002les,)k(you)f(must)h(use)f(statement)0 3310 y Ff("")p
+Fn(.)0 3493 y(If)h(you)g(do)g(not)g(respect)i(this)e(notation,)i
+(dependencies)i(w)o(ould)d(not)f(be)g(true)g(and)g(some)g(b)n(uilding)j
+(or)c(reb)n(uilding)k(trouble)0 3629 y(can)h(appear)48
+b(!)0 3948 y Fe(11.3)99 b(Included)26 b(header)h(\002le)e(generated)h
+(fr)n(om)g(idl)e(\002le)0 4192 y Fn(T)-7 b(o)22 b(include)k(header)f
+(\002le)e(generated)j(from)d(idl)h(\002le,)f(you)h(must)f(use)h(macro)g
+Ff(CORBA)p 2699 4192 28 4 v 31 w(CLIENT)p 3060 4192 V
+30 w(HEADER)c Fn(or)0 4328 y Ff(CORBA)p 280 4328 V 30
+w(SERVER)p 640 4328 V 30 w(HEADER)g Fn(de\002ned)25 b(in)e
+Ff(SALOMEconfig.h)p Fn(.)0 4511 y(These)f(tw)o(o)g(macros)h(replace)g
+(idl)g(pre\002x)f(into)h(corresponding)j(header)e(name)e(generated)i
+(\(tak)o(e)f(care)g(if)f(you)g(use)h(client)0 4646 y(part)h(or)g(serv)o
+(er)g(part\))0 4829 y Fi(Example)f(:)p Black Black 0
+5086 a Ff(#include)105 b(CORBA_CLIENT_HEA)o(DE)o(R\()o(ge)o(om\))0
+5222 y(#include)g(CORBA_SERVER_HEA)o(DE)o(R\()o(me)o(sh\))p
+Black 0 5644 3827 9 v 0 5757 a Fn(SALOME)415 b(Using)24
+b(the)g(SALOME)d(con\002guration)26 b(and)e(b)n(uilding)i(system)e(V)
+-12 b(.)23 b(0.3)562 b(20/20)p Black eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/doc/DevelopersGuide/DevelopersGuide.tex.in b/doc/DevelopersGuide/DevelopersGuide.tex.in
new file mode 100644 (file)
index 0000000..ae8a400
--- /dev/null
@@ -0,0 +1,1056 @@
+\documentclass[11pt,a4paper]{article}
+\usepackage{isolatin1}
+\usepackage{psfig}
+\usepackage{graphicx}
+\usepackage{fancyheadings}
+\usepackage{lastpage}
+\usepackage{epic}
+\usepackage{longtable}
+\usepackage{times}
+\usepackage{verbatim}
+
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% mise en page du document %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  \voffset -20pt
+  \topmargin 0 cm
+  \headheight 15pt
+  \headsep 0 cm
+  \textheight 670 pt
+  \footskip 1 cm
+  \marginparwidth 0 cm
+  \oddsidemargin 0 cm
+  \evensidemargin 0 cm
+  \textwidth 16.2 cm
+  \parindent 0 cm
+
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% test si on passe par pdflatex %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newif\ifpdf 
+        \ifx\pdfoutput\undefined 
+        \pdffalse % we are not running pdflatex 
+        \else 
+        \pdfoutput=1 % we are running pdflatex 
+        \pdfcompresslevel=9     % compression level for text and image;
+        \pdftrue 
+        \fi
+
+\ifpdf
+\usepackage{thumbpdf}
+\usepackage[pdftex,
+        colorlinks=true,
+        urlcolor=rltblue,       % \href{...}{...} external (URL)
+        filecolor=rltgreen,     % \href{...} local file
+        linkcolor=rltred,       % \ref{...} and \pageref{...}
+        pdftitle={Adding a new module or unit development},
+        pdfauthor={Patrick Goldbronn, Marc Tajchman},
+        pdfsubject={},
+        pdfkeywords={},
+        pagebackref,
+        pdfpagemode=None,
+        bookmarksopen=true]{hyperref}
+\usepackage{color}
+\definecolor{rltred}{rgb}{0.75,0,0}
+\definecolor{rltgreen}{rgb}{0,0.5,0}
+\definecolor{rltblue}{rgb}{0,0,0.75}
+\else
+\usepackage{color}
+\fi
+
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%
+%% epaisseur des traits %
+%%%%%%%%%%%%%%%%%%%%%%%%%
+\linethickness{1pt}
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% mise en page des environnement array %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \arraycolsep 2pt
+ \renewcommand{\arraystretch}{1.6}
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% interligne du document %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\renewcommand{\baselinestretch}{1.2}
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%
+%% haut et bas de page %
+%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand{\version}{0.3}
+
+\pagestyle{fancy}
+%
+ \chead{}
+ \lhead{}
+ \rhead{}
+%
+ \lfoot{
+        SALOME
+       }
+ \cfoot{
+         Using the SALOME configuration and building system V. \version
+       }
+ \rfoot{
+        \thepage/\pageref{LastPage}
+       }
+%%
+ \setlength{\headrulewidth}{0pt}
+ \setlength{\footrulewidth}{1pt}
+%
+%-----------------------------------------------------------
+% Les racourcis :
+\newcommand{\fsc}{\sc}
+
+
+%%-----------------------------------------------------------
+%%-----------------------------------------------------------
+%%-----------------------------------------------------------
+
+
+%% Bring items closer together in list environments
+% Prevent infinite loops
+\let\Itemize =\itemize
+\let\Enumerate =\enumerate
+\let\Description =\description
+% Zero the vertical spacing parameters
+\def\Nospacing{\itemsep=4pt\topsep=-5pt\partopsep=-5pt%
+\parskip=0pt\parsep=0pt}
+% Redefinition de art12.sty pour commencer a la marge de gauche
+%\leftmargini 1.2em      % 2.5em
+
+\def\noitemsep{
+% Redefine the environments in terms of the original values
+\renewenvironment{itemize}{\Itemize\Nospacing}{\endlist}
+\renewenvironment{enumerate}{\Enumerate\Nospacing}{\endlist}
+\renewenvironment{description}{\Description\Nospacing}%
+{\endlist}
+}
+
+\def\doitemsep{
+% Redefine the environments to the original values
+\renewenvironment{itemize}{\Itemize}{\endlist}
+\renewenvironment{enumerate}{\Enumerate}{\endlist}
+\renewenvironment{description}{\Description}{\endlist}
+}
+
+%%%% fin macro %%%%
+
+\begin{document}
+\noitemsep
+
+%%%%%%%%%%%%%%%%%%%%
+%% TITRE AUTEUR(S) %
+%%%%%%%%%%%%%%%%%%%%
+
+\textcolor{white}{.}
+\vfill\vfill
+\begin{figure}[!h]
+\begin{center}
+\ifpdf
+        \includegraphics[width=11.88cm, height=5.11cm]{@srcdir@/SALOME.png}
+\else
+        \includegraphics[width=11.88cm, height=5.11cm]{@srcdir@/SALOME.ps}
+\fi
+\end{center}
+\end{figure}
+
+\bigskip
+\bigskip
+
+\begin{center}
+{\usefont{T1}{phv}{bx}{n}
+\huge Using the SALOME configuration and building system
+environment
+}
+\bigskip
+\medskip
+
+{\LARGE Version \version}
+\end{center}
+
+\vfill
+
+{
+\large
+\renewcommand{\arraystretch}{0.85}
+\begin{tabular}{lll}
+Patrick & Goldbronn & C.E.A. \\
+Marc & Tajchman & C.E.A.
+\end{tabular}
+}
+
+
+\def\Mkin{{\tt Makefile.in }}
+
+\thispagestyle{empty}
+
+\newpage
+%-----------------------------------------------------------
+\section*{Successive versions}
+
+\vfill
+\begin{tabular}{|p{2cm}|p{1.5cm}|p{8cm}|p{2cm}|}
+\hline
+\textbf{Date} & \textbf{Version} & \textbf{Description} & \textbf{Author(s)}\\
+\hline
+10/07/2001& 0.0 & Initial version & PG \\
+\hline
+25/07/2001 & 0.1 & English traduction, rewriting & MT \\
+\hline
+29/08/2001 & 0.2 & Add source creation, some precision & PG \\
+\hline
+24/05/2002 & 0.3 & Add instruction to do installation correctly & PG \\
+\hline
+\end{tabular}
+\vfill
+\vfill
+
+%\thispagestyle{empty}
+\newpage
+%-----------------------------------------------------------
+  \begin{abstract}
+    This document contains rules and advices to configure,
+    build and extend the SALOME platform.
+  \end{abstract}
+
+  \newpage
+%-----------------------------------------------------------
+  \tableofcontents
+  \newpage
+  \parskip 0.2 cm
+%-----------------------------------------------------------
+\newpage
+
+\section{SALOME Configuration}
+
+\subsection{Directories organisation}
+
+We suppose here that you unpack the SALOME distribution from scratch.
+The path to the SALOME sources will be named ``top source directory''
+or {\tt SALOME\_ROOT}.
+
+It is possible, but not advised, to build the set of binaries and libraries
+in the same subtree. Instead, we suppose you have choosen a different subtree
+where to put builded files (you can so build to multiples architectures from the same source tree). The root of the build subtree will be named
+``top build directory''.
+
+At the end of configuration and compilation processs, you may install
+builded files in a separate subtree, name ``installation subtree''.
+The root of the installation subtree will be named ``top installation directory''.
+
+The figure \ref{FigDirs} shows subtrees organisation.
+
+\begin{figure}[h]
+\ifpdf
+        \includegraphics{@srcdir@/subtrees.pdf}
+\else
+        \includegraphics{@srcdir@/subtrees.eps}
+\fi
+\caption{\label{FigDirs} Subtrees organisation}
+\end{figure}
+
+\subsection{PreConfiguration step}
+
+SALOME needs some environment variables (to be defined for example in
+a .cshrc or .bashrc file in your home directory)~:
+
+\begin{tabular}{|p{3.5cm}|p{11cm}|}
+\hline
+\it variable & \it set value and check \\
+\hline
+{\tt QTDIR} & root directory of qt distribution ({\tt \$QTDIR/lib} must contain libqt.so) \\ 
+\hline
+{\tt HDF5HOME} & root directory of hdf5 distribution ({\tt \$HDF5HOME/lib} must contain libhdf5.so) \\
+\hline
+{\tt VTKHOME} & root directory of vtk distribution ({\tt \$VTKHOME/common} must contain libVTKCommon.so) \\
+\hline
+{\tt CASROOT} & root directory of OpenCascade distribution ({\tt \$CASROOT/Linux/lib} must contain libTKernel.so) \\
+\hline
+{\tt PYTHONHOME} & root directory of python distribution ({\tt \$PYTHONHOME/lib/pythonXXX/config} must contain libpythonXXX.a) \\
+\hline
+{\tt OMNIORB\_CONFIG } & path to the omniORB.cfg file (this file contains default
+options to omniORB, see below) \\
+\hline
+\end{tabular}
+
+\bigskip
+Create a file named omniORB.cfg in your root tree, containing default
+options to omniORB. Put in this file, the following line~:
+\begin{verbatim}
+ORBInitRef NameService=corbaname::localhost
+\end{verbatim}
+
+(tells omniORB that the CORBA name service is local).
+
+\subsection{Configuration step}
+
+\begin{enumerate}
+\item There are two cases~:
+\begin{itemize}
+\item There is a {\tt configure} file in the top source directory,
+and you didn't change the SALOME structure (adding a module or unit,
+see sections \ref{sec_module} or \ref{sec_unit} below).
+Go to point \ref{pConf}.
+\item You don't have a {\tt configure} file or you add a module/unit
+in the SALOME system.
+Go to point \ref{pReConf}
+\end{itemize}
+
+\item \label{pReConf}
+Go to the top source directory and type~:
+\begin{verbatim}
+./reconfigure
+\end{verbatim}
+This script find all file with suffix {\tt .in} (which will be generate by {\tt configure} script) and add them in {\tt configure.in} file, launch {\tt aclocal} and {\tt autoconf} to generete {\tt configure} script.
+
+Continue with point \ref{pConf}
+
+\item \label{pConf}
+Go to the top build directory you choose.
+
+If you plan to install SALOME files after building in a non-standard
+location (i.e. different from /usr/local), type~:
+
+\begin{verbatim}
+<path to the top source directory>/configure \
+                  --prefix=<installation directory>
+\end{verbatim}
+
+otherwise, type~:
+\begin{verbatim}
+<path to the top source directory>/configure
+\end{verbatim}
+
+where ``path to the top source directory'' is to be replaced by the path
+to the SALOME sources.
+
+For other options to the configure command, type~:
+\begin{verbatim}
+<path to the top source directory>/configure --help
+\end{verbatim}
+
+This will create a mirror subtree of the sources into the top build directory
+where object files, binaries and libraries will be builded. Also a makefile
+system will be created into the build tree.
+
+\end{enumerate}
+
+\subsection{PostConfiguration step}
+
+This phase is optional, to be used only if the compilation process
+(see next section) fails to use {\tt libtool} script.
+
+On some systems, the {\tt libtool} script generated by the configure
+command will not operate correctly during compilation
+(see next section). If you encounter this situation,
+copy the local libtool script in your system (e.g. in the /usr/bin
+directory) to the top build directory after configuration and before
+compilation phases.
+
+Check the following line in libtool script :
+\begin{verbatim}
+deplibs_check_method=...
+\end{verbatim}
+
+If needed, replace this line by
+\begin{verbatim}
+deplibs_check_method="pass_all"
+\end{verbatim}
+
+\section{SALOME compilation}
+
+From the top build directory, type
+\begin{verbatim}
+make
+\end{verbatim}
+
+After some time (be patient ...), it will create various binaries.
+Building SALOME is split in several phases~:
+
+\begin{itemize}
+\item {\tt make inc} : copy/update header files exported by development units
+in the directory {\tt inc} of the build tree ;
+\item {\tt make depend\_idl} : determine dependencies between idl files (useful when recompiling SALOME after idl modification);
+\item {\tt make depend (make dep)} : determine dependencies between source files and header files (useful when recompiling SALOME after source modification);
+\item {\tt make lib} : generate libraries, put a copy/link into the {\tt lib} directory of the build tree;
+\item {\tt make bin} : generate binaries;
+\item {\tt make tests (make check)} : build and run tests (not yet implemented).
+\end{itemize}
+
+After building, testing, the user may install the system in a choosen directory
+(different from and not included in the top source directory and the top build directory).
+
+From the top build directory, type~:
+\begin{quotation}\noindent%
+ {\tt make install} : install libraries, header and idl files, binaries,
+resource files in the installation directory
+\end{quotation}
+
+\section{\label{sec_module}Module creation}
+
+In this section, the new module will be named {\tt <Module>}. Replace
+each occurence with the real name of your module.
+
+\begin{enumerate}
+\item In the source tree root {\tt SALOME\_ROOT}, create a new directory 
+{\tt <Module>} :
+
+\begin{verbatim}
+cd SALOME_ROOT
+mkdir <Module>
+\end{verbatim}
+
+\item Modify the \Mkin file in the {\tt SALOME\_ROOT} directory to add the new module~:
+
+Append to the line beginning with
+\begin{verbatim}
+SUBDIRS = 
+\end{verbatim}
+
+the name of the new module.
+
+\item In the module root directory, create two subdirectories {\tt src} and {\tt resources} and create a file \Mkin
+ (e.g. copy the corresponding file in {\tt GEOM} module for example)~:
+
+\begin{verbatim}
+cd <Module>
+mkdir src
+mkdir resources
+cp ../GEOM/Makefile.in .
+\end{verbatim}
+
+\item In the {\tt src} subdirectory, copy a \Mkin file (e.g. from the corresponding file in {\tt GEOM/src} subdirectory  for example)~:
+
+\begin{verbatim}
+cd src
+cp ../../GEOM/src/Makefile.in .
+\end{verbatim}
+
+\item Edit this file and replace the line
+\begin{verbatim}
+MODULE = GEOM
+\end{verbatim}
+
+with
+\begin{verbatim}
+MODULE = <Module>
+\end{verbatim}
+
+\item Edit this file and replace the line
+\begin{verbatim}
+SUBDIRS = GEOMDS GEOM GEOMGUI
+\end{verbatim}
+
+with
+\begin{verbatim}
+SUBDIRS = 
+\end{verbatim}
+
+(empty list of development units in this module).
+
+\item Edit this file and replace the line
+\begin{verbatim}
+RESOURCES_FILES = arc.png \
+...
+\end{verbatim}
+
+with
+\begin{verbatim}
+RESOURCES_FILES = 
+\end{verbatim}
+
+(list of all ressources for this module).
+
+\item Add the new \Mkin files in the global list of .in files.
+
+In the root directory of the source tree, execute the {\tt reconfigure}
+script or manually :
+
+\begin{enumerate}
+\item edit the configure.in file in the source tree root,
+add \Mkin files into the {\tt AC\_OUTPUT} list,
+\item from the source tree root directory, run the {\tt genconf} script which launch {\tt aclocal} and {\tt autoconf}.
+\end{enumerate}
+
+\end{enumerate}
+
+Figure \ref{srctree_module} summarize these changes.
+
+\begin{figure}[h]
+\ifpdf
+        \includegraphics{@srcdir@/srctree_module.pdf}
+\else
+        \includegraphics{@srcdir@/srctree_module.eps}
+\fi
+\caption{\label{srctree_module} Source tree : modification when adding an new module}
+
+\end{figure}
+
+\section{\label{sec_unit}Development unit creation}
+
+Here we want to add a development unit named {\tt <Unit>}
+in the existing module {\tt <Module>} (replace the names {\tt <Unit>}
+and {\tt <Module>} with real ones).
+
+\begin{enumerate}
+
+\item In the {\tt src} subdirectory of {\tt <Module>}, create a 
+subdirectory named {\tt <Unit>}~:
+
+\begin{verbatim}
+cd <path to <Module> >/src
+mkdir <Unit> 
+\end{verbatim}
+
+Modify then \Mkin file in the {\tt src} directory to add 
+the new unit
+to the compilation process~:
+
+Complete the line beginning with 
+\begin{verbatim}
+SUBDIRS = ... 
+\end{verbatim}
+
+with the name of the new directory
+
+\begin{verbatim}
+SUBDIRS = ... <Unit>
+\end{verbatim}
+
+\item Create a \Mkin file in the new {\tt <Unit>} directory (you can copy a \Mkin file from the corresponding subdirectory in {\tt GEOM} module : {\tt GEOM/src/GEOMGUI} subdirectory  for example, and modify as you need)
+
+
+\begin{verbatim}
+cd <Unit>
+... create Makefile.in
+\end{verbatim}
+
+The details of \Mkin creation is detailed in the next section.
+\end{enumerate}
+
+
+The different files of your unit must be located in several directories
+(see figure \ref{srctree_unit} and the list below).
+
+\begin{figure}[!h]
+\ifpdf
+        \includegraphics{@srcdir@/srctree_unit.pdf}
+\else
+        \includegraphics{@srcdir@/srctree_unit.eps}
+\fi
+\caption{\label{srctree_unit}Source tree : modification when adding an new unit in an existing module}
+\end{figure}
+
+\begin{itemize}
+\item Private source and header files of your unit
+
+Place the only copy of these files in your unit. If you use
+the proposed makefile system, dont put them in subdirectories
+of your unit.
+
+Note
+\begin{quotation}\noindent%
+Using a non-flat directory structure for an unit, has not been
+tested but it should work. You must write your makefile to take care 
+of subdirectories.
+\end{quotation}
+
+\item Exported idl files from a unit
+
+These files are provided by the unit for CORBA communication
+with other units.
+
+Place the only copy of these files into the idl subdirectory of the
+root source tree.
+
+\item Exported header files from a unit
+
+These files are provided by the unit for direct communication
+from other units (using the unit's library).
+
+Place the master copy of these files in your unit subtree.
+
+Assure that these files are automatically or manually copied in
+the inc subdirectory of the root build tree.
+
+\end{itemize}
+
+\section{Creating a \Mkin file in a new unit}
+
+\subsection{Using predefined make rules}
+
+Copy the following \Mkin \ skeleton in the unit directory~:
+
+\verbatiminput{@srcdir@/makefile.skel}
+
+Adapt this \Mkin skeleton to your particular needs~:
+\begin{itemize}
+\item if you have to compile a library
+
+\begin{enumerate} 
+\item Complete the line
+\begin{verbatim}
+LIB = 
+\end{verbatim}
+
+as
+\begin{verbatim}
+LIB = lib<MyLibrary>.la
+\end{verbatim}
+
+Example~:
+\begin{verbatim}
+LIB = libGeometryGui.la
+\end{verbatim}
+
+Notes
+\begin{enumerate}
+\item the library name {\bf must} begin with {\tt lib} and end with 
+{\tt .la} (this allows automatic creation of shared libraries with libtool).
+\item there must be only one library by development unit
+\end{enumerate}
+
+\item Also add to the line~:
+\begin{verbatim}
+LIB_SRC = 
+\end{verbatim}
+the list of sources files (in this unit) needed to build the library
+
+\item If your library uses QT MOC file, add to the line~:
+\begin{verbatim}
+LIB_MOC =
+\end{verbatim}
+the list of headers files to transform with moc.
+
+\item If your library uses CORBA functionnalities from other units (i.e.
+uses idl files exported from other units), add to the line~:
+\begin{verbatim}
+LIB_CLIENT_IDL =
+\end{verbatim}
+the list of idl files.
+
+\item If your unit provides CORBA functionnalities (i.e. exports idl
+files to the other units), add to the line~:
+\begin{verbatim}
+LIB_SERVER_IDL =
+\end{verbatim}
+the list of idl files.
+\end{enumerate}
+
+\item if you want to build one or more executables~:
+
+\begin{enumerate} 
+\item Complete the line
+\begin{verbatim}
+BIN = 
+\end{verbatim}
+
+as
+\begin{verbatim}
+BIN = <MyBin1> <MyBin2> ..
+.
+\end{verbatim}
+
+Note
+\begin{quotation}\noindent%
+For each executable in the {\tt BIN} list, say {\tt MyBin1}, the main 
+function {\bf must} be in a file named accordingly, in this example~: 
+{\tt MyBin1.cxx} and {\tt MyBin2.cxx}.
+\end{quotation}
+
+\item Also add to the line~:
+\begin{verbatim}
+BIN_SRC = 
+\end{verbatim}
+the list of source files (in this unit) needed to build {\bf all} the executables,
+{\bf excluding files containing main function(s)}.
+
+Notes~:
+\begin{enumerate}
+\item The makefile system will automatically add to each executable, its
+main function file. That's why these files must not be included in the 
+{\tt BIN\_SRC} list
+\item The object files (compiled from the source files in the {\tt BIN\_SRC}
+list) will be properly dispatched between the executables by the linker.
+\end{enumerate}
+
+\item If your binaries uses QT MOC file, add to the line~:
+\begin{verbatim}
+BIN_MOC =
+\end{verbatim}
+the list of headers files to transform with moc.
+
+\item If your binaries uses CORBA functionnalities from other units (i.e.
+uses idl files exported from other units), add to the line~:
+\begin{verbatim}
+BIN_CLIENT_IDL =
+\end{verbatim}
+the list of idl files.
+
+\item If your unit provides CORBA functionnalities (i.e. exports idl
+files to the other units), add to the line~:
+\begin{verbatim}
+BIN_SERVER_IDL = 
+\end{verbatim}
+the list of idl files.
+
+\end{enumerate}
+
+\item List the exported header files that your unit provides
+to other developments units~:
+
+Complete the line
+\begin{verbatim}
+EXPORT_HEADERS =
+\end{verbatim}
+with the list header files.
+
+Note
+\begin{quotation}\noindent%
+The makefile system will automatically copy these files in a 
+subdirectory {\tt inc} in the top build directory, and maintain
+coherence with your private copy inside your unit subtree.
+This is to assure name uniqueness of differents exported header
+files from different units and to write easier makefiles. 
+\end{quotation}
+
+\item List the python scripts files that your unit export~:
+
+Complete the line
+\begin{verbatim}
+EXPORT_PYSCRIPTS =
+\end{verbatim}
+
+\item To generate qm file from po file (use by QT), list po files in~:
+
+\begin{verbatim}
+PO_FILES =
+\end{verbatim}
+Note
+\begin{quotation}\noindent%
+The resulting qm files will ge generated directory which contain Makefile.
+It will be copied in resources directory when do {\tt 'make install'}.
+\end{quotation}
+
+\end{itemize}
+
+
+\subsection{Using your own makefiles in an unit}
+
+If the proposed makefile system don't suit your needs (several libraries,
+non flat unit subtree structure, ...). It's possible
+to write your own makefiles.
+
+\begin{enumerate}
+\item Create a file \Mkin
+
+This file must begin with the lines
+
+\verbatiminput{@srcdir@/makefile_own.skel}
+
+\bigskip
+
+The rest of the file has the standard GNU make format.
+
+You must define the following targets~:
+
+\begin{enumerate}
+\item {\tt inc} : copy/update the exported header files to the {\tt \$top\_builddir/inc} directory
+\item {\tt dep} : update dependencies
+\item {\tt lib} : build libraries and link them into the {\tt \$top\_builddir/lib} directory
+\item {\tt bin} : build executables and link them into the {\tt \$top\_builddir/bin} directory
+\end{enumerate}
+
+Some of these targets may be empty, if not applicable.
+
+\end{enumerate}
+
+The line 
+\begin{verbatim}
+@\texttt{COMMENCE}@
+\end{verbatim}
+provides a number of predefined variables that you can use in your makefile
+rules (defining standard libraries locations, compiler options, ..., see next section).
+
+
+\section{Add or remove a script}
+
+If you want to add a new shell script in {\tt SALOME\_ROOT/bin}, you must edit {\tt SALOME\_ROOT/Makefile.in} to add it in {\tt BIN\_SCRIPT}.
+
+If this script have some package dependent variable, you must create a ".in" file and add this reference to {\tt configure.in} file.
+
+To remove an existing script, you must of course remove it from CVS archive and also remove it from {\tt SALOME\_ROOT/Makefile.in} and if any, from {\tt configure.in}.
+
+If you want to add a new python script, put it in {\tt EXPORT\_PYSCRIPTS} variable. It will be copied at same place than others executables.
+
+
+\section{Add or remove an IDL file}
+
+If you want to add a new IDL file in {\tt SALOME\_ROOT/idl}, you must edit {\tt SALOME\_ROOT/idl/Makefile.in} and add its in {\tt IDL\_FILES}.
+
+To remove an existing IDL file, you must of course remove it from CVS archive and also remove it from {\tt SALOME\_ROOT/idl/Makefile.in}.
+
+
+\section{Predefined symbols used in {\tt Makefile.in}}
+
+You can use predefined symbols in you {\tt Makefile.in} files.
+These symbols define
+\begin{itemize}
+\item compilation flags for source compiling,
+\item header files location in your local system,
+\item libraries needed for binaries linking.
+\end{itemize}
+
+For example to use the OpenCascade libraries in your unit, you will add the
+\begin{itemize}
+\item {\tt \$OCC\_INCLUDES} symbol to the included header file locations,
+\item {\tt \$OCC\_CXXFLAGS} symbol to the compilation flags,
+\item {\tt \$OCC\_LIBS} symbol to the linker's flags
+\end{itemize}
+
+If you use the predefined make rules, add the lines
+\begin{verbatim}
+CPPFLAGS+=$(OCC_INCLUDES)
+CXXFLAGS+=$(OCC_CXXFLAGS)
+LDFLAGS+=$(OCC_LIBS)
+\end{verbatim}
+in your {\tt Makefile.in} file after the @{\tt COMMENCE}@ line.
+
+For each standard tool you need in SALOME (QT, python, OpenCascade, CORBA, VTK, \ldots), main symbols listed below.
+
+\begin{enumerate}
+\bigskip
+
+\item {\it Corba}
+\smallskip
+
+\begin{longtable}{|p{3.2cm}|p{9.1cm}|}
+\hline
+\it variable & \it value \\
+\hline
+{\tt CORBA\_ROOT } & CORBA home base \\
+\hline
+{\tt CORBA\_INCLUDES} & compiler options to include CORBA headers \\ 
+\hline
+{\tt CORBA\_LIBS } & libraries needed to link with CORBA \\
+\hline
+{\tt CORBA\_CXXFLAGS } & C++ compiler options to use with CORBA \\ 
+\hline
+{\tt IDL} &  idl compiler \\
+\hline
+{\tt IDLCXXFLAGS} & options to the idl compiler to generate C++ 
+stub or skeleton code \\ 
+\hline
+{\tt IDLPYFLAGS} &  options to the idl compiler to generate python
+stub or skeleton code \\
+\hline
+{\tt IDL\_CLN\_H} & extension of generated CORBA header files (client side) \\
+\hline
+{\tt IDL\_CLN\_CXX} & extension of generated CORBA source files (client side) \\
+\hline
+{\tt IDL\_CLN\_OBJ} & extension of generated CORBA object files (client side) \\
+\hline
+{\tt IDL\_SRV\_H} & extension of generated CORBA header files (server side) \\
+\hline
+{\tt IDL\_SRV\_CXX} & extension of generated CORBA source files (server side) \\
+\hline
+{\tt IDL\_SRV\_OBJ} & extension of generated CORBA object files (server side) \\
+\hline
+\end{longtable}
+
+\item {\it python}
+\smallskip
+
+\begin{longtable}{|p{3.2cm}|p{9.1cm}|}
+\hline
+\it variable & \it value \\
+\hline
+{\tt PYTHON} & python interpreter (absolute path to) \\
+\hline
+{\tt PYTHON\_VERSION} & python version \\
+\hline
+{\tt PYTHONHOME} & python home base (sometimes needed
+                  to run python) \\
+\hline
+{\tt PYTHON\_INCLUDES} & compiler options to include python header files \\
+\hline
+{\tt PYTHON\_LIBS} & libraries needed to link with python \\
+\hline
+\end{longtable}
+
+\bigskip
+\item {\it QT}
+\smallskip
+
+\begin{longtable}{|p{3.2cm}|p{9.1cm}|}
+\hline
+\it variable & \it value \\
+\hline
+{\tt MOC} & moc compiler \\
+\hline
+{\tt UIC} & uic graphical compiler \\
+\hline
+{\tt QTDIR} & QT home base \\
+\hline
+{\tt QT\_ROOT} & QT home base \\
+\hline
+{\tt QT\_INCLUDES} & compiler options to include QT headers \\
+\hline
+{\tt QT\_MT\_INCLUDES} & same as above, for multithreaded applications \\
+\hline
+{\tt QT\_LIBS} & libraries needed to link with QT (single threaded) \\
+\hline
+{\tt QT\_MT\_LIBS} & same as above, for multithreaded applications \\
+\hline
+\end{longtable}
+
+For SALOME developments, multithreaded versions of qt options and libraries
+are needed.
+
+\bigskip
+\item {\it OpenGL}
+\smallskip
+
+\begin{longtable}{|p{3.2cm}|p{9.1cm}|}
+\hline
+\it variable & \it value \\
+\hline
+{\tt OGL\_INCLUDES} & compiler options to include OpenGL headers \\
+\hline
+{\tt OGL\_LIBS} & libraries needed to link with OpenGL  \\
+\hline
+\end{longtable}
+
+\bigskip
+\item {\it VTK}
+\smallskip
+
+\begin{longtable}{|p{3.2cm}|p{9.1cm}|}
+\hline
+\it variable & \it value \\
+\hline
+{\tt VTK\_INCLUDES} & compiler options to include VTK headers \\
+\hline
+{\tt VTK\_LIBS} & libraries needed to link with VTK  \\
+\hline
+\end{longtable}
+
+\bigskip
+\item {\it HDF (v5)}
+\smallskip
+
+\begin{longtable}{|p{3.2cm}|p{9.1cm}|}
+\hline
+\it variable & \it value \\
+\hline
+{\tt HDF5\_INCLUDES} & compiler options to include HDF headers \\
+\hline
+{\tt HDF5\_LIBS} & libraries needed to link with HDF  \\
+\hline
+{\tt HDF5\_MT\_LIBS} & libraries needed to link with HDF
+  (multithreaded version)  \\
+\hline
+\end{longtable}
+
+\bigskip
+\item {\it OpenCascade}
+\smallskip
+
+\begin{longtable}{|p{3.2cm}|p{9.1cm}|}
+\hline
+\it variable & \it value \\
+\hline
+{\tt OCC\_INCLUDES} & compiler options to include OpenCascade headers \\
+\hline
+{\tt OCC\_LIBS} & libraries needed to link with OpenCascade  \\
+\hline
+{\tt OCC\_CXXFLAGS} & C++ compiler options to use with OpenCascade \\
+\hline
+\end{longtable}
+
+\end{enumerate}
+
+\section{Location of generated files in the build tree}
+
+A partial view of the build tree shows the location of files generated
+during the compilation process.
+
+\begin{figure}[h]
+\ifpdf
+        \includegraphics{@srcdir@/bldtree.pdf}
+\else
+        \includegraphics{@srcdir@/bldtree.eps}
+\fi
+\caption{Partial view of the build tree : generated files during compilation}
+\end{figure}
+
+\section{What's matter when launch {\tt make install}}
+
+When all libraries and binaries files are generated, make copies all identified files as {\tt configure} parameters {\tt --prefix}, {\tt bindir}, {\tt datadir}, ... (see {\tt configure --help} for details).
+
+If you specify nothing, all are installed in {\tt <prefix>=/usr/local}.
+
+All executables (binaries and scripts) are placed in {\tt <prefix>/bin} (see BIN and BIN\_SCRIPT variables in {\tt Makefile}).
+
+All libraries are placed in {\tt <prefix>/lib} (see LIB variable in {\tt Makefile}).
+
+All includes are placed in {\tt <prefix>/include} (see EXPORT\_HEADERS variable in {\tt Makefile}).
+
+All idls are placed in {\tt <prefix>/idl} (see IDL\_FILES variable in {\tt Makefile}).
+
+All python srcipts are placed in {\tt <prefix>/lib/pythonX.X/...} (see {\tt EXPORT\_PYSCRIPTS} variable in {\tt Makefile}).
+
+All ressources files (icons, messages, configuration, ...) are placed in {\tt <prefix>/share/salome/ressources} (see RESOURCES\_FILES variable in {\tt Makefile}).
+
+
+\section{Creating source files according to SALOME building system}
+
+Building system use dependencies between files writing in Makefile rules. We use {\tt C} or {\tt C++} preprocessor to automatically generate this dependencies rules.
+
+There are some configuration and useful macro defined in header file {\tt SALOMEconfig.h}. \textbf{All files should be included this header !}
+You must include it ussing {\tt <>} delimiter because {\tt SALOMEconfig.h} must not appear in dependencies rules (see below \ref{include}). 
+
+When a {\tt Makefile} is regenerate with {\tt config.status} script, all files are regenerates (in particular {\tt SALOMEconfig.h}).It is a restriction of {\tt autoconf 2.13} which could not regenerate only one particular file. 
+So, all files which depend of {\tt SALOMEconfig.h} are rebuild even if it does not change. If you effectively change {\tt SALOMEconfig.h} file, you must clean all and rebuild.
+
+\subsection{{\tt C} or {\tt C++} source files}
+
+\textbf{You must name your {\tt C} file {\tt <myCFile>.c} and header file {\tt <myCHeaderFile>.h}}
+
+\textbf{You must name your {\tt C++} file {\tt <myC++File>.cxx} and header file {\tt <myC++HeaderFile>.hxx}}
+
+To have right dependencies rules, you must correctly write the include statement in your source files. We only take care about SALOME package header files to generate dependencies. We suppose that other header files (qt, vtk, OpenCascade, ...) are stables and are not modified when we build some SALOME modules.
+
+According to cpp documentation, local header files must be included with {\tt ""} statement and system or tools headers files must be included with {\tt <>} statement.
+\label{include}
+
+If you do not respect this notation, dependencies would not be true and some rebuilding trouble can appear~ !
+
+\subsection{idl files}
+
+We use {\tt C} preprocessor to build dependencies between idl files. The same convention must be applied as {\tt C} or {\tt C++} source files. 
+
+If included file is an external files, you must use statement {\tt <>} because this file will not be modified during SALOME devloppement and/or building. 
+If included file is part of SALOME files, you must use statement {\tt ""}.
+
+If you do not respect this notation, dependencies would not be true and some building or rebuilding trouble can appear~ !
+
+\subsection{Included header file generated from idl file}
+
+To include header file generated from idl file, you must use macro {\tt CORBA\_CLIENT\_HEADER} or \\
+{\tt CORBA\_SERVER\_HEADER} defined in {\tt SALOMEconfig.h}.
+
+These two macros replace idl prefix into corresponding header name generated (take care if you use client part or server part)
+
+{\bf Example :}
+\begin{verbatim}
+#include  CORBA_CLIENT_HEADER(geom)
+#include  CORBA_SERVER_HEADER(mesh)
+\end{verbatim}
+
+
+\end{document}
diff --git a/doc/DevelopersGuide/Makefile.in b/doc/DevelopersGuide/Makefile.in
new file mode 100644 (file)
index 0000000..fc731be
--- /dev/null
@@ -0,0 +1,61 @@
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Patrick GOLDBRONN (CEA)
+#  Module : doc
+#  $Header$
+
+top_srcdir=@top_srcdir@
+top_builddir=../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@
+
+
+TEX=DevelopersGuide.tex
+TEX_PS=$(TEX:%.tex=%.ps)
+TEX_PDF=$(TEX:%.tex=%.pdf)
+
+.SUFFIXES: .tex .dvi .ps .pdf
+
+doc: $(TEX_PS) clean $(TEX_PDF) clean
+
+clean:
+       \rm -f *~ *.bak *.aux *.log *.dvi *.toc $(TEX:%.tex=%.out)
+       \rm -f dummy thumb*
+
+distclean: clean
+       \rm -f $(TEX_PS) $(TEX_PDF)
+
+install:
+
+#implicits rules
+.tex.dvi: clean
+       latex $<
+       latex $<
+.dvi.ps:
+       dvips $< -o $@
+
+
+.tex.pdf: clean
+       pdflatex $<
+       pdflatex $<
+
diff --git a/doc/DevelopersGuide/SALOME.png b/doc/DevelopersGuide/SALOME.png
new file mode 100644 (file)
index 0000000..e6d626c
Binary files /dev/null and b/doc/DevelopersGuide/SALOME.png differ
diff --git a/doc/DevelopersGuide/SALOME.ps b/doc/DevelopersGuide/SALOME.ps
new file mode 100644 (file)
index 0000000..0e74fda
--- /dev/null
@@ -0,0 +1,4601 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: /home/tajchman/superv/GRAPHIQUES/SALOME.ps
+%%Creator: XV Version 3.10a  Rev: 12/29/94 (PNG patch 1.2)  -  by John Bradley
+%%BoundingBox: 131 321 481 471
+%%Pages: 1
+%%DocumentFonts:
+%%EndComments
+%%EndProlog
+
+%%Page: 1 1
+
+% remember original state
+/origstate save def
+
+% build a temporary dictionary
+20 dict begin
+
+% define string to hold a scanline's worth of data
+/pix 1050 string def
+
+% define space for color conversions
+/grays 350 string def  % space for gray scale line
+/npixls 0 def
+/rgbindx 0 def
+
+% lower left corner
+131 321 translate
+
+% size of image (on paper, in 1/72inch coords)
+349.99200 149.97600 scale
+
+% define 'colorimage' if it isn't defined
+%   ('colortogray' and 'mergeprocs' come from xwd2ps
+%     via xgrab)
+/colorimage where   % do we know about 'colorimage'?
+  { pop }           % yes: pop off the 'dict' returned
+  {                 % no:  define one
+    /colortogray {  % define an RGB->I function
+      /rgbdata exch store    % call input 'rgbdata'
+      rgbdata length 3 idiv
+      /npixls exch store
+      /rgbindx 0 store
+      0 1 npixls 1 sub {
+        grays exch
+        rgbdata rgbindx       get 20 mul    % Red
+        rgbdata rgbindx 1 add get 32 mul    % Green
+        rgbdata rgbindx 2 add get 12 mul    % Blue
+        add add 64 idiv      % I = .5G + .31R + .18B
+        put
+        /rgbindx rgbindx 3 add store
+      } for
+      grays 0 npixls getinterval
+    } bind def
+
+    % Utility procedure for colorimage operator.
+    % This procedure takes two procedures off the
+    % stack and merges them into a single procedure.
+
+    /mergeprocs { % def
+      dup length
+      3 -1 roll
+      dup
+      length
+      dup
+      5 1 roll
+      3 -1 roll
+      add
+      array cvx
+      dup
+      3 -1 roll
+      0 exch
+      putinterval
+      dup
+      4 2 roll
+      putinterval
+    } bind def
+
+    /colorimage { % def
+      pop pop     % remove 'false 3' operands
+      {colortogray} mergeprocs
+      image
+    } bind def
+  } ifelse          % end of 'false' case
+
+
+
+350 150 8                      % dimensions of data
+[350 0 0 -150 0 150]           % mapping matrix
+{currentfile pix readhexstring pop}
+false 3 colorimage
+
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfd
+fefdfdfefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefdfefefefefefefefefefefefefe
+fffefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefeffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefefefefefefefefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefdfefefdfefefdfefefdfe
+fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefefefefefefefefefefefefefdfd
+fefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfd
+fefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfd
+fefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfefdfdfdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefdfefdfdfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefdfdfdfdfdfdfefdfefdfdfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefdfefdfdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefeffffffffffffffffff
+fefefefefefefdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefefefeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefeffffffffffffffffffffffffffffffffffff
+fffffffefefefefefefefefefefefefefdfdfefdfdfefdfdfefdfdfefdfdfdfdfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffefefefefefefefefefefefeffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefe
+fefefefefefefefefefefefefefefefefefeffffffffffffffffffffffffffffffffffff
+fefefefefefefefefefdfefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfd
+fdfdfdfdfcfcfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffefefefefefefefefefefefefefefefefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefe
+fefefefefefefefefefefefefefefefefefefffffffffffffffffffefefefefefefefefe
+fefefefefefefcfcfcfdfdfdfdfdfdfdfefefdfcfcfdfdfdfcfdfdfcfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffbfcfdf4f6fbeef1f8
+e9edf6e5eaf4e4eaf4e2e8f4e0e7f2e3e9f4e4eaf4e5ebf5eaeef6eff2f9f9fafcfefeff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefffffffffffffefefffafafdfdfefeffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefefefefefefefefefefefefefefefeffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefefefefefefefefefefefefefefe
+fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffefefff8f9fceff2f9e8ecf5e3e9f3dfe6f2
+dfe6f1dfe6f1e0e7f2e4eaf3e8ecf5eff1f7f8f9fbfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfafafbf7f8faf6f7fa
+fbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfd
+fdfdfdfefefefefefefefefefefefefefefefffffffffefefefdfcfdfdfcfdfcfbfcfcfb
+fcfcfbfdfdfcfcfcfbfcfcfbfcfcfcfcfcfbfcfcfbfcfcfbfdfdfdfdfdfdfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfcfcfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffbfcfeecf0f8dbe3f1cad9eaadc6e08faed4779bca
+668dc35481bc5280bb4a79b84172b44c7bb95280bb5783bd678fc47fa1cea3bfdcc8d7e9
+dde4f2f2f5fafefeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefefefefefefefffffffffffffffffffffffffffffffbfcfdf1f3f9
+e7ecf5dee5f2d7dfefccdaebbbd1e5a7c1dec6d5e8ffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe
+fffffffffffffffffffffffffffffffffffff0f3f9dde4f1dae2f0dae2f0dae2f0dae2f0
+dae2f0dae2f0dae2f0dae2f0eaeef6fbfbfdfefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffdfdfeeff2f9dae2f0c4d5e8a1bcdb7c9fcc628cc2517fba4172b3
+3f71b33f71b34476b55582bc668fc382a4cea7c1ddc7d6e8dbe2efeff2f7fbfbfbfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf4f5f9dde3f0c8d7e8b3cae1a5bfdca4bfdb
+b6cde2c8d7e8d9e1eef0f3f8fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefdfdfdfdfcfcfcfcfb
+fcfcfbfcfcfbfcfcfbfcfcfbfcfcfbfcfcfbfcfcfcfdfdfdf7f8fae1e7f2d7dfedd7dfed
+d7dfedd7dfedd7dfeddce2eff4f6f9fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfbfcfceef0f7dee4f0d8e0eed7dfedd7dfedd7dfedd7dfedd7dfedd7dfed
+d7e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0ee
+d8e0eed8e0eed8e0eed8e0eed8e0eed8e0eed8e0eedce3f0f9f9fbfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffff8f9fcd6dfefaec5df7aa0cc4d7eba2165a90459a000579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e01589f2366aa
+5282bc8aadd3c8d5eaf8fafcffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefefefefefefefefefefffffffffffffffffff1f4f9b9cbe487aad1
+6f97c75886be4376b52667ab0659a000579e2769abe9eef7ffffffffffffffffffffffff
+fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefeffffffffffffffffffffffff99b5d85281bc4a7cb84a7cb84a7cb84a7cb8
+4a7cb84a7cb84a7cb84d7db989a6d1e4e9f4fefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffbfcfde0e6f3b9cbe481a6cf4c7db91a62a701589f00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e02589f2266a95483bb88abd1bdcde4e1e7f2
+fafafbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfceff2f7aabfdc5885bd2265aa0459a000579e00579e
+02589f2366a94e7fba8daed2dae1effcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfb
+fcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfcfcfcfdfdfdfdfdfdfefefefefefefefefdfdfdfc
+fcfcfbfcfcfbfcfcfbfcfcfbfcfcfbfcfcfbfdfdfdf5f7fabacae3638ec2497bb7497bb7
+497bb7497bb7497bb75583bbb9c8e1f8f8fafcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfafafbd4deec8baad15a87bf4b7cb8497bb7497bb7497bb7497bb7497bb7497bb7
+497bb7497bb7497bb7497bb7497bb7497bb7497bb7497bb7497bb7497bb7497bb7497bb7
+497bb7497bb7497bb7497bb7497bb7497bb7497bb75383bce0e6f2fdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fefefefefefefefefefffffffefefefefdfefefdfefdfdfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffd5deef95b4d64e82bb1861a600579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e01589f3a74b3c5d2e8ffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefefefefefefefefefefefefefffffffcfcfebed0e62c6dae00579e
+00579e00579e00579e00579e00579e00579e03599f9db2d9ffffffffffffffffffffffff
+fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefeffffffffffffffffff3a7bb301589e00579e00579e00579e00579e
+00579e00579e00579e00579e356eb0c7d3e8fefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefeffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefeff
+e3e9f4abc0dd5f8ec22567ab00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e01589f2c6bad6694c4
+b0c2dee6eaf4fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcf9fafbc2d2e6296bac00579e00579e00579e00579e00579e
+00579e00579e00579e055aa0638fc2ebeef5fafafafafafafafafafafafafafafafafafa
+fafafafbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfdfdfdfdfdfdfdfdfd
+fdfdfcfdfdfcfcfcfbfcfcfbfcfcfbfcfcfbfafafbcad6e93b76b300579e00579e00579e
+00579e00579e00579e00579e678cc2f0f3f7fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcdde3f06590c20d5da200579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e1b62a7d6e0eefcfcfcfdfdfdfdfdfd
+fdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdfdfdfd
+fefefefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+f8f9fcb6c6e14f84bc0d5ca200579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e88a2d0fffffffefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefefefefefefefefefefefefefefefeecf0f77ca2cd01589f00579e
+00579e00579e00579e00579e00579e00579e01579e447ab7f2f4faffffffffffffffffff
+fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefeffffff3177b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e336cafc6d2e7fefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfefebfcde5
+6292c32265a900579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+2767ab6b98c6c5d1e6fafbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfb
+fbfbfbfbfbfbfbfbfbfbfbfbf5f6f9a4beda00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e1161a4aabbdbf9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9
+f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fafafafafafafbfbfbfcfcfcfdfdfd
+fdfdfdfdfdfdfdfdfcfcfcfcfcfcfcfbfbfbe9eef56892c301589f00579e00579e00579e
+00579e00579e00579e00579e5c84beeff2f7fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fbfbfbb4c2df2e6eae00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e638ac1f1f3f7fcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfefefefefefe
+fefefefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5f7fb
+96b2d5306eae00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e819dcdfefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefefefefefefefefefefefefefdfdfecedbeb2e6fae00579e00579e
+00579e00579e00579e00579e00579e00579e00579e1061a5b7c5e3ffffffffffffffffff
+fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefe3177b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e336cafc6d2e7fefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefffffffffffffffffffffffff5f6fba3b9da3875b2
+01589f00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+01579e0f5da40c5ca300579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e0359a0427ab5a4bbd9f1f3f7fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfafafafafafa
+fafafaf9f9f9f9f9f9fafafaf4f5f8a3bcda00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e0559a04c81b9e5e9f1f8f8f8f8f8f8f7f7f7f7f7f7f7f7f7
+f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8f8f8f8f8f8f7f7f7f9f9f9fafafafbfbfb
+fbfbfbfcfcfcfcfcfcfcfcfcfcfcfcf8f9fa9bb3d7135fa400579e00579e00579e00579e
+00579e00579e00579e00579e5c84bdeef1f6fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfafafa
+fafafaadbddb296bac00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e065aa1adc2def8f9fafbfbfbfbfbfbfbfbfb
+fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfefefefefefe
+fefefefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfefe9eb5d8
+2368aa01589e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e819dcdfefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefef3f5fa8fadd30559a000579e00579e
+00579e00579e00579e00579e00579e00579e00579e055aa05a8abffcfcfeffffffffffff
+fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefe3177b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e336cafc6d2e7fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefef4f5fb8dacd22669ab01579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e2266a95685bd7da3cc
+9bbcd7a8c2dca6c1db95b7d4769ec94b7eb81961a600579e00579e00579e00579e00579e
+00579e00579e03589f2a6cac92aed2eff1f6f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9
+f9f9f9f9f9f9f8f8f8f8f8f8f3f4f6a3bcd900579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e1964a7a4b6d7f7f7f7f7f7f7f6f6f6f6f6f6f6f6f6
+f6f6f6f6f6f6f6f6f6f5f5f5f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f8f8f8
+f9f9f9fafafafbfbfbfbfbfbfcfcfccdd8ea276bac00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5c83bdeef1f6fafafafafafafafafaf9f9f9f9f9f9f9f9f8
+f8f8f7abbcda296bac00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e01589f4c80badfe6f0fafafafafafafafafafafafa
+fafafafafafafafafafafafafafafafbfbfbfcfcfcfcfcfcfcfcfcfdfdfdfefefefefefe
+fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc2cfe73573b1
+03589f00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+1a62a64c7db96a92c680a3ce86a9d186a9d184a7d07b9fcc6991c5517fbb2869ac075aa0
+00579e00579e00579e819dcdfefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefee2eaf33b74b300579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e01579e236babc9d4e9ffffffffffff
+fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefefefe
+fdfdfdfefefefefefefefefefefefefefefe3177b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e336cafc5d1e6fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefef8f9fc92aed32168a902589f00579e
+00579e00579e00579e00579e00579e00579e00579e1862a66794c4b6c9e1dae1efeceef5
+f9fafafafafafafafaf6f7f8e8ebf3d3dceba7bedb5486bb115ea300579e00579e00579e
+00579e00579e00579e03589f266aab94b0d2f4f5f7f9f9f9f9f9f9f9f9f9f9f9f9f8f8f8
+f8f8f8f8f8f8f8f8f8f7f7f7f2f3f5a2bcd800579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e0559a04c83b8e1e4eef5f5f5f5f5f5f5f5f5f5f5f5
+f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f6f6f6f6f6f6
+f6f6f6f7f7f7f9f9f9fafafaf3f4f75485bc00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5c83bdedf0f5fafafaf9f9f9f9f9f9f8f8f8f8f8f8f7f7f7
+f6f6f5abbcda296bac00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e0b5ca23871b1628cc17ca0cc91b0d49bb8d89bb8d89bb8d89bb7d7
+9ab7d69ab7d69ab7d69ab7d69ab7d6a1bdd8cfd9e9f5f5f7f9f9f8f9f9f8f9f9f8f9f9f8
+f9f9f8f9f9f9f9f9f9f9f9f9fafafafbfbfbfcfcfcfcfcfcfdfdfdfefefefefefefefefe
+fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffff5f6fb5e91c1085ba1
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e2c6bad83a4cf
+c6d6e9dee6f2e8ecf6eff2f9f1f3faf1f3f9eff2f9ecf0f7e7ebf5dfe6f2d2deedb1c7e1
+7c9ecc4877b62b69acb0c0e0fefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefef9fafca5bbdc085aa100579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e0d5ea37b9dcafefefeffffff
+fffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefefdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e336cafc4d0e6fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fefefefefefefefefefefefefefefefefefefefefeb5c4e13070af03589f00579e00579e
+00579e00579e00579e00579e00579e00579e296aac9ab4d6e3e9f3f8f9fbfbfbfbfafafa
+fafafaf9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f3f4f7dbe3ed85a3cd1c64a700579e00579e
+00579e00579e00579e00579e03589f3372afb3c3def8f8f8f7f7f7f7f7f7f7f7f7f7f7f7
+f7f7f7f7f7f7f7f7f7f7f7f7f2f2f5a2bcd800579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e1f67a8a0b3d5f4f4f4f4f4f4f4f4f4f4f4f4
+f4f4f4f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f4f4f4f4f4f4
+f5f5f5f5f5f5f6f6f6f7f7f79bafd40c5ca200579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5c83bdeceff4f9f9f9f8f8f8f7f7f7f6f6f6f5f5f5f5f5f4
+f5f5f4aabbd9296bac00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e2064a9698fc3afc4ded4deece2e7f1ebeef5f1f3f7f4f5f9f4f5f8f4f5f8f3f4f7
+f3f4f6f3f4f6f3f4f6f3f4f6f3f4f6f5f6f7f9f9f8f9f9f9f9f9f8f9f9f8f9f9f8f8f8f7
+f8f8f7f9f9f8faf9f9fafafafafafafbfbfbfcfcfcfdfdfdfdfdfdfefefefefefefefefe
+fffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d0e82f72af00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e457db8bfcfe6f2f5fa
+fdfdfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefafbfc
+f0f3f9e6ebf4e1e9f2f4f6fafefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefef0f3f9537dba00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e01589e3777b2dce2f1fefefe
+fffffffffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefe
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e336cafc3cfe4f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9
+fafafafafafafbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfce4e8f35389bd055aa000579e00579e00579e
+00579e00579e00579e00579e00579e2266a99bb3d6f1f4f8fcfcfcfbfbfbfafafaf9f9f9
+f9f9f9f9f9f9f9f9f9f9f9f9f8f8f8f8f8f8f8f8f8f7f7f8ebedf2819fcb1561a500579e
+00579e00579e00579e00579e00579e0559a0578bbddbe1edf7f7f7f7f7f7f7f7f7f7f7f7
+f6f6f6f6f6f6f6f6f6f5f5f5f0f1f3a1bbd800579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e04599f4d85b8dce0eaf3f3f3f3f3f3f3f3f3
+f2f2f2f2f2f2f1f1f1f1f1f1f2f2f2f2f2f2f2f2f2f2f2f2f1f1f1f1f1f1f2f2f2f2f2f2
+f3f3f3f4f4f4f5f5f5cad3e6226aaa00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5c83bdebeef3f8f8f8f6f6f6f5f5f5f5f5f4f4f4f4f4f4f4
+f4f4f3aabbd8296bac00579e00579e00579e00579e00579e00579e00579e00579e0559a0
+447db6b6c6e0e8ecf3f6f7f9fbfbfbfafafafbfbfbfbfbfbfbfafafbfbfbfafaf9fafaf9
+fafaf9fafaf9fafaf9fbfbfafbfbfafbfbfafbfbfafafafaf9f9f9f9f9f9f9f9f9fafaf9
+f9f9f8f9faf9fafbfafbfbfbfbfbfbfcfcfcfdfdfdfefefefefefefefefeffffffffffff
+fffffffffffffffffffefefefefefefefefefefefefffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff94abd41962a600579e
+00579e00579e00579e00579e00579e00579e00579e00579e306eafb7c8e3fbfcfdfefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefdfdfec1cfe70559a000579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e1a64a79ab0d7fefefe
+fefefefffffffffffffffffffffffffefefefefefefefefefefefefefefefefefefefefe
+fefefefdfdfdfdfdfdfdfdfdfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec2cee3f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8
+f8f8f8f8f8f8f9f9f9f9f9f9f9f9f9fafafafafafafbfbfbfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcaebfde286cac00579e00579e00579e00579e
+00579e00579e00579e00579e01589f6193c2e7eaf4fbfbfbfafafafafafaf9f9f9f8f8f8
+f8f8f8f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e4e7f0407db602589f
+00579e00579e00579e00579e00579e00579e286aaba9bad9f6f6f6f5f5f5f5f5f5f5f5f5
+f5f5f5f5f5f5f5f5f5f5f5f5eff0f3a0b9d600579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e2267a99fb2d4f1f1f1f0f0f0f0f0f0
+f0f0f0f1f1f1f0f0f0f0f0f0efefefefefefefefefefefeff0f0f0f0f0f0f0f0f0f1f1f1
+f1f1f1f2f2f2eaecef5183b90559a000579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5b83bdeaedf2f5f5f5f5f5f5f3f3f3f2f2f2f2f2f2f2f2f2
+f3f3f3a9bad7296bab00579e00579e00579e00579e00579e00579e00579e075aa05487bc
+d7deecf5f6f7f9f9f9f9f9f9f9f9f9fafafafbfafafbfbfbfbfbfbfafaf9fafaf9fafaf9
+fafaf9fafaf9fbfbfafbfbfafbfbfafbfbfafbfbfafbfbfafafaf9fafaf9fafaf9fafaf9
+fafafafcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfefefefefefefefefefefefeffffffffffff
+fffffffefefefefefefefefefefefefefefefffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffff6597c40559a000579e
+00579e00579e00579e00579e00579e00579e00579e01589e73a0caf2f3f9fefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefafbfd5d86bf00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e01579e4684b9ebeff7
+fefefefefefefefefefffffffffffffffffffffffffefefefefefefefefefefefefefefe
+fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec1cee2f7f7f7f7f7f7f7f7f7f6f6f6f7f7f7f7f7f7
+f6f6f6f6f6f6f7f7f7f7f7f7f8f8f8f8f8f8f8f8f8f9f9f9f9f9f9fafafafafafafafafa
+fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfafafb719ec7075aa000579e00579e00579e00579e
+00579e00579e00579e00579e2265a9a3b6d8fafafafafafaf9f9f9f9f9f9f8f8f8f7f7f7
+f7f7f7f6f6f6f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6f6f6f6f6f6f6f6f68ca3ce1360a4
+00579e00579e00579e00579e00579e00579e01589f6d9cc5eeeff2f5f5f5f4f4f4f4f4f4
+f4f4f4f4f4f4f3f3f3f3f3f3edeef19fb9d500579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e4c84b7d5dae6efefefeeeeee
+eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefefef
+efefefedeeef8aa2cb1260a400579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5b82bce8ebf0f4f4f4f2f2f2f0f0f0f0f0f0f0f0f0f0f0f0
+f0f0f0a8b8d6296aab00579e00579e00579e00579e00579e00579e03599f447fb6dde1ed
+f6f6f6f7f7f7f8f8f8f9f9f9f9f9f9f9f9f9f9f9f8fafaf9f9f9f8fafaf9fafaf9fafaf9
+fafaf9f9f9f9f9f9f9f9f9f9fafaf9f9f9f9f9f9f9f8f8f8fafaf9fafaf9fafaf9fafaf9
+fbfbfafcfcfcfcfcfcfcfcfcfdfdfdfefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffafbfd5790bf00579e00579e
+00579e00579e00579e00579e00579e00579e00579e1760a59ab6d7fefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefed7dff0065aa000579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e246aaba9bcdc
+fefefefefefefefefefefefefffffffffffffffffffefefefefefefefefefefefefefefe
+fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec1cde2f7f7f7f6f6f6f7f7f7f7f7f7f7f7f7f6f6f6
+f7f7f7f7f7f7f6f6f6f7f7f7f6f6f6f7f7f7f7f7f7f8f8f8f8f8f8f8f8f8f9f9f9f9f9f9
+f9f9f9fafafafafafafafafafafafae5e9f2548bbd00579e00579e00579e00579e00579e
+00579e00579e00579e00579e2b6cacafbfddfafafaf9f9f9f9f9f9f8f8f8f8f8f8f7f7f7
+f6f6f6f7f7f7f7f7f7f6f6f6f6f6f6f6f6f6f6f6f6f5f5f5f5f5f5f5f5f5a2b4d61864a6
+00579e00579e00579e00579e00579e00579e00579e568abcd9deeaf3f3f3f3f3f3f3f3f3
+f3f3f3f2f2f2f2f2f2f3f3f3ecedf09db7d400579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e2367a99cb1d1ececedeeeeee
+eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
+ededeeb8c5dc266dab00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5b82bce6e9eef1f1f1f0f0f0efefefefefefefefefeeeeee
+eeeeeea7b7d5296aab00579e00579e00579e00579e00579e00579e1a65a7a2b4d6f5f5f5
+f5f5f5f6f6f6f7f7f7f8f8f8f9f8f8f9f8f8f8f8f7f8f8f7f8f8f8f8f8f8f8f8f8f8f8f8
+f8f8f8f8f8f8f8f8f8f8f8f7f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f9f9f9fafaf9fafaf9
+fcfcfcfcfcfcfcfcfcfdfdfdfefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffff1f3fa518bbd00579e00579e
+00579e00579e00579e00579e00579e00579e00579e1f64a8a4badafefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefdfdfd7395c800579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e075aa06595c4
+f2f4f9fefefefefefefefefefefefefffffffffffffffffffffffffefefefefefefefefe
+fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cce1f5f5f5f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6
+f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f6f6f6f6f6f6f7f7f7f7f7f7f7f7f7
+f7f7f7f7f7f7f8f8f8f8f8f8f8f8f8d8dfec4a84b900579e00579e00579e00579e00579e
+00579e00579e00579e00579e2b6cacaebedcf8f8f8f8f8f8f7f7f7f7f7f7f7f7f7f6f6f6
+f6f6f6f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5a1b3d51863a6
+00579e00579e00579e00579e00579e00579e00579e4b81b7cdd4e4f2f2f2f2f2f2f2f2f2
+f1f1f1f1f1f1f1f1f1f1f1f1e9eaee94b0d000579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e01589f578abbd3d9e3ececec
+ecececececececececececececececedededededededededeeeeeeeeeeeeeeeeeeeeeeee
+d8dce65485b9075aa000579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5a82bae2e5eaededededededecececececececececececec
+edededa6b6d4296aab00579e00579e00579e00579e00579e00579e2970acd9dee9f4f4f4
+f4f4f4f5f5f5f6f6f5f6f6f5f6f6f5f6f6f5f5f5f5f5f5f5f5f4f4f5f4f4f5f5f5f5f5f5
+f5f5f5f5f5f5f5f5f4f5f5f4f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f6f6f5f8f8f7f9f9f9
+fbfbfbfcfcfcfcfcfcfdfdfdfefefefefefefefefefefefdfefefdfefefefefefefefefe
+fefefefefefefefefefefefefffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefeffffffffffffffffff5e94c202589f00579e
+00579e00579e00579e00579e00579e00579e00579e085aa17ea6cdf4f6fafefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdfefefe
+fefefefefefefefefefefefee1e6f21c66a800579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e3574b1
+bfcde5fefefefefefefefefefefefefefefefefefefffffffffffffefefefefefefefefe
+fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caebfcce1f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5
+f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f6f6f6f6f6f6f6f6f6
+f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6d6ddeb4a83b900579e00579e00579e00579e00579e
+00579e00579e00579e00579e2b6cacadbddbf7f7f7f7f7f7f6f6f6f6f6f6f6f6f6f5f5f5
+f5f5f5f4f4f4f4f4f4f4f4f4f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3a0b2d51863a6
+00579e00579e00579e00579e00579e00579e00579e497fb7cad2e3f0f0f0f0f0f0efefef
+efefefefefefefefefeeeeeee4e6eb86a6cb00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e2468a99db3d1e8e8ea
+ecececececececececedededededededededeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5e7eb
+87a4ca1963a600579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5a81badfe2e7eaeaeae9e9e9e9e9e9e9e9e9e9e9e9eaeaea
+eaeaeaa4b4d2286aaa00579e00579e00579e00579e00579e00579e2d73ade9ebeef2f2f2
+f2f2f2f3f3f2f3f3f2f3f3f2f4f4f3f3f3f2f2f2f2f2f2f2f2f1f1f2f1f0f2f1f0f2f2f2
+f2f2f2f2f1f1f2f2f1f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f4f4f3f6f6f5f7f7f7
+f9f9f9fbfbfbfcfcfcfdfdfdfefefefefefefefefefdfdfcfdfdfcfefefefefefefefefe
+fefefefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefeffffff7ba1cb0e5da300579e
+00579e00579e00579e00579e00579e00579e00579e00579e3d79b5bdcde5f9fafcfefefe
+fefefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfd89a6d0075ba000579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e115ea4
+83a6cef5f7fafefefefefefefefefefefefefefefefefefefffffffefefefefefefefefe
+fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caebecbe0f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3
+f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5
+f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5d5dcea4983b800579e00579e00579e00579e00579e
+00579e00579e00579e00579e2b6bacacbcdaf6f6f6f5f5f5f5f5f5f5f5f5f4f4f4f3f3f3
+f3f3f3f3f3f3f3f3f3f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f1f1f1a0b1d41863a6
+00579e00579e00579e00579e00579e00579e00579e497fb6c8d0e1efefefeeeeeeeeeeee
+eeeeeeeeeeeeedededededede2e4e986a5cb00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e01589f5c8cbcd2d7e3
+ecececededededededededededededeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeecededb0c2d9
+3173ae00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5980b8dcdee3e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7
+e8e8e8a3b3d02869aa00579e00579e00579e00579e00579e00579e256daacad1e2efefef
+f0f0eff0f0f0f1f1f0f1f1f0f1f1f0f0f0efefefeeefeeeeefeeeeefeeedefeeedf0efee
+f0efeeefeeedefeeedefeeedefeeedefeeedefeeeef0efeff0f0f0f1f1f0f3f3f3f4f4f4
+f6f6f6f9f9f9fbfbfbfcfcfcfdfdfdfefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefeaabcdd2369ab00579e
+00579e00579e00579e00579e00579e00579e00579e00579e085aa15288bcbdcee5f5f7fa
+fefefefefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fbfbfbfbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfcfcfcfcfcfc
+fbfbfbfbfbfbfbfbfbe3e8f23775b202589f00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+4a82b9d2dbecfefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caebecadff2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2
+f2f2f2f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f4f4f4f4f4f4f4f4f4f4f4f4
+f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4d4dbe94983b800579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6bacabbcd9f4f4f4f4f4f4f4f4f4f3f3f3f3f3f3f2f2f2
+f2f2f2f3f3f3f2f2f2f2f2f2f1f1f1f1f1f1f1f1f1f0f0f0f0f0f0f0f0f09fb0d31763a6
+00579e00579e00579e00579e00579e00579e00579e497eb6c8cfe0eeeeeeedededededed
+edededececececececebebebe1e3e886a5ca00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e2166a8a0b6d2
+e9e9ebeeeeeeeeeeeeeeeeeeeeeeeeefefefefefefefefefefefefefefefd2d8e45d8bbc
+085aa000579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5980b8dadde2e6e6e6e5e5e5e6e6e6e6e6e6e6e6e6e5e5e5
+e6e6e6a2b2cf2869aa00579e00579e00579e00579e00579e00579e1361a485a2c8e8e8ea
+ededeceeeeedededecededececececebebeaebeae9ebeae9ebeae9ebeae9ebeae9ecebea
+ecebeaebeae9ebeae9ebeae9ebeae9ebeaeaebeaeaecebebededecededeceeeeeef0f0f0
+f3f3f3f6f6f6f9f9f9fbfbfbfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefe
+fefefefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefedee4f1447fb703589f
+00579e00579e00579e00579e00579e00579e00579e00579e00579e075aa03c7bb494afd4
+dae1f0fbfbfdfdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfbfbfbfbfbfbfbfafafafafafa
+fafafafafafafafafafafafafafafafbfbfbfbfbfbfbfbfbfbfbfbf9f9f9f9f9f9f9f9f9
+f9f9f9f9f9f9f9f9f99eb2d71160a400579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+1a64a79ab7d7f9fafcfdfdfdfefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326cadbdc9def1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f2f2f2
+f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2
+f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2d3dae84982b800579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6bacaabbd8f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f1f1f1
+f0f0f0f1f1f1f0f0f0efefefefefefefefefefefefefefefefefefefefef9fb0d31763a6
+00579e00579e00579e00579e00579e00579e00579e487eb5c6cedfecececebebebebebeb
+ebebebeaeaeae9e9e9e9e9e9dfe1e684a4c800579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e01589f5f8cbd
+d4dae5eeeeeeeeeeeeefefefefefeff0f0f0f0f0f0f0f0f0f0f0f0e4e6ec89a7cc1963a6
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5880b7d8dbe0e3e3e3e3e3e3e3e3e3e4e4e4e4e4e4e3e3e3
+e3e3e3a0b1ce2869a900579e00579e00579e00579e00579e00579e03589f3472aeb1bfd7
+e8e9eaeaeae9e8e8e8e8e8e8e8e8e7e8e7e6e7e7e6e7e6e5e7e6e6e8e7e7e8e7e7e8e8e7
+e8e8e7e8e8e7e8e7e7e8e7e7e8e8e7e8e8e8e7e7e7e8e8e8e8e8e8e9e9e8eaeaeaebebeb
+eeeeeef2f2f2f5f5f5f7f7f7f9f9f9fafafafbfbfbfbfbfbfcfcfcfcfcfcfefefefefefe
+fefefefffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfd94b0d51763a6
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e1c63a7
+4b84ba90abd2c6d1e8f6f7fafcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfafafafafafafafafafafafaf9f9f9f9f9f9
+f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f8f8f8f7f7f7f7f7f7
+f8f8f8f8f8f8e6e9f14b81b80559a000579e00579e00579e00579e00579e1863a65a89bd
+81a8cc739dc72d6fae05599f00579e00579e00579e00579e00579e00579e00579e00579e
+01589f6090c2dfe5f1fcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefe
+fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326badbcc9ddf0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0
+f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2
+f2f2f2f1f1f1f1f1f1f1f1f1f1f1f1d2d8e74982b700579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6baba9bad7f1f1f1f1f1f1f0f0f0f0f0f0f0f0f0efefef
+eeeeeeefefefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedededededed9eafd21763a6
+00579e00579e00579e00579e00579e00579e00579e487eb5c5cddde9e9e9e9e9e9e9e9e9
+e8e8e8e8e8e8e7e7e7e7e7e7dde0e483a3c700579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e1c65a7
+a4bad4e9eaeceeeeeeefefefefefefefefeff0f0f0f0f0f0eeeeefb3c5db3373af00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e587fb7d7dadee2e2e2e2e2e2e1e1e1e2e2e2e2e2e2e2e2e2
+e2e2e29fafcd2869a900579e00579e00579e00579e00579e00579e00579e095ba14479b3
+a7b8d2dddfe2e5e5e5e6e5e5e6e6e5e6e6e5e6e6e5e6e6e5e6e6e5e6e6e5e6e6e5e6e6e5
+e6e6e6e6e6e6e6e6e5e5e5e4e5e5e5e5e5e4e6e5e5e6e6e5e5e5e5e5e5e5e5e5e5e6e6e6
+e8e8e8ecececefefeff2f2f2f4f4f4f7f7f7f8f8f8fafafafcfcfcfdfdfdfefefeffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfde7ebf4678fc3
+0a5ca100579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e1961a63676b25b90c09bb1d6cad3e9f1f3f8fcfcfcfcfcfcfcfcfcfbfbfbfbfbfb
+fbfbfbfbfbfbfafafafafafafafafaf9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9
+f9f9f9f8f8f8f8f8f8f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7
+f7f7f7f6f6f6acbcda1d67a800579e00579e00579e00579e00579e0b5ca2628fc0d6dde9
+eceef2e4e8ef93add21e67a800579e00579e00579e00579e00579e00579e00579e00579e
+00579e276bacb3c7e0fbfcfcfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326badbcc9ddf0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0
+f0f0f0f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2
+f2f2f2f1f1f1f1f1f1f1f1f1f0f0f0d1d8e64882b700579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6baba8b8d6efefefefefefeeeeeeeeeeeeeeeeeeededed
+edededededededededededededededededededededecececebebebebebeb9caed01763a5
+00579e00579e00579e00579e00579e00579e00579e487db4c4cbdce7e7e7e7e7e7e7e7e7
+e7e7e7e6e6e6e6e6e6e6e6e6dcdee282a1c600579e00579e00579e00579e00579e00579e
+00579e00579e085ba15380b7789bc2628cbc1f63a600579e00579e00579e00579e01579e
+608abdd5dae4edededeeeeeeeeeeeeeeeeeeefefefefefefd1d8e55e8abd075aa000579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e587fb7d7dadee2e2e2e0e0e0e1e1e1e1e1e1e1e1e1e0e0e0
+e0e0e09eaecc2869a900579e00579e00579e00579e00579e00579e00579e00579e085aa0
+2c6eab7498c0bfc7d7dfe0e1e4e4e3e5e5e4e4e4e4e5e5e4e4e4e3e4e4e3e4e4e3e3e3e2
+e3e3e2e3e3e2e3e3e2e2e2e1e2e2e2e3e2e2e3e3e2e3e3e3e1e2e1e1e1e1e1e1e1e2e2e2
+e2e2e2e6e6e6e9e9e9edededf1f1f1f4f4f4f8f8f8fafafafcfcfcfefefeffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcdce4f0
+5c87bf0559a000579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e04599f1c65a82e72af4883b8799bc9a8b9dbd1d8ebf1f2f7fafafa
+fafafafafafaf9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f8f8f8f8f8f8f8f8f8f8f8f8
+f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6f6f6f6f6f6f6f6f6
+f5f5f5ebedf1588bbd075aa000579e00579e00579e00579e00579e266baba9bbd9f4f4f4
+f4f4f4f4f4f4dfe3ec407db502589f00579e00579e00579e00579e00579e00579e00579e
+00579e0559a0789ecae9ecf5fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326badbcc9ddf0f0f0f0f0f0f0f0f0f0f0f0f1f1f1f0f0f0
+f1f1f1f1f1f1f2f2f2f2f2f2f2f2f2f2f2f2f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f2f2f2
+f2f2f2f2f2f2f2f2f2f1f1f1f0f0f0d1d7e64881b700579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6baba8b8d5eeeeeeededededededededededededececec
+ecececececececececebebebebebebebebebebebebebebebeaeaeaeaeaea9caed01763a5
+00579e00579e00579e00579e00579e00579e00579e477db4c3cadbe7e7e7e6e6e6e6e6e6
+e6e6e6e5e5e5e4e4e4e4e4e4dadce082a1c600579e00579e00579e00579e00579e00579e
+00579e00579e82a2c5c7cddad6d9dfcad0db789bc200579e00579e00579e00579e00579e
+1360a491abcde2e3e8ebebebedededededededededd5dbe56e93c2115fa300579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5880b8d8dbe0e3e3e3e1e1e1e1e1e1e1e1e1e0e0e0e0e0e0
+e0e0e09eaecc2869a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+01579e1160a32e71ac648cbb9aabccbec7d8d9dae0e3e3e3e3e3e3e3e2e1e2e3e3e1e2e1
+e0e1e0e1e1e1e1e0e0e0e0e0e0e0e0e0e0e0e1e0e0e0e0e0dfdfdfdededededededddddd
+dededee1e1e1e5e5e5eaeaeaf0f0f0f4f4f4f9f9f9fbfbfbfdfdfdfefefeffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+e1e8f26b8fc400579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e03589f0e5da31a65a7246dab417cb57899c9
+b4c2dfebeef4f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f7f7f7f7f7f7f7f7f7f7f7f7
+f7f7f7f7f7f7f7f7f7f7f7f7f6f6f6f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5
+f5f5f5bac6df2b6fad00579e00579e00579e00579e00579e02589f4581b6dfe3ebf2f2f2
+f3f3f3f3f3f3f2f3f387a3cc1360a400579e00579e00579e00579e00579e00579e00579e
+00579e00579e3f75b4cbd6e9fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326badbcc9ddf0f0f0f0f0f0f0f0f0f1f1f1f1f1f1f1f1f1
+f2f2f2f2f2f2f2f2f2f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f5f5f5f4f4f4f4f4f4f4f4f4
+f3f3f3f2f2f2f2f2f2f2f2f2f1f1f1d1d7e54881b700579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6baba7b7d4ecececebebebebebebebebebebebebeaeaea
+eaeaeaebebebeaeaeae9e9e9e9e9e9e9e9e9e9e9e9e8e8e8e8e8e8e8e8e89badcf1763a5
+00579e00579e00579e00579e00579e00579e00579e477db3c1c9d9e5e5e5e5e5e5e4e4e4
+e3e3e3e3e3e3e2e2e2e2e2e2d9dbdf82a1c600579e00579e00579e00579e00579e00579e
+00579e00579ec4ced8e0e0e0e0e0e0e0e0e0b6c2d3336cac00579e00579e00579e00579e
+00579e1764a56f90c0b1bdd6d2d6e1c7cfdf99adcf4b7db50f5ea300579e00579e00579e
+00579e00579e00579e5481b8acbfd7bccedd6d93c200579e00579e00579e00579e00579e
+00579e00579e00579e00579e5980b8d9dce1e4e4e4e3e3e3e2e2e2e2e2e2e1e1e1e0e0e0
+e1e1e19fb0cd2869a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e0b5ca11863a5216aa8276faa3074ac497db4497db3497db4497db3
+4f7fb46f8fbdaab6cfd6d7dcdedededededededededddddddcdcdcdadadadadadad9d9d9
+dbdbdbdfdfdfe5e5e5ecececf2f2f2f7f7f7fbfbfbfdfdfdfefefeffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefdfdfdfdfdfd
+fdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfceef1f798b1d62365a900579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e03589f0a5ca1
+1262a52b6fad7f9ccbd4dbebf7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6f6f6
+f6f6f6f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5
+f2f2f36d98c30b5ca200579e00579e00579e00579e00579e1762a68fa8cef0f0f1f1f1f1
+f2f2f2f2f2f2f3f3f3cad3e5256dab00579e00579e00579e00579e00579e00579e00579e
+00579e00579e065aa093b2d4f2f4f8fbfbfbfbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfb3076b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326cadbdcadff2f2f2f2f2f2f3f3f3f3f3f3f3f3f3f3f3f3
+f4f4f4f4f4f4f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f6f6f6f6f6f6f6f6f6f6f6f6f5f5f5
+f6f6f6f4f4f4f3f3f3f3f3f3f2f2f2d1d7e64881b700579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6aaba6b5d2eaeaeae9e9e9e9e9e9e9e9e9e8e8e8e9e9e9
+e9e9e9e8e8e8e8e8e8e7e7e7e8e8e8e8e8e8e7e7e7e7e7e7e7e7e7e7e7e79bacce1763a5
+00579e00579e00579e00579e00579e00579e00579e477cb3c0c7d8e3e3e3e3e3e3e1e1e1
+e0e0e0e0e0e0e1e1e1e1e1e1d7d9de809fc400579e00579e00579e00579e00579e00579e
+00579e00579ec8d1d8dfdfdfdedededededed1d3da7296be00579e00579e00579e00579e
+00579e00579e0a5ba11261a41765a51564a50f5fa305599f00579e00579e00579e00579e
+00579e00579e4677b3c9d2dfe9eaebebededc9d5e200579e00579e00579e00579e00579e
+00579e00579e00579e00579e5980b8dbdee3e7e7e7e6e5e4e5e5e4e4e4e4e3e3e3e3e3e3
+e3e3e3a1b1ce2869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e01579e04599f04599f04599f04599f
+05599f095ba11863a57699bfced1d8dbdbdbdbdbdbd9d9d9d8d8d8d5d5d5d6d6d6d7d7d7
+dbdbdbe2e2e2eaeaeaf1f1f1f7f7f7fbfbfbfdfdfdffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe
+fefefefdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfb
+fbfbfbfbfbfbf8f8fae0e5f07e9ccb2769ab065aa002589f00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e01579e04599f0b5ea37593c6d7ddebf3f4f5f6f6f6f5f5f5f5f5f5f5f5f5f5f5f5
+f5f5f5f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f3f3f3f3f3f3f3f3f3
+c2cce13876b100579e00579e00579e00579e00579e00579e2e72adced5e4f0f0f0f0f0f0
+f1f1f1f2f2f2f3f3f3f3f4f45e8abe075aa000579e00579e00579e00579e00579e00579e
+00579e00579e00579e4f7fbad7deedfafafafafafafafafafafafafafafafafafafafafa
+fafafafafafafafafafafafafafafafafafa3076b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caebfcce0f4f4f4f4f4f4f5f5f5f5f5f5f5f5f5f5f5f5
+f5f5f5f5f5f5f6f6f6f6f6f6f7f7f7f7f7f7f7f7f7f8f8f8f8f8f8f8f8f8f8f8f8f7f7f7
+f6f6f6f6f6f6f5f5f5f5f5f5f3f3f3d2d9e74882b700579e00579e00579e00579e00579e
+00579e00579e00579e00579e296aaaa4b4d1e8e8e8e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7
+e7e7e7e7e7e7e7e7e7e7e7e7e6e6e6e7e7e7e6e6e6e6e6e6e5e5e5e5e5e59aaacc1762a5
+00579e00579e00579e00579e00579e00579e00579e467cb3bec6d6e1e1e1e0e0e0e0e0e0
+e0e0e0e0e0e0e0e0dfe0e0e0d6d8dd809fc300579e00579e00579e00579e00579e00579e
+00579e00579ec6cfd6dcdcdcdcdcdcdcdcdcdbdbdbacb9ce2e69aa00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e105da3a4bad3e6e7e8ebebebeaeaebbac8db00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5980b9dde0e5e8e8e8e7e7e7e8e8e8e7e7e7e6e6e6e7e7e7
+e6e6e6a2b2cf2869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e3e73afb1bbced9d9d9d7d7d7d4d4d4d2d2d2d2d2d2d5d5d5dbdbdb
+e2e2e2eaeaeaf1f1f1f7f7f7fbfbfbfdfdfdffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefefefefefefefefefefefefe
+fefefefefefefefefefdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfb
+fbfbfbfafafafafafafafafaf9f9f9e5eaf2a4b6da5684bc1e69a91161a40c5da204599f
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e01579e1f67a99bb0d4eaecf1f4f4f4f4f4f4f4f4f4f4f4f4
+f3f3f3f3f3f3f3f3f3f3f3f3f2f2f2f2f2f2f3f3f3f2f2f2f2f2f2f2f2f2f2f2f2eeeff0
+82a2c9135fa400579e00579e00579e00579e00579e0c5ca27193c2eeeeeeefefefefefef
+f0f0f0f2f2f2f3f3f3f5f5f5b0bedc1562a500579e00579e00579e00579e00579e00579e
+00579e00579e00579e085ba2abc3ddf6f6f8fafafafafafaf9f9f9f9f9f9f9f9f9f9f9f9
+f9f9f9f9f9f9fafafafafafafafafafafafa3076b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cce1f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5
+f6f6f6f7f7f7f8f8f8f9f9f9f9f9f9f9f9f9fafafafafafafbfbfbfbfbfbfafafafafafa
+f8f8f8f8f8f8f6f6f6f5f5f5f4f4f4d3d9e74882b700579e00579e00579e00579e00579e
+00579e00579e00579e00579e296aaaa4b4d0e6e6e6e6e6e6e6e6e6e6e6e6e7e7e7e6e6e6
+e7e7e7e6e6e6e6e6e6e6e6e6e5e5e5e5e5e5e4e4e4e4e4e4e3e3e3e3e3e399aacc1762a5
+00579e00579e00579e00579e00579e00579e00579e467cb2bec5d6e0e0e0e0e0e0e0e0e0
+dfdfdfdfdfdfdfdfdfdfdfdfd6d8dc809fc300579e00579e00579e00579e00579e00579e
+00579e00579ec5ced5d9dadadbdbdbdadadad9d9d9c9ccd5658db903589f00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+05599f6e93bfd3d7dfe6e6e6e7e7e7e5e6e6b3c2d700579e00579e00579e00579e00579e
+00579e00579e00579e00579e5981b9dee1e6eaeaeaeaeaeae9e9e9e9e9e9e8e8e8e8e8e8
+e8e8e8a2b3d02869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e065aa05280b4b9c0ced4d4d4d2d2d2d0d0d0d0d0d0d4d4d4dbdbdbe4e4e4
+ecececf3f3f3f9f9f9fcfcfcfefefeffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefffffffffffffffffffefefe
+fefefefefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfb
+fafafaf9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f7f8f8dee3efaebedd839dcc4d82b9
+2d73af226baa1864a70d5ca200579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e1360a47b9ac7e0e4ebf2f2f2f2f2f2f3f3f3
+f3f3f3f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f1f1f1f1f1f1f0f0f0f0f0f0f0f0f0ccd3e3
+467fb600579e00579e00579e00579e00579e00579e1c66a7b5c0daeeeeeeeeeeeeefefef
+f0f0f0f1f1f1f3f3f3f5f5f5ebedf23475b001589e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e628cc1e3e8f0f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9
+f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f93076af00579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec1cde2f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6
+f7f7f7f8f8f8f9f9f9fafafafafafafbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fafafaf8f8f8f7f7f7f5f5f5f4f4f4d3d9e74882b700579e00579e00579e00579e00579e
+00579e00579e00579e00579e296aaaa3b3d0e5e5e5e5e5e5e5e5e5e5e5e5e6e6e6e5e5e5
+e5e5e5e5e5e5e5e5e5e4e4e4e3e3e3e3e3e3e2e2e2e2e2e2e2e2e2e1e1e198aacb1762a5
+00579e00579e00579e00579e00579e00579e00579e467bb2bdc5d5e0e0e0e0e0e0e0e0e0
+dfdfdfdedfdfdfdfdfdfdfdfd5d7dc809fc300579e00579e00579e00579e00579e00579e
+00579e00579ec1cad3dadadad9d9d9d9d9d9d9d9d9d9d9d99db1c82366a700579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+3670adb6c3d5e2e2e2e3e3e3e3e3e3e2e3e4a2b4d000579e00579e00579e00579e00579e
+00579e00579e00579e00579e5980b9dee1e6eaeaeaeaeaeaeaeaeae9e9e9e9e9e9e8e8e8
+e8e8e8a2b3d02869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e03589f0e5da21964a51c66a61c65a61c65a61c65a61b65a61b65a51b65a51b65a5
+1c65a5216aa75382b4afb9cbd2d2d2d0d0d0cdcdcdccccccd1d1d1dadadae3e3e3eeeeee
+f5f5f5f9f9f9fdfdfdfefefeffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffefdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfb
+fafafaf9f9f9f9f9f9f9f9f9f9f9f9f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f9f9f9
+e9ecf4c8d0e7a2b5d87497c73b7db5246bab0e5da200579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e1661a57f9fc8e3e6ecf0f0f0f1f1f1
+f0f0f0f0f0f0f0f0f0f0f0f0efefefefefefefefefefefefefefefefefefebebed94adcf
+1d64a700579e00579e00579e00579e00579e03599f467db5e7e8ebeeeeeeeeeeeeeeeeee
+f0f0f0f1f1f1f3f3f3f5f5f5f5f5f592a7d0075ba000579e00579e00579e00579e00579e
+00579e00579e00579e00579e1c62a7c3d2e5f7f7f8f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9
+f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f93076af00579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cde2f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7
+f8f8f8f9f9f9f9f9f9fafafafbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfbfbfb
+fafafaf8f8f8f6f6f6f5f5f5f3f3f3d2d8e64881b700579e00579e00579e00579e00579e
+00579e00579e00579e00579e296aaaa2b2cfe3e3e3e4e4e4e4e4e4e4e4e4e5e5e5e4e4e4
+e4e4e4e3e3e3e3e3e3e3e3e3e2e2e2e2e2e2e1e1e1e1e1e1e1e1e1e0e0e098a9ca1762a5
+00579e00579e00579e00579e00579e00579e00579e467cb2bdc5d6e0e0e0e0e0e0e0e0e0
+e1e1e1e0e1e1e0e0e0e0e0e0d6d8dd809fc400579e00579e00579e00579e00579e00579e
+00579e00579eb1bdcfdadadadadadad9d9d9d9d9d9d9d9d9c2c8d35886b603589f00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e115fa3
+82a0c3d5d6dbdfdfdfdfdfdfdfdfdfdededf96abcb00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5980b8dcdfe4e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e7e8e8
+e7e8e8a2b3d02869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e
+085aa02f6fab7193bf9faecca9b5d0a8b4cfa8b4cea7b3cda6b2cca5b1cba5b1cba5b1ca
+a7b2cab9bfcecfd0d3d2d2d2cdcdcdcacacacacacacececed8d8d8e3e3e3edededf6f6f6
+fbfbfbfdfdfdfefefefefefeffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffefefefefefefefefefefefefdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfbfbfb
+f9f9f9f9f9f9f9f9f9f8f8f8f8f8f8f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6f6f6f6f6f6
+f7f7f7f8f8f8fafafafafbfbe7ebf4b1c1df7198c63274b00f5da300579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e276caba2b7d4ecedeeefefef
+eeeeeeeeeeeeefefefefefefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeedededd2d8e45689bb
+01589f00579e00579e00579e00579e00579e0c5ea29aadd0ececececececedededeeeeee
+efefeff1f1f1f4f4f4f5f5f5f6f6f6d9deec1d65a800579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e7d9ecbeef0f5f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9
+f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f93076af00579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cde2f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7f7f7f7
+f8f8f8f9f9f9f9f9f9fbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfafafaf9fafaf9
+f8f8f7f6f6f5f4f5f4f3f3f3f1f1f1d0d7e44881b600579e00579e00579e00579e00579e
+00579e00579e00579e00579e296aaaa1b1cde2e2e2e3e3e3e3e3e3e4e4e4e4e4e4e3e3e3
+e3e3e3e2e2e2e2e2e2e2e2e2e1e1e1e1e1e0e0e0e0e0e0e0e0e0e0e0e0e097a8ca1762a5
+00579e00579e00579e00579e00579e00579e00579e467cb3c0c7d8e3e3e3e3e3e3e4e3e3
+e4e4e4e4e4e4e4e4e4e4e4e4dadce182a1c600579e00579e00579e00579e00579e00579e
+00579e00579eb0bdd0dbdbdbdadadad9d9d9d9d9d9d9d9d9d7d7d88ea7c41d64a500579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e05599f5281b4
+bdc4d2dadadadbdbdadbdbdadcdcdbdadadb8ca2c600579e00579e00579e00579e00579e
+00579e00579e00579e00579e5880b8d9dce1e5e5e5e6e6e6e5e6e6e6e6e6e6e6e6e6e7e6
+e6e7e7a2b2d02869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e
+2c6caaa0b1ccdddedfe0e0e0dfdfdfdedfdfdddddddbdbdbdadadad9dad9d9d9d8d8d8d8
+d6d6d6d4d4d4d1d1d1cdcdcdc8c8c8c6c6c6cacacad4d4d4e2e2e2edededf6f6f6fbfbfb
+fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefeffffff
+fffffffefefefefefefefefefefefefefefefefefefdfdfdfcfcfcfcfcfcfcfcfcfbfbfb
+fafafaf9f9f9f9f9f9f8f8f8f7f7f7f7f7f7f7f7f7f6f6f6f6f6f6f6f6f6f5f5f5f5f5f5
+f6f6f6f6f6f6f7f7f7f9f9f9fafafafbfbfbf0f3f7bfcde46d95c51c66a800579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e04599f598bbbd5dbe5eeeeee
+ededededededededededededededededededececececececececece9e9eaa2b7d32669aa
+00579e00579e00579e00579e00579e00579e2d6dabd5d9e3ebebebebebebecececeeeeee
+efefeff2f2f2f4f4f4f5f5f5f6f6f6f7f7f7628ac000579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e2f6daed8e0edfafafafafafafafafafafafafafafa
+fafafafafafafafafafafafafafafafafafa3076b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cde2f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7
+f8f8f8f9f9f9f9f9f9fbfbfbfcfcfcfcfcfbfbfbfbfbfbfafbfbfafafaf9f9f9f8f8f8f7
+f6f6f5f4f4f4f3f3f2f1f1f1efeeeeced5e34781b600579e00579e00579e00579e00579e
+00579e00579e00579e00579e2969a9a1b1cde2e2e2e3e3e3e4e4e4e4e4e4e4e4e4e3e3e3
+e3e3e3e2e2e2e2e2e2e2e2e2e1e1e1e0e0e0e0e0e0e0e0e0e0e0e0e0e0e098a8ca1762a4
+00579e00579e00579e00579e00579e00579e00579e477db4c4cbdce9e9e9eaeaeaeaeaea
+e9e9e9e9e9e9e9e9e9e9e9e9dfe1e684a3c800579e00579e00579e00579e00579e00579e
+00579e00579eb2bfd1dddddddcdcdcdbdbdbdadadad9d9d9d8d8d8bec4d14c80b202589f
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e266aa896acc6
+d6d6d8d9d9d9d8d8d8d8d9d8d9d9d8d6d6d7819ac100579e00579e00579e00579e00579e
+00579e00579e00579e00579e577eb6d6d8dde1e1e1e2e2e2e2e2e2e3e3e2e4e4e3e4e4e4
+e5e5e5a1b2cf2869aa00579e00579e00579e00579e00579e00579e00579e00579e00579e
+467eb3c4cad8dfdfdfdedededcdddddcdcdcdadbdbd9dad9d8d9d8d9d9d9d8d8d8d7d7d7
+d5d5d5d2d2d2cecececacacac6c6c6c7c7c7cfcfcfddddddeaeaeaf5f5f5fbfbfbfdfdfd
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefdfdfdfcfcfcfcfcfcfcfcfcfcfcfc
+fafafaf9f9f9f9f9f9f8f8f8f8f8f8f7f7f7f6f6f6f5f5f5f5f5f5f5f5f5f4f4f4f4f4f4
+f4f4f4f4f4f4f5f5f5f6f6f6f6f6f6f8f8f8f9f9f9fafafae0e6f081a3cd1d67a800579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e2d6dacabbcd6ececec
+ececececececebebebebebebebebebebebebeaeaeaeaeaeaeaeaead7dbe36a94c00559a0
+00579e00579e00579e00579e00579e02589f7895c2e8e8e8eaeaeaeaeaeaebebebededed
+efefeff2f2f2f4f4f4f5f5f5f6f6f6f7f7f7b8c5df04599f00579e00579e00579e00579e
+00579e00579e00579e00579e00579e01589f9ab2d6f8f8fafbfbfbfbfbfbfbfbfbfbfbfb
+fbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfb3076b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cde2f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7
+f8f8f8f9f9f9fafafafbfbfbfbfbfbfafafafafaf9fbfbfaf9f9f8f9f9f8f7f7f6f5f5f4
+f3f3f2f2f2f1f0f0efeeeeedecececccd3e04780b500579e00579e00579e00579e00579e
+00579e00579e00579e00579e296aaaa2b1cee3e4e3e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4
+e3e3e3e2e2e2e2e2e2e2e2e2e1e1e1e1e1e1e1e1e1e1e1e1e2e2e2e2e2e299aacb1762a5
+00579e00579e00579e00579e00579e00579e00579e497fb6c9d0e1f0f0f0f1f1f1f0f0f0
+f0f0f0f0f0f0efefefeeeeeee3e6ea86a6cb00579e00579e00579e00579e00579e00579e
+00579e00579eb5c2d4e1e1e1dedededddddddcdcdcdadadad9d9d9d6d6d8819fc01862a4
+00579e00579e00579e00579e00579e00579e00579e00579e00579e105da26c90bac8ccd4
+d8d8d8d7d7d7d7d7d7d7d7d7d7d7d7d3d4d57692bd00579e00579e00579e00579e00579e
+00579e00579e00579e00579e577db5d3d5dadedededededddfdfdfdfdfdfe0e0e0e1e1e1
+e2e2e2a0b0ce2869a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+477fb3c4cad6dddddddcdcdbdbdbdbdadadad8d9d9d8d8d8d7d7d7d6d6d6d5d5d5d4d4d4
+d1d1d1cecececbcbcbc9c9c9c9c9c9cececed9d9d9e6e6e6f2f2f2fafafafdfdfdfefefe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffefefefefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefdfdfdfcfcfcfcfcfcfcfcfcfcfcfc
+fbfbfbf9f9f9f9f9f9f8f8f8f8f8f8f7f7f7f6f6f6f5f5f5f4f4f4f4f4f4f3f3f3f3f3f3
+f3f3f3f2f2f2f3f3f3f3f3f3f4f4f4f5f5f5f7f7f7f7f7f7f7f7f7dfe4ee7197c5115fa4
+00579e00579e00579e00579e00579e00579e00579e00579e00579e0d5ca284a6c9e8e8e9
+eaeaeae9e9e9e9e9e9e8e8e8e9e9e9e9e9e9e8e8e8e8e8e8e7e8e8b0c1d6306ead00579e
+00579e00579e00579e00579e00579e03589fa6b3d1e7e7e7e8e8e8e9e9e9ebebebededed
+efefeff2f2f2f4f4f4f5f5f5f6f6f6f7f7f7ebeef31460a500579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e3e77b3f0f3f7fcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cde2f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7
+f9f8f8f9f9f8fafaf9fafaf9fafaf9fafaf9fafaf9f9f9f8f7f7f6f6f6f5f4f4f3f3f3f2
+f1f1f0efefeeedececebebebe9e9e9cad1de467fb400579e00579e00579e00579e00579e
+00579e00579e00579e00579e296aaaa3b2cfe5e5e4e5e5e5e5e6e5e5e5e5e5e5e5e5e5e5
+e5e5e5e5e5e5e4e4e4e4e4e4e4e4e4e4e4e4e5e5e5e5e5e5e6e6e6e7e7e79badcf1763a5
+00579e00579e00579e00579e00579e00579e00579e4a80b8cdd5e6f5f5f5f6f6f6f5f5f5
+f5f5f5f5f5f5f4f4f4f2f2f2e7e9ee88a7cd00579e00579e00579e00579e00579e00579e
+00579e00579eb7c4d7e4e4e5e2e2e2dfdfdfdedededbdbdbdadadad9d9d9b9c1d03e79af
+01579e00579e00579e00579e00579e00579e00579e00579e01589e3b76adb0baccd7d6d6
+d7d7d7d6d6d6d6d6d6d6d6d6d6d6d6d2d3d56e8cbb00579e00579e00579e00579e00579e
+00579e00579e00579e00579e577db5d0d3d8dadadadadad9dbdbdbdcdcdcdddddddedede
+dfdfdf9eafcc2869a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+467eb2c3c9d5dbdcdbdadadad8d8d8d6d6d6d2d2d2d0d0d0cecececdcdcdcdcdcdcecece
+cececececececfcfcfd0d0d0d5d5d5dcdcdce6e6e6f0f0f0f8f8f8fdfdfdfefefeffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffdfdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfcfcfcfc
+fbfbfbfafafaf9f9f9f9f9f9f8f8f8f7f7f7f5f5f5f5f5f5f4f4f4f3f3f3f2f2f2f2f2f2
+f1f1f1f0f0f0f1f1f1f1f1f1f1f1f1f2f2f2f4f4f4f4f4f4f4f4f4f4f4f4becae03574b0
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e6795bfdbdee4
+e8e8e8e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d9dce27a9dc4085aa000579e
+00579e00579e00579e00579e00579e02589e7592c0dedfe2e6e6e6e7e7e7eaeaeaececec
+eeeeeef1f1f1f4f4f4f5f5f5f6f6f6f7f7f7c6d0e50b5ca200579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e085ba1b7c6e2fdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfc3077b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec1cde2f7f7f7f6f6f5f7f6f5f5f5f5f6f6f6f7f7f6
+f9f8f7f9f9f8fafaf9fafaf9fafaf9fafaf9f9f9f8f8f7f6f5f6f5f4f4f3f3f3f2f1f1f1
+efeeeeedecebeaeae9e8e8e8e7e7e7c9d0dc467fb300579e00579e00579e00579e00579e
+00579e00579e00579e00579e296aaaa4b4d0e8e7e7e8e8e7e8e8e8e8e8e8e8e8e8e8e8e8
+e8e8e8e8e8e8e8e8e8e8e8e8e9e9e9eaeaeaebebebecececedededefefef9fb1d31863a6
+00579e00579e00579e00579e00579e00579e00579e4b81b9d0d8eaf9f9f9f9f9f9f8f8f8
+f8f8f8f7f7f7f6f6f6f5f5f5e9ebf089a8cf00579e00579e00579e00579e00579e00579e
+00579e00579eb6c4d8e7e7e7e5e5e5e1e1e1dfdfdfdddddddbdbdbdadadad4d5d77898be
+1460a300579e00579e00579e00579e00579e00579e00579e1a64a5829ec1d1d3d6d7d8d7
+d7d7d7d7d7d6d6d7d6d5d6d5d5d5d5d1d2d56484b800579e00579e00579e00579e00579e
+00579e00579e00579e00579e567db4cdd0d5d8d7d7d8d7d7d8d8d8d9d9d9dadadadbdbdb
+dddede9dadca2768a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+467eb2c0c6d2d6d6d6d2d2d2ccccccc9c9c9c6c6c6c6c6c6c8c8c8cccccccfcfcfd4d4d4
+d8d8d8dbdbdbdededee2e2e2e6e6e6ecececf2f2f2f8f8f8fcfcfcfefefeffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfc
+fcfcfcfafafafafafaf9f9f9f8f8f8f7f7f7f5f5f5f5f5f5f4f4f4f3f3f3f1f1f1f0f0f0
+f0f0f0efefefefefefefefefefefeff0f0f0f0f0f0f1f1f1f1f1f1f1f1f1e6e8ec548abb
+03589f00579e00579e00579e00579e00579e00579e00579e00579e00579e5c8cbbd1d6e0
+e6e6e6e6e6e6e6e6e6e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5bec8d84075b000579e00579e
+00579e00579e00579e00579e00579e00579e1a63a55b8ab996a9cba8b6d1b1bcd5b3bed7
+b4c0dab6c1dcb7c3ddb8c4dea8b9d98ba4ce3676b100579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e5d86bffefefefefefefefefefefefe
+fefefefefefefdfdfdfcfcfcfcfcfcfcfcfc3076b000579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cde1f6f6f5f7f7f6f7f7f6f7f7f6f8f8f7f9f9f8
+fafaf9fbfbfafafaf9fbfaf9fbfaf9faf9f8f8f8f7f6f6f6f5f5f5f4f4f4f1f1f1f0f0f0
+eeeeededececebebeae8e8e8e8e8e8cad0dd467fb400579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6baba7b7d4ecececededededededededededededededed
+ededededededeeeeeeefefeff1f1f1f2f2f2f3f3f3f3f3f3f4f4f4f6f6f6a2b4d71864a6
+00579e00579e00579e00579e00579e00579e00579e4b82b9d2daecfbfbfbfbfbfbfafafa
+f9f9f9f9f9f9f8f8f8f6f6f6eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579ea7b9d5e7e8e8e6e6e6e2e2e2e0e0e0dedededbdbdbd9d9d9d9d9d9b4bdce
+3172ab00579e00579e00579e00579e00579e00579e085aa05282b4c6c9d3d9d8d8d9d9d9
+d8d8d8d8d8d8d8d7d7d8d8d7d7d7d7d1d2d45b80b500579e00579e00579e00579e00579e
+00579e00579e00579e00579e557cb3c9cdd1d5d5d4d7d6d6d8d8d8d9d9d9dadbdbdcdcdc
+dedede9eaecb2769a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+447cafb8becac9c9c9c3c3c3bfbfbfc0c0c0c6c6c6cdcdcdd6d6d6dddddde3e3e3e8e8e8
+ecececefefeff1f1f1f3f3f3f6f6f6f9f9f9fbfbfbfdfdfdfefefeffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfc
+fcfcfcfbfbfbfafafaf9f9f9f9f9f9f7f7f7f6f6f6f5f5f5f4f4f4f3f3f3f1f1f1f0f0f0
+efefefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeededed7097c2
+0d5ca200579e00579e00579e00579e00579e00579e00579e00579e00579e5a8abacfd4de
+e5e5e5e4e4e4e4e4e4e3e3e3e3e3e3e2e2e2e2e2e2dbdde08da9c90b5ba100579e00579e
+00579e00579e00579e00579e00579e00579e00579e085ba01a64a61f67a72269a8226aa9
+236aa9236aaa236aaa236baa1e67a81560a501579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e1360a4d7deeffefefefefefefefefe
+fdfdfdfcfcfcfbfbfbfafafaf8f8f8f7f7f72f76af00579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cde1f6f6f5f7f7f6f8f8f7fafaf9fbfbfbfcfbfb
+fcfbfbfdfcfbfcfbfbfbfbfafafaf9f9f8f8f8f7f7f6f6f6f4f4f4f3f3f3f2f1f1f1f0f0
+efefefeeedededecececebebebeaead0d5e14982b600579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6baca9bad7f1f1f1f1f1f1f2f2f2f2f2f2f3f3f3f3f3f3
+f3f3f3f4f4f4f5f5f5f6f6f6f7f7f7f7f7f7f8f8f8f9f9f9f9f9f9f9f9f9a4b5d91864a6
+00579e00579e00579e00579e00579e00579e00579e5085bbd6ddecfbfbfbfbfbfbfbfbfb
+fafafaf9f9f9f8f8f8f7f7f7eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579ea0b4d2e5e5e6e3e3e3e1e1e1dfdfdfdddddddbdbdbd9d9d9d9d9d9d4d5d8
+7090bc105ea200579e00579e00579e00579e03589f3170abaab7cbd9d9d9dbdadadadada
+dadadadadadadad9d9d9dad9d9dad9d3d4d75279b400579e00579e00579e00579e00579e
+00579e00579e00579e00579e567cb3cccfd4d7d8d8dbdbdadededddfdfdee1e1e0e1e1e1
+e2e3e3a0b0ce2869a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+4178acadb3bfbbbbbbbababac1c1c1cbcbcbd8d8d8e3e3e3ecececf2f2f2f6f6f6f9f9f9
+fafafafbfbfbfbfbfbfcfcfcfdfdfdfdfdfdfefefefefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfefefefefefefefefefefefefefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfc
+fcfcfcfbfbfbfbfbfbf9f9f9f9f9f9f8f8f8f6f6f6f5f5f5f4f4f4f3f3f3f1f1f1f0f0f0
+efefefeeeeeeededededededececececececececececececebebebebebebeaeaea7899c3
+115ea300579e00579e00579e00579e00579e00579e00579e00579e00579e5b8bbaced3dc
+e2e2e2e2e2e2e1e1e1e1e1e1e1e1e1e0e0e0e0e0e0c7cdd94e7cb500579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e03589f839dcefefefefefefefcfcfc
+fbfbfbf9f9f9f7f7f7f5f5f5f2f2f2f0f0f02e74ae00579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cde1f6f6f6f8f8f7fafaf9fbfbfafbfbfafcfcfb
+fcfcfcfbfbfbfbfbfafbfbfafafaf9f9f9f8f7f7f6f7f7f6f6f6f5f4f4f3f4f4f3f3f3f2
+f2f2f1f1f1f0f1f1f0f0f0efefefefe3e5eb568cbb00579e00579e00579e00579e00579e
+00579e00579e00579e00579e2a6cacacbddaf6f6f6f6f6f6f7f7f7f7f7f7f8f8f7f9f9f8
+f9f9f9fafafafafafafbfbfbfbfbfbfbfbfbfafafafafafaf9f9f9f8f8f8a3b4d81864a6
+00579e00579e00579e00579e00579e00579e00579e5d8fbfe2e6f0f9f9f9fafafafafafa
+f9f9f9f9f9f9f8f8f8f7f7f7eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579e9eb1cfe2e2e3e0e0e0dfdfdfdcdcdcdbdbdbd9d9d9d9d9d9d9d9d9d9d9d9
+bcc2d14078af05599f0b5ca14270af6587b988a0c3b7c2d0d6d7d9dadadadadadadbdbdb
+dbdbdbdcdcdcdcdcdcdcdcdcdcdcdcd5d7da4973b100579e00579e00579e00579e00579e
+00579e00579e00579e00579e577db5d4d6dbe0e1e0e2e1e0e2e2e2e2e3e2e3e3e2e2e2e2
+e2e2e29fafcc2768a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+3e75a8a5abb6b9b9b9c4c4c4d3d3d3e1e1e1edededf4f4f4f9f9f9fcfcfcfdfdfdfefefe
+fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfd
+fdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefefefefefefefdfdfdfdfdfdd2daed
+869fcd7c97c9bac5e2fafafaf9f9f9f8f8f8f7f7f7f6f6f6f4f4f4f3f3f3f1f1f1f0f0f0
+eeeeeeededededededeaeaeaeaeaeaeaeaeae9e9e9e9e9e9e8e8e8e8e8e8e3e4e6568bb8
+03599f00579e00579e00579e00579e00579e00579e00579e00579e00579e6b97bedadbdf
+e0e0e0e0e0e0dfdfdfe0e0e0dfdfdfdfdfdfdcdcde9fb4cc075ba100579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e01589f115ea4
+2365a82365a82366a91c62a70559a000579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e1f6aaaeaedf6fbfbfbf8f8f8
+f6f6f6f3f3f3f0f0f0edededeaeaeae8e8e82c73ac00579e00579e00579e00579e00579e
+00579e00579e00579e00579e326caec0cde1f7f8f7fafaf9fbfbfafbfbfafbfbfafcfcfb
+fcfcfbfdfcfbfcfbfbfcfbfafbfbfafbfbfafbfbfbfafafafafafaf8f8f8f7f7f7f7f7f7
+f6f7f7f7f6f6f6f5f4f5f5f4f5f5f4f5f5f584a4cb135fa400579e00579e00579e00579e
+00579e00579e00579e00579e2467aaa5b9d9fafbfafbfbfafbfcfbfafaf9fbfbfbfcfbfa
+fcfcfcfcfcfcfcfcfcfbfbfbf9f9f9f7f7f7f6f6f6f4f4f4f3f3f3f1f1f18ca3cc1360a4
+00579e00579e00579e00579e00579e00579e095ba17ea6cbf6f6f7f9f9f9f9f9f9f9f9f9
+f9f9f9f9f9f9f8f8f8f7f7f7eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579e9baecbdcdcdddcdcdcdbdad9d9d9d9d9d8d8d8d8d8d8d9d9d9d9d9d9d9d9
+d8d8d9ccd1d5b6c1d0c8ced4cfd2d7d2d4d7d6d7dad9d9dadbdbdbdcdcdcdbdbdbdcdcdc
+dddddddddddddedededddddddfdfdfd7d9dc3f70af00579e00579e00579e00579e00579e
+00579e00579e00579e00579e587fb7d7dbdfe2e2e2e2e2e2e2e2e2e0e0e0e0e0e0dfdfdf
+dedede9dadca2768a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+3e75a7aaafbac9c9c9d9d9d9e8e8e8f2f2f2f9f9f9fcfcfcffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefdfdfdfdfdfdfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfdfdfdfdfdfdfdfdfdf8f9fbb3c3e0226bab
+00579e00579e0559a0537fbabccbe3eff1f5f4f5f6f6f6f6f4f4f4f3f3f3f1f1f1efefef
+eeeeeeedededebebebeaeaeae9e9e9e9e9e9e8e8e8e7e7e7e6e6e6e3e4e5a9b8d12c6eab
+00579e00579e00579e00579e00579e00579e00579e00579e00579e2566a89baecbe0e0e0
+e0e0e0dfdfdfdfdfdfdedededdddddddddddccd0d85780b500579e00579e00579e00579e
+00579e00579e00579e00579e02589e0a5ca11d66a66a87ba97a6c6bbc1d1d5d6dae2e2e2
+e8e8e8edededf2f2f2f5f5f5f5f5f6d6dceca9b8db6589c11162a50559a000579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e0c5da295abd4f6f6f6f3f3f3
+efefefececece8e8e8e6e6e6e2e2e2e0e0e02b71ab00579e00579e00579e00579e00579e
+00579e00579e00579e00579e2c69abb8c7ddf4f4f4f7f7f7f9f9f8fbfbfafbfbfafcfcfc
+fcfcfcfefdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfcfbfcfbfafbfbfafbfbfafafaf9fbfbfa
+fbfbfafbfbfafafaf9fafaf9fbfbfafbfbfabfcce43374b001579e00579e00579e00579e
+00579e00579e00579e00579e03589f6898c4eceef4fbfbfafbfbfafbfbfbfbfcfcfafafa
+f8f8f8f7f7f7f6f6f6f4f4f4f1f2f2eff0f0eeeeeeecebebe8e8e8d9dbe2417bb303589f
+00579e00579e00579e00579e00579e00579e3572b0b9c5dff6f6f6f8f8f8f9f9f9f9f9f9
+f8f8f8f8f8f8f7f7f7f6f6f6ebedf289a9cf00579e00579e00579e00579e00579e00579e
+00579e00579e98acc8d7d8d8d9d8d7d8d9d9d8d8d8d8d7d6d8d8d7d9d8d8d9d8d7d9d8d7
+dad9d9d9d9d9d9d9d9d9d9d9dbdbdbdadadadbdbdbdcdcdcdddddddddddddedededddddd
+dddddddededededededfdfdfdfdfdfd6d9dd2164a700579e00579e00579e00579e00579e
+00579e00579e00579e00579e587fb7d6d9dde0e0e0e0e0e0dfdfdfdcdcdcd9d9d9d8d8d8
+d7d7d799a9c62768a800579e00579e00579e00579e00579e00579e00579e00579e00579e
+4179acb8becaddddddeaeaeaf5f5f5fbfbfbfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefefefefdfdfd
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf3f5f9a6bbdb246bab00579e
+00579e00579e00579e00579e115ea3638ac0b4c7dfe0e6eeeceef1f2f2f2f1f1f1efefef
+edededebebebeaeaeae9e9e9e8e8e8e7e7e7e5e5e5e3e4e4dcdde1b4c1d5457db404599f
+00579e00579e00579e00579e00579e00579e00579e00579e05599f5384b6c7ccd9e0e0e0
+dfdfdfdfdfdfdedededddddddddddddbdbdcaebdcf0c5ca100579e00579e00579e00579e
+00579e00579e00579e0b5ca12e6eaa90a4c5ced0d5d7d7d7d6d6d6d8d8d8dbdbdbe0e0e0
+e5e5e5ebebebf1f1f1f5f5f5f9f9f9fbfbfbfcfcfcfbfcfdcdd7ec5983bd0a5ca200579e
+00579e00579e00579e00579e00579e00579e00579e00579e02589f3a77b1e7e9edededed
+e9e9e9e6e6e6e2e2e2dfdfdfdddddddbdbdb2a70aa00579e00579e00579e00579e00579e
+00579e00579e00579e00579e02589f719ac4d4dbe6eff0f2f7f7f6f7f7f7f9f9f9fafafa
+fbfbfafbfbfafcfcfbfcfcfbfcfcfbfbfbfbfbfbfbfbfbfbfbfbfbfcfcfbfcfcfbfbfbfa
+fafafafbfbfbfafafafbfbfbfcfcfcfcfbfbf5f6f9749dc90e5ea300579e00579e00579e
+00579e00579e00579e00579e00579e286aaca3b9d8f0f2f5f6f6f6f6f6f6f4f4f4f2f2f1
+f1f1f1eeefeeecedecebebebe8e8e8e5e5e5e3e3e3e0e0e0d5d7dc809ac21761a400579e
+00579e00579e00579e00579e00579e0d5ea2739dc6edeef2f6f6f6f7f7f7f8f8f8f8f8f8
+f8f8f8f8f8f8f7f7f7f6f6f6eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579e97aac7d8d7d7d8d8d8d9d9d8d8d8d8d9d8d8d8d8d8d8d8d8d9d9d8d9d9d9
+d9d9d9dadadadadadadbdbdbdbdbdbdcdcdcdbdbdbdcdcdcdddddddedededededededede
+dedededfdfdfe0e0e0dfdfdfe0e0e0d8dbde1d62a600579e00579e00579e00579e00579e
+00579e00579e00579e00579e587fb7d5d8dddedededbdbdbd8d8d8d5d5d5d2d2d2d0d0d0
+cfcfcf94a4c02667a700579e00579e00579e00579e00579e00579e00579e00579e00579e
+3472acabb9d0e5e7e9f5f5f5fbfbfbfefefeffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefefdfdfdfdfdfd
+fdfdfdfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcaec2de296ead00579e00579e
+00579e00579e00579e00579e00579e00579e105ea34a7db791add0c0cfe0d4dbe7dde1e9
+e5e6eaeaeaebe9e9e9e7e7e7e2e2e5dadce2ced3ddbac6d688a3c6316fad01589f00579e
+00579e00579e00579e00579e00579e00579e00579e03589f326eaca4b3cee0e0e0e0e0e0
+dfdfdfdfdfdfdedededdddddddddddd4d6d96589b900579e00579e00579e00579e00579e
+00579e00579e1360a36689b9c4c9d3d8d9d9d7d7d7d5d5d5d4d4d4d4d4d4d8d8d8dddddd
+e3e3e3ebebebf1f1f1f5f5f5f9f9f9fcfcfcfcfcfcfefefefefefedfe6f2608bc0085aa1
+00579e00579e00579e00579e00579e00579e00579e00579e00579e1864a6a7b6d4e8e8e8
+e5e5e5e1e1e1dedededbdbdbdadadad8d9d92970a900579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e075aa15583b9a0b8d3c1d0e0c6d4e3c8d6e4c9d8e6
+cad8e6cad9e8cbd9e8cbd9e8cbd9e8ccdae8ccdae8ccdae8ccdae8cedae8d7dfece5e9f1
+f7f7f9fafafafafaf9fafaf9fafaf9fafaf9fafaf9d4dbeb4881b8065aa000579e00579e
+00579e00579e00579e00579e00579e00579e316fae9eb4d3dce0e8eaebebebebebe8e9e9
+e7e7e7e4e4e4e2e2e2dfdfdfdddddddadadad5d6d8c4c9d37f9ac01d64a600579e00579e
+00579e00579e00579e00579e075ba04e84b9d0d8e8f6f6f6f6f6f6f7f7f7f8f8f8f7f7f7
+f7f7f7f7f7f7f7f7f7f6f6f6eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579e8da1c3d7d7d7d7d8d7d9d8d8d9d8d7d8d8d8d8d8d8d9d8d8d9d9d9d9d9d9
+d9d9d9dadadadbdbdbdcdcdcdcdcdcdbdbdbdddddddddddddedededfdfdfdfdfdfdfdfdf
+dfdfdfe0e0e0e0e0e0e0e0e0e0e0e0d6dbde00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e587eb6d3d6dbdadadad5d5d5d0d0d0ccccccc8c8c8c6c6c6
+c6c6c690a0bc2667a600579e00579e00579e00579e00579e00579e00579e00579e00579e
+0459a0417ab4a0b8d6cad8e8d6e0eed8e1efd9e1f0d9e1f0d9e1f0d9e1f0d9e1f0d9e1f0
+d9e1f0d9e1f0d9e1f0d9e1f0d9e1f0d9e1f0dce4f1f0f3f9fefeffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefffffffefefdfefefdfcfcfc
+fcfcfbfbfbfafbfbfafcfcfcfcfcfcfbfbfbfafafafafafa81a8ce0e5ea300579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e2064a8507eb87197c4
+8dabcca2bcd3a3bcd2a1bbd192aecb7c9dc45d86ba2e6bab03599f00579e00579e00579e
+00579e00579e00579e00579e00579e00579e04589f286aa98aa4c5d8d9dddfdfdfdfdfdf
+dfdfdfdfdfdfdedededddddddcddddbdc6d31e62a600579e00579e00579e00579e00579e
+00579e125fa37192bdcaced5d9d9d9d9d9d9d7d7d7d4d4d4d2d2d2d2d2d2d4d4d4d9d9d9
+e0e0e0e8e8e8efefeff5f5f5fafafafcfcfcfdfdfdfefefefefefefefeffcbd9eb3c77b4
+00579e00579e00579e00579e00579e00579e00579e00579e00579e095aa15d86badcdde1
+e0e0e0dddddddbdbdbd9d9d9d9d9d9d8d8d82970a900579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e155fa41b62a61b62a61b62a6
+1b62a61b62a61b62a61b62a71b62a71b62a71b62a71b62a71b62a72465a94174b46f95c6
+b9cbe1eff0f3f7f7f6f6f6f5f6f6f5f6f5f4f5f5f4f5f5f4bbc6de3d78b204599f00579e
+00579e00579e00579e00579e00579e00579e00579e1f63a76b92bfaebdd4c7cedad3d6dc
+dbdbdcd9dadad8d8d8d3d4d5c9cbd3b9c1ce99adc65a83b5165fa400579e00579e00579e
+00579e00579e00579e075aa0457db5bcc9e0f6f6f6f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7
+f7f7f7f7f7f7f7f7f7f6f6f6eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579e849bc2d6d7d7d8d8d8d8d8d7d8d9d9d8d8d8d9d8d8d9d9d9d9dadadadada
+dbdbdbdbdbdbdbdbdbdddddddddddddddddddddddddedededfdfdfdfdfdfdfdfdfe0e0e0
+e0e0e0e1e1e1e2e2e2e2e2e2e2e2e2d3d8de00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e577db5ced1d6d2d2d2cccccbc5c5c5c1c1c1c0c0c0c2c2c2
+c6c6c692a1be2667a700579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e0559a01f64a8376eb03c70b23c70b23c70b23c70b23c70b23c70b23c70b2
+3c70b23c70b23c70b23c70b23c70b23c70b24576b687a7d1ecf0f8ffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefffffffffffffffffffefefd
+fefefdfdfdfcfcfcfbfcfcfbfbfcfcfcfcfbfbfbfbfbfbfbccd6e96693c3266aab0659a0
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e065aa03772ad8ca5c5d4d6d9dddddddddddddddddd
+dddddddddddddddddddddddddbdcdc7a95bf00579e00579e00579e00579e00579e00579e
+05599f5b86b7c2c8d3d9d9d9d8d8d8d8d8d8d7d7d7d4d4d4d2d2d2d1d1d1d1d1d1d5d5d5
+dbdbdbe3e3e3ecececf4f4f4fafafafcfcfcfdfdfdfefefefefefefffffff3f5fa91b0d5
+115ea400579e00579e00579e00579e00579e00579e00579e00579e00579e256ba9b1bcd2
+dddddddbdbdbd9d9d9d8d8d8d8d8d8d8d8d82970a900579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e02589f
+2e6eadb5c2daeeeeedededececececececececebebebebeaebeaeab2bed6447cb3075aa0
+00579e00579e00579e00579e00579e00579e00579e00579e00579e2766a85280b57096bc
+84a5c08da9c28ba7c17e9fbd698fb94979b11b61a500579e00579e00579e00579e00579e
+00579e00579e0b5da24f84b9bdc9e0f5f5f5f6f6f6f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7
+f7f7f7f7f7f7f7f7f7f6f6f6eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579e849bc1d6d7d7d9d9d9d9d8d8d8d9d8d9d9d8d9d9d9d9d9d9dadadadbdbdb
+dbdbdbdcdcdcdcdcdcdcdcdcdddddddedededfdfdfdfdfdfe0e0e0e0e0e0e1e1e1e1e1e1
+e2e2e2e2e2e2e3e3e3e4e4e4e4e4e4c5cddb00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e567db4c5c8cdc4c4c4bcbcbcbabababcbcbcc2c2c2cbcbcb
+d4d4d49aabc82769a900579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e075aa1aabddefefeffffffffffffff
+fffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffefefefefefefefefefcfcfcfcfcfcfcfcfcfcfcfcfbfbfbdfe4f0a8bcda6593c3
+3471b00459a000579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e1f64a65786b6a7b4ccd6d7d9dadadadadadadadadadadada
+dbdbdbdbdbdbdbdbdbdbdbdbcacfd72b68a900579e00579e00579e00579e00579e00579e
+2c6ca9a3b5cad7d7d8d9d9d9d8d8d8d8d8d8d7d7d7d6d6d6d3d3d3d1d1d1d0d0d0d2d2d2
+d7d7d7e0e0e0e9e9e9f2f2f2f9f9f9fcfcfcfdfdfdfefefefffffffffffffefefecfd9eb
+487db700579e00579e00579e00579e00579e00579e00579e00579e00579e0f5ea26e93bc
+d6d7d9d9d9d9d8d8d8d6d6d6d6d6d6d7d7d73774ac02589f00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+0d5ca26f91bfe5e5e5e5e5e4e5e4e4e4e4e4e4e4e4e3e4e3e3e3e2e2e2e2bbc3d5608db9
+2165a700579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e0b5ba1095aa000579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e2969ab729cc6ced5e6f5f5f5f6f6f6f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f6f6f6
+f6f6f6f7f7f7f7f7f7f6f6f6eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579e849bc1d7d7d7d8d8d8d9d9d9d9d8d8d9d9d8dadadadadbdbdadadadbdbdb
+dbdbdbdcdcdcdddddddddddddedededfdfdfdfdfdfe0e0e0e1e1e1e1e1e1e1e1e1e2e2e2
+e4e4e4e4e4e4e4e4e4e5e5e5e5e5e5bdc7d900579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5378aeb0b2b7b3b3b3b4b4b4bebebecacacad6d6d6e1e1e1
+eaeaeaa6b7d5296aab00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e4a7db9fafbfdffffffffffff
+fffffffffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffefefefefefefefefefdfdfdfdfdfdfcfcfcfcfcfce7eaf4
+bac8e27aa4cb457cb7145fa500579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e2565a75080b292a8c5c5cad4dadadadadadad9d9d9d8d8d8d8d8d8d9d9d9
+d9d9d9d8d8d8d9d9d9d9d9d991a3c500579e00579e00579e00579e00579e00579e095ba0
+6e93bbcbced5d9d9d9d9d9d9d8d8d8d8d8d8d7d7d7d6d6d6d4d4d4d2d2d2d0d0d0d1d1d1
+d4d4d4dcdcdce6e6e6eeeeeef6f6f6fbfbfbfdfdfdfefefefefefefefefefefefef1f3f8
+8aabd1125fa400579e00579e00579e00579e00579e00579e00579e00579e01579e3675ad
+bac1d0d7d7d7d7d7d7d6d6d6d6d6d6d6d6d66e8fba0a5ca100579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+1260a386a0c3dfdfdfdfdfdedededddddddddcdcdcdbdcdcdbdbdbdadadad8d8d8cbcdd4
+8fa4c2487bb01760a300579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e2466a9
+598bbdaabcd9e8eaf0f5f5f5f6f6f6f7f7f7f7f7f7f7f7f7f6f6f6f6f6f6f6f6f6f7f7f7
+f7f7f7f8f8f8f8f8f8f7f7f7eaecf189a9cf00579e00579e00579e00579e00579e00579e
+00579e00579e849bc2d6d7d7d9d8d8d9d9d9d9d9d8d9d8d8dadadadbdbdbdbdbdbdbdbdb
+dcdcdcdddddddededededededfdfdfe0e0e0e0e0e0e0e0e0e1e1e1e2e2e2e3e3e3e3e3e3
+e4e4e4e5e5e5e5e5e5e6e6e6e7e7e7b0bdd600579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e5075a8a9acb0bbbbbbc9c9c9d8d8d8e4e4e4eeeeeef5f5f5
+f8f8f8b4c3df2f6fae00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e0b5ca2d0d9edffffffffffff
+fffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefefefefefefdfdfdfdfdfdfdfdfd
+fbfbfbf1f3f7cbd5e8a0bbd96c97c63b74b30f5da300579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e01589f1e62a6
+4577b06b93bb9aacc6bcc2ced6d6d6d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9d8d8d8d9d9d9
+d8d8d8d8d8d8d8d8d8d8d8d84d79b200579e00579e00579e00579e01579e1861a45984b6
+b2bfced8d8d9d9d9d9d9d9d9d8d8d8d8d8d8d7d7d7d7d7d7d6d6d6d3d3d3d2d2d2d1d1d1
+d3d3d3d8d8d8e0e0e0e9e9e9f2f2f2f8f8f8fcfcfcfdfdfdfefefefefefefdfdfdfcfcfc
+d4ddeb7196c52066a903589f00579e00579e00579e00579e00579e00579e00579e286ba9
+a3b0c9d7d7d7d6d6d6d6d6d6d6d6d6d6d6d6bac1ce5e88b62565a700579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e03599f366eac
+7498bec5cbd4dadadad9d9d9d8d8d8d7d8d7d7d7d7d7d7d7d7d7d6d6d6d5d5d5d4d5d5d5
+d2d3d4b8bfce8ca5c35986b62969a904599f00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e095ba1326fae6894c2a8bcd8
+d7ddeaf4f4f5f5f5f5f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7f7f7f7f8f8f8f8f8f8
+f9f9f9f9f9f9f9f9f9f7f7f7eceef197b2d20659a000579e00579e00579e00579e00579e
+00579e00579e8ea3c4d6d8d8d9d8d8d9d9d9dadadadadad9dadadadcdcdcdcdcdcdcdcdc
+dddddddedededfdfdfdfdfdfe0e0e0e0e0e0e0e0e0e1e1e1e1e1e1e1e1e1dedededcdcdc
+dededee1e1e1e4e4e4e7e7e7e9e9e9bac5d90a5ba100579e00579e00579e00579e00579e
+00579e00579e00579e04589f6c89b3c5c6cadadadae7e7e7f1f1f1f7f7f7fafafafdfdfd
+fefefee0e6f2769bca1d65a803589f00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e00579e
+00579e00579e00579e00579e00579e00579e00579e00579e00579ea7b9ddffffffffffff
+fffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefefefefe
+fcfcfcfcfcfcfcfcfcf9f9fbe5e9f3c9d6e8a7c1dc7ca1cb5482bb326dae0d5ca200579e
+00579e00579e00579e00579e00579e01589e0f5da22e6aaa4979b26289b87f9fc09eb1c8
+b6bfcfcdcfd6d6d7d7d5d5d5d4d4d4d5d5d5d7d7d7d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9
+d8d8d8d8d8d8d8d8d8d7d7d79fb2c780a0c07f9fbf7f9fbf7f9fbf84a3c19aafc6bdc4d0
+d4d4d6d7d7d7d7d7d7d7d7d7d7d7d7d8d8d8d8d8d8d7d7d7d7d7d7d6d6d6d4d4d4d3d3d3
+d3d3d3d5d5d5dbdbdbe3e3e3ecececf4f4f4f9f9f9fcfcfcfdfdfdfdfdfdfcfcfcfafafa
+f4f5f6dadfeab1c5da94b2cf89a9c986a6c785a5c583a4c382a2c381a1c182a2c197aec6
+c5cad2d7d7d7d6d6d6d5d5d5d6d6d6d6d6d6d5d5d5c0c5d0a3b3c888a6c17e9ebe7e9dbe
+7c9cbc7c9bbc7b9bbb7c9cbc7e9ebe80a0c184a4c487a8c78aaaca8caccc8eaecf8fafd0
+8fb0d18fb0d18fafd08eaecf8dadce8caccd8babcc8aa9ca89a9c988a8c995b2ccb7c2d5
+d3d6dddfdfdfdddedddddddcdcdcdbdcdcdcdcdbdbdcdcdbdcdcdbdcdcdcdcdcdcdcdcdc
+dcdcdcdddddddadadcc8cdd8acbcd187a6c7628bbb4375b21f64a70559a000579e00579e
+00579e00579e00579e00579e085aa12868ab4c7cb86f96c499b6d4bfcee1dee3ecf2f3f4
+f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f7f7f7f7f7f7f8f8f8f8f8f8f9f9f9f9f9f9fafafa
+fafafaf8f8f8f7f7f7f5f5f5efeff0d1d9e392afcc87a7c786a5c584a4c482a2c281a1c1
+81a1c184a3c1c1c7d1d8d9d8d9d8d8d9d9d9dadbdadadadadadadadcdcdcdddddddedede
+dedededfdfdfe0e0e0e0e0e0e1e1e1e1e1e1e1e1e1e1e1e1dfdfdfdadadad5d5d5d4d4d4
+dadadae2e2e2e8e8e8eaeaeaebebebdfe1e799b4d086a6c77e9ebe7191af6787a56383a1
+6686a46d8dab7696b688a5c2c3cad7e7e7e8f2f2f2f8f8f8fbfbfbfefefefefefefefefe
+fffffffdfdfee1e7f3bacfe4a0bedb96b6d795b5d795b5d795b5d795b5d795b5d795b5d7
+95b5d795b5d795b5d795b5d795b5d795b5d795b5d795b5d795b5d795b5d795b5d795b5d7
+95b5d795b5d795b5d795b5d795b5d795b5d795b5d795b5d79cbbd9e0e7f3ffffffffffff
+fffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefdfdfdfcfcfcfcfcfcfcfcfcfcfcfcf9fafbebeef6dbe1eecbd7e7bacddfa3bcd5
+8da9cc83a2c780a0c5809fc391abc79ab2c8a7bbccb3bfcfbdc4d1c6cad3d1d2d6d7d7d7
+d7d7d7d8d8d8d7d7d7d7d7d7d5d5d5d5d5d5d5d5d5d6d6d6d8d8d8d8d8d8d8d8d8d8d8d8
+d9d9d9d9d9d9d9d9d9d8d8d8d7d7d7d2d3d6d1d2d6d1d2d5d1d2d5d2d2d5d5d5d5d6d6d6
+d6d6d6d5d5d5d5d5d5d5d5d5d5d5d5d6d6d6d6d6d6d6d6d6d6d6d6d7d7d7d6d6d6d5d5d5
+d4d4d4d5d5d5d8d8d8dddddde5e5e5edededf3f3f3f8f8f8fbfbfbfbfbfbfafafaf8f8f8
+f5f5f5f1f1f1ededede5e6e8dfe0e3dbdcdfd9daddd5d7dad3d4d8d2d3d7d2d3d6d4d4d6
+d6d6d6d6d6d6d6d6d6d6d6d6d5d5d5d6d6d6d5d5d5d5d5d5d6d6d6d3d3d5cecfd2cdced2
+ccced1cbccd0cacbcecacbcecccdd0d0d1d4d5d6dadadcdfe0e1e5e4e6e9e9ebeeedeff2
+eff0f4f0f1f5f0f1f5f0f1f4eef0f3edeef2ecedf0ebecf0e9ebeee8eaedececedededed
+ebebebeaeaeaeaeaeae9eae9e9e9e9e8e8e8e7e6e6e7e7e7e6e6e6e6e6e6e6e6e6e6e6e6
+e7e7e7e8e8e8e8e8e8e9e9e9e8e8e8e2e3e7d6dae4cbd3e1bdccddaec4d99fbad58baacf
+89a9cf8aa9ce92b0d2a6bfdab7ccdfc7d4e5d5dceae3e7f0f1f2f5f7f7f7f7f7f7f6f6f6
+f7f7f7f7f7f7f7f7f7f7f7f7f8f8f8f9f9f9f9f9f9fafafafafafafbfbfbfafafafafafa
+f9f9f9f7f7f7f4f4f4f1f1f1ececece8e8e8e1e2e4dbdde0d8daddd6d7dad4d5d8d3d4d6
+d3d4d7d4d5d7d8d8d9d9d8d7d8d9d9dadad9dadadadbdbdbdcdcdbdddddddededededede
+dfdfdfe0e0e0e1e1e1e1e1e1e2e2e2e2e2e2e3e3e3e2e2e2e0e0e0dcdcdcdbdbdbdddddd
+e2e2e2e5e5e5e4e4e4e1e1e1dedededbdbdbd1d1d3c1c3c6b5b6baabacafa8aaacaeafb2
+b9babdc6c7cad2d3d6dfe0e2ebebecf2f2f2f6f6f6f9f9f9fbfbfbfdfdfdfdfdfdfefefe
+fffffffffffffffffffffffffafbfdf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fc
+f7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fc
+f7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcf7f8fcfafafdffffffffffffffffff
+fffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefefefefefefefefefefdfdfdfdfdfdfdfdfdfefefefdfdfdfbfbfbf8f8f8f0f0f2
+e6e7ebdfe1e6dbdde2d6d9dddadbdddadbdcdadadad9d9d9d9d9d9d8d8d8d8d8d8d7d7d7
+d7d7d7d8d8d8d7d7d7d8d8d8d8d8d8d6d6d6d5d5d5d5d5d5d5d5d5d6d6d6d7d7d7d7d7d7
+d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d8d8d8d7d7d7d7d7d7
+d7d7d7d6d6d6d5d5d5d5d5d5d5d5d5d5d5d5d4d4d4d4d4d4d5d5d5d5d5d5d5d5d5d5d5d5
+d5d5d5d4d4d4d5d5d5d8d8d8dededee4e4e4ebebebf1f1f1f6f6f6f8f8f8f6f6f6f5f5f5
+f2f2f2eeeeeeeaeaeae6e6e6e3e3e3e0e0e0dddddddbdbdbd9d9d9d7d7d7d7d7d7d6d6d6
+d6d6d6d5d5d5d5d5d5d6d6d6d5d5d5d5d5d5d5d5d5d6d6d6d5d5d5d5d5d5d5d5d5d3d3d3
+d2d2d2d2d2d2d1d1d1d1d1d1d2d2d1d4d4d4d7d7d7dbdbdbe0e0e0e5e5e5eaeaeaf0f0f0
+f4f4f4f6f6f6f8f8f8f9f9f9fafafafafafafafafafafafafafafaf9f9f9f8f8f8f7f7f7
+f6f6f6f4f4f4f4f4f4f4f4f4f3f3f3f2f2f2f1f1f1f1f1f1f1f1f1f0f0f0f0f0f0f0f0f0
+f0f0f0f1f1f1f2f2f2f2f2f2f2f2f2f2f2f2f3f3f3f3f3f3f4f4f4f3f4f4f1f2f4edeff3
+eceff3edeff3eff0f4f3f3f6f7f7f7f8f8f8f8f8f7fafafafafafafafafafafafaf9f9f9
+f9f9f9fafafafafafafafafafbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfafafaf9f9f9
+f6f6f6f3f3f3efefefebebebe7e7e7e4e4e4e1e1e1dedededcdcdcdadadad9d9d9d8d9d8
+d9d9d8d9d9d8d8d9d8d8d8d8d8d8d7d9d8d7d9d9d8dcdcdbdededddfdfdfdfdededfdfdf
+e0e0e0e1e1e1e1e1e1e1e1e1e3e3e3e4e4e4e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e4e4e4
+ddddddd1d1d1c5c5c5bebebebdbdbdbdbdbdbebebebfbfbfc2c2c2c7c7c7cececed6d6d6
+dddddde3e3e3e6e6e6e8e8e8eaeaeaececececececeeeeeef2f2f2f6f6f6f9f9f9fcfcfc
+fdfdfdfefefefefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefefefefefefefefefefefefefefefefdfdfdfbfbfbf8f8f8
+f4f4f4efefefeaeaeae4e4e4e1e1e1dedededcdcdcdadadad9d9d9d9d9d9d8d8d8d8d8d8
+d9d9d9d9d9d9d8d8d8d9d9d9d9d9d9d9d9d9d8d8d8d7d7d7d6d6d6d6d6d6d6d6d6d7d7d7
+d7d7d7d8d8d8d9d9d9d9d9d9d9d9d9dadadad9d9d9d9d9d9d9d9d9dadadad9d9d9d9d9d9
+d9d9d9d9d9d9d8d8d8d8d8d8d7d7d7d6d6d6d6d6d6d5d5d5d5d5d5d5d5d5d5d5d5d4d4d4
+d4d4d4d3d3d3d4d4d4d4d4d4d7d7d7dadadae0e0e0e7e7e7edededf0f0f0f2f2f2f2f2f2
+efefefececece8e8e8e5e5e5e1e1e1dfdfdfdcdcdcdadadad8d8d8d8d8d8d6d6d6d6d6d6
+d5d5d5d5d5d5d5d5d5d5d5d5d6d6d6d5d5d5d6d6d6d5d5d5d6d6d6d4d4d4d4d4d4d5d5d5
+d4d4d4d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d4d5d5d7d7d7d9d9d9dddddde1e1e1e6e6e6
+ebebebefefeff3f3f3f6f6f6f9f9f9fbfbfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fbfbfbfafafafafafafafafafafafafafafaf9f9f9f9f9f9f8f8f8f8f8f8f7f7f7f7f7f7
+f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8f8f8f8f8f8f8f8f8f8f8f8f9f9f9f9f9f8
+f9f8f7f7f7f7f6f6f6f5f5f4f5f4f3f6f5f5f8f8f8fbfbfbfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfafafaf8f8f8f6f6f6f3f3f3
+efefefececece9e9e9e6e6e6e2e2e2e0e0e0dedededbdbdbdadadadadad9d9d9d8d9d9d8
+dad9d9d8d9d9dad9d9d9d9d8d5d4d4d2d3d2d4d3d2d8d8d7dddddcdfdfdfe1e1e1e2e2e2
+e2e2e2e2e2e1e3e3e2e4e4e4e6e5e5e6e7e6e6e7e7e6e7e7e8e7e7e7e7e7e2e2e2d4d3d3
+c0bfbfafafafaaaaaaaeaeadbababac4c4c4ccccccd3d3d3d9d9d9dfdfdfe4e4e4e7e7e7
+e7e8e7e7e7e6e6e6e5e4e4e4e1e2e2e1e1e1e0e0e0e3e3e3e8e8e8eeeeeef3f3f3f7f7f7
+fbfbfbfdfdfdfefefefefefeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfeffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffefefefefefefefefefefefefefefefdfdfdfcfcfc
+fafafaf6f6f6f1f1f1ececece7e7e7e3e3e3e0e0e0dddddddcdcdcdbdbdbd9d9d9d9d9d9
+d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d8d8d8d9d9d9d9d9d9d9d9d9d8d8d8d7d7d7d6d6d6
+d5d5d5d6d6d6d8d8d8d9d9d9d9d9d9d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9dadadadadada
+dbdbdbdadadadadadad9d9d9d9d9d9dadadad9d9d9d9d9d9d8d8d8d8d8d8d7d7d7d6d6d6
+d6d6d6d5d5d5d5d5d5d4d4d4d4d4d4d4d4d4d6d6d6dbdbdbe0e0e0e4e4e4e8e8e8e9e9e9
+e9e9e9e7e7e7e5e5e5e2e2e2e0e0e0dedededbdbdbd9d9d9d8d8d8d7d7d7d6d6d6d7d7d7
+d6d6d6d6d6d6d5d5d5d6d6d6d6d6d6d6d6d6d5d5d5d6d5d5d5d5d5d5d5d5d4d5d5d5d5d5
+d5d5d5d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d5d5d5d6d6d6d6d6d6d8d8d8dadada
+dfdfdfe4e4e4e9e9e9efefeef3f3f2f5f6f5f7f7f6f9f9f9fbfbfbfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc
+fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfbfbfbfcfcfcfcfcfcfafaf9
+f9f8f7f6f6f5f2f1f0edededebebebedededf0f0f0f5f5f5f9f9f9fcfcfcfdfdfdfdfdfd
+fdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfbfbfbf9f9f9f7f7f7f4f4f4f1f1f1efefefececec
+e8e8e8e4e4e4e2e2e2dfdfdfdedededcdcdcdadadad9d9d9d9d9d9d9d9d9d9d9d9dadada
+dadadadbdbdbdbdadad9d9d8d5d4d4cccdccc7c7c7cacacad1d1d0d9d8d7dededde1e1e0
+e4e3e3e3e3e2e3e3e3e4e4e4e3e3e3e3e4e4e3e2e1e1e0dfdddddcd4d4d4c8c8c8bbbaba
+b1b1b0b0b0afb5b4b3bebdbccecdccd9d9d9e1e1e0e7e7e7ebebebedededeeeeeeedeeed
+eaeaeae7e7e7e4e4e3e0e1e0dddddcdcdcdcdcdbdbdfdfdee2e2e2e7e7e7ecececf2f2f2
+f6f6f6fafafafdfdfdfefefefefefeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfeffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefefefefe
+fdfdfdfcfcfcf9f9f9f4f4f4efefefebebebe6e6e6e2e2e2e0e0e0dedededcdcdcdbdbdb
+dadadadadadad9d9d9d9d9d9d9d9d9d9d9d9dadadadadadad9d9d9dadadadadadad9d9d9
+d9d9d9d8d8d8d7d7d7d9d9d9d8d8d8d7d7d7d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9dadada
+dadadadbdbdbdadadadbdbdbdadadadcdcdcdbdbdbdbdbdbdbdbdbdadadadadadad9d9d9
+d9d9d9d9d9d9d8d8d8d7d7d7d6d6d6d5d5d5d4d4d4d5d5d5d7d7d7dadadadddddde0e0e0
+e1e1e1e1e1e1e0e0e0dfdfdfdddddddcdcdcd9d9d9d9d9d9d9d9d9d7d7d7d6d6d6d6d6d6
+d6d6d6d5d5d5d5d5d5d5d5d5d5d5d5d6d6d6d6d6d6d6d6d6d5d5d5d6d6d6d6d6d6d6d6d6
+d6d7d7d6d6d6d7d6d6d7d7d6d7d7d7d7d6d6d6d5d5d6d6d5d5d5d5d3d3d3d2d2d1d1d1d0
+d3d3d3d8d8d8e0e0e0e7e8e7eeeeedf2f2f1f3f3f3f5f4f4f6f6f6f7f6f6f7f7f7f7f7f7
+f7f7f7f8f8f8f8f8f8f8f8f8f9f9f9fafafafbfbfbfbfbfbfbfbfbfbfbfbfcfcfcfdfdfd
+fdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfcfcfcfbfbfbfbfaf9f8f8f8
+f3f4f3f1f1f1ebebeae4e4e3dfe0dfe0e0e0e6e6e6edededf4f4f4fafafafcfcfcfcfcfc
+fcfcfcfbfbfbfbfbfbf9f9f9f7f7f7f5f5f5f3f3f3efefefececece9e9e9e7e7e7e4e4e4
+e1e1e1dedededcdcdcdadadad9d9d9d9d9d9d9d9d9d9d9d9dadadadadadad9d9d9d9dad9
+dbdadadadad9dbdcdbdbdbdbd5d6d5cccccbc1c1c0bbbbbac0c0c0c9c9c9d0d0d0d3d4d4
+d6d5d5d5d5d5d4d4d3d4d4d3d3d3d2d1d1d1cfcfcecacacac6c6c6c0c0bfbcbbbbbababa
+bcbcbcc1c1c0cacac8d3d2d1dbdbdbe1e1e0e7e8e7ecececf0efeef3f3f2f4f5f4f3f3f2
+f0f0efededeceaeae9e5e5e4e3e3e3e2e1e0e0e0e0e0e0dfe2e2e2e5e5e5eaeaeaefefef
+f4f4f4f9f9f9fcfcfcfdfdfdfefefeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefdfdfcfcfcfbf9f9f9f8f8f7f2f2f1eeeeedebebebe7e7e7e3e3e3e1e1e1e0e0e0
+dededededededcdcdcdbdbdbdadadadadadadadadadadadadadadadadadadbdbdbdcdcdc
+dbdbdbdadadadadadad9d9d9dadadad9d9d9d8d8d8d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9
+d9d9d9dadadadadadadadadadadadadbdbdbdcdcdcdcdcdcdcdcdcdcdcdcdbdbdbdcdcdc
+dcdcdcdbdbdbdbdbdbdadadad9d9d9d9d9d9d8d8d8d7d7d7d6d6d6d7d7d7d8d8d8d9d9d9
+dadadadbdbdbdbdbdbdbdbdbdbdbdbdadadad9d9d9d9d9d9d7d7d7d8d8d8d8d8d8d7d7d7
+d7d7d7d6d6d6d6d6d6d5d5d5d6d6d6d6d6d6d6d6d6d5d5d5d6d6d6d6d6d6d7d7d7d6d6d6
+d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d6d6d6d5d5d5d1d1d1cccbcb
+cacbcacdcdccd5d6d5dfdfdfe8e8e8edededf0efeef0f0eff0f0f0f0f0f0eeeeeeededed
+ececececececececececececeeeeeeefefeff1f1f1f2f2f2f4f4f4f4f4f4f6f6f6f9f9f9
+f9f9f9fafafafbfbfbfbfbfbfbfbfbfbfbfbfafafaf9f9f9f7f7f7f5f5f5f4f3f3f1f1f1
+edecece8e8e8e2e2e2dadbdad6d6d6d6d6d6dbdbdbe3e3e3ecececf3f3f3f6f6f6f6f6f6
+f7f7f7f5f5f5f3f3f3f1f1f1eeeeeeecececeaeaeae6e6e6e4e4e4e1e1e1dedededddddd
+dbdbdbdadadad9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadadadadadadbdbdbdbdbdbdbdbdb
+dcdcdbdcdbdbdcdbdbdcdbdad8d8d8d0d0d0c4c5c4bababab8b8b7c0c0bfcacac9d1d1d0
+d3d3d2d3d3d2d3d3d2d2d2d2d1d1d0cecececacacac7c7c7c6c6c6c6c6c6c7c7c7c9c9c9
+cececed3d3d2d7d7d7dbdbdbdfdfdfe2e2e2e5e5e5eaeaeaefefeff3f3f3f6f6f6f8f8f8
+f6f7f6f3f3f3f0f0efececebe8e8e8e7e6e6e6e6e5e7e7e7e9e9e9ebebebf0f0f0f4f4f4
+f8f8f8fcfcfcfdfdfdfefefeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffefefefdfdfcfcfcfcfbfbfbfafaf9f6f6f5f3f3f2efefefebebebe8e8e8e5e5e5
+e3e3e3e2e2e2e0e0e0dedededddddddcdcdcdcdcdcdbdbdbdcdcdcdcdcdcdcdcdcdddddd
+dddddddddddddddddddcdcdcdcdcdcdbdbdbdbdbdbdbdbdbdadadadadadadadadad9d9d9
+d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadadadbdbdbdbdbdbdbdbdbdcdcdcdcdcdcdcdcdc
+dbdbdbdcdcdcdcdcdcdbdbdbdbdbdbdbdbdbdadadad9d9d9d8d8d8d9d9d9d9d9d9d9d9d9
+d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d8d8d8d7d7d7d8d8d8d8d8d8d7d7d7d8d8d8d7d7d7
+d7d7d7d7d7d7d6d6d6d6d6d6d6d6d6d6d6d6d7d7d7d6d6d6d6d6d6d6d6d6d7d7d7d6d6d6
+d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d8d8d8d8d7d7d8d8d8d7d7d7d6d6d5d3d3d2cecece
+c8c8c7c8c7c6cdcdccd7d8d7e1e1e1e7e7e7ebebeaebebebebebebeaeaeae7e7e7e6e6e6
+e3e4e3e3e2e1e2e2e2e3e3e2e2e2e2e3e3e2e3e3e3e5e5e5e6e6e6e6e6e6e8e8e8eaeaea
+ecececf0f0eff2f2f2f4f4f4f4f4f4f4f4f4f3f3f3f1f1f1efefefedededebeae9e6e7e6
+e3e3e3dededed9d9d9d4d4d4d0d1d1d1d1d1d5d5d5dddddde5e5e5ebebebedededeeeeee
+eeeeeeecececebebebe9e9e9e5e5e5e3e3e3e0e0e0dedededcdcdcdadadad9d9d9d9d9d9
+d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadadadbdbdbdbdbdbdbdbdbdbdbdbdcdcdcdcdcdb
+dbdadadadadadbdbdbd9d9d8d7d6d6d3d3d3cdcecdc6c5c5c1c2c1c5c5c5cecdccd8d5d5
+dfdedde2e2e0dfdfdedadad9d2d2d1cdcdcdcccccccdcdcdcececed0d0d0d2d2d2d4d4d4
+d7d7d7d9d9d9d9dad9dbdbdbdcdcdcdfdfdfe2e2e2e9e9e9f0f0f0f5f5f5f9f9f9fbfbfb
+fafafaf9f9f9f7f7f7f5f5f5f4f4f4f3f3f3f3f3f3f4f4f4f6f6f6f7f7f7f8f8f8fbfbfb
+fdfdfdfdfdfdfefefefefefefefefeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefefefefcfcfcfbfbfbfafafaf7f7f6f3f3f2efefefececeb
+e9e9e9e8e8e8e5e5e5e3e3e3e1e1e1e0e0e0dfdfdfdedededddddddddddddddddddddddd
+dddddddededededededfdfdfdedededfdfdfdfdfdfdedededddddddcdcdcdcdcdcdcdcdc
+dbdbdbdadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadbdbdb
+dbdbdbdbdbdbdcdcdcdbdbdbdbdbdbdbdbdbd9d9d9d7d7d7d6d6d6d6d6d6d7d7d7d9d9d9
+d9d9d9dadadad9d9d9d9d9d9d9d9d9d8d8d8d8d8d8d8d8d8d7d7d7d8d8d8d7d7d7d6d6d6
+d7d7d7d6d6d6d7d7d7d7d7d7d7d7d7d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d6d6d6d7d7d7
+d7d7d7d7d7d7d8d8d8d9d9d9d8d8d8d8d8d8d7d8d8d8d8d8d8d8d8d8d8d7d7d6d5d2d2d1
+ccccccc9c9c8cbcbcad2d2d1dadbdae1e1e1e4e4e4e5e5e5e4e4e4e4e4e3e2e2e1e1e1e0
+e0dfdfdfdededfdfdedfdfdedfdfdedededddedfdedfdfdedfdfdedfdededfdfdfdedede
+e0e0e0e3e2e2e7e6e6eaeaeaebecebebebebeaeaeae7e8e8e5e5e4e2e2e1dfdfdedcdcdb
+d9d9d9d8d8d7d5d5d5d3d3d3d3d3d3d5d5d5d8d8d8dededee2e2e2e4e4e4e5e5e5e5e5e5
+e4e4e4e3e3e3e0e0e0dedededddddddbdbdbdadadadadadad9d9d9d9d9d9d9d9d9d9d9d9
+d9d9d9d9d9d9d9d9d9dbdbdbdbdbdbdbdbdbdbdbdbdadadad9d9d9d7d7d7d6d6d6d4d4d4
+d4d4d4d5d5d5d5d5d5d4d4d4d5d5d5d7d6d6d8d8d8dadbdadbdbdbdcdcdcdedddddedddd
+dedddcdadad9d3d3d3cdcdcdcdcdcdcececed2d2d2d4d4d4d5d5d5d6d5d5d6d5d5d7d7d6
+d8d8d7d9dadadbdbdadadadadadadadddddde3e3e3ebebebf2f2f2f8f8f8fcfcfcfdfdfd
+fdfdfdfdfdfdfdfdfdfcfcfcfcfcfcfbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfcfcfcfcfcfc
+fbfbfbfbfbfbfbfbfbfafafafbfbfbfcfcfcfcfcfcfdfdfdfefefeffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefefefdfdfcfbfbfbf7f7f6f2f2f2
+efefeeecebebe9e9e9e7e7e7e4e4e4e4e4e4e2e2e2e1e1e1e1e1e1e1e1e1e0e0e0e0e0e0
+dfdfdfdfdfdfdfdfdfe0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0e0dfdfdf
+dfdfdfdedededddddddddddddddddddcdcdcdbdbdbdadadadbdbdbdadadadadadadbdbdb
+dadadadadadadadadadadadadadadadadadad7d7d7d4d4d4d1d1d1d1d1d1d3d3d3d5d5d5
+d6d6d6d7d7d7d8d8d8d8d8d8d8d8d8d8d8d8d9d9d9d8d8d8d8d8d8d7d7d7d7d7d7d7d7d7
+d7d7d7d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d8d8d8d8d8d8d8d8d8d7d7d7d8d8d8d8d8d8
+d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9d8d8d8d8d8d8d8d9d9d9d9d9d9d8d7d6d6d6
+d4d4d3d1d1d0d1d1d0d5d5d4d9dadadededee0e0e0e1e0e0dfdfdfdfdfdedddddcdcdcdb
+dcdcdbdbdbdbdbdbdbdbdbdbdbdbdadbdbdbdbdbdbdcdcdbdbdbdbdbdbdbdbdbdbdbdcdc
+dbdbdbdddddce0e0e0e2e2e2e2e3e2e2e1e1dfdfdfdddedddbdbdbd9d9d9d8d8d8d7d7d6
+d6d5d5d6d6d5d5d6d6d6d6d6d7d7d7d9d9d9dbdbdbdcdcdcdddddddddddddddddddddddd
+dcdcdcdadadadadadad9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadada
+dadadadadadadbdbdbdbdbdbd8d8d8d7d7d7d5d5d5d2d2d2d0d0d0cfcfcfcfcfcfd1d1d1
+d5d5d5d8d8d8dcdcdcdededee0e0e0e4e3e3e4e4e4e5e5e5e1e1e1dadadad4d4d4cecece
+cbcbcbcbcbcbcdcdcdcfcfcfd3d3d3d5d5d5d7d7d7d7d7d7d7d7d7d6d6d6d6d7d6d7d8d7
+d9d8d8d9d9d9dadad9d8d8d8d9d9d9dcdcdce5e5e5eeeeeef5f5f5f9f9f9fcfcfcfdfdfd
+fcfcfcfcfcfcfcfcfcfbfbfbfbfbfbfafafafafafafafafaf9f9f9f8f8f8f7f7f7f6f6f6
+f4f4f4f4f4f4f3f3f3f4f4f4f5f5f5f8f8f8fafafafcfcfcfefefeffffffffffffffffff
+fffffffffffffffffffefefefefefefffffffffffeffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfdfdfbfbfa
+f7f7f6f3f3f2efefeeebebeae7e7e7e5e5e5e3e3e3e3e3e3e4e4e4e5e5e5e4e4e4e4e4e4
+e3e3e3e2e2e2e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e2e2e2e2e2e2e2e2e2
+e2e2e2e2e2e2e1e1e1e1e1e1e0e0e0e0e0e0dfdfdfdedededededededededcdcdcdbdbdb
+dbdbdbdbdbdbdadadadadadad9d9d9dadadad7d7d7d0d0d0cbcbcbcccccccececed1d1d1
+d3d3d3d4d4d4d5d5d5d6d6d6d5d5d5d6d6d6d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7
+d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d8d8d8d8d8d8d8d8d8d9d9d9d9d9d9d8d8d8
+d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d8d9d9d8dad9d9d8d8d8
+d9d9d8d8d8d7d9d9d8dbdbdadddddddfdfdedfdfdfdfdedddddddddcdddcdcdcdbdadada
+dad9d9d9d9d9d8d9d8d9d9d8d8d9d8d9d9d8d9d8d8d9d9d9d8d8d8d8d8d7d8d8d8d9d9d9
+d8d9d8dadad9dadadadadbdadbdbdbdadadad8d8d8d8d8d8d7d7d7d6d6d6d7d7d7d6d6d6
+d6d6d6d6d6d6d6d7d7d7d7d7d8d8d8d8d8d8d9d9d9d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9
+d9d9d9d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadadadadadadbdbdb
+dbdbdbd9d9d9d6d6d6d0d0d0cdcdcdcdcdcdcdcdcdcececed1d1d1d3d4d4d6d6d6d9d9d9
+dddddde0e0e0e2e2e2e1e1e1dededed9d9d9d2d2d2cbcbcbc4c4c4bfbfbfbfbfbfc2c2c2
+c9c9c9cfcfcfd5d5d5d8d8d8d9d9d9d9d9d9d7d7d7d6d6d6d5d5d5d5d5d5d6d6d6d8d8d7
+d9d9d9d9d9d9d8d8d8d6d6d6d8d8d8dddddde6e6e6edededf2f2f2f4f4f4f6f6f6f6f6f6
+f6f6f6f6f6f6f5f5f5f5f5f5f4f4f4f4f4f4f4f4f4f3f3f3f1f1f1f0f0f0eeeeeeececec
+ebebebebebebecececeeeeeef2f2f2f6f6f6fafafafcfcfcfefefeffffffffffffffffff
+fffffffffffffffffffefefdfdfdfcfefefdfdfdfcfefefdffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfffefeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fdfdfdfcfcfcf9f9f9f5f5f5f0f0f0ededede8e8e8e4e4e4e3e3e3e2e2e2e2e2e2e3e3e3
+e5e5e5e5e5e5e4e4e4e4e4e4e3e3e3e3e3e3e4e4e4e3e3e3e3e3e3e4e4e4e4e4e4e4e4e4
+e4e4e4e4e4e4e4e4e4e4e4e4e3e3e3e4e4e4e3e3e3e2e2e2e1e1e1e1e1e1e0e0e0dfdfdf
+dfdfdfdededededededddddddcdcdcdcdcdcdcdcdcd2d2d2c7c7c7c5c5c5c8c8c8cdcdcd
+d1d1d1d3d3d3d3d3d3d3d3d3d4d4d4d4d4d4d4d4d4d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5
+d5d5d5d5d5d5d6d6d6d6d6d6d6d6d6d7d7d7d7d7d7d8d8d8d9d9d9d8d8d8d8d8d8d8d8d8
+d9d9d9d9d9d9d9d9d9d9d9d9dadadadadadadadadadadadadadadadadadadadadad9d9d9
+dadadadadadadbdadadadad9dadad9d8d9d8d7d8d7d7d8d7d8d8d7d9d9d9dadadadadada
+d9d9d9dadadadadad9d9dad9d9d9d9d9d9d8d9d8d8d9d9d9d7d8d7d7d7d7d8d8d8d8d8d8
+d7d8d8d8d8d8d8d8d8d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d6d6d6d6d6d6d7d7d7
+d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d8d8d8d8d8d8d8d8d8d8d8d8d9d9d9d8d8d8d9d9d9
+d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadadadadadadadadadbdbdbdbdbdbdbdbdbd7d7d7
+d2d2d2cdcdcdc8c8c8c6c6c6cacacacececed1d1d1d4d4d4d5d5d5d5d5d5d5d5d5d5d5d5
+d4d4d4d3d3d3d2d2d2cececec9c9c9c3c3c3c0c0c0bfbfbfc1c1c1c4c4c4cacacad0d0d0
+d6d6d6dadadadddddddddddddcdcdcdadadad8d8d8d8d8d8d8d8d8d9d9d9dadadadbdbdb
+dcdcdcdbdbdbdadadad9d9d9dcdcdce1e1e1e7e7e7ebebebedededeeeeeeefefefefefef
+eeeeeeeeeeeeeeeeeeeeeeeeedededececececececeaeaeae9e9e9e7e7e7e6e6e6e7e7e7
+e8e8e8eaeaeaedededf1f1f1f5f5f5f9f9f9fcfcfcfdfdfdfefefeffffffffffffffffff
+fffffffffffffffffffefefefcfcfcfcfcfbfdfdfcfdfdfcfefefeffffffffffffffffff
+fffffffffffffffffffffffffffffffefefefefdfefefdfefdfdfdfdfdfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffdfdfdfbfbfbf9f9f9f5f5f4f0f0f0ececece7e7e7e3e3e3e1e1e1
+e1e1e1e0e1e1e2e2e2e4e4e4e5e5e5e6e6e6e5e5e5e5e5e5e5e5e5e6e6e6e5e5e5e5e5e5
+e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e5e5e5e6e6e6e5e5e5e4e4e4e3e3e3e3e3e3
+e3e3e3e2e2e2e2e2e2e1e1e1e1e1e1e0e0e0e0e0e0dbdbdbccccccc1c1c1c0c0c0c7c7c7
+cececed2d2d2d3d3d3d4d4d4d4d4d4d5d5d5d5d5d5d4d4d4d5d5d5d4d4d4d5d5d5d4d4d4
+d4d4d4d4d4d4d5d5d5d5d5d5d5d5d5d7d7d7d7d7d7d7d7d7d8d8d8d7d7d7d7d7d7d7d7d7
+d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9dadadadadadadadadadcdcdcdbdbdadadad9
+dadadad9d8d7d5d5d4d2d2d1d0d0d0d0d0d0d1d1d1d4d4d4d7d7d7dcdcdbdcdddcdddddd
+dcdcdcdbdcdbdbdbdbdbdad9dbdadadadadad9d9d9d9d9d9d9d9d9d8d9d8d9d9d9d9d9d9
+d8d8d8d9d9d9d8d8d8d7d7d7d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d7d7d7d7d7d7d8d8d8
+d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9
+d9d9d9d9d9d9dadadadadadadadadadbdbdbdbdbdbdcdcdcdcdcdcd9d9d9d3d3d3cbcbcb
+c6c6c6c4c4c4c7c7c7cbcbcbd0d0d0d3d3d3d4d4d4d3d3d3d3d3d3d2d2d2d2d2d2d1d1d1
+d0d0d0cfcfcfcfcfcfcecececdcdcdcfcfcfd0d0d0d4d4d4d8d8d8dbdbdbdfdfdfe2e2e2
+e3e3e3e4e4e4e3e3e3e1e1e1dfdfdfdddddddbdbdbdbdbdbdadadadadadadadadadadada
+d9d9d9d9d9d9d9d9d9dadadadcdcdce0e0e0e3e3e3e6e6e6e8e8e8e8e8e8e9e9e9e9e9e9
+e9e9e9e9e9e9e9e9e9eaeaeaeaeaeaeaeaeaeaeaeaeaeaeaebebebebebebecececeeeeee
+f1f1f1f3f3f3f6f6f6f9f9f9fbfbfbfdfdfdfefefeffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefdfdfdfdfdfdfefefefdfdfdffffffffffffffffffffffff
+fffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfdfdffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefefefefdfdfdfdfdfcfafbfaf8f7f7f4f4f3efefefeaeaea
+e6e6e6e3e3e2e2e2e2e4e4e3e5e4e4e5e6e5e5e5e5e5e6e6e6e6e6e7e7e6e7e7e7e7e7e6
+e8e7e7e8e8e8e9e9e9e9e9e9eaeaeae9e9e9e9e9e9e7e7e7e7e7e7e7e7e7e6e6e6e6e6e6
+e6e6e6e6e6e6e5e5e5e4e4e4e4e4e4e4e4e4e3e3e3e3e3e3dbdbdbcbcbcbbfbfbfc0c0c0
+c8c8c8cfcfcfd2d2d2d4d4d4d5d5d5d5d5d5d6d6d6d5d5d5d6d6d6d5d5d5d5d5d5d5d5d5
+d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d5d5d5d6d6d6
+d6d6d6d7d7d7d7d7d7d8d8d8d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9dadadad9dadad8d9d8
+d5d5d4d0d1d0cccccccacbcbcbcbcbcdcdcdd3d3d2d9d9d8dedddde0e0dfdfe0dfdfe0df
+dedededddcdcdcdddcdddcdcdcdcdcdbdbdbdadbdbdadbdbdadadad9dadadadadad9d9d9
+d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d8d8d8d8d8d8
+d8d8d8d7d7d7d8d8d8d8d8d8d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9dadadadadadad9d9d9
+dadadadadadadbdbdbdcdcdcdddddddddddddcdcdcd9d9d9d4d4d4cdcdcdc8c8c8c6c6c6
+c7c7c7c9c9c9cececed1d1d1d3d3d3d4d4d4d5d5d5d5d5d5d5d5d5d5d5d5d6d6d6d7d7d7
+d8d8d8d9d9d9dbdbdbdcdcdcdfdfdfe1e1e1e3e3e3e4e4e4e4e4e4e3e3e3e2e2e2e0e0e0
+dedededbdbdbd8d8d8d6d6d6d5d5d5d3d3d3d2d2d2d2d2d2d2d2d2d3d3d3d4d4d4d5d5d5
+d6d6d6d8d8d8dbdbdbdedededfdfdfe4e4e4e7e7e7e9e9e9ebebebecececedededefefef
+f0f0f0f0f0f0f1f1f1f2f2f2f2f2f2f3f3f3f4f4f4f5f5f5f6f6f6f7f7f7f9f9f9fafafa
+fbfbfbfcfcfcfdfdfdfefefefefefeffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefefefefefefefefefefefefeffffffffffffffffffffffff
+fffffffffffffefefefefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffefefefefefdfcfcfbfbfbfaf9f9f8f6f6f6f3f2f2
+eeeeeeeaeaeae6e6e5e3e3e3e1e0e0dfe0dfdfdfdfdededee0e0dfdfdfdfdfdfdfe0e0df
+e0e0dfe0e0e0e1e1e1e2e2e2e6e6e6e9e9e9ededededededebebebeaeaeae8e8e8e8e8e8
+e8e8e8e8e8e8e7e7e7e7e7e7e7e7e7e7e7e7e6e6e6e6e6e6e6e6e6e0e0e0d3d3d3c4c4c4
+c2c2c2c8c8c8cececed2d2d2d5d5d5d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7
+d7d7d7d6d6d6d6d6d6d7d7d7d7d7d7d6d6d6d6d6d6d5d5d5d5d5d5d5d5d5d4d4d4d5d5d5
+d5d5d5d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d7d7d7d7d7d7d8d8d8d7d7d7d6d5d4d3d3d3
+cdcdcdc9c9c9c7c8c7c8c9c8cbcbcad0d0d0d8d8d7dededee2e2e2e3e3e3e2e1e1e0e0e0
+dfdfdfdedededededddedddddddddcdcdddcdcdddcdcdcdcdadbdbdadbdbdbdbdbdbdbdb
+dadadadadadadadadadadadadadadadadadadadadad9d9d9d9d9d9d8d8d8d8d8d8d5d5d5
+d4d4d4d5d5d5d6d6d6d8d8d8dadadadbdbdbdadadadadadadbdbdbdbdbdbdbdbdbdbdbdb
+dcdcdcdddddddddddddddddddbdbdbd8d7d7d2d1d1ccccccc9c9c9c8c8c8c9c9c9cacaca
+cccccccececed1d1d1d3d3d3d5d5d5d7d7d7d8d8d8d9d9d9dbdbdbdddddddfe0dfe3e3e3
+e4e4e4e5e5e5e5e4e4e5e5e5e1e0e0dedededadadad6d6d6d3d3d3d0d0d0cdcdcdcccccc
+cdcdcdcdcdcdcecececfcfcfd2d2d2d4d4d4d7d7d7dadadadddddde0e0e0e3e3e3e6e6e6
+e8e8e8eaeaeaeeeeeef0f0f0f1f1f1f3f3f3f5f5f5f7f7f7f7f7f7f8f8f8f9f9f9fafafa
+fafafafafafafbfbfbfbfbfbfbfbfbfcfcfcfcfcfcfdfdfdfefefefefefefefefefefefe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffefefefefdfdfdfcfcfcfafafaf6f6f6
+f1f1f0ebebeae4e4e3dedfded9d9d8d4d4d4d2d2d2d0d0cfcfcfcececececdcdcdcdcdcd
+cdcdcdcdcdcdcdcdcdcececed0d0d0d4d4d4dadadae5e5e5edededf1f1f1eeeeeeececec
+ebebebeaeaeaeaeaeaeaeaeae9e9e9e9e9e9e9e9e9e7e7e7e7e7e7e8e8e8e6e6e6dddddd
+d0d0d0c8c8c8cacacacececed1d1d1d3d3d3d4d4d4d4d4d4d6d6d6d6d6d6d7d7d7d8d8d8
+d7d7d7d7d7d7d7d7d7d7d7d7d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d6d6d6d6d6d6
+d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d5d5d5d5d5d5d5d5d5d5d5d5d4d4d4d1d2d2cececd
+cbcbcbcacac9cbcbcbcdcdcdd1d1d0d6d5d5dbdbdbe0e0dfe3e3e2e3e3e3e1e1e1e1e1e1
+e0e0e0e0e0e0e0e0e0dfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdddddddededededededddddd
+dddddddcdcdcdbdbdbdadadadbdbdbdbdbdbdcdcdcdcdcdcdbdbdbdadadadadadad8d8d8
+d8d8d8d8d8d8dadadadbdbdbdddddddedededddddddddddddddddddedededededededede
+dedededddddddadadad6d6d6d0d0d0ccccccc9c9c9c8c8c8c9c9c9cacacacccccccdcdcd
+cfcfcfd1d1d1d5d5d5d8d8d8dbdbdbdededee1e1e1e5e5e5e7e7e7e9e9e9e8e8e8e5e5e5
+e0e0e0dadadad3d3d3cdcdcdc8c8c8c7c7c7c6c6c6c7c7c7cacacacececed2d2d2d5d5d5
+dadadadededee2e2e2e6e6e6e9e9e9ecececefefeff1f1f1f3f3f3f5f5f5f7f7f7f9f9f9
+fafafafafafafbfbfbfcfcfcfdfdfdfdfdfdfefefefefefefefefefefefefefefeffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefe
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefdfdfdfcfcfc
+f9f9f9f5f5f5f1f1f1ececece6e6e6e2e2e2dedededbdbdad8d8d8d6d6d5d4d4d3d3d3d2
+d2d2d1d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d2d2d2d3d3d3d7d7d7e0e0e0ecececf2f2f2
+f2f2f2f0f0f0edededecececebebebeaeaeaebebebeaeaeae9e9e9e8e8e8e8e8e8e9e9e9
+e7e7e7dededed4d4d4d1d1d1d2d2d2d2d2d2d4d4d4d4d4d4d5d5d5d4d4d4d5d5d5d5d5d5
+d5d5d5d6d6d6d6d6d6d6d6d6d6d6d6d7d7d7d6d6d6d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7
+d7d7d7d7d7d7d7d7d7d6d6d6d6d6d6d6d6d6d5d5d5d5d5d5d4d4d4d4d3d3d2d1d0d0cfce
+cecfcfcecfcfd0d0d0d3d3d3d6d6d6d8d7d7dbdbdbdfdfdfe1e0e0e0dfdfe0e0e0dfdfdf
+dfdfdfe0dfdfe0e0e0e1e1e1e1e1e1e0e0e0e0e0e0e0e0e0e0e0e0dfdfdfdfdfdfdfdfdf
+dcdcdcd8d8d8d4d4d4d4d4d4d7d7d7dadadadddddddedededededededededddddddcdcdc
+dcdcdcdddddddddddddddddddedededfdfdfdededededededfdfdfdedededadadad9d9d9
+d3d4d4cfd0d0cccdcdc9c9c9c6c6c6c6c6c6c7c7c7c9c9c9cbcbcbcececed1d1d1d4d4d4
+d8d8d8dcdcdce0e0e0e4e4e4e8e8e8e9eaeae7e8e8e5e5e5dfdfded7d7d7d0d0d0c8c8c8
+c2c2c2c0c0c0c2c2c2c5c5c5cbcbcbd2d2d2d9d9d9dfdfdfe4e4e4e9e9e9eeeeeef1f1f1
+f4f4f4f7f7f7f8f8f8fafafafbfbfbfcfcfcfcfcfcfdfdfdfefefefefefefefefefefefe
+fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfffeffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefdfdfdfcfcfcfafafaf8f8f8f7f7f7f5f5f5f4f4f4f3f3f3f3f3f3f2f2f2
+f1f1f1f1f1f1f1f1f1f0f0f0f0f0f0efefefeeeeeeebebebe6e6e6e0e0e0dcdcdce1e1e1
+e9e9e9efefeff3f3f3f3f3f3f0f0f0efefefedededecececebebebebebebebebebeaeaea
+ebebebebebebe9e9e9e3e3e3dfdfdfdcdcdcdadadadadadadadadad8d8d8d7d7d7d6d6d6
+d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d4d4d4d5d5d5d4d4d4d5d5d5d5d5d5d6d6d6d6d6d6
+d7d7d7d6d6d6d6d6d6d7d7d7d7d7d7d6d6d6d5d5d5d6d6d6d6d6d6d5d5d5d4d4d4d5d4d4
+d4d4d4d5d4d4d5d5d5d5d6d5d6d6d6d7d8d8d9d9d9dbdbdbdcdcdbdddddcdbdbdbdbdbdb
+dcdcdcdddddde0e0e0e2e2e2e4e4e4e4e4e4e3e3e3e1e1e1e1e1e1e0e0e0e0e0e0dcdcdc
+d8d8d8d2d2d2cfcfcfcfcfcfd2d2d2d6d6d6d9d9d9dcdcdcdedededfdfdfdedededddddd
+dddddddddddddddddddddddddddddddcdcdcdcdcdcd9d9d9d3d3d3ccccccc5c5c5c2c2c2
+c1c1c1c2c2c2c3c3c3c5c5c5c7c7c7cacacacfcfcfd3d3d3d6d6d6dadadadededee1e1e1
+e3e3e3e5e5e5e2e2e2dededed9d9d9d3d3d3ccccccc7c7c7c6c6c6c5c5c5c7c7c7cbcbcb
+d2d2d2d8d8d8dfdfdfe6e6e6ecececf1f1f1f4f4f4f7f7f7fafafafcfcfcfcfcfcfdfdfd
+fffffffffffffefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffefefefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfefefefefffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefefeffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefefefefefefefefefefefefefefe
+fefefefefefefdfdfdfdfdfdfdfdfdfdfdfdfcfcfcfbfbfbfbfbfbf9f9f9f4f4f4eeeeee
+e7e7e7e3e3e3e6e6e6ebebebf0f0f0f3f3f3f3f3f3f1f1f1efefefefefefeeeeeeeeeeee
+edededececececececedededebebebe9e9e9e7e7e7e5e5e5e3e3e3e2e2e2e1e1e1e0e0e0
+dedededcdcdcdbdbdbdbdbdbdadadad9d9d9d8d8d8d7d7d7d5d5d5d5d5d5d5d5d5d5d5d5
+d5d5d5d5d5d5d4d4d4d4d4d4d5d5d5d5d5d5d6d6d6d5d5d5d6d6d6d6d6d6d6d6d6d6d6d6
+d8d8d8d9d9d9d8d8d8d6d6d6d5d4d4d6d6d6d8d8d8d8d8d8d9d9d8d8d8d8d8d8d8d8d8d8
+d8d8d8dadadadddddde2e2e2e6e7e6e7e7e7e7e7e7e5e5e5e3e3e3e3e3e3e3e3e3e0e0e0
+dcdcdcd8d8d8d4d4d4d3d3d3d2d2d2d3d3d3d5d5d5d8d8d8dbdbdbdedededfdfdfdedede
+dededededededddddddddddddddddddcdcdcd9d9d9d4d4d4cececec8c8c8c6c6c6c3c3c3
+c4c4c4c6c6c6cacacacececed2d2d2d6d6d6dadadadcdcdcdedededfdfdfdedededddddd
+d9d9d9d5d5d5d3d3d3d0d0d0d0d0d0d1d1d1d4d4d4d8d8d8dcdcdce1e1e1e7e7e7ebebeb
+efefeff2f2f2f7f7f7fafafafcfcfcfdfdfdfefefeffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefeffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefefefefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfefdfefefefefffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefefefefefe
+fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fbfbfbf5f5f5eeeeeee8e8e8e4e4e4e7e7e7ebebebefefeff1f1f1f1f1f1f0f0f0f0f0f0
+efefefefefefeeeeeeeeeeeeefefefefefefeeeeeeededededededecececeaeaeae9e9e9
+e9e9e9e8e8e8e7e7e7e5e5e5e5e5e5e3e3e3e2e2e2e1e1e1dfdfdfdddddddbdbdbdadada
+d9d9d9d9d9d9d8d8d8d6d6d6d5d5d5d4d4d4d5d5d5d5d5d5d4d4d4d4d4d4d5d5d5d6d6d6
+d8d8d7d8d8d7d8d8d7d5d5d5d2d2d2d2d2d2d5d5d5d8d8d8dadad9d9d9d8d7d7d6d6d6d6
+d6d6d5d7d8d8dbdcdbe1e1e1e7e7e7eaeae9e9e9e9e8e8e8e7e7e7e7e7e7e6e5e5e6e5e5
+e4e4e4e2e2e1e1e1e1dedededadadad6d6d6d3d3d3d3d3d3d6d6d6d9d9d9dcdcdcdedede
+dfdfdfe0e0e0dededededededededededededcdcdcdbdbdbd9d9d9d7d7d7d5d5d5d3d3d3
+d1d1d1d1d1d1d3d3d3d6d6d6d7d7d7d7d7d7d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8dadada
+dcdcdcdededee2e2e2e5e5e5e9e9e9edededf1f1f1f3f3f3f6f6f6f8f8f8fbfbfbfcfcfc
+fdfdfdfefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefefefeffffffffffffffffff
+fffffffefefefefefefdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfdfdfefefefffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfefefefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffefefefafafaf4f4f4eeeeeee7e7e7e3e3e3e2e2e2e4e4e4e5e5e5e6e6e6
+e8e8e8eaeaeaebebebedededeeeeeeeeeeeeeeeeeeefefeff0f0f0efefeff0f0f0efefef
+efefefefefefeeeeeeeeeeeeedededebebebebebebebebebeaeaeae9e9e9e7e7e7e5e5e5
+e4e4e4e3e3e3e3e3e3e0e0e0dedededcdcdcdbdbdbdadadad9d9d9d8d8d8d7d6d6d7d7d7
+d7d7d6d8d8d7d7d7d6d5d5d4d1d1d0cecececfcfcfd4d4d3dadad9dedfdedfdfdedfe0df
+e0e0e0e1e1e0e4e4e3e6e7e6e9e9e9ebecebebebebebebebeaeaeaeaeaeae8e7e7e9e8e8
+e9e8e7e8e8e7e7e7e7e6e6e6e3e3e3dededed8d8d8d3d3d3d2d2d2d3d3d3d6d6d6d8d8d8
+dbdbdbdddddddddddddddddddedededededededededededededededddddddcdcdcd9d9d9
+d4d4d4d0d0d0cbcbcbcbcbcbcccccccfcfcfd4d4d4d9d9d9dededee3e3e3e8e8e8ececec
+f0f0f0f3f3f3f6f6f6f8f8f8fafafafcfcfcfdfdfdfefefefefefeffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfefefefefefefe
+fdfdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fefdfefefefefffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfdfefefefeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffefefefdfdfdf9f9f9f3f3f3ececece5e5e5e0e0e0dcdcdc
+dadadad9d9d9d9d9d9dadadadcdcdcdededee0e0e0e2e2e2e4e4e4e7e7e7e9e9e9ececec
+eeeeeeefefeff0f0f0f0f0f0f0f0f0f1f1f1f1f1f1f0f0f0f0f0f0efefefefefefefefef
+eeeeeeedededecececebebebeaeaeae9e9e9e8e8e8e6e6e6e4e4e4e2e2e2e1e0e0dedede
+dddddcdcdcdcdbdbdad9d9d8d6d6d5d2d2d1cececdcccccccfd0cfd7d7d7dededde5e5e4
+eaebebeeeeedefefefeff0efeeefeeeeeeedeeedededededececececececebebebebebeb
+ebebeaebeae9eaeaeaeaeaeae9e9e9e8e8e7e3e2e2dcdcdcd7d7d7d4d4d4d3d3d3d4d4d4
+d5d5d5d6d6d6d8d8d8d9d9d9dadadadcdcdcdcdcdcdcdcdcdadadad4d4d4cdcdcdc4c4c4
+bebebebcbcbcbfbfbfc7c7c7d1d1d1dbdbdbe4e4e4ebebebf1f1f1f5f5f5f7f7f7fafafa
+fcfcfcfdfdfdfefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfe
+fefefefffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfefeffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefefefcfcfcf9f9f9f5f5f5f0f0f0
+eaeaeae5e5e5e0e0e0dcdcdcd8d8d8d6d6d6d6d6d6d4d4d4d3d3d3d4d4d4d5d5d5d7d7d7
+dadadadededee1e1e1e4e4e4e7e7e7e9e9e9ecececeeeeeef0f0f0f1f1f1f2f2f2f3f3f3
+f3f3f3f3f3f3f2f2f2f1f1f1f1f1f1f1f1f1f1f1f1f0f0f0efefefeeeeeeedededececec
+eae9e9e8e8e8e6e6e6e5e5e4e2e2e1dfdfdedbdad9d5d5d4cfcfcfcccccccdcdcdd1d1d1
+d7d7d6dededde4e4e3e9eae9eeeeeef0f0eff0f1f0f1f1f0f0f1f1f1f1f0f1f0f0f0efef
+efefefefeeeeedededeeeeeeedeeeeecececebeaeae9e8e8e4e4e4dfdfdfdcdcdcdadada
+dbdbdbdcdcdcdedededfe0dfe0e0e0dedededadadad3d3d3c9c9c9bebebeb8b8b8b6b6b6
+bcbcbcc8c8c8d4d4d4e0e0e0e9e9e9f1f1f1f6f6f6fafafafcfcfcfdfdfdfefefefefefe
+fefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfdfdfdfefdfefefefeffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefdfeffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fcfcfcf9f9f9f7f7f7f4f4f4f0f0f0ededede9e9e9e6e6e6e2e2e2dfdfdfdbdbdbd9d9d9
+d6d6d6d5d5d5d5d5d5d5d5d5d5d5d5d6d6d6d8d8d8dadadadddddde1e1e1e5e5e5e8e8e8
+ebebebedededf0f0f0f2f2f2f4f4f4f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f4f4f4f3f3f3
+f2f2f2f2f2f2f1f1f1f1f0f0efefeeedececebeaeae9e9e9e5e5e5dfdfded9d9d9d1d2d2
+cbcbcbc7c7c7c6c6c6cacac9d2d2d1dadadae1e1e0e4e5e4e7e7e7e9e9e9eae9e9edeceb
+efefeef0f0eff0f0f0f1f1f1f1f1f1f1f1f0f0f0f0efefefefefeeececebeae9e9e6e5e5
+e2e3e3e1e1e1dfdfdfdbdcdcd5d6d6cdcdcdc5c5c5bdbdbdb9b9b9bbbbbbc2c2c2cdcdcd
+dadadae6e6e6efefeff5f5f5f9f9f9fdfdfdfefefefefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefdfefefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefdfdfdfcfcfcfbfbfbfafafaf8f8f8f6f6f6f4f4f4f2f2f2
+efefefececece9e9e9e6e6e6e2e2e2dfdfdfdcdcdcd9d9d9d7d7d7d6d6d6d5d5d5d6d6d6
+d6d6d6d8d8d8dadadadededee3e3e3e7e7e7eaeaeaeeeeeef1f1f1f3f3f3f5f5f5f6f6f6
+f5f5f5f6f6f6f5f5f5f5f5f5f4f4f4f4f3f3f3f3f3f3f3f3f3f3f3f2f1f1efefefececec
+e7e7e7ddddddd2d2d2c5c5c5bbbbbbbababac2c2c1c9c9c9cccccccbcccccacac9cececd
+d4d4d4d9d9d9dcdcdcdedededfdfdfdfdedededededcdddddbdbdbd8d8d8d4d4d4cecece
+c8c9c9c4c4c4c2c2c2c1c1c1c0c0c0c0c0c0c1c1c1c6c6c6cececed7d7d7e1e1e1ebebeb
+f3f3f3f8f8f8fcfcfcfefefefefefeffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfdfdfefdfefefefefffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefdfefefefeffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefe
+fdfdfdfcfcfcfbfbfbfafafaf8f8f8f6f6f6f4f4f4f2f2f2eeeeeeebebebe7e7e7e4e4e4
+e1e1e1dddddddadadad8d8d8d6d6d6d5d5d5d6d6d6d7d7d7dbdbdbdededee3e3e3e9e9e9
+eeeeeef3f3f3f6f6f6f6f6f6f6f6f6f5f5f5f5f5f5f5f5f5f6f6f6f6f6f6f7f7f7f6f6f6
+f6f6f6f4f4f4f1f1f1e9e9e9d8d8d8c2c2c2b6b6b6b9b9b9bdbdbdbdbdbdc0c0c0c6c6c6
+cdcdcdd0d0d0d0d0d0d0d0d0cecececccccccacacac8c8c8c7c7c7c5c5c5c4c4c4c2c2c2
+c4c4c4c6c6c6cacacad0d0d0d6d6d6dbdbdbe1e1e1e8e8e8eeeeeef4f4f4f7f7f7fbfbfb
+fdfdfdfefefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfefdfefffffffffffffffffffefdfefefdfefefdfefefdfefdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefdfe
+fefdfefefefefefefeffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffefefefefefefefefefdfdfdfcfcfcfafafaf8f8f8
+f7f7f7f5f5f5f2f2f2efefefececece8e8e8e4e4e4e1e1e1dddddddcdcdcdddddde0e0e0
+e5e5e5ebebebf1f1f1f6f6f6f8f8f8f7f7f7f6f6f6f6f6f6f6f6f6f8f8f8f9f9f9f8f8f8
+f7f7f7f7f7f7f7f7f7f8f8f8f6f6f6e8e8e8ccccccb2b2b2adadadb9b9b9ccccccdadada
+e1e1e1e2e2e2e3e3e3e4e4e4e5e5e5e3e3e3e2e2e2e0e0e0e0e0e0e0e0e0e1e1e1e2e2e2
+e5e5e5e8e8e8ecececf0f0f0f3f3f3f6f6f6f9f9f9fbfbfbfcfcfcfefefefefefeffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfefdfefefdfefefdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfefefefefefefefefefefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fefefefefefefefefefdfdfdfcfcfcfbfbfbfafafaf8f8f8f6f6f6f2f2f2eeeeeeeaeaea
+e7e7e7e8e8e8ecececf1f1f1f6f6f6f8f8f8f8f8f8f5f5f5eeeeeee9e9e9ecececf6f6f6
+f9f9f9f9f9f9f8f8f8f8f8f8f9f9f9f6f6f6e4e4e4bbbbbba0a0a0afafafd1d1d1e3e3e3
+e5e5e5e3e3e3e6e6e6edededf5f5f5f9f9f9fafafaf9f9f9f9f9f9f9f9f9f9f9f9fafafa
+fbfbfbfcfcfcfcfcfcfdfdfdfefefefefefeffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfdfefefefefefefefefefefefefefefe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfdfdfafafa
+f6f6f6f2f2f2efefefefefeff1f1f1f4f4f4f8f8f8f8f8f8f2f2f2e4e4e4d7d7d7dbdbdb
+edededfafafafcfcfcfbfbfbfafafaf7f7f7e9e9e9c7c7c7a3a3a3abababcececee4e4e4
+e3e3e3d8d8d8d3d3d3ddddddebebebf6f6f6fcfcfcfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfdfefdfdfefdfdfefdfdfefdfdfefefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefcfcfcf8f8f8f2f2f2efefefefefeff3f3f3f8f8f8fbfbfbf8f8f8ebebebd5d5d5
+c5c5c5cbcbcbe1e1e1f3f3f3fbfbfbfcfcfcf7f7f7e3e3e3c1c1c1b2b2b2c5c5c5dcdcdc
+e4e4e4dcdcdcccccccc7c7c7d1d1d1e0e0e0efefeff8f8f8fdfdfdfefefeffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfdfffefeffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffefefefafafaf4f4f4f0f0f0efefeff1f1f1f6f6f6fbfbfbfcfcfcf4f4f4
+ddddddbdbdbdabababb3b3b3cccccce5e5e5f5f5f5f9f9f9eeeeeed6d6d6c7c7c7cdcdcd
+d9d9d9e0e0e0dcdcdcd0d0d0c6c6c6c9c9c9d5d5d5e5e5e5f1f1f1f9f9f9fcfcfcfefefe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefefefefefefefefefe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffdfdfdfbfbfbf7f7f7f1f1f1eeeeeeeeeeeef2f2f2f7f7f7f9f9f9
+f8f8f8ecececd4d4d4bbbbbbb1b1b1b8b8b8cacacadededeeeeeeef1f1f1e4e4e4d1d1d1
+ccccccd4d4d4dddddddededed6d6d6ccccccc7c7c7cdcdcddadadae8e8e8f3f3f3fafafa
+fdfdfdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fefefefefefefefefefefefefdfdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfcfbfcfcfbfcfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfd
+fefdfefefdfefefdfefefdfefefdfefefdfeffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffdfdfdf9f9f9f2f2f2ececece8e8e8e7e7e7eaeaea
+edededf2f2f2f5f5f5f2f2f2e9e9e9ddddddd3d3d3cfcfcfd3d3d3dcdcdce5e5e5e4e4e4
+d5d5d5cbcbcbcfcfcfd8d8d8dedededbdbdbd2d2d2c9c9c9c7c7c7d0d0d0dededeececec
+f7f7f7fbfbfbfefefefefefeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffefefefdfdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfcfbfce6e5e6cac9cac2c1c2c0bfc0c2c2c2ecebecfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefefefefefefefefefefefeffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffefefefcfcfcf7f7f7efefefe7e7e7e1e1e1
+dcdcdcdcdcdce0e0e0e6e6e6edededf2f2f2f4f4f4f1f1f1ebebebe4e4e4dfdfdfe4e4e4
+e4e4e4dcdcdcd2d2d2d1d1d1d7d7d7dcdcdcdbdbdbd3d3d3c8c8c8c1c1c1c7c7c7d4d4d4
+e4e4e4eeeeeef5f5f5f9f8f8fcfcfcfdfdfdfefefefefefefefefeffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfde8e7e893908e5a53444b422f42392738342b8a8a89f8f7f8fdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcfcf8f8f8f2f2f2
+ebebebe4e4e4e0e0e0dddddddddddde0e0e0e4e4e4e9e9e9efefeff2f2f2f2f2f2f0f0f0
+f0f0f0f0f0f0ebebebe4e4e4e1e1e1e0e0e0e0e0e0dededed8d8d8cfcfcfcacacacacaca
+d0d0d0d8d8d8dfdfdfe6e5e5ececebf0f0eff3f3f2f5f5f5f7f6f6f8f8f8f9f9f9fafafa
+fbfbfbfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefefefefefefefe
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdc4c3c3847a64a4863ea9873394762c7561312a2823e6e6e7fdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfcfbfcf2f1f2
+dedddecccbcccbcacbc6c5c6c7c6c7cfcfcfe6e5e6f9f9fafdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefe
+fcfcfcfafafaf7f7f7f3f3f3eeeeeeeaeaeae5e5e5e2e2e2e0e0e0e0e0e0e2e2e2e7e7e7
+eaeaeaedededf0f0f0f2f3f2f3f3f3f2f2f2f0f0f0eeeeeeecececebebebe7e7e7e2e2e2
+dcdcdcd9d9d9d7d7d6d9d9d8dcdcdcdededee1e1e0e3e3e3e4e3e3e5e5e5e7e7e6e9e9e9
+ebebeaedededf0f0f0f1f1f1f2f2f2f3f3f3f3f3f3f3f3f3f3f3f3f4f4f3f5f5f5f6f6f6
+f7f7f7f9f9f9f9f9f9fafaf9fbfbfafbfbfbfcfcfcfdfdfdfefefefefefefefefeffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdc5c4c3a18f66c4992abc8f17a07a138b6d1c332e24dcdcdcfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf4f3f4d1d1d1b4b3b3999895
+8f8c83857e6f94897195886c8f846c847e72898884a7a6a6dedddefbfafbfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefdfdfdfcfcfcf8f8f8f4f4f4eeeeeee8e8e8e3e3e3dfdfdf
+dcdcdcdcdcdcdddddddedfdedfdfdfe2e2e2e6e6e5e7e7e7e9e9e8ebebebeeeeeef1f1f1
+f1f1f1efefefebebebe9e9e9e8e8e8e7e7e7e6e6e6e5e5e5e3e3e2e1e1e0dfdfdedfdfde
+dedededfdfdfe1e1e1e2e2e2e4e3e3e5e5e4e6e6e5e5e5e4e4e4e4e3e3e3e3e3e2e3e3e3
+e5e5e5e8e8e7e9e9e8eaeaeaebebeaedececeeeeeeefefeff1f1f0f3f3f2f5f5f4f7f7f6
+f8f8f8fafaf9fafafafbfbfbfcfcfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfefefe
+fefefefffffffffffffefefeffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdc6c5c4a19066c1972bb98d1c9f7a188b6d1d373227ddddddfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf1f0f1c4c3c3a2a09f8f897b978662a38741
+b99433c49d36cfa849cea955cca74ebf9b3ca3863e82745776746fbfbebff6f6f6fdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffefefefdfdfdfbfbfbf7f7f7f3f3f3
+eeeeeee9e9e9e3e3e3dededed8d8d7d3d3d3d2d2d1cfd0d0cfcfcecfcececfceced5d4d4
+e0dedeeaeae9edededefefeff0f0f0f2f2f2f2f2f2f3f3f3f2f2f2f1f1f1efefefededed
+ecececebebebebebebececececececededededededecececeaeaeae8e8e8e4e4e4e1e1e1
+e1e1e1e2e2e2e4e4e4e4e4e4e3e3e3e3e3e3e1e1e1dfdfdfdededee0dfdfe2e2e1e4e4e3
+e6e6e5e7e7e6e9e9e8ebebeaeeeeedeeeeeeefefeff0f0f0f0f0eff1f1f0f2f2f1f3f3f2
+f4f4f4f6f6f6f8f8f8f8f8f8fafafafbfbfbfdfdfdfdfdfdfefefefefefeffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdc7c6c4a19067c19829b98e1aa07b168b6d1c363126dededefdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfcfbfcf2f1f2c8c7c79d9c998c8472a08a52c59e3ae1b031f2bb28
+deb144a88d42927d488f7d53958151a98e4acaa64cd3a94191793e5d5950bdbdbdf8f7f8
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefe
+fdfdfdfbfbfbf8f8f8f5f5f5f1f1f1ececece7e8e7e3e3e2dfdfdedbdbdad7d6d6d4d3d2
+d5d4d3dadad9d7d6d6d2d1d1d2d2d1d5d5d4d7d6d6dddddde2e2e2e5e5e5e8e8e8ececec
+eeeeeeefefefefefefefefefefefeff0f0f0f0f0f0f1f1f1f2f2f2f3f3f3f3f3f3f3f3f3
+f3f3f3f2f2f2f3f3f3f2f2f2f2f2f2f0f0f0eeeeeeeaeaeae8e8e8e6e6e6e4e4e4e3e3e3
+e1e1e1e0e0e0e0e0e0e1e1e0e2e2e2e2e2e2e3e3e3e4e4e4e3e3e3e2e2e2e1e1e1e1e1e1
+e3e3e3e4e4e4e6e6e5e7e7e7eaeaeaececebedededf0f0eff3f3f3f6f6f6f9f9f9fbfbfb
+fdfdfdfefefefefefefefefefffffffffffffffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdf1f0f1d4d4d4bcbcbcb4b4b4b4b4b4b5b4b5b5b4b5b5b4b5b5b4b5b5b4b5b5b4b5
+b5b4b5b5b5b5b3b3b38c8b8a91805ac09936b89029a17e238c6f273632288b8a8abab9ba
+b7b7b7b9b8b9b9b9b9babababbbbbbbcbbbcbcbbbcbcbbbcbcbbbcbcbbbcc5c5c5e1e1e1
+f9f8f9fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdf5f4f5d7d7d7aaaaaa82807e746d5f937f4cb89433d5a628e8b221f1b924bc9b48
+65593f83817aafaeacbfbebdbcbbb9a6a39e8a816ba98f4fd6aa3b957c3f59564fd3d2d3
+fcfbfcfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefefefefdfdfdfcfcfcfafafaf8f8f8f7f7f7f5f5f5f1f1f0
+efefeeebebebe5e5e5dededdd9d9d9d6d6d5d2d2d1cfcfcfcdcdcdcac9c9cccbcbcfcfce
+d1d1d1cdcdcdcbcac9c9c8c8c7c7c6c8c7c7c8c8c8cacacad1d1d1dbdbdbe0e0dfe2e2e2
+e3e3e3e3e3e3e4e3e3e4e4e4e9e9e8edeeedf1f1f1f3f3f3f4f4f4f4f4f4f4f4f4f4f4f4
+f3f3f3f2f2f2f1f1f1f0f0f0f0f0f0f0f0f0f1f1f1f0f0f0eeeeeeebebebe7e7e7e4e4e4
+e2e2e2e1e1e1e0e0e0e0e0e0e0e0e0e0e0dfdfdfdfdedededfdfdfe2e2e2e7e7e7ececec
+f1f1f1f5f5f5f8f8f8fbfbfbfdfdfdfefefefffffffffffffffffffefdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfcfbfcfcfbfcfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdefefef
+b3b3b3807d7980796a91866b94876a94876a94876a94876a94876a94876a94876a94876a
+94876a94876b93866a908365ac9664cbab60c9a85cc0a058b799588c7c5786795e8b8065
+8479617d735c756c576d6452635c4c585345524d41504b3f4f493f4e493f4c4840474543
+777675c7c6c7fbfafbfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf6f5f6e1e1e1bebdbe
+9594937978745a574f69604a7562368d6f22ac861ec59820d6a521e5b021b697495a5344
+a1a09fe4e4e4f5f5f5fafafaf8f8f8efefefd0d0d0969289a99057dbae3d7b693d8e8d8b
+f0eff0fdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefe
+fefefefbfbfafafaf9f8f8f8f5f5f4f2f2f1f0f0efeeeeedeaeaeae7e7e7e3e3e3dfdfde
+dbdbdbd5d5d4d0d0d0cecdcdcdcdcdcdcccccdcdcccccbcbcecdcdcfcfcecccbcac6c5c5
+c2c1c1bdbdbdbab9b9bfbebec5c5c5c9c9c9cfcfcfd2d1d1d4d3d3dadadae0e0e0e2e2e2
+e4e4e4e7e7e7ebebeaefefefefefefefefefefefeff1f1f1f3f3f3f3f3f3f2f2f2eeeeee
+ebebebe7e7e7e5e5e5e5e5e5e6e6e6e6e6e6e5e5e5e2e2e2ddddddd9d9d9d9d9d9dadada
+dddddde1e1e1e6e6e6ebebebf0f0f0f5f5f5f9f9f9fcfcfcfdfdfdfdfdfdfcfcfdfdfcfd
+fdfcfdededed9a99997b7a795b5a597d7c7c898888888787888787888787888787888787
+8887878887878887878584848382828584848887878d8c8c8d8c8c8d8c8c8c8b8b8f8e8e
+a5a5a5bbbbbbc1c0c1c8c8c8cac9cac9c9c9c9c9c9c9c9c9c9c9c9c7c7c79e9d9e62615e
+9c9075c8a654e2b236e8b52ce9b52ce9b52be9b52be9b52be9b52ae9b52ae9b529e9b428
+e9b427e9b427e9b326eab425edb82befbb32efba33eeb931ebb72fe6b126ddaa24d0a122
+c1951fad851d9573197d6116664f1253400f44350d3d2f0b3a2d0b3a2d0b3a2d0c3c3011
+3c342433312f5c5c5cb4b4b4cfcfcfcececeb5b4b58f8e8e666666484846524f48565043
+544a35584b2a594615644e11785c138e6d17a6801bbb9120d1a01cc69f42554b369a9a99
+f1f1f1fffffffffffffffffffffffffffffffcfcfcd8d7d78b877ebf9b42c4a253544f42
+dad9dafcfbfc
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffefefefefefefefefefdfcfcfbfcfcfbfafaf9fafafa
+f7f7f6f6f6f6f4f4f4f2f2f2f2f2f2f2f2f2f2f2f2f2f2f1f1f1f1efefeeedececeae9e9
+e5e5e5e1e1e1dedededddddddcdcdcd8d8d8d5d4d4d1d0d0cdcdcdcdcdcdcbcbcac5c5c4
+c3c1c2c3c1c1c8c8c8cacacac7c7c7c6c6c6c6c6c6c8c8c7cac9c9cccacad1d0d0d4d4d4
+d3d3d3d1d1d1d4d4d4dadadae1e1e1e6e6e6e9e9e9e9e9e9e6e6e6e3e3e3e0e0e0dedede
+dddddddbdbdbdadadadad9d9dddcdce3e3e3eaeaeaf1f1f1f7f7f7fbfbfbfcfcfcfdfcfd
+faf9faa3a2a1877c62b59a5ebc9d5cb99c5fb99d60b99e60b99e60b99e60b99e60b99e61
+b99e61b99e61ba9e61b79c61a99360a38e5ea08c609e8b619788619485618d7f5f87795e
+81765d7e745e78705b726b59726b58726b58726b58726b58726b58726a586e6654837659
+d0b26ce6bf66e1bb66e0bb67e0bb68e1bd69e1bd6be2be6ce3bf6fe4c171e4c274e4c376
+e6c579e7c67ce8c880e9ca83eacc87eace8aeacf8be9ce8be8cd8ae7cb88e3c785dfc280
+d8bb7aceb373c3a96bb79d63aa925aa0895397814e917b498c7646897343867141846d3d
+816b3b7465445c55465953455650434f493e4641373d382f36322a504936675836655531
+62532e62522f624f27604a126f55128566179c781bb58c1ccc9d2189744365635fe4e4e4
+fffffffffffffffffffffffffffffffffffffffffffdfdfdb1b1b1998a67deb240655837
+b2b2b1f9f8f9
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffefefefdfffffffffffffffffffffffffffffffefefe
+fdfdfdfcfcfcfbfbfbfbfbfbfcfcfcf9f9f9f9f9f8f6f6f6f5f5f5f1f1f0ededede9e9e9
+e5e5e4e2e2e1dfdfdfdbdbdbd7d7d7d5d5d5d4d4d4d4d4d4d2d3d2d0d0d0d0d0d0d0d0cf
+cdcdcdcbcbcacbcacacecececfcfced2d1d0d3d1d1d7d6d6dededddfdfdfdfdfdfe0e0e0
+e0e0e0e0e0e0dcdcdcd9d9d9d5d5d5d5d5d5dcdcdce4e4e4eeeeeef6f6f6fbfbfbfdfcfd
+f6f5f6aea797d2a635f5ba1af6be28f6bf2ef7bc22f6bb1cf6bb1af6bb1af6bb1af6bc1b
+f6bb1bf6bb1bf6bb1bf6bc1af6bc1bf6bc1bf7bc1cf7bc1cf7bc1cf8bc1cf8bc1ef8bc1e
+f8bd1ef8bd1ff8be22f8bf26f8bf26f8bf27f8bf27f8bf27f8bf27f8bf29f8c02bf8c02d
+f6c033f5c039f5c03cf6c140f6c346f7c44bf7c753f7c95ef7cb6af7cd73f8d17cf8d584
+f9d88df9db96fadfa0fbe2a9fbe4b1fbe7b7fce9bcfceabffceabffdeabdfce9bafce6b3
+fce4abfce1a2fbdd99fbda8ffad787fad37ef9d076f8cd6df4c760eebf53e6b749d9ad3e
+cba034bb9328a9841f967419856616745913664e115b460f523e0c49370a46360c47360e
+47360e47370f53431f6553296950117c5f15937219ad8418b79132584c33969695f4f4f4
+ffffffffffffffffffffffffffffffffffffffffffffffffd8d8d88d887dd2a735877446
+888784f5f4f5
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefefdfdfd
+fcfcfbfcfcfbf9f9f9f9f9f9f7f7f7f6f6f6f5f5f4f5f5f4f5f5f4f4f4f3f2f2f1f0f0ef
+eeeeedededecedededebebeaeaeae9e6e6e5e1e0dfdddcdcd8d8d7d3d3d2d5d4d3d6d6d5
+d7d7d7d6d6d6d3d3d3d0d0d0cfcfcfd2d2d2d9d9d9e3e3e3ecececf4f4f4fafafafdfcfd
+f3f2f3aba290c59d35e1af28e0af2adfad2be3b029e3b028e3af28e4b028e5b128e7b328
+e6b228e6b127e8b328e9b429ebb629ecb729eeb829f0b92af2bb29f3bc29f4bc29f6be29
+f6bf29f7bf29f8bf28f8bf27f8bf27f8bf27f8bf28f8bf28f8c029f8bf2bf8c02cf8c02d
+f8c02ff8c032f8c135f8c239f8c33ef8c544f9c74cf9ca57f9cc65f9ce72fad27afad582
+fad88dfbdd97fce1a0fce3aafce6b2fce8bafdebbffdebc1fdebc1fdebc0fce9bbfce6b4
+fce4abfce1a2fbdc98fad98ef8d484f6ce7af2c970edc363e7bb54dfb247d4a93cc69c31
+b79028a7822296741c846617735813654e115a450e503d0c48370b46350a44330a43320a
+43320a42310a4b3b1464532a644e13765a138d6c18a67f16a5853748402fb0b0b0f9f9f9
+ffffffffffffffffffffffffffffffffffffffffffffffffe8e8e88d8a85caa4428b784b
+7f7d7af4f3f4
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfefdfdfefdfdfefdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefefefffffffefefdfefefdfefefdfffffefefefefdfdfcfdfdfc
+fdfdfcfdfdfdfdfdfdfcfcfbfcfcfbfafafaf9f9f9f7f7f7f4f4f4efefefe9e9e8e5e4e3
+e2e1e1dedfdfdcdcdbdbdbdbdcdcdcdededee5e5e5ebebebf2f2f2f7f7f7fbfbfbfdfcfd
+eeeeee9f9889a8862fbc9120bd9324c19625c59924c59924c49824c79a22ca9c22cb9c23
+c99b22c99b22cb9d23cea024d2a324d6a625daa926deab26e2ae27e5b128e8b328ebb529
+eeb829f2bb2af4bc2bf5be2bf7bf2bf8c02bf8c02bf8c02bf8c02bf8c02cf8c02df8c02e
+f7c031f7c034f7c136f7c23af7c33ff8c548f9c851f9cb5df9ce6bfad075fad47efad787
+fbda92fbdf9dfce2a8fce5b1fde9bafdecc3fdedc8fdeecbfdeecbfdeec9fdecc4fdeabc
+fce6b3fbe3a9fadd9df8d892f6d387f2cd7ceec771e7c065deb556d3ab47c89f3bb79130
+a6832796752085671b745a16664f125b4610523f0e4b390d47360b44330b44330b44330b
+44330b44330b4d3e18615027614b107157138668179f7a15a483324b422fa4a3a3f7f7f7
+ffffffffffffffffffffffffffffffffffffffffffffffffe0e0e08c8881cea53d8a7648
+848380f5f4f5
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefefffffffffffffefefefefefe
+fefefefefefefefdfefdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffefefefdfdfdfdfdfdfbfbfb
+f8f8f8f5f6f6f3f4f4f2f2f2f2f2f2f2f2f2f5f5f5f8f8f8fafafafcfcfcfdfcfdfdfcfd
+f5f4f5aaa8a383724c8a6e258e70219072238f71259173249475249473219a78229f7b22
+9d791e9b781a9f7a19a37e19a9821aaf871bb68c1ebc9120c29622c89a23cd9f24d3a324
+dba925e2af27e8b428edb729f1ba2af3bc2af5be2bf6be2bf7bf2bf8c02cf8c02df8c02f
+f8c031f8c134f8c136f8c33af8c440f9c649f9c953f9cb5ff9ce6dfad077fad481fad88b
+fbdc95fbe0a1fce4acfce7b7fdebc1fdeec8fdefcefdf0d2fdf1d2fdefcffdeecafdebc3
+fbe7b8fae3acf9dea1f7d995f3d188edca7ce8c370dfb964d4ad54c8a146b99438a7842c
+96752486681d765c186850145c471152400f4b3a0d47370c46350b44330b44330b44330b
+44330b44340c5344205b4a205d470e6e5413816416977316a883255f52337b7a78ededed
+ffffffffffffffffffffffffffffffffffffffffffffffffc2c2c28b8270d7aa367c6c41
+9f9e9cf7f6f7
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffefefefefefefefdfdfefdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fefdfefefefefefefefefefefefefefefefefefefefefdfdfefdfdfefdfdfefdfdfefdfd
+fefdfdfefdfdfefdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfdfd
+fefdfdfefdfdfefdfdfefdfdfefdfefefefeffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffefefefefefefdfdfdfdfdfdfdfdfdfefefefefefefefefefefefefefdfefdfcfd
+fdfcfde0dfe09f9e9c7c786d746b596f654e6f654d71674f72685072685074684e6e5f3f
+61512b6150236552206b551c745b1c7c611a86681a8e6e179471179a7618a27d1bac851e
+b78d1fc39722cfa024d9a825e1af27e8b328edb729f0ba29f3bc2bf5bf2df7bf2df7c02e
+f8c031f8c134f8c236f8c33af8c441f9c649f9c953f9cc60f9ce6efad078fad481fad98c
+fbdd97fbe1a3fce4affce9b9fdecc4fdeeccfdf1d2fdf2d6fdf2d6fdf1d3fdefcdfcecc5
+fbe8baf9e3aef7dda3f4d795eece87e8c57ae0bc6dd5b161c9a450b99541a98833977728
+856820765c1a6951155d481254410f4d3b0d48380c46360b45340b44330b44330b44330b
+44330b4738125849265542145b460e6a51127b5f158e6d17a37d1886703a4c4941c1c0c0
+fcfcfcffffffffffffffffffffffffffffffffffffededed989795a58d54d8af48685d43
+cdcdcdfbfafb
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffefefffefefefefefefdfefdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fefdfefffffffffffffffffffffffffffffffffffffffefefffefefffefefffefefffefe
+fffefefffefefffefefefefefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfe
+fefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefdfefefefefffefe
+fffefefffefefffefefffefeffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfd
+fdfcfdfdfcfdf6f5f6dbdadbc2c1c2b6b5b5b5b5b4b7b7b6b7b7b6b9b9b8b5b4b3a09e9d
+8b8a8888878383817c7d7a737872666f6654685b3e58471d65511c6f571a765b147e6114
+88691796741aa6801db58b1fc29622ce9f24d8a725e0ad27e7b329edb82bf1bb2df4bd2d
+f6bf31f7c133f8c236f8c33bf8c442f9c649f9c954f9cc60f9ce6ffad178fad581fad98c
+fbdd98fbe1a4fce5b0fce9bbfdedc4fdefccfdf1d4fef3d7fef3d7fdf2d4fceecefbecc5
+fae7baf7e1aef4dba1efd393e9ca84e0c076d6b368c9a75cbb994ca9883a997a2f866a24
+765d1c6952165f4a135643114e3c0e49380d47360c46360b45340b44330b44330b44330b
+43330b51422056461f4f3c0c5a450f664e11755a148466169572159f7e295c4f325d5c59
+c8c8c8fcfcfcfffffffffffffffffffefefeeaeaeaa3a3a2857a62d3a93da98e4a7b776f
+e8e8e8fdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefdfefdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfcfbfc
+faf9faf6f5f6eeeeeee4e3e4d4d4d4c3c2c3b0aead8785816e6a5f584f3b4a3c1b594718
+634d126c5210785d1387681795731aa47f1cb38a1fc19521cea024dbaa27e3b02aeab62c
+f0bb2ff3be33f6c035f7c23bf7c441f9c649f9c953f9cb60f9ce6efad178fad481fad98c
+fbdd97fbe1a4fce5affce9bafdecc3fdeecbfdf1d2fdf2d5fdf2d5fcf0d2fbedcbfae9c3
+f8e5b8f5deabf0d79eeace8fe2c480d7b871caa962bb9b55ab8b45997b35886d29775e20
+6953195f4a145743124f3d104a390d47370c47360c46360b45340b44330b44330b443309
+4d3d1b5546234c3b0f4e3c0c59450f624c116e55137a5e1587681696731591752c594e33
+5b5a58a4a4a4cececee1e1e1ddddddbfbfbf92918f7d735dbb9740caa44373684ebcbbba
+f8f7f8fdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefdfe
+fefdfefefdfefefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfaf9faecebeccfcfcfb1b0af83817d5d584c
+463c254b3c17594511614a0d6a5211765b14846616937119a6811db88f21c89b24d6a628
+e1af2de9b631efbb34f3bf39f5c240f7c548f9c852f9cb5ef9ce6dfad077fad480fad88a
+fbdc95fbe0a1fce4abfce7b7fceac0fcecc7fcefcdfcf0d0fcefcffbedcdfaebc7f8e7bd
+f5e2b3f0daa5ebd198e2c688d8bb79cbad6abd9e5bac8f4d9a7e3c896e2f7a61246a541b
+604b17584413503e104b3a0f47370d47360c47360c46360b45340b44330b43320a493915
+5647274c3c1348360a4f3d0d57430e5e4910664e116f5513785d14836515906e16917427
+6c5a32655d4d726f697d7b78827f7a7f7867957f4bc59f3ec29d4083744fa09e9beeedee
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffefdfefefdfefefdfefefdfefefdfefdfdfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf9f8f9e7e6e7c8c7c7
+9897955e5b52423926483915503d0c55410c5e4810695112795d158b6b19a07b1db48c21
+c69a26d5a62ce1b031eab836f0bd3ef4c246f7c650f8c95cf9cd6bf9cf75fad37efad787
+fbda92fbde9cfce2a7fce5b1fbe8b9fceac0fcecc5fbecc8faebc7faebc5f8e6bef5e2b6
+f1dcaaebd39de3c98ed8bd7fcbb06fbda160ad91529b80448a71357a62296d5720614c18
+5946155240114c3b1049380e47360c47360c46360b45350b44330b43320a493916504122
+4a3a1446350a48370a4e3b0b54400b59440b5e470b634b0c6a510d72580e7d5f0f8a690e
+94721c9474219275278e7949a3863ebb9531c49f43ad924f7f7459a2a09deae9e9fcfbfc
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffefefefdfefefdfefefdfe
+fefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefefe
+fdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfbfafb
+efeeefd3d2d2969594514d4340371f49390e4a380a4e3c0d58430f654e12755a15896a19
+9f7b1eb48c25c69b2ad6a830e1b239eaba42f0c04bf4c657f7ca66f8cd71f9d179fad583
+fad98dfbdc96fbdfa0fbe2a8fbe4b0fae7b8fbe8bcfae8bef9e7bdf7e5baf3e0b3f0dbab
+e9d39fe2c992d7bd83cbb074bda164ad92569d83498b733b7c642e6e5823634e1c5a4716
+5441134e3d114a390f47370d47360c47360c46360b45340b42330b4b3c1a534424483811
+4534074a390a4b3a0d4d3c124e3f1850401e50411f4a3d1e493d1e4f43235648275f502a
+68582e725f3279663676684782704589764782765a8f8b82c2c1c0edecedfcfbfcfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffefffffefffffefffefdfefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fefdfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfcfbfcf0eff0cccbcb73716d37322647381547360847350b4d3b0e56430f634d12
+755b16896b1c9f7c22b48d28c69b31d5a93ae1b343e9bc4feec25df2c96bf6cc74f7d17d
+f8d586f9d88ff9db98f9dea0f9e0a7f9e2adf8e2b0f6e0b1f3deb0f1dcadecd6a4e6cf9b
+dec690d4bc83c8ae74baa166ab92579b824a8b733e7c65326f592764501f5c4919564315
+513f114d3c1149380e47370d47360c47360c47360a48360b4b3c1a544523504017493b1c
+3f361d322b1b302a1e3c372d5b574e66635d7977728d8c889795929b99969f9d9aa19f9c
+a1a09ca2a09ca19f9a9f9d99a6a4a0c2c1bed8d7d7e9e8e9f8f7f8fdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffffffffffffffffffffffffffffffffffffffffefefefefefefefefe
+fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe
+fffefeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfafafaedecec9c9b9b45423b41372048370a47350949380c4e3c0e
+594510664f14775d198b6d1ea07d25b48e2ec59d39d2a944dcb351e4bd5fe9c26bedc773
+f0cb7bf1d084f2d38cf3d593f2d799f2d99ff1d9a1eed6a1ebd4a0e7cf9be1c993d7c089
+ceb67ec2aa71b69d64a78f5799804b89723f7c6635705b2b6651215e4a1b584617534113
+4e3d114c3b1049380e47370d47360c4736094536104137224a422e3c352529251d5a5852
+80807da8a7a6c7c7c7dadadae8e7e7edecedf0efeff2f2f2f4f3f4f4f3f4f5f4f5f5f4f5
+f5f4f5f5f4f5f4f3f4f4f3f4f5f4f5f9f8f9fcfbfcfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfefdfefefefefaf9fad4d4d45554532f2a204b3b1747350847370b
+49390d513f0f5b4713675016765c1b886b219a7a2aab8a34ba9640c6a14dd0ac5bd6b363
+dcb96ce0be74e2c37ce4c582e4c687e3c78be1c88ddec68ddac18ad4bd85cbb37dc2aa74
+b89f69ab945e9e8753917a48846e3e7964356e592b6551235e4b1d594619554315513f12
+4d3c114a390f48370d47360b47370b413417221e151414135554539e9e9dd8d8d8f4f3f4
+f9f8f9faf9fafcfbfcfcfbfcfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefefeffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfefdfeffffffffffffffffffffffffffffff919191484541453c2449380e
+47360b48370c4d3b0f5341115b4714665018735a1d8066258f722d9c7e37a78942b0924e
+b89956bfa05dc4a765c7ac6ac9af6fcaaf73c8ae74c4ab73bfa770b9a16cb09863a8905d
+9c8654927c4b8872437e683b7460346c592c665225604c1f5a481a5643165341134f3e11
+4c3b0f4a390d47360c443613342d20333231767676cfcfcff7f7f7fdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfefdfefffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffeff
+fffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffffefffefefe
+fdfdfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfdfdfefefefffefefffefffffefffffefffffefffffefffbfafbcfcecf6a6a683e3930
+473b1e47370e49380d4b3a0e4e3d105542125c4816624e1a6c551f765f267e672d876f36
+90763f967d469d844ca28a51a58c55a58d57a68e59a48d58a08a579a8453937e4e8e7849
+8670437f6a3e776337705d316a572b645224604d205b481b574417544114513f114e3c10
+4a390e4335113a322134332f656464cac9caf9f8f9fdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdefeeefa7a6a6
+5e5d5a484236473a1d4838114d3b0f4f3d0f5340125643145b4718614d1d6652216b5727
+715c2d7761337d6738826c3c856f40887142897244887244867143836e417f6b3e7b673b
+776338725f346d5a2f68552a645124604d1f5c491b5845175643145341134c3b11413413
+3b33243e3c39636262b8b7b8f4f3f4fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfbfafb
+e1e1e29e9e9e62615f4b463a453a204839144f3e145442135643145845165c491a5f4c1e
+624f226753276b592c6f5c2f725e32746035766136766237766137756136725f34705d31
+6d5a2f6a572b665326635021604d1d5d4a1a594619534218493b163d3219413b2f474745
+706f6fbababaf2f1f2fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfaf9fadddcdda8a7a77674735a564e4b433243371c493b1954441b58471b5b481a
+5e4b1b604d1e614f2264512567542869562a6a572c6b582d6c582d6b582d6a572b685528
+675325655123614e225d4b2255451f483b1b3e341c47403253514b636261929192cdcccd
+f6f5f6fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfcfbfcecebecc4c4c49b9b9a767574615e59554f413e3622453a20
+4c3f205a4b2665532a64522a64522966542a68562b68562c67552c65532d63522b635129
+544627493d22433923463e2e56524861605c727271989898c2c2c2eae9eafbfafbfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf9f9fae7e7e7cdcccdb3b3b3919090848381
+6765615b523f8c753e8a7135796536715e346a593165542f5f502c5a4a28594821534932
+4947417978758a8a899d9c9cbab9b9d2d1d2eaeaeafaf9fafdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfcfbfcf6f5f6eaeaea
+cdcdcd8e8a837a6b4a977f46987e4687703f7662376655305d4e2a56482b443a23444039
+aaaaaae3e2e3f1f0f1f9f8f9fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+faf9fad8d7d785827c8e7843c59e3aab882f876b2767521f554316453b27474542b5b5b4
+f4f3f4fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdf6f6f7b0ada99c813cd3a224af861d8164165e48104a3808362e1b777777f8f7f8
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdf2f1f2aeaba3a7893ad2a120a7811c795e1458430f4635083b311b737271fcfbfc
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdeaeaeaaaa598b3913ad2a11fa6801d775c1455410e463408463819353432f6f5f6
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfddededea59b85c7a03ad4a31ea8821d795d1456430e46350a473711242220e3e3e3
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdd4d3d2a39470d8ac39d6a41fad861e7d611659440f48360b4735092d2a22bcbcbc
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+faf9facdcbc7af985ce8b52ddba823b58c1f8667175f491049380c4635073730218c8b8b
+fcfbfcfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+f0eff0b6b1a5b79741f1b923dfac26bf9321927019674f114c3b0d44330842351b5d5b59
+f4f3f4fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+e2e1e1a99e83d7ac3ef2ba22e4b027c99b239e7a1b715613523f0e45340b44350c36332e
+cecdcefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf9f8f9
+cbcac6a4905af0ba2ef4bb26e8b328d1a124aa831e7b5f1559440f48360b4434083d3626
+8a8a89faf9fafdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdedeced
+aba596bf9d46f7be22f5bd2aecb629d8a725b58b1f876817614b104a380c443309423415
+53504ddddcddfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfaf9fad8d6d4
+ad9d73ebb833f7be25f6be2befb829ddab27be93219270196850124d3b0d44330a42330a
+40392d999897faf9fafdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf0efefa8a293
+cfac55f8be22f8bf2af6be2bf1ba2ae2af27c599229b781b70561354400e46350b44330a
+413414575450cecdcefdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf9f8f9b9b7b4a5905b
+f0ba2af8bf27f8c02bf6be2bf1bb2ae5b127cc9d23a47f1c785c1559450f47370c44330b
+44330a443b2383827feae9eafdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdd5d5d4b0a485e8b632
+f8be23f8c02bf8c02bf7bf2bf3bc2ae9b428d2a224ad851d8164175f491049380c45340b
+44330a44350f504839a3a1a0f5f5f6fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfddbdbdbaca490e5b63ef8bd21
+f8c02bf8c02bf8c02bf7bf2bf4bd2aebb629d8a625b68c1f8a6a17644d104c3a0d46350b
+44330b44340a433511524c3fabaaa8f6f5f6fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfcfbfcf9f7f8c1c0beb3a992ecba37f8bd20f8c02b
+f8c02bf8c02bf8c02bf7bf2bf5be2aeeb829dcaa26bd93219472196b5212503e0d46350b
+44330b46350b4635094435105048379a9894e6e6e6fbfafbfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfbfafbf8f8f8f6f5f5f2f1f0d8d5d1b0a897b59c61f0ba2af8bd21f8c02bf8c02b
+f8c02bf8c02bf7bf2bf6be2bf4bd2aedb729deac27c498229d791b73591456420f47360b
+44330b45340b46350b46350a44340c493d2369655ab4b2b0e6e5e5f3f2f2f8f7f8fbfafb
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfcfbfc
+f4f3f4dfdcd8cec9bdc2baa6bbae8abaa061deb23ff5bc21f8bf25f8c02bf8c02bf8c02b
+f8c02bf8c02bf7bf2bf5bd2bf2bb2aeab528dcaa26c59822a37e1c7c60155e48104c3b0d
+46350b44330b46350b46350b45340a453409423311382f1a615a4a908b83b3b1adc6c5c3
+e7e6e6fcfbfcfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf4f3f4
+c9c5bcad996ac5a04bdbae43efb92df7bc1df8bd1ff8bf26f8bf27f8bf26f8bf26f8bf26
+f8bf26f7be26f6bd26f3ba25ecb624e2ae23d3a221bd921da17c19816314644c0f513e0c
+47360a45340a45340a46350a46350a46350a46350946350743330a4032123c3115372f1b
+76736febeaebfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdf1f0f1ecebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebececebececebec
+ecebececececedededeeedeeeeeeeeefeeeff0eff0f1f0f1f2f1f2f3f3f3f5f4f5d6d6d6
+968d79c29d48deac2eddad2edeae2fdeae31deae32deae32deae32deaf32deaf32deaf32
+deae32ddae32dcac31d6a730cba02dbd942aad87259b792186691d71581a5a46144b3b10
+41330e3f310e3f310e3f310e3f310e3f310e3f310e3f310e3f320d3f310c3e300c41320d
+33302aacacacf5f4f5f4f3f4f2f2f2f1f0f1f0eff0efeeefeeeeeeeeedeeedecedececec
+ececececebececebececebececebececebececebececebececebececebececebececebec
+ecebececebececebececebececebececebececebececebececebececebecf8f7f8fdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd9e9d9e787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+7878787979797a7a7a7b7b7b7c7c7c7d7d7d7f7f7f8080808282828585858787876f6f6f
+413e385a4e36675837655737655737655737655737655737655737655837655837655837
+6557376456366154355d5133574c3050452c483e274038233a321f332c1c282316211d12
+1d19101c180f1c180f1c180f1c180f1c180f1c180f1c180f1c180f1c180f1c180f1d190f
+171613504f4f8787878686868383838181817f7f7f7d7d7d7c7c7c7b7b7b797979787878
+787878787878787878787878787878787878787878787878787878787878787878787878
+787878787878787878787878787878787878787878787878787878777777cfcfcffbfafb
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd8b8a8b5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5e5e5e5e5e5e6060606060605e5e5e5d5d5d5d5d5d5d5d5d5c5c5c5c5c5c5c5c5c5d5d5d
+5d5d5d5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5b5b5b5b5b5b5c5c5c
+5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5c5c5c5c5c5c5c5c5c5c5c5c5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d
+5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5b5b5bc5c5c5faf9fa
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdeaeaeae3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e4e3e4e5e4e5e5e4e5e3e3e3e3e2e3e3e2e3e2e1e2e2e1e2e2e1e2e2e1e2e2e2e2
+e2e2e2e2e1e2e1e1e1e2e1e2e1e1e1e2e1e2e2e1e2e2e1e2e2e1e2e1e0e1e1e0e1e1e1e1
+e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e2e1e2e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e2e1e2e2e1e2e2e1e2e2e1e2e2e2e2e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3
+e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e3e2e3e2e2e2e1e0e1f4f3f4fdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfdfdfcfd
+fdfcfdfdfcfd
+
+showpage
+
+% stop using temporary dictionary
+end
+
+% restore original state
+origstate restore
+
+%%Trailer
diff --git a/doc/DevelopersGuide/bldtree.eps b/doc/DevelopersGuide/bldtree.eps
new file mode 100644 (file)
index 0000000..ddb7158
--- /dev/null
@@ -0,0 +1,366 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: bldtree.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3c
+%%CreationDate: Thu Jul 26 11:57:29 2001
+%%For: tajchman@nikyo (Marc Tajchman - SFME/LGLS)
+%%BoundingBox: 0 0 437 287
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 287 moveto 0 0 lineto 437 0 lineto 437 287 lineto closepath clip newpath
+-46.0 335.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 2475 2025 m 3450 2025 l 3450 2475 l 2475 2475 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+2625 2325 m
+gs 1 -1 sc (Module 1) col0 sh gr
+% Polyline
+n 3000 3900 m 3900 3900 l 3900 4350 l 3000 4350 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+3150 4200 m
+gs 1 -1 sc (src) col0 sh gr
+% Polyline
+n 1725 3900 m 2700 3900 l 2700 4350 l 1725 4350 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+1800 4200 m
+gs 1 -1 sc (resources) col0 sh gr
+% Polyline
+n 1275 2025 m 2250 2025 l 2250 2475 l 1275 2475 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+1575 2325 m
+gs 1 -1 sc (inc) col0 sh gr
+% Polyline
+n 1080 2775 m 900 2775 900 3270 180 arcto 4 {pop} repeat
+  900 3450 1995 3450 180 arcto 4 {pop} repeat
+  2175 3450 2175 2955 180 arcto 4 {pop} repeat
+  2175 2775 1080 2775 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+1050 3075 m
+gs 1 -1 sc (Exported) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+1050 3300 m
+gs 1 -1 sc (header files) col0 sh gr
+% Polyline
+n 5040 4725 m 4800 4725 4800 5310 240 arcto 4 {pop} repeat
+  4800 5550 5910 5550 240 arcto 4 {pop} repeat
+  6150 5550 6150 4965 240 arcto 4 {pop} repeat
+  6150 4725 5040 4725 240 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+5025 4950 m
+gs 1 -1 sc (Object files) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+5025 5175 m
+gs 1 -1 sc (libraries) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+5025 5400 m
+gs 1 -1 sc (executables) col0 sh gr
+% Polyline
+n 4125 2025 m 5175 2025 l 5175 2475 l 4125 2475 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+4275 2325 m
+gs 1 -1 sc (resources) col0 sh gr
+% Polyline
+n 5325 2025 m 6375 2025 l 6375 2475 l 5325 2475 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+5550 2325 m
+gs 1 -1 sc (bin) col0 sh gr
+% Polyline
+n 6525 2025 m 7575 2025 l 7575 2475 l 6525 2475 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+6750 2325 m
+gs 1 -1 sc (lib) col0 sh gr
+% Polyline
+n 6330 975 m 6150 975 6150 1170 180 arcto 4 {pop} repeat
+  6150 1350 7695 1350 180 arcto 4 {pop} repeat
+  7875 1350 7875 1155 180 arcto 4 {pop} repeat
+  7875 975 6330 975 180 arcto 4 {pop} repeat
+ cp gs col2 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+6375 1200 m
+gs 1 -1 sc (Links to libraries) col0 sh gr
+% Polyline
+n 3705 2850 m 3525 2850 3525 3345 180 arcto 4 {pop} repeat
+  3525 3525 5670 3525 180 arcto 4 {pop} repeat
+  5850 3525 5850 3030 180 arcto 4 {pop} repeat
+  5850 2850 3705 2850 180 arcto 4 {pop} repeat
+ cp gs col2 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+3675 3150 m
+gs 1 -1 sc (Link to corresponding) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+3675 3375 m
+gs 1 -1 sc (directories in source tree) col0 sh gr
+% Polyline
+n 6255 2850 m 6075 2850 6075 3345 180 arcto 4 {pop} repeat
+  6075 3525 7845 3525 180 arcto 4 {pop} repeat
+  8025 3525 8025 3030 180 arcto 4 {pop} repeat
+  8025 2850 6255 2850 180 arcto 4 {pop} repeat
+ cp gs col2 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+6225 3150 m
+gs 1 -1 sc (Shell scripts) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+6225 3375 m
+gs 1 -1 sc (Links to executables) col0 sh gr
+% Polyline
+n 2700 5100 m 3675 5100 l 3675 5550 l 2700 5550 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+2775 5400 m
+gs 1 -1 sc (Unit 1) col0 sh gr
+% Polyline
+n 3675 825 m 5325 825 l 5325 1425 l 3675 1425 l
+ cp gs col0 s gr 
+% Polyline
+n 4725 1425 m
+ 4875 2025 l gs col0 s gr 
+% Polyline
+n 3975 1425 m
+ 1800 2025 l gs col0 s gr 
+% Polyline
+n 5100 1425 m
+ 7050 2025 l gs col0 s gr 
+% Polyline
+n 3000 2025 m
+ 4200 1425 l gs col0 s gr 
+% Polyline
+ [60] 0 sd
+n 3675 4350 m
+ 4425 5025 l gs col0 s gr  [] 0 sd
+% Polyline
+ [60] 0 sd
+n 3450 4350 m
+ 3900 5025 l gs col0 s gr  [] 0 sd
+% Polyline
+ [60] 0 sd
+n 4350 1425 m
+ 3675 2025 l gs col0 s gr  [] 0 sd
+% Polyline
+ [60] 0 sd
+n 4500 1425 m
+ 3975 2025 l gs col0 s gr  [] 0 sd
+% Polyline
+n 5100 1425 m
+ 5625 2025 l gs col0 s gr 
+% Polyline
+n 3300 4350 m
+ 3150 5100 l gs col0 s gr 
+% Polyline
+n 2700 2475 m
+ 2400 3900 l gs col0 s gr 
+% Polyline
+n 3075 2475 m
+ 3375 3900 l gs col0 s gr 
+% Polyline
+2 slj
+gs  clippath
+1287 2295 m 1292 2205 l 1143 2198 l 1254 2249 l 1139 2288 l cp
+eoclip
+n 900 3225 m 899 3223 l 898 3220 l 896 3213 l 893 3202 l 888 3188 l
+ 882 3169 l 875 3146 l 868 3120 l 859 3091 l 850 3058 l
+ 841 3024 l 832 2988 l 823 2951 l 815 2914 l 808 2875 l
+ 801 2836 l 796 2797 l 792 2758 l 790 2718 l 790 2677 l
+ 792 2637 l 796 2595 l 802 2554 l 812 2514 l 825 2475 l
+ 842 2436 l 862 2402 l 884 2373 l 907 2348 l 931 2327 l
+ 956 2309 l 981 2295 l 1007 2283 l 1034 2274 l 1060 2267 l
+ 1087 2261 l 1113 2257 l 1139 2254 l 1164 2252 l 1187 2250 l
+ 1209 2250 l 1227 2249 l 1243 2249 l 1255 2249 l
+ 1275 2250 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 1139 2288 m 1254 2249 l 1143 2198 l 1164 2244 l 1139 2288 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+7160 2051 m 7247 2027 l 7207 1884 l 7194 2005 l 7120 1908 l cp
+eoclip
+n 7125 1350 m 7125 1352 l 7124 1356 l 7123 1362 l 7122 1372 l 7121 1385 l
+ 7119 1400 l 7118 1418 l 7117 1437 l 7116 1459 l 7115 1482 l
+ 7115 1509 l 7116 1538 l 7118 1571 l 7121 1609 l 7125 1650 l
+ 7130 1688 l 7135 1724 l 7140 1758 l 7146 1790 l 7151 1820 l
+ 7157 1848 l 7163 1875 l 7169 1900 l 7174 1924 l 7180 1947 l
+ 7185 1967 l 7189 1985 l 7193 2000 l
+ 7200 2025 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 7120 1908 m 7194 2005 l 7207 1884 l 7169 1918 l 7120 1908 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+2055 3883 m 2125 3939 l 2218 3824 l 2113 3884 l 2148 3768 l cp
+eoclip
+n 3525 3150 m 3524 3150 l 3522 3149 l 3517 3147 l 3510 3145 l 3501 3142 l
+ 3489 3139 l 3474 3135 l 3456 3130 l 3436 3126 l 3413 3121 l
+ 3389 3116 l 3363 3112 l 3336 3109 l 3307 3107 l 3276 3106 l
+ 3244 3106 l 3211 3109 l 3175 3113 l 3137 3119 l 3096 3128 l
+ 3053 3140 l 3006 3156 l 2957 3175 l 2904 3198 l 2850 3225 l
+ 2803 3251 l 2756 3279 l 2710 3308 l 2667 3338 l 2625 3369 l
+ 2586 3399 l 2548 3430 l 2512 3461 l 2477 3491 l 2444 3522 l
+ 2412 3553 l 2381 3584 l 2351 3615 l 2322 3645 l 2295 3675 l
+ 2268 3704 l 2243 3733 l 2219 3760 l 2197 3785 l 2177 3808 l
+ 2159 3829 l 2143 3848 l 2130 3863 l 2120 3876 l 2112 3885 l
+
+ 2100 3900 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 2148 3768 m 2113 3884 l 2218 3824 l 2169 3813 l 2148 3768 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+4154 2287 m 4124 2202 l 3983 2251 l 4105 2257 l 4013 2336 l cp
+eoclip
+n 3525 3150 m 3524 3149 l 3523 3146 l 3521 3141 l 3517 3133 l 3512 3122 l
+ 3506 3109 l 3499 3092 l 3492 3073 l 3484 3052 l 3476 3029 l
+ 3469 3005 l 3462 2979 l 3456 2952 l 3451 2925 l 3449 2897 l
+ 3447 2867 l 3449 2837 l 3452 2805 l 3459 2772 l 3469 2737 l
+ 3484 2700 l 3502 2663 l 3525 2625 l 3550 2591 l 3577 2559 l
+ 3606 2529 l 3635 2501 l 3666 2475 l 3697 2452 l 3728 2431 l
+ 3760 2411 l 3791 2392 l 3823 2375 l 3855 2359 l 3887 2344 l
+ 3919 2330 l 3950 2317 l 3979 2304 l 4007 2293 l 4033 2283 l
+ 4056 2275 l 4076 2267 l 4092 2261 l 4105 2257 l
+ 4125 2250 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 4013 2336 m 4105 2257 l 3983 2251 l 4020 2286 l 4013 2336 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+3657 5355 m 3662 5445 l 3810 5437 l 3696 5399 l 3805 5347 l cp
+eoclip
+n 4800 5175 m 4799 5176 l 4796 5177 l 4791 5180 l 4784 5184 l 4774 5189 l
+ 4761 5195 l 4746 5203 l 4728 5211 l 4709 5220 l 4687 5229 l
+ 4663 5238 l 4637 5248 l 4608 5258 l 4576 5269 l 4541 5279 l
+ 4500 5290 l 4455 5302 l 4405 5313 l 4350 5325 l 4306 5333 l
+ 4263 5341 l 4220 5348 l 4179 5355 l 4139 5360 l 4101 5365 l
+ 4064 5370 l 4028 5374 l 3993 5377 l 3960 5380 l 3927 5383 l
+ 3896 5386 l 3865 5388 l 3835 5390 l 3808 5392 l 3782 5394 l
+ 3758 5395 l 3737 5397 l 3719 5398 l 3704 5398 l 3693 5399 l
+
+ 3675 5400 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 3805 5347 m 3696 5399 l 3810 5437 l 3785 5394 l 3805 5347 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+5786 2428 m 5738 2505 l 5864 2584 l 5793 2486 l 5912 2508 l cp
+eoclip
+n 6450 2850 m 6449 2849 l 6446 2848 l 6441 2846 l 6434 2843 l 6424 2839 l
+ 6412 2833 l 6398 2827 l 6382 2820 l 6365 2811 l 6346 2803 l
+ 6326 2793 l 6303 2782 l 6279 2769 l 6251 2755 l 6221 2739 l
+ 6187 2720 l 6150 2700 l 6116 2681 l 6083 2662 l 6052 2644 l
+ 6022 2627 l 5995 2611 l 5969 2595 l 5944 2580 l 5920 2566 l
+ 5897 2552 l 5876 2538 l 5855 2526 l 5837 2514 l 5820 2503 l
+ 5806 2494 l 5794 2487 l
+ 5775 2475 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 5912 2508 m 5793 2486 l 5864 2584 l 5869 2534 l 5912 2508 l 
+ cp gs 0.00 setgray ef gr  col0 s
+/Times-Roman ff 180.00 scf sf
+3825 1200 m
+gs 1 -1 sc (Root Build Tree) col0 sh gr
+$F2psEnd
+rs
diff --git a/doc/DevelopersGuide/bldtree.fig b/doc/DevelopersGuide/bldtree.fig
new file mode 100644 (file)
index 0000000..6f26828
--- /dev/null
@@ -0,0 +1,130 @@
+#FIG 3.2
+Portrait
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 2475 2025 3450 2475
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        2475 2025 3450 2025 3450 2475 2475 2475 2475 2025
+4 0 0 50 0 1 12 0.0000 0 135 705 2625 2325 Module 1\001
+-6
+6 3000 3900 3900 4350
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        3000 3900 3900 3900 3900 4350 3000 4350 3000 3900
+4 0 0 50 0 1 12 0.0000 0 90 240 3150 4200 src\001
+-6
+6 1725 3900 2700 4350
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        1725 3900 2700 3900 2700 4350 1725 4350 1725 3900
+4 0 0 50 0 1 12 0.0000 0 90 750 1800 4200 resources\001
+-6
+6 1275 2025 2250 2475
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        1275 2025 2250 2025 2250 2475 1275 2475 1275 2025
+4 0 0 50 0 1 12 0.0000 0 135 225 1575 2325 inc\001
+-6
+6 825 2700 2250 3525
+2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5
+        2175 3450 900 3450 900 2775 2175 2775 2175 3450
+4 0 0 50 0 2 12 0.0000 0 180 735 1050 3075 Exported\001
+4 0 0 50 0 2 12 0.0000 0 135 960 1050 3300 header files\001
+-6
+6 4725 4650 6225 5625
+2 4 0 2 0 6 50 0 20 0.000 0 0 16 0 0 5
+        6150 5550 4800 5550 4800 4725 6150 4725 6150 5550
+4 0 0 50 0 2 12 0.0000 4 180 915 5025 4950 Object files\001
+4 0 0 50 0 2 12 0.0000 4 135 675 5025 5175 libraries\001
+4 0 0 50 0 2 12 0.0000 0 135 975 5025 5400 executables\001
+-6
+6 4125 2025 5175 2475
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        4125 2025 5175 2025 5175 2475 4125 2475 4125 2025
+4 0 0 50 0 0 12 0.0000 4 90 750 4275 2325 resources\001
+-6
+6 5325 2025 6375 2475
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        5325 2025 6375 2025 6375 2475 5325 2475 5325 2025
+4 0 0 50 0 0 12 0.0000 4 135 225 5550 2325 bin\001
+-6
+6 6525 2025 7575 2475
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        6525 2025 7575 2025 7575 2475 6525 2475 6525 2025
+4 0 0 50 0 0 12 0.0000 4 135 180 6750 2325 lib\001
+-6
+6 6075 900 7950 1425
+2 4 0 2 0 2 50 0 20 0.000 0 0 12 0 0 5
+        7875 1350 6150 1350 6150 975 7875 975 7875 1350
+4 0 0 50 0 2 12 0.0000 4 135 1380 6375 1200 Links to libraries\001
+-6
+6 3450 2775 5925 3600
+2 4 0 2 0 2 50 0 20 0.000 0 0 12 0 0 5
+        5850 3525 3525 3525 3525 2850 5850 2850 5850 3525
+4 0 0 50 0 2 12 0.0000 0 180 1755 3675 3150 Link to corresponding\001
+4 0 0 50 0 2 12 0.0000 0 135 2055 3675 3375 directories in source tree\001
+-6
+6 6000 2775 8100 3600
+2 4 0 2 0 2 50 0 20 0.000 0 0 12 0 0 5
+        8025 3525 6075 3525 6075 2850 8025 2850 8025 3525
+4 0 0 50 0 2 12 0.0000 0 180 975 6225 3150 Shell scripts\001
+4 0 0 50 0 2 12 0.0000 0 135 1680 6225 3375 Links to executables\001
+-6
+6 2700 5100 3675 5550
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        2700 5100 3675 5100 3675 5550 2700 5550 2700 5100
+4 0 0 50 0 1 12 0.0000 0 135 465 2775 5400 Unit 1\001
+-6
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        3675 825 5325 825 5325 1425 3675 1425 3675 825
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        4725 1425 4875 2025
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        3975 1425 1800 2025
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        5100 1425 7050 2025
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        3000 2025 4200 1425
+2 1 1 2 0 7 50 0 -1 4.000 0 0 -1 0 0 2
+        3675 4350 4425 5025
+2 1 1 2 0 7 50 0 -1 4.000 0 0 -1 0 0 2
+        3450 4350 3900 5025
+2 1 1 2 0 7 50 0 -1 4.000 0 0 -1 0 0 2
+        4350 1425 3675 2025
+2 1 1 2 0 7 50 0 -1 4.000 0 0 -1 0 0 2
+        4500 1425 3975 2025
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        5100 1425 5625 2025
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        3300 4350 3150 5100
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        2700 2475 2400 3900
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        3075 2475 3375 3900
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       2 1 2.00 90.00 90.00
+        900 3225 825 2475 1275 2250
+        0.000 -1.000 0.000
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       2 1 2.00 90.00 90.00
+        7125 1350 7125 1650 7200 2025
+        0.000 -1.000 0.000
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       2 1 2.00 90.00 90.00
+        3525 3150 2850 3225 2100 3900
+        0.000 -1.000 0.000
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       2 1 2.00 90.00 90.00
+        3525 3150 3525 2625 4125 2250
+        0.000 -1.000 0.000
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       2 1 2.00 90.00 90.00
+        4800 5175 4350 5325 3675 5400
+        0.000 -1.000 0.000
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       2 1 2.00 90.00 90.00
+        6450 2850 6150 2700 5775 2475
+        0.000 -1.000 0.000
+4 0 0 50 0 1 12 0.0000 0 135 1185 3825 1200 Root Build Tree\001
diff --git a/doc/DevelopersGuide/bldtree.pdf b/doc/DevelopersGuide/bldtree.pdf
new file mode 100644 (file)
index 0000000..bb33b29
Binary files /dev/null and b/doc/DevelopersGuide/bldtree.pdf differ
diff --git a/doc/DevelopersGuide/makefile.skel b/doc/DevelopersGuide/makefile.skel
new file mode 100644 (file)
index 0000000..87f9594
--- /dev/null
@@ -0,0 +1,40 @@
+# begin copy here ==========================================
+
+top_srcdir=@top_srcdir@
+top_builddir=../../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@
+
+@COMMENCE@
+
+# Libraries targets
+LIB = 
+LIB_SRC = 
+LIB_MOC = 
+LIB_CLIENT_IDL = 
+LIB_SERVER_IDL = 
+
+# Executable targets
+BIN = 
+BIN_SRC = 
+BIN_MOC = 
+BIN_CLIENT_IDL = 
+BIN_SERVER_IDL = 
+# exported header files 
+EXPORT_HEADERS = 
+
+# exported python executable files
+EXPORT_PYSCRIPTS = 
+
+# list of files in resources directory (copy when do make install)
+RESOURCES_FILES = 
+
+# po ressources files (to transform them in qm file) :
+PO_FILES = 
+
+# put here additional rules, or extra compiler options ...
+
+@CONCLUDE@
+
+# end copy here ============================================
diff --git a/doc/DevelopersGuide/makefile_own.skel b/doc/DevelopersGuide/makefile_own.skel
new file mode 100644 (file)
index 0000000..2e7a9ae
--- /dev/null
@@ -0,0 +1,10 @@
+# begin copy here ==========================================
+
+top_srcdir=@top_srcdir@
+top_builddir=../../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@
+
+@COMMENCE@
+
+# end copy here ============================================
diff --git a/doc/DevelopersGuide/srctree_module.eps b/doc/DevelopersGuide/srctree_module.eps
new file mode 100644 (file)
index 0000000..d6616b9
--- /dev/null
@@ -0,0 +1,364 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: srctree_module.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3c
+%%CreationDate: Thu Jul 26 11:57:52 2001
+%%For: tajchman@nikyo (Marc Tajchman - SFME/LGLS)
+%%BoundingBox: 0 0 405 274
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 274 moveto 0 0 lineto 405 0 lineto 405 274 lineto closepath clip newpath
+-33.0 371.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 2925 5700 m 3825 5700 l 3825 6150 l 2925 6150 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+3075 6000 m
+gs 1 -1 sc (src) col0 sh gr
+% Polyline
+n 1650 5700 m 2625 5700 l 2625 6150 l 1650 6150 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+1725 6000 m
+gs 1 -1 sc (resources) col0 sh gr
+% Polyline
+n 1200 3825 m 2175 3825 l 2175 4275 l 1200 4275 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+1500 4125 m
+gs 1 -1 sc (idl) col0 sh gr
+% Polyline
+n 2400 3825 m 3600 3825 l 3600 4275 l 2400 4275 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+2550 4125 m
+gs 1 -1 sc (New module) col0 sh gr
+% Polyline
+n 1005 2475 m 825 2475 825 3195 180 arcto 4 {pop} repeat
+  825 3375 2295 3375 180 arcto 4 {pop} repeat
+  2475 3375 2475 2655 180 arcto 4 {pop} repeat
+  2475 2475 1005 2475 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+975 2775 m
+gs 1 -1 sc (Run reconfigure) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+975 3000 m
+gs 1 -1 sc (script or edit) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+975 3225 m
+gs 1 -1 sc (configure.in file) col0 sh gr
+% Polyline
+n 3150 2625 m 4800 2625 l 4800 3225 l 3150 3225 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+3300 3000 m
+gs 1 -1 sc (Root Source Tree) col0 sh gr
+% Polyline
+n 3825 3825 m 4875 3825 l 4875 4275 l 3825 4275 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+3975 4125 m
+gs 1 -1 sc (resources) col0 sh gr
+% Polyline
+n 5025 3825 m 6075 3825 l 6075 4275 l 5025 4275 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+5250 4125 m
+gs 1 -1 sc (bin) col0 sh gr
+% Polyline
+n 4350 3225 m
+ 4350 3825 l gs col0 s gr 
+% Polyline
+n 3450 3225 m
+ 1725 3825 l gs col0 s gr 
+% Polyline
+n 2625 4275 m
+ 2325 5700 l gs col0 s gr 
+% Polyline
+n 4575 3225 m
+ 5400 3825 l gs col0 s gr 
+% Polyline
+n 2925 3825 m
+ 3675 3225 l gs col0 s gr 
+% Polyline
+n 3139 4261 m
+ 3439 5686 l gs col0 s gr 
+% Polyline
+gs  clippath
+3159 3023 m 3179 2935 l 3034 2902 l 3135 2971 l 3015 2990 l cp
+eoclip
+n 2480 2826 m
+ 3155 2976 l gs col0 s gr gr
+
+% arrowhead
+n 3015 2990 m 3135 2971 l 3034 2902 l 3047 2951 l 3015 2990 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+n 783 4753 m 588 4753 588 5177 195 arcto 4 {pop} repeat
+  588 5372 1768 5372 195 arcto 4 {pop} repeat
+  1963 5372 1963 4948 195 arcto 4 {pop} repeat
+  1963 4753 783 4753 195 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 4605 4575 m 4425 4575 4425 5070 180 arcto 4 {pop} repeat
+  4425 5250 6045 5250 180 arcto 4 {pop} repeat
+  6225 5250 6225 4755 180 arcto 4 {pop} repeat
+  6225 4575 4605 4575 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 5580 2700 m 5400 2700 5400 3195 180 arcto 4 {pop} repeat
+  5400 3375 7020 3375 180 arcto 4 {pop} repeat
+  7200 3375 7200 2880 180 arcto 4 {pop} repeat
+  7200 2700 5580 2700 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 5655 1650 m 5475 1650 5475 2145 180 arcto 4 {pop} repeat
+  5475 2325 7095 2325 180 arcto 4 {pop} repeat
+  7275 2325 7275 1830 180 arcto 4 {pop} repeat
+  7275 1650 5655 1650 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+% Polyline
+2 slj
+gs  clippath
+4677 2619 m 4759 2657 l 4822 2523 l 4734 2606 l 4741 2485 l cp
+eoclip
+n 5475 1875 m 5474 1875 l 5472 1874 l 5468 1874 l 5461 1873 l 5453 1872 l
+ 5442 1871 l 5430 1870 l 5415 1869 l 5399 1869 l 5381 1870 l
+ 5363 1872 l 5343 1875 l 5322 1880 l 5300 1887 l 5277 1896 l
+ 5252 1908 l 5226 1923 l 5197 1942 l 5166 1965 l 5134 1993 l
+ 5100 2025 l 5071 2055 l 5043 2086 l 5017 2119 l 4992 2151 l
+ 4968 2183 l 4946 2216 l 4925 2247 l 4905 2279 l 4886 2310 l
+ 4868 2342 l 4851 2372 l 4834 2403 l 4819 2433 l 4804 2462 l
+ 4790 2490 l 4777 2516 l 4765 2540 l 4755 2561 l 4746 2579 l
+ 4739 2595 l 4734 2606 l
+ 4725 2625 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 4741 2485 m 4734 2606 l 4822 2523 l 4772 2524 l 4741 2485 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+1980 5683 m 2051 5739 l 2143 5623 l 2038 5684 l 2072 5567 l cp
+eoclip
+n 1950 5025 m 1952 5026 l 1956 5029 l 1964 5034 l 1974 5041 l 1988 5051 l
+ 2004 5063 l 2022 5077 l 2041 5093 l 2061 5110 l 2080 5129 l
+ 2098 5149 l 2116 5172 l 2132 5196 l 2146 5224 l 2159 5254 l
+ 2169 5288 l 2175 5325 l 2177 5359 l 2176 5392 l 2171 5423 l
+ 2165 5453 l 2157 5480 l 2147 5506 l 2136 5531 l 2124 5555 l
+ 2111 5578 l 2098 5599 l 2084 5620 l 2071 5638 l 2059 5655 l
+ 2049 5669 l 2040 5681 l
+ 2025 5700 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 2072 5567 m 2038 5684 l 2143 5623 l 2093 5613 l 2072 5567 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+3116 5733 m 3196 5693 l 3142 5583 l 3142 5684 l 3061 5623 l cp
+eoclip
+n 1950 5025 m 1951 5025 l 1954 5024 l 1959 5023 l 1967 5021 l 1978 5019 l
+ 1992 5016 l 2009 5012 l 2029 5009 l 2052 5005 l 2077 5001 l
+ 2104 4998 l 2133 4995 l 2163 4992 l 2194 4991 l 2226 4990 l
+ 2259 4991 l 2293 4993 l 2329 4997 l 2366 5004 l 2405 5012 l
+ 2446 5023 l 2488 5037 l 2533 5055 l 2579 5076 l 2625 5100 l
+ 2667 5125 l 2708 5152 l 2746 5181 l 2782 5209 l 2815 5238 l
+ 2846 5268 l 2875 5297 l 2902 5326 l 2927 5356 l 2950 5385 l
+ 2973 5414 l 2994 5443 l 3014 5472 l 3033 5501 l 3051 5529 l
+ 3067 5555 l 3083 5581 l 3097 5604 l 3109 5626 l 3120 5645 l
+ 3129 5661 l 3136 5674 l 3142 5684 l
+ 3150 5700 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 3061 5623 m 3142 5684 l 3142 5583 l  col0 s
+% Polyline
+2 slj
+gs  clippath
+2596 4285 m 2519 4238 l 2442 4366 l 2539 4293 l 2519 4412 l cp
+eoclip
+n 2025 4950 m 2026 4949 l 2029 4947 l 2034 4944 l 2041 4940 l 2050 4933 l
+ 2061 4925 l 2074 4915 l 2089 4903 l 2104 4889 l 2122 4872 l
+ 2142 4853 l 2164 4829 l 2189 4800 l 2218 4765 l 2250 4725 l
+ 2274 4694 l 2298 4662 l 2320 4630 l 2342 4600 l 2362 4570 l
+ 2382 4542 l 2401 4514 l 2418 4486 l 2436 4460 l 2452 4434 l
+ 2468 4409 l 2483 4384 l 2497 4362 l 2510 4341 l 2521 4323 l
+ 2530 4307 l 2538 4295 l
+ 2550 4275 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 2519 4412 m 2539 4293 l 2442 4366 l 2492 4370 l 2519 4412 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+3406 4239 m 3328 4283 l 3400 4413 l 3385 4293 l 3479 4368 l cp
+eoclip
+n 4425 4950 m 4424 4950 l 4420 4950 l 4415 4950 l 4406 4951 l 4394 4951 l
+ 4378 4951 l 4360 4951 l 4338 4951 l 4315 4950 l 4289 4949 l
+ 4261 4948 l 4232 4945 l 4202 4942 l 4170 4937 l 4138 4931 l
+ 4105 4923 l 4070 4914 l 4033 4902 l 3995 4888 l 3955 4871 l
+ 3912 4850 l 3869 4827 l 3825 4800 l 3785 4773 l 3747 4745 l
+ 3712 4716 l 3679 4688 l 3649 4659 l 3621 4631 l 3595 4603 l
+ 3572 4575 l 3549 4548 l 3529 4521 l 3509 4494 l 3491 4467 l
+ 3473 4441 l 3457 4416 l 3442 4392 l 3429 4370 l 3416 4349 l
+ 3406 4330 l 3397 4314 l 3389 4301 l 3384 4291 l
+ 3375 4275 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 3479 4368 m 3385 4293 l 3400 4413 l 3429 4371 l 3479 4368 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+3477 5705 m 3565 5724 l 3596 5579 l 3529 5680 l 3508 5560 l cp
+eoclip
+n 4425 4950 m 4423 4950 l 4420 4950 l 4414 4949 l 4404 4948 l 4391 4947 l
+ 4374 4946 l 4354 4946 l 4330 4945 l 4304 4944 l 4276 4945 l
+ 4247 4945 l 4216 4947 l 4185 4950 l 4152 4954 l 4119 4960 l
+ 4085 4967 l 4051 4977 l 4015 4989 l 3978 5004 l 3941 5022 l
+ 3902 5045 l 3863 5070 l 3825 5100 l 3789 5133 l 3755 5167 l
+ 3726 5202 l 3699 5237 l 3676 5272 l 3655 5306 l 3637 5341 l
+ 3621 5375 l 3606 5409 l 3594 5442 l 3582 5475 l 3572 5508 l
+ 3563 5539 l 3555 5569 l 3548 5597 l 3542 5622 l 3537 5644 l
+ 3533 5663 l 3530 5677 l
+ 3525 5700 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 3508 5560 m 3529 5680 l 3596 5579 l 3548 5592 l 3508 5560 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+4602 3819 m 4684 3857 l 4747 3723 l 4659 3806 l 4666 3685 l cp
+eoclip
+n 5400 3075 m 5399 3075 l 5397 3074 l 5393 3074 l 5386 3073 l 5378 3072 l
+ 5367 3071 l 5355 3070 l 5340 3069 l 5324 3069 l 5306 3070 l
+ 5288 3072 l 5268 3075 l 5247 3080 l 5225 3087 l 5202 3096 l
+ 5177 3108 l 5151 3123 l 5122 3142 l 5091 3165 l 5059 3193 l
+ 5025 3225 l 4996 3255 l 4968 3286 l 4942 3319 l 4917 3351 l
+ 4893 3383 l 4871 3416 l 4850 3447 l 4830 3479 l 4811 3510 l
+ 4793 3542 l 4776 3572 l 4759 3603 l 4744 3633 l 4729 3662 l
+ 4715 3690 l 4702 3716 l 4690 3740 l 4680 3761 l 4671 3779 l
+ 4664 3795 l 4659 3806 l
+ 4650 3825 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 4666 3685 m 4659 3806 l 4747 3723 l 4697 3724 l 4666 3685 l 
+ cp gs 0.00 setgray ef gr  col0 s
+/Times-Bold ff 180.00 scf sf
+750 5025 m
+gs 1 -1 sc (Create) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+750 5250 m
+gs 1 -1 sc (directories) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+4575 4875 m
+gs 1 -1 sc (Copy and/or) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+4575 5100 m
+gs 1 -1 sc (create Makefile.in) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+5550 3225 m
+gs 1 -1 sc (files \(module level\)) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+5550 3000 m
+gs 1 -1 sc (Exported resource) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+5625 1950 m
+gs 1 -1 sc (Update SUBDIRS ) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+5625 2175 m
+gs 1 -1 sc (list in Makefile.in) col0 sh gr
+$F2psEnd
+rs
diff --git a/doc/DevelopersGuide/srctree_module.fig b/doc/DevelopersGuide/srctree_module.fig
new file mode 100644 (file)
index 0000000..cd89806
--- /dev/null
@@ -0,0 +1,110 @@
+#FIG 3.2
+Portrait
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 2925 5700 3825 6150
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        2925 5700 3825 5700 3825 6150 2925 6150 2925 5700
+4 0 0 50 0 1 12 0.0000 0 90 240 3075 6000 src\001
+-6
+6 1650 5700 2625 6150
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        1650 5700 2625 5700 2625 6150 1650 6150 1650 5700
+4 0 0 50 0 1 12 0.0000 0 90 750 1725 6000 resources\001
+-6
+6 1200 3825 2175 4275
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        1200 3825 2175 3825 2175 4275 1200 4275 1200 3825
+4 0 0 50 0 1 12 0.0000 0 135 180 1500 4125 idl\001
+-6
+6 2400 3825 3600 4275
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        2400 3825 3600 3825 3600 4275 2400 4275 2400 3825
+4 0 0 50 0 1 12 0.0000 0 135 945 2550 4125 New module\001
+-6
+6 825 2475 2475 3375
+2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5
+        2475 3375 825 3375 825 2475 2475 2475 2475 3375
+4 0 0 50 0 2 12 0.0000 0 180 1290 975 2775 Run reconfigure\001
+4 0 0 50 0 2 12 0.0000 0 180 1020 975 3000 script or edit\001
+4 0 0 50 0 2 12 0.0000 0 180 1245 975 3225 configure.in file\001
+-6
+6 3150 2625 4800 3225
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        3150 2625 4800 2625 4800 3225 3150 3225 3150 2625
+4 0 0 50 0 1 12 0.0000 0 135 1320 3300 3000 Root Source Tree\001
+-6
+6 3825 3825 4875 4275
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        3825 3825 4875 3825 4875 4275 3825 4275 3825 3825
+4 0 0 50 0 0 12 0.0000 4 90 750 3975 4125 resources\001
+-6
+6 5025 3825 6075 4275
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        5025 3825 6075 3825 6075 4275 5025 4275 5025 3825
+4 0 0 50 0 0 12 0.0000 4 135 225 5250 4125 bin\001
+-6
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        4350 3225 4350 3825
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        3450 3225 1725 3825
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        2625 4275 2325 5700
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        4575 3225 5400 3825
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        2925 3825 3675 3225
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        3139 4261 3439 5686
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       2 1 2.00 90.00 90.00
+        2480 2826 3155 2976
+2 4 0 2 0 6 50 0 20 0.000 0 0 13 0 0 5
+        1963 5372 588 5372 588 4753 1963 4753 1963 5372
+2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5
+        6225 5250 4425 5250 4425 4575 6225 4575 6225 5250
+2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5
+        7200 3375 5400 3375 5400 2700 7200 2700 7200 3375
+2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5
+        7275 2325 5475 2325 5475 1650 7275 1650 7275 2325
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       2 1 2.00 90.00 90.00
+        5475 1875 5100 2025 4725 2625
+        0.000 -1.000 0.000
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       2 1 2.00 90.00 90.00
+        1950 5025 2175 5325 2025 5700
+        0.000 -1.000 0.000
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       0 0 2.00 90.00 90.00
+        1950 5025 2625 5100 3150 5700
+        0.000 -1.000 0.000
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       2 1 2.00 90.00 90.00
+        2025 4950 2250 4725 2550 4275
+        0.000 -1.000 0.000
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       2 1 2.00 90.00 90.00
+        4425 4950 3825 4800 3375 4275
+        0.000 -1.000 0.000
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       2 1 2.00 90.00 90.00
+        4425 4950 3825 5100 3525 5700
+        0.000 -1.000 0.000
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       2 1 2.00 90.00 90.00
+        5400 3075 5025 3225 4650 3825
+        0.000 -1.000 0.000
+4 0 0 50 0 2 12 0.0000 4 135 570 750 5025 Create\001
+4 0 0 50 0 2 12 0.0000 4 135 885 750 5250 directories\001
+4 0 0 50 0 2 12 0.0000 0 180 975 4575 4875 Copy and/or\001
+4 0 0 50 0 2 12 0.0000 0 135 1515 4575 5100 create Makefile.in\001
+4 0 0 50 0 2 12 0.0000 0 180 1515 5550 3225 files (module level)\001
+4 0 0 50 0 2 12 0.0000 0 180 1515 5550 3000 Exported resource\001
+4 0 0 50 0 2 12 0.0000 0 180 1500 5625 1950 Update SUBDIRS \001
+4 0 0 50 0 2 12 0.0000 0 135 1395 5625 2175 list in Makefile.in\001
diff --git a/doc/DevelopersGuide/srctree_module.pdf b/doc/DevelopersGuide/srctree_module.pdf
new file mode 100644 (file)
index 0000000..9b964fb
Binary files /dev/null and b/doc/DevelopersGuide/srctree_module.pdf differ
diff --git a/doc/DevelopersGuide/srctree_unit.eps b/doc/DevelopersGuide/srctree_unit.eps
new file mode 100644 (file)
index 0000000..5f2fb85
--- /dev/null
@@ -0,0 +1,425 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: srctree_unit.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3c
+%%CreationDate: Thu Jul 26 11:57:40 2001
+%%For: tajchman@nikyo (Marc Tajchman - SFME/LGLS)
+%%BoundingBox: 0 0 404 377
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 377 moveto 0 0 lineto 404 0 lineto 404 377 lineto closepath clip newpath
+-12.0 416.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 1530 675 m 1350 675 1350 1395 180 arcto 4 {pop} repeat
+  1350 1575 2820 1575 180 arcto 4 {pop} repeat
+  3000 1575 3000 855 180 arcto 4 {pop} repeat
+  3000 675 1530 675 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+1500 975 m
+gs 1 -1 sc (Run reconfigure) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+1500 1200 m
+gs 1 -1 sc (script or edit) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+1500 1425 m
+gs 1 -1 sc (configure.in file) col0 sh gr
+% Polyline
+n 855 3000 m 675 3000 675 3495 180 arcto 4 {pop} repeat
+  675 3675 1770 3675 180 arcto 4 {pop} repeat
+  1950 3675 1950 3180 180 arcto 4 {pop} repeat
+  1950 3000 855 3000 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+825 3300 m
+gs 1 -1 sc (Exported) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+825 3525 m
+gs 1 -1 sc (idl files) col0 sh gr
+% Polyline
+n 2475 2025 m 3450 2025 l 3450 2475 l 2475 2475 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+2625 2325 m
+gs 1 -1 sc (Module 1) col0 sh gr
+% Polyline
+n 3000 3900 m 3900 3900 l 3900 4350 l 3000 4350 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+3150 4200 m
+gs 1 -1 sc (src) col0 sh gr
+% Polyline
+n 1725 3900 m 2700 3900 l 2700 4350 l 1725 4350 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+1800 4200 m
+gs 1 -1 sc (resources) col0 sh gr
+% Polyline
+n 1275 2025 m 2250 2025 l 2250 2475 l 1275 2475 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+1575 2325 m
+gs 1 -1 sc (idl) col0 sh gr
+% Polyline
+n 5205 3150 m 5025 3150 5025 3645 180 arcto 4 {pop} repeat
+  5025 3825 6495 3825 180 arcto 4 {pop} repeat
+  6675 3825 6675 3330 180 arcto 4 {pop} repeat
+  6675 3150 5205 3150 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+5175 3450 m
+gs 1 -1 sc (Exported shell) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+5175 3675 m
+gs 1 -1 sc (scripts) col0 sh gr
+% Polyline
+n 5430 4275 m 5250 4275 5250 4770 180 arcto 4 {pop} repeat
+  5250 4950 6720 4950 180 arcto 4 {pop} repeat
+  6900 4950 6900 4455 180 arcto 4 {pop} repeat
+  6900 4275 5430 4275 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+5400 4575 m
+gs 1 -1 sc (Update SUBDIR) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+5400 4800 m
+gs 1 -1 sc (list in Makefile.in) col0 sh gr
+% Polyline
+n 4275 2025 m 5325 2025 l 5325 2475 l 4275 2475 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+4425 2325 m
+gs 1 -1 sc (resources) col0 sh gr
+% Polyline
+n 5625 2025 m 6675 2025 l 6675 2475 l 5625 2475 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+5850 2325 m
+gs 1 -1 sc (bin) col0 sh gr
+% Polyline
+n 2700 5100 m 3675 5100 l 3675 5550 l 2700 5550 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+2775 5400 m
+gs 1 -1 sc (New unit) col0 sh gr
+% Polyline
+n 1380 6225 m 1200 6225 1200 6720 180 arcto 4 {pop} repeat
+  1200 6900 2670 6900 180 arcto 4 {pop} repeat
+  2850 6900 2850 6405 180 arcto 4 {pop} repeat
+  2850 6225 1380 6225 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+1350 6750 m
+gs 1 -1 sc (and header files) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+1350 6525 m
+gs 1 -1 sc (Private source) col0 sh gr
+% Polyline
+n 3330 6225 m 3150 6225 3150 6720 180 arcto 4 {pop} repeat
+  3150 6900 4620 6900 180 arcto 4 {pop} repeat
+  4800 6900 4800 6405 180 arcto 4 {pop} repeat
+  4800 6225 3330 6225 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+3300 6525 m
+gs 1 -1 sc (Exported header) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+3300 6750 m
+gs 1 -1 sc (files) col0 sh gr
+% Polyline
+n 3675 825 m 5325 825 l 5325 1425 l 3675 1425 l
+ cp gs col0 s gr 
+% Polyline
+n 4725 1425 m
+ 4875 2025 l gs col0 s gr 
+% Polyline
+n 3975 1425 m
+ 1800 2025 l gs col0 s gr 
+% Polyline
+n 2700 2475 m
+ 2400 3900 l gs col0 s gr 
+% Polyline
+gs  clippath
+3679 1172 m 3699 1084 l 3554 1051 l 3655 1120 l 3535 1139 l cp
+eoclip
+n 3000 975 m
+ 3675 1125 l gs col0 s gr gr
+
+% arrowhead
+n 3535 1139 m 3655 1120 l 3554 1051 l 3567 1100 l 3535 1139 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+n 5100 1425 m
+ 5625 2025 l gs col0 s gr 
+% Polyline
+n 3000 2025 m
+ 4200 1425 l gs col0 s gr 
+% Polyline
+n 3300 4350 m
+ 3150 5100 l gs col0 s gr 
+% Polyline
+n 3075 2475 m
+ 3375 3900 l gs col0 s gr 
+% Polyline
+ [60] 0 sd
+n 3675 4350 m
+ 4425 5025 l gs col0 s gr  [] 0 sd
+% Polyline
+ [60] 0 sd
+n 3450 4350 m
+ 3900 5025 l gs col0 s gr  [] 0 sd
+% Polyline
+ [60] 0 sd
+n 4350 1425 m
+ 3675 2025 l gs col0 s gr  [] 0 sd
+% Polyline
+ [60] 0 sd
+n 4500 1425 m
+ 4050 2025 l gs col0 s gr  [] 0 sd
+% Polyline
+n 405 4950 m 225 4950 225 5445 180 arcto 4 {pop} repeat
+  225 5625 1845 5625 180 arcto 4 {pop} repeat
+  2025 5625 2025 5130 180 arcto 4 {pop} repeat
+  2025 4950 405 4950 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+% Polyline
+n 4305 5325 m 4125 5325 4125 5820 180 arcto 4 {pop} repeat
+  4125 6000 5745 6000 180 arcto 4 {pop} repeat
+  5925 6000 5925 5505 180 arcto 4 {pop} repeat
+  5925 5325 4305 5325 180 arcto 4 {pop} repeat
+ cp gs col6 1.00 shd ef gr gs col0 s gr 
+% Polyline
+2 slj
+gs  clippath
+2663 5277 m 2610 5204 l 2490 5291 l 2608 5262 l 2543 5364 l cp
+eoclip
+n 2100 6225 m 2099 6224 l 2098 6221 l 2095 6217 l 2091 6210 l 2086 6201 l
+ 2080 6189 l 2073 6174 l 2065 6158 l 2058 6140 l 2051 6120 l
+ 2044 6098 l 2039 6075 l 2035 6051 l 2033 6025 l 2032 5997 l
+ 2035 5967 l 2040 5934 l 2049 5899 l 2061 5860 l 2078 5819 l
+ 2100 5775 l 2122 5737 l 2145 5701 l 2170 5665 l 2197 5631 l
+ 2223 5599 l 2250 5568 l 2278 5539 l 2305 5512 l 2333 5485 l
+ 2361 5459 l 2389 5435 l 2417 5411 l 2445 5388 l 2471 5367 l
+ 2497 5346 l 2522 5327 l 2544 5310 l 2564 5295 l 2582 5282 l
+ 2596 5271 l 2607 5263 l
+ 2625 5250 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 2543 5364 m 2608 5262 l 2490 5291 l 2535 5314 l 2543 5364 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+3241 5505 m 3185 5576 l 3301 5668 l 3241 5563 l 3357 5597 l cp
+eoclip
+n 3675 6225 m 3675 6224 l 3676 6221 l 3677 6216 l 3679 6209 l 3680 6199 l
+ 3682 6187 l 3684 6173 l 3684 6157 l 3684 6140 l 3683 6121 l
+ 3680 6101 l 3675 6078 l 3667 6054 l 3656 6026 l 3642 5996 l
+ 3623 5962 l 3600 5925 l 3579 5894 l 3556 5864 l 3532 5835 l
+ 3509 5808 l 3485 5782 l 3462 5758 l 3438 5734 l 3415 5712 l
+ 3392 5691 l 3369 5670 l 3347 5651 l 3325 5632 l 3305 5615 l
+ 3286 5599 l 3269 5586 l 3255 5574 l 3244 5565 l
+ 3225 5550 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 3357 5597 m 3241 5563 l 3301 5668 l 3311 5618 l 3357 5597 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+3892 4003 m 3878 4092 l 4025 4114 l 3921 4053 l 4039 4026 l cp
+eoclip
+n 5250 4500 m 5250 4499 l 5249 4498 l 5248 4496 l 5246 4492 l 5244 4487 l
+ 5240 4480 l 5236 4473 l 5229 4464 l 5222 4454 l 5212 4444 l
+ 5201 4433 l 5188 4421 l 5172 4408 l 5152 4395 l 5129 4381 l
+ 5102 4366 l 5069 4350 l 5031 4333 l 4986 4315 l 4934 4295 l
+ 4875 4275 l 4829 4260 l 4781 4245 l 4733 4231 l 4686 4218 l
+ 4638 4205 l 4591 4193 l 4545 4182 l 4500 4171 l 4456 4160 l
+ 4412 4150 l 4368 4141 l 4325 4132 l 4283 4123 l 4241 4114 l
+ 4200 4106 l 4160 4098 l 4122 4091 l 4086 4084 l 4052 4078 l
+ 4021 4072 l 3993 4067 l 3969 4062 l 3948 4059 l 3932 4056 l
+ 3919 4053 l
+ 3900 4050 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 4039 4026 m 3921 4053 l 4025 4114 l 4009 4067 l 4039 4026 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+1302 2288 m 1276 2202 l 1134 2245 l 1255 2256 l 1160 2331 l cp
+eoclip
+n 675 3300 m 674 3299 l 671 3296 l 666 3292 l 659 3285 l 648 3275 l
+ 635 3262 l 620 3247 l 602 3229 l 583 3208 l 562 3186 l
+ 541 3162 l 520 3136 l 500 3109 l 480 3081 l 462 3053 l
+ 446 3023 l 432 2993 l 420 2961 l 411 2928 l 406 2894 l
+ 405 2858 l 408 2820 l 416 2781 l 430 2741 l 450 2700 l
+ 472 2665 l 498 2632 l 527 2601 l 558 2571 l 591 2544 l
+ 625 2518 l 661 2494 l 697 2472 l 735 2451 l 773 2432 l
+ 812 2413 l 851 2396 l 891 2379 l 931 2363 l 970 2348 l
+ 1009 2334 l 1047 2321 l 1084 2309 l 1118 2298 l 1150 2288 l
+ 1178 2279 l 1203 2271 l 1224 2265 l 1242 2260 l 1255 2256 l
+
+ 1275 2250 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 1160 2331 m 1255 2256 l 1134 2245 l 1168 2281 l 1160 2331 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+1765 4073 m 1706 4006 l 1594 4104 l 1709 4064 l 1653 4171 l cp
+eoclip
+n 1050 4950 m 1050 4949 l 1050 4947 l 1049 4942 l 1049 4936 l 1049 4927 l
+ 1049 4916 l 1049 4902 l 1050 4887 l 1052 4870 l 1056 4852 l
+ 1060 4832 l 1067 4810 l 1075 4786 l 1086 4759 l 1101 4729 l
+ 1119 4696 l 1141 4660 l 1168 4619 l 1200 4575 l 1227 4540 l
+ 1255 4505 l 1284 4472 l 1312 4439 l 1341 4408 l 1369 4378 l
+ 1397 4349 l 1425 4321 l 1452 4295 l 1479 4269 l 1506 4243 l
+ 1533 4219 l 1559 4195 l 1584 4173 l 1608 4151 l 1630 4131 l
+ 1651 4113 l 1670 4097 l 1686 4084 l 1699 4072 l 1709 4064 l
+
+ 1725 4050 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 1653 4171 m 1709 4064 l 1594 4104 l 1641 4123 l 1653 4171 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+6234 2428 m 6189 2506 l 6317 2580 l 6243 2485 l 6362 2502 l cp
+eoclip
+n 6675 3225 m 6676 3224 l 6677 3221 l 6680 3215 l 6685 3208 l 6690 3197 l
+ 6696 3184 l 6703 3168 l 6710 3150 l 6717 3131 l 6723 3111 l
+ 6728 3089 l 6732 3066 l 6733 3041 l 6732 3015 l 6729 2987 l
+ 6722 2956 l 6711 2923 l 6695 2887 l 6675 2850 l 6655 2819 l
+ 6633 2789 l 6609 2760 l 6585 2734 l 6560 2709 l 6534 2685 l
+ 6509 2663 l 6483 2642 l 6457 2623 l 6431 2604 l 6405 2586 l
+ 6380 2569 l 6355 2553 l 6331 2538 l 6308 2524 l 6288 2512 l
+ 6270 2501 l 6256 2492 l 6244 2486 l
+ 6225 2475 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 6362 2502 m 6243 2485 l 6317 2580 l 6320 2530 l 6362 2502 l 
+ cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+2 slj
+gs  clippath
+3700 5285 m 3630 5341 l 3722 5457 l 3688 5341 l 3793 5401 l cp
+eoclip
+n 4125 5625 m 4123 5625 l 4118 5625 l 4110 5624 l 4099 5624 l 4085 5622 l
+ 4069 5620 l 4051 5617 l 4031 5613 l 4010 5606 l 3987 5597 l
+ 3961 5585 l 3932 5570 l 3900 5550 l 3872 5530 l 3846 5510 l
+ 3823 5490 l 3801 5470 l 3782 5451 l 3764 5432 l 3747 5413 l
+ 3731 5395 l 3717 5378 l 3704 5363 l 3694 5349 l
+ 3675 5325 l gs col0 s gr gr
+
+% arrowhead
+0 slj
+n 3793 5401 m 3688 5341 l 3722 5457 l 3743 5411 l 3793 5401 l 
+ cp gs 0.00 setgray ef gr  col0 s
+/Times-Roman ff 180.00 scf sf
+3825 1200 m
+gs 1 -1 sc (Root Source Tree) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+4275 5625 m
+gs 1 -1 sc (Copy and/or) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+4275 5850 m
+gs 1 -1 sc (create Makefile.in) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+375 5250 m
+gs 1 -1 sc (Exported resource) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+375 5475 m
+gs 1 -1 sc (files \(xml, ...\)) col0 sh gr
+$F2psEnd
+rs
diff --git a/doc/DevelopersGuide/srctree_unit.fig b/doc/DevelopersGuide/srctree_unit.fig
new file mode 100644 (file)
index 0000000..800cc6f
--- /dev/null
@@ -0,0 +1,145 @@
+#FIG 3.2
+Portrait
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 1350 675 3000 1575
+2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5
+        3000 1575 1350 1575 1350 675 3000 675 3000 1575
+4 0 0 50 0 2 12 0.0000 0 180 1290 1500 975 Run reconfigure\001
+4 0 0 50 0 2 12 0.0000 0 180 1020 1500 1200 script or edit\001
+4 0 0 50 0 2 12 0.0000 0 180 1245 1500 1425 configure.in file\001
+-6
+6 675 3000 1950 3675
+2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5
+        1950 3675 675 3675 675 3000 1950 3000 1950 3675
+4 0 0 50 0 2 12 0.0000 0 180 735 825 3300 Exported\001
+4 0 0 50 0 2 12 0.0000 0 135 570 825 3525 idl files\001
+-6
+6 2475 2025 3450 2475
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        2475 2025 3450 2025 3450 2475 2475 2475 2475 2025
+4 0 0 50 0 1 12 0.0000 0 135 705 2625 2325 Module 1\001
+-6
+6 3000 3900 3900 4350
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        3000 3900 3900 3900 3900 4350 3000 4350 3000 3900
+4 0 0 50 0 1 12 0.0000 0 90 240 3150 4200 src\001
+-6
+6 1725 3900 2700 4350
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        1725 3900 2700 3900 2700 4350 1725 4350 1725 3900
+4 0 0 50 0 1 12 0.0000 0 90 750 1800 4200 resources\001
+-6
+6 1275 2025 2250 2475
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        1275 2025 2250 2025 2250 2475 1275 2475 1275 2025
+4 0 0 50 0 1 12 0.0000 0 135 180 1575 2325 idl\001
+-6
+6 4950 3075 6750 3900
+2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5
+        6675 3825 5025 3825 5025 3150 6675 3150 6675 3825
+4 0 0 50 0 2 12 0.0000 0 180 1155 5175 3450 Exported shell\001
+4 0 0 50 0 2 12 0.0000 0 180 540 5175 3675 scripts\001
+-6
+6 5175 4200 6975 5025
+2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5
+        6900 4950 5250 4950 5250 4275 6900 4275 6900 4950
+4 0 0 50 0 2 12 0.0000 4 180 1350 5400 4575 Update SUBDIR\001
+4 0 0 50 0 2 12 0.0000 4 135 1395 5400 4800 list in Makefile.in\001
+-6
+6 4275 2025 5325 2475
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        4275 2025 5325 2025 5325 2475 4275 2475 4275 2025
+4 0 0 50 0 0 12 0.0000 4 90 750 4425 2325 resources\001
+-6
+6 5625 2025 6675 2475
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        5625 2025 6675 2025 6675 2475 5625 2475 5625 2025
+4 0 0 50 0 0 12 0.0000 4 135 225 5850 2325 bin\001
+-6
+6 2700 5100 3675 5550
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        2700 5100 3675 5100 3675 5550 2700 5550 2700 5100
+4 0 0 50 0 1 12 0.0000 0 135 690 2775 5400 New unit\001
+-6
+6 1125 6150 2925 6975
+2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5
+        2850 6900 1200 6900 1200 6225 2850 6225 2850 6900
+4 0 0 50 0 2 12 0.0000 0 135 1290 1350 6750 and header files\001
+4 0 0 50 0 2 12 0.0000 0 135 1200 1350 6525 Private source\001
+-6
+6 3150 6225 4800 6900
+2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5
+        4800 6900 3150 6900 3150 6225 4800 6225 4800 6900
+4 0 0 50 0 2 12 0.0000 0 180 1350 3300 6525 Exported header\001
+4 0 0 50 0 2 12 0.0000 0 135 345 3300 6750 files\001
+-6
+2 2 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        3675 825 5325 825 5325 1425 3675 1425 3675 825
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        4725 1425 4875 2025
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        3975 1425 1800 2025
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        2700 2475 2400 3900
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       2 1 2.00 90.00 90.00
+        3000 975 3675 1125
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        5100 1425 5625 2025
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        3000 2025 4200 1425
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        3300 4350 3150 5100
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        3075 2475 3375 3900
+2 1 1 2 0 7 50 0 -1 4.000 0 0 -1 0 0 2
+        3675 4350 4425 5025
+2 1 1 2 0 7 50 0 -1 4.000 0 0 -1 0 0 2
+        3450 4350 3900 5025
+2 1 1 2 0 7 50 0 -1 4.000 0 0 -1 0 0 2
+        4350 1425 3675 2025
+2 1 1 2 0 7 50 0 -1 4.000 0 0 -1 0 0 2
+        4500 1425 4050 2025
+2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5
+        2025 5625 225 5625 225 4950 2025 4950 2025 5625
+2 4 0 2 0 6 50 0 20 0.000 0 0 12 0 0 5
+        5925 6000 4125 6000 4125 5325 5925 5325 5925 6000
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       2 1 2.00 90.00 90.00
+        2100 6225 2100 5775 2625 5250
+        0.000 -1.000 0.000
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       2 1 2.00 90.00 90.00
+        3675 6225 3600 5925 3225 5550
+        0.000 -1.000 0.000
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       2 1 2.00 90.00 90.00
+        5250 4500 4875 4275 3900 4050
+        0.000 -1.000 0.000
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       2 1 2.00 90.00 90.00
+        675 3300 450 2700 1275 2250
+        0.000 -1.000 0.000
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       2 1 2.00 90.00 90.00
+        1050 4950 1200 4575 1725 4050
+        0.000 -1.000 0.000
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       2 1 2.00 90.00 90.00
+        6675 3225 6675 2850 6225 2475
+        0.000 -1.000 0.000
+3 2 0 2 0 7 50 0 -1 0.000 0 1 0 3
+       2 1 2.00 90.00 90.00
+        4125 5625 3900 5550 3675 5325
+        0.000 -1.000 0.000
+4 0 0 50 0 1 12 0.0000 0 135 1320 3825 1200 Root Source Tree\001
+4 0 0 50 0 2 12 0.0000 0 180 975 4275 5625 Copy and/or\001
+4 0 0 50 0 2 12 0.0000 0 135 1515 4275 5850 create Makefile.in\001
+4 0 0 50 0 2 12 0.0000 0 180 1515 375 5250 Exported resource\001
+4 0 0 50 0 2 12 0.0000 0 180 1065 375 5475 files (xml, ...)\001
diff --git a/doc/DevelopersGuide/srctree_unit.pdf b/doc/DevelopersGuide/srctree_unit.pdf
new file mode 100644 (file)
index 0000000..d9cbcd5
Binary files /dev/null and b/doc/DevelopersGuide/srctree_unit.pdf differ
diff --git a/doc/DevelopersGuide/subtrees.eps b/doc/DevelopersGuide/subtrees.eps
new file mode 100644 (file)
index 0000000..66d0ecc
--- /dev/null
@@ -0,0 +1,187 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: subtrees.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3c
+%%CreationDate: Thu Jul 26 11:57:22 2001
+%%For: tajchman@nikyo (Marc Tajchman - SFME/LGLS)
+%%BoundingBox: 0 0 466 215
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 215 moveto 0 0 lineto 466 0 lineto 466 215 lineto closepath clip newpath
+-58.0 236.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+7.500 slw
+n 3900 1950 m 5175 1950 l 5175 2550 l 3900 2550 l
+ cp gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+4050 2175 m
+gs 1 -1 sc (Top Build) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+4050 2400 m
+gs 1 -1 sc (Directory) col0 sh gr
+% Polyline
+n 1275 1425 m 3000 1425 l 3000 2250 l 1275 2250 l
+ cp gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+1425 1650 m
+gs 1 -1 sc (Top Source) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+1425 1875 m
+gs 1 -1 sc (Directory) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+1425 2100 m
+gs 1 -1 sc (\(SALOME_ROOT\)) col0 sh gr
+% Polyline
+n 4350 2550 m
+ 3825 3300 l gs col0 s gr 
+% Polyline
+n 4575 2550 m
+ 4650 3300 l gs col0 s gr 
+% Polyline
+n 7350 1650 m
+ 7575 2475 l gs col0 s gr 
+% Polyline
+n 7800 1650 m
+ 8175 2550 l gs col0 s gr 
+% Polyline
+n 7050 1650 m
+ 6750 2550 l gs col0 s gr 
+% Polyline
+n 6675 1050 m 8100 1050 l 8100 1650 l 6675 1650 l
+ cp gs col0 s gr 
+% Polyline
+n 1939 2238 m
+ 1189 2913 l gs col0 s gr 
+% Polyline
+n 2175 2250 m
+ 2175 2850 l gs col0 s gr 
+% Polyline
+n 2442 2270 m
+ 2892 3020 l gs col0 s gr 
+% Polyline
+15.000 slw
+n 3780 1650 m 3600 1650 3600 3720 180 arcto 4 {pop} repeat
+  3600 3900 5595 3900 180 arcto 4 {pop} repeat
+  5775 3900 5775 1830 180 arcto 4 {pop} repeat
+  5775 1650 3780 1650 180 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+n 1230 1050 m 1050 1050 1050 3570 180 arcto 4 {pop} repeat
+  1050 3750 3045 3750 180 arcto 4 {pop} repeat
+  3225 3750 3225 1230 180 arcto 4 {pop} repeat
+  3225 1050 1230 1050 180 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+n 6705 825 m 6525 825 6525 2820 180 arcto 4 {pop} repeat
+  6525 3000 8520 3000 180 arcto 4 {pop} repeat
+  8700 3000 8700 1005 180 arcto 4 {pop} repeat
+  8700 825 6705 825 180 arcto 4 {pop} repeat
+ cp gs col0 s gr 
+% Polyline
+7.500 slw
+n 2025 1425 m
+ 3000 375 l gs col0 s gr 
+% Polyline
+n 4575 1950 m
+ 4425 675 l gs col0 s gr 
+% Polyline
+n 7275 1050 m
+ 5925 375 l gs col0 s gr 
+/Times-Bold ff 180.00 scf sf
+6825 1275 m
+gs 1 -1 sc (Top Installation) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+6825 1500 m
+gs 1 -1 sc (Directory) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+7125 675 m
+gs 1 -1 sc (Install Subtree) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+975 900 m
+gs 1 -1 sc (Source Subtree) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+4650 1500 m
+gs 1 -1 sc (Build Subtree) col0 sh gr
+$F2psEnd
+rs
diff --git a/doc/DevelopersGuide/subtrees.fig b/doc/DevelopersGuide/subtrees.fig
new file mode 100644 (file)
index 0000000..90918a3
--- /dev/null
@@ -0,0 +1,57 @@
+#FIG 3.2
+Portrait
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 3900 1950 5175 2550
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        3900 1950 5175 1950 5175 2550 3900 2550 3900 1950
+4 0 0 50 0 2 12 0.0000 0 180 780 4050 2175 Top Build\001
+4 0 0 50 0 2 12 0.0000 0 180 780 4050 2400 Directory\001
+-6
+6 1275 1425 3000 2250
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        1275 1425 3000 1425 3000 2250 1275 2250 1275 1425
+4 0 0 50 0 2 12 0.0000 0 180 945 1425 1650 Top Source\001
+4 0 0 50 0 2 12 0.0000 0 180 780 1425 1875 Directory\001
+4 0 0 50 0 2 12 0.0000 0 180 1530 1425 2100 (SALOME_ROOT)\001
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        4350 2550 3825 3300
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        4575 2550 4650 3300
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        7350 1650 7575 2475
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        7800 1650 8175 2550
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        7050 1650 6750 2550
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        6675 1050 8100 1050 8100 1650 6675 1650 6675 1050
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        1939 2238 1189 2913
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        2175 2250 2175 2850
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        2442 2270 2892 3020
+2 4 0 2 0 7 50 0 -1 0.000 0 0 12 0 0 5
+        5775 3900 3600 3900 3600 1650 5775 1650 5775 3900
+2 4 0 2 0 7 50 0 -1 0.000 0 0 12 0 0 5
+        3225 3750 1050 3750 1050 1050 3225 1050 3225 3750
+2 4 0 2 0 7 50 0 -1 0.000 0 0 12 0 0 5
+        8700 3000 6525 3000 6525 825 8700 825 8700 3000
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        2025 1425 3000 375
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        4575 1950 4425 675
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+        7275 1050 5925 375
+4 0 0 50 0 2 12 0.0000 0 180 1290 6825 1275 Top Installation\001
+4 0 0 50 0 2 12 0.0000 0 180 780 6825 1500 Directory\001
+4 0 0 50 0 2 12 0.0000 0 135 1185 7125 675 Install Subtree\001
+4 0 0 40 0 2 12 0.0000 0 135 1080 4650 1500 Build Subtree\001
+4 0 0 50 0 2 12 0.0000 0 135 1245 975 900 Source Subtree\001
diff --git a/doc/DevelopersGuide/subtrees.pdf b/doc/DevelopersGuide/subtrees.pdf
new file mode 100644 (file)
index 0000000..d29044b
Binary files /dev/null and b/doc/DevelopersGuide/subtrees.pdf differ
diff --git a/doc/KernelResources/kernel_resources-1.html b/doc/KernelResources/kernel_resources-1.html
new file mode 100644 (file)
index 0000000..6652dc4
--- /dev/null
@@ -0,0 +1,224 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>SALOME Kernel resources for developer: Trace and debug Utilities</TITLE>
+ <LINK HREF="kernel_resources-2.html" REL=next>
+
+ <LINK HREF="kernel_resources.html#toc1" REL=contents>
+</HEAD>
+<BODY>
+<A HREF="kernel_resources-2.html">Next</A>
+Previous
+<A HREF="kernel_resources.html#toc1">Contents</A>
+<HR>
+<H2><A NAME="s1">1. Trace and debug Utilities</A></H2>
+
+<P>During the development process, an execution log is useful to
+identify problems. This log contains messages, variables values,
+source files names and line numbers. It is recommended to verify
+assertions on variables values and if necessary, to stop the execution
+at debug time, in order to validate all parts of code.
+<H2><A NAME="ss1.1">1.1 Two modes: debug and release</A>
+</H2>
+
+<P>The goal of debug mode is to check as many features as possible
+during the early stages of the development process. The purpose of
+the utilities provided in SALOME is to help the developer to add
+detailed traces and check variables values, without writing a lot
+of code.
+<P>When the code is assumed to be valid, the release mode optimizes
+execution, in terms of speed, memory, and display only user level
+messages.
+<P>But, some informations must always be displayed in both modes:
+especially messages concerning environment or internal errors, with
+version identification. When an end user is confronted to such a
+message, he may refer to a configuration documentation or send the
+message to the people in charge of SALOME installation, or to the
+development team, following the kind of error.
+<H2><A NAME="ss1.2">1.2 C++ Macros for trace and debug</A>
+</H2>
+
+<P>SALOME provides C++ macros for trace and debug. These macros
+are in <CODE>SALOME/src/utils/utilities.h</CODE> and this file must be included
+in C++ source. Some macros are activated only in debug mode, others
+are always activated. To activate the debug mode, <CODE>_DEBUG_</CODE> must be
+defined, which is the case when SALOME Makefiles are generated from
+configure, without options. When <CODE>_DEBUG_</CODE> is undefined (release mode),
+the debug mode macros are defined empty (they do nothing). So, when
+switching from debug to release, it is possible (and recommended)
+to let the macro calls unchanged in the source.
+<P>All the macros writing on the standard output start by flushing
+the standard error. At the end of the display those macros flush
+the standard output.
+<P>Two informations are systematically added in front of the information
+displayed:
+<P>
+<UL>
+<LI>the name of the source file in which the macros is set;</LI>
+<LI>the line number of the source file at which the macro is set.</LI>
+</UL>
+<H3>Macros defined in debug and release modes</H3>
+
+<H3>INFOS_COMPILATION</H3>
+
+<P>The C++ macro <CODE>INFOS_COMPILATION</CODE> writes on the standard output
+informations about the compiling process: 
+<P>
+<UL>
+<LI>the name of the compiler : <CODE>g++, KCC, CC, pgCC</CODE>;</LI>
+<LI>the date and the time of the compiling processing process.</LI>
+</UL>
+<P>This macro <CODE>INFOS_COMPILATION</CODE> does not have any argument. Moreover,
+it is defined in both compiling mode : <CODE>_DEBUG_</CODE> and <CODE>_RELEASE_</CODE>.
+<P>Example :
+<P>
+<PRE>
+#include &quot;utilities.h&quot;
+int main(int argc , char **argv) 
+{ 
+  INFOS_COMPILATION;
+  ...
+}
+</PRE>
+<H3>INFOS(str)</H3>
+
+<P>In both compiling mode <CODE>_DEBUG_</CODE> and <CODE>_RELEASE_</CODE>, The C++ macro <CODE>INFOS</CODE>
+writes on the standard output the string which has been passed in
+argument by the user.
+<P>Example : 
+<P>
+<PRE>
+#include &quot;utilities.h&quot;
+int main(int argc , char **argv)
+{ 
+  ... 
+  INFOS(&quot;NORMAL END OF THE PROCESS&quot;); 
+  return 0; 
+}
+</PRE>
+<P>displays :
+<P>
+<PRE>
+main.cxx [5] : NORMAL END OF THE PROCESS
+</PRE>
+<H3>Macros defined only in debug mode</H3>
+
+<H3>MESSAGE(str)</H3>
+
+<P>In <CODE>_DEBUG_</CODE> compiling mode only, the C++ macro <CODE>MESSAGE</CODE> writes
+on the standard output the string which has been passed in argument
+by the user. In <CODE>_RELEASE_</CODE> compiling mode, this macro is blank.
+<P>Example : 
+<P>
+<PRE>
+#include &quot;utilities.h&quot; 
+#include &lt;string&gt; 
+using namespace std; 
+int main(int argc , char **argv) 
+{ 
+  ... 
+  const char *str = &quot;Salome&quot;;
+  MESSAGE(str);
+  ... const string st; 
+  st = &quot;Aster&quot;; 
+  MESSAGE(c_str(st+&quot; and CASTEM&quot;)); 
+  return 0;
+}
+</PRE>
+<P>displays :
+<P>
+<PRE>
+- Trace main.cxx [8] : Salome
+- Trace main.cxx [12] : Aster and CASTEM
+</PRE>
+<H3>BEGIN_OF(func_name)</H3>
+
+<P>In <CODE>_DEBUG_</CODE> compiling mode, The C++ macro <CODE>BEGIN_OF</CODE> appends the
+string <CODE>&quot;Begin of &quot;</CODE> to the one passed in argument by the
+user and displays the result on the standard output. In <CODE>_RELEASE_</CODE>
+compiling mode, this macro is blank.
+<P>Example : 
+<P>
+<PRE>
+#include &quot;utilities.h&quot; 
+int main(int argc , char **argv) 
+{ 
+  BEGIN_OF(argv[0]);
+  return 0;
+}
+</PRE>
+<P>displays : 
+<P>
+<PRE>
+- Trace main.cxx [3] : Begin of a.out
+</PRE>
+<H3>END_OF(func_name)</H3>
+
+<P>In <CODE>_DEBUG_</CODE> compiling mode, The C++ macro <CODE>END_OF</CODE> appends the string
+<CODE>&quot;Normal end of &quot;</CODE> to the one passed in argument by the user
+and displays the result on the standard output. In <CODE>_RELEASE_</CODE> compiling
+mode, this macro is blank.
+<P>Example : 
+<P>
+<PRE>
+#include &quot;utilities.h&quot; 
+int main(int argc , char **argv) 
+{ 
+  END_OF(argv[0]);
+  return 0; 
+}
+</PRE>
+<P>displays : 
+<P>
+<PRE>
+- Trace main.cxx [4] : Normal end of a.out
+</PRE>
+<H3>SCRUTE(var)</H3>
+
+<P>In <CODE>_DEBUG_</CODE> compiling mode, The C++ macro <CODE>SCRUTE</CODE> displays its
+argument which is an application variable followed by the value of
+the variable. In <CODE>_RELEASE_</CODE> compiling mode, this macro is blank.
+<P>Example : 
+<P>
+<PRE>
+#include &quot;utilities.h&quot;
+int main(int argc , char **argv) 
+{ 
+  const int i=999;
+  if( i &gt; 0 ) SCRUTE(i) ; i=i+1;
+  return 0;
+}
+</PRE>
+<P>displays :
+<P>
+<PRE>
+- Trace main.cxx [5] : i=999
+</PRE>
+<H3>ASSERT(condition)</H3>
+
+<P>In <CODE>_DEBUG_</CODE> compiling mode only, The C++ macro <CODE>ASSERT</CODE> checks the
+expression passed in argument to be not NULL. If it is NULL the process
+is stopped and the condition is written on the standard output. In
+<CODE>_RELEASE_</CODE> compiling mode, this macro is blank. N.B. : if <CODE>ASSERT</CODE> is
+already defined, this macro is ignored.
+<P>Example :
+<P>
+<PRE>
+#include &quot;utilities.h&quot; 
+... 
+const char *ptrS = fonc();
+ASSERT(ptrS!=NULL); 
+cout &lt;&lt; strlen(ptrS); 
+float table[10];
+int k;
+... 
+ASSERT(k&lt;10);
+cout &lt;&lt; table[k];
+</PRE>
+<HR>
+<A HREF="kernel_resources-2.html">Next</A>
+Previous
+<A HREF="kernel_resources.html#toc1">Contents</A>
+</BODY>
+</HTML>
diff --git a/doc/KernelResources/kernel_resources-2.html b/doc/KernelResources/kernel_resources-2.html
new file mode 100644 (file)
index 0000000..0557f18
--- /dev/null
@@ -0,0 +1,137 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>SALOME Kernel resources for developer: Exceptions</TITLE>
+ <LINK HREF="kernel_resources-3.html" REL=next>
+ <LINK HREF="kernel_resources-1.html" REL=previous>
+ <LINK HREF="kernel_resources.html#toc2" REL=contents>
+</HEAD>
+<BODY>
+<A HREF="kernel_resources-3.html">Next</A>
+<A HREF="kernel_resources-1.html">Previous</A>
+<A HREF="kernel_resources.html#toc2">Contents</A>
+<HR>
+<H2><A NAME="s2">2. Exceptions</A></H2>
+
+<H2><A NAME="ss2.1">2.1 C++ exceptions: class SALOME_Exception</A>
+</H2>
+
+<H3>definition</H3>
+
+<P>The class <CODE>SALOME_Exception</CODE> provides a generic method to send
+a message, with optional source file name and line number. This class
+is intended to serve as a base class for all kinds of exceptions
+SALOME code. All the exceptions derived from <CODE>SALOME_Exception</CODE> could
+be handled in a single catch, in which the message associated to
+the exception is displayed, or sent to a log file.
+<P>The class <CODE>SALOME_Exception</CODE> inherits its behavior from the STL
+class exception.
+<H3>usage</H3>
+
+<P>The header <CODE>SALOME/src/utils/utils_SALOME_Exception.hxx</CODE> must be
+included in the C++ source, when raised or trapped:
+<P><CODE>#include </CODE>&quot;<CODE>utils_SALOME_Exception.hxx</CODE>&quot;
+<P>The <CODE>SALOME_Exception</CODE> constructor is:
+<P>
+<PRE>
+SALOME_Exception( const char *text,
+                  const char *fileName=0, 
+                  const unsigned int lineNumber=0 );
+</PRE>
+<P>The exception is raised like this:
+<P>
+<PRE>
+throw SALOME_Exception(&quot;my pertinent message&quot;);
+</PRE>
+<P>or like this:
+<P>
+<PRE>
+throw SALOME_Exception(LOCALIZED(&quot;my pertinent message&quot;));
+</PRE>
+<P>where LOCALIZED is a macro provided with <CODE>utils_SALOME_Exception.hxx</CODE>
+which gives file name and line number.
+<P>The exception is handled like this:
+<P>
+<PRE>
+try
+  {
+    ...
+  }
+catch (const SALOME_Exception &amp;ex)
+  {
+    cerr &lt;&lt; ex.what() &lt;&lt;endl;
+  }
+</PRE>
+<P>The <CODE>what()</CODE> method overrides the one defined in the STL exception
+class.
+<H2><A NAME="ss2.2">2.2 CORBA exceptions</A>
+</H2>
+
+<H3>definition</H3>
+
+<P>The idl <CODE>SALOME_Exception</CODE> provides a generic CORBA exception for
+SALOME, with an attribute that gives an exception type,a message,
+plus optional source file name and line number. 
+<P>This idl is intended to serve for all user CORBA exceptions raised
+in SALOME code, as IDL specification does not support exception inheritance.
+So, all the user CORBA exceptions from SALOME could be handled in
+a single catch.
+<P>The exception types defined in idl are:
+<P>
+<DL>
+<DT><B>COMM</B><DD><P>CORBA communication problem,
+<DT><B>BAD_PARAM</B><DD><P>Bad User parameters,
+<DT><B>INTERNAL_ERROR</B><DD><P>application level problem (often irrecoverable).
+</DL>
+<P>CORBA system and user exceptions already defined in the packages
+used within SALOME, such as OmniORB exceptions, must be handled separately.
+<H3>usage</H3>
+
+<H3>CORBA servant, C++</H3>
+
+<P>The CORBA Server header for <CODE>SALOME_Exception</CODE> and a macro to throw
+the exception are provided with the header <CODE>SALOME/src/Utils/Utils_CorbaException.hxx</CODE>:
+<P>
+<PRE>
+#include &quot;Utils_CorbaException.hxx&quot;
+</PRE>
+<P>The exception is raised with a macro which appends file name
+and line number.
+<P>
+<PRE>
+if (myStudyName.size() == 0)
+   THROW_SALOME_CORBA_EXCEPTION(&quot;No Study Name given&quot;, \
+                                SALOME::BAD_PARAM);
+</PRE>
+<H3>CORBA Client, GUI Qt C++</H3>
+
+<P>The CORBA Client header for <CODE>SALOME_Exception</CODE> and a Qt function
+header that displays a message box are provided in <CODE>SALOME/src/SALOMEGUI/SALOMEGUI_QtCatchCorbaException.hxx</CODE>:
+<P>
+<PRE>
+#include &quot;SALOMEGUI_QtCatchCorbaException.hxx&quot;
+</PRE>
+<P>A typical exchange with a CORBA Servant will be:
+<P>
+<PRE>
+try
+  {
+    ... // one ore more CORBA calls
+  }
+catch (const SALOME::SALOME_Exception &amp; S_ex)
+  {
+    QtCatchCorbaException(S_ex);
+  }
+</PRE>
+<H3>CORBA Client, C++, without GUI</H3>
+
+<P>Nothing specific has been provided to the developer yet. See
+the idl or the Qt function <CODE>SALOMEGUI_QtCatchCorbaException.hxx</CODE> to
+see how to get the information given by the exception object.
+<HR>
+<A HREF="kernel_resources-3.html">Next</A>
+<A HREF="kernel_resources-1.html">Previous</A>
+<A HREF="kernel_resources.html#toc2">Contents</A>
+</BODY>
+</HTML>
diff --git a/doc/KernelResources/kernel_resources-3.html b/doc/KernelResources/kernel_resources-3.html
new file mode 100644 (file)
index 0000000..64cdedd
--- /dev/null
@@ -0,0 +1,77 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>SALOME Kernel resources for developer: Miscellaneous tools</TITLE>
+ <LINK HREF="kernel_resources-2.html" REL=previous>
+ <LINK HREF="kernel_resources.html#toc3" REL=contents>
+</HEAD>
+<BODY>
+Next
+<A HREF="kernel_resources-2.html">Previous</A>
+<A HREF="kernel_resources.html#toc3">Contents</A>
+<HR>
+<H2><A NAME="s3">3. Miscellaneous tools</A></H2>
+
+<H2><A NAME="ss3.1">3.1 Singleton</A>
+</H2>
+
+<H3>Definition</H3>
+
+<P>A singleton is an application data which is created and deleted
+only once at the end of the application process. The C++ compiler
+allows the user to create a static singleton data before the first
+executable statement. They are deleted after the last statement execution.
+<P>The <CODE>SINGLETON_</CODE> template class deals with dynamic singleton. It
+is useful for functor objects. For example, an object that connects
+the application to a system at creation and disconnects the application
+at deletion.
+<H3>Usage</H3>
+
+<P>To create a single instance a POINT object :
+<P>
+<PRE>
+# include &quot;Utils_SINGLETON.hxx&quot;
+... 
+POINT *ptrPoint=SINGLETON_&lt;POINT&gt;::Instance() ; 
+assert(ptrPoint!=NULL) ;
+</PRE>
+<P>No need to delete ptrPoint. Deletion is achieved automatically
+at exit. If the user tries to create more than one singleton by using
+the class method <CODE>SINGLETON_&lt;TYPE&gt;::Instance()</CODE>, the pointer
+is returned with the same value even if this is done in different
+functions (threads ?).
+<P>
+<PRE>
+POINT *p1=SINGLETON_&lt;POINT&gt;::Instance() ;
+... 
+POINT *p2=SINGLETON_&lt;POINT&gt;::Instance() ; 
+assert(p1==p2)
+</PRE>
+<H3>Design description</H3>
+
+<P>Here are the principles features of the singleton design :
+<P>
+<UL>
+<LI>the user creates an object of class <CODE>TYPE</CODE> by using the class method
+<CODE>SINGLETON_&lt;TYPE&gt;::Instance()</CODE> which returns a pointer to the
+single object ;</LI>
+<LI>to create an object, <CODE>SINGLETON_&lt;TYPE&gt;::Instance()</CODE> uses
+the default constructor of class <CODE>TYPE</CODE> ;</LI>
+<LI>at the same time, this class method creates a destructor object
+which is added to the generic list of destructor objects to be executed
+at the end of the application (<CODE>atexit</CODE>) ;</LI>
+<LI>at the end of the application process all the deletions are performed
+by the <CODE>Nettoyage()</CODE> C function which executes the destruction objects
+end then deletes the destructions objects themselves ;</LI>
+<LI>the <CODE>Nettoyage()</CODE> C  function using atexit() C  function is embedded
+in a static single object <CODE>ATEXIT_()</CODE>.</LI>
+</UL>
+<P>
+<P>
+<HR>
+Next
+<A HREF="kernel_resources-2.html">Previous</A>
+<A HREF="kernel_resources.html#toc3">Contents</A>
+</BODY>
+</HTML>
diff --git a/doc/KernelResources/kernel_resources.html b/doc/KernelResources/kernel_resources.html
new file mode 100644 (file)
index 0000000..6a11ac4
--- /dev/null
@@ -0,0 +1,56 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
+ <TITLE>SALOME Kernel resources for developer</TITLE>
+ <LINK HREF="kernel_resources-1.html" REL=next>
+
+
+</HEAD>
+<BODY>
+<A HREF="kernel_resources-1.html">Next</A>
+Previous
+Contents
+<HR>
+<H1>SALOME Kernel resources for developer</H1>
+
+<H2>Antoine Yessayan, Paul Rascle </H2>Version 0.1 January 16, 2002
+<P><HR>
+<EM>ABSTRACT </EM>
+<HR>
+<P><HR>
+<EM>This document describes the development environment for C++ and
+ Python. Makefiles generation and usage are introduced in another
+ document: "using the SALOME configuration and building system environment".
+ Development environment is intended here as: trace and debug macros
+ usage; SALOME exceptions usage, in C++ and Python; user CORBA exceptions
+ usage, in C++ and Python, with and without Graphical User Interface;
+ some general purpose services such as singleton, used for CORBA connection
+ and disconnection.</EM>
+<HR>
+<P>
+<H2><A NAME="toc1">1.</A> <A HREF="kernel_resources-1.html">Trace and debug Utilities</A></H2>
+
+<UL>
+<LI><A HREF="kernel_resources-1.html#ss1.1">1.1 Two modes: debug and release</A>
+<LI><A HREF="kernel_resources-1.html#ss1.2">1.2 C++ Macros for trace and debug</A>
+</UL>
+<P>
+<H2><A NAME="toc2">2.</A> <A HREF="kernel_resources-2.html">Exceptions</A></H2>
+
+<UL>
+<LI><A HREF="kernel_resources-2.html#ss2.1">2.1 C++ exceptions: class SALOME_Exception</A>
+<LI><A HREF="kernel_resources-2.html#ss2.2">2.2 CORBA exceptions</A>
+</UL>
+<P>
+<H2><A NAME="toc3">3.</A> <A HREF="kernel_resources-3.html">Miscellaneous tools</A></H2>
+
+<UL>
+<LI><A HREF="kernel_resources-3.html#ss3.1">3.1 Singleton</A>
+</UL>
+<HR>
+<A HREF="kernel_resources-1.html">Next</A>
+Previous
+Contents
+</BODY>
+</HTML>
diff --git a/doc/KernelResources/kernel_resources.lyx b/doc/KernelResources/kernel_resources.lyx
new file mode 100644 (file)
index 0000000..d696300
--- /dev/null
@@ -0,0 +1,915 @@
+#LyX 1.1 created this file. For more info see http://www.lyx.org/
+\lyxformat 218
+\textclass linuxdoc
+\language english
+\inputencoding default
+\fontscheme default
+\graphics default
+\paperfontsize 10
+\spacing single 
+\papersize Default
+\paperpackage a4
+\use_geometry 0
+\use_amsmath 0
+\paperorientation portrait
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\defskip medskip
+\quotes_language english
+\quotes_times 2
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+
+\layout Title
+\added_space_top vfill \added_space_bottom vfill 
+SALOME Kernel resources for developer
+\layout Author
+
+Antoine Yessayan, Paul Rascle 
+\layout Date
+
+Version 0.1 January 16, 2002
+\layout Abstract
+
+ABSTRACT 
+\layout Abstract
+
+This document describes the development environment for C++ and Python.
+ Makefiles generation and usage are introduced in another document: 
+\begin_inset Quotes eld
+\end_inset 
+
+using the SALOME configuration and building system environment
+\begin_inset Quotes erd
+\end_inset 
+
+.
+ Development environment is intended here as: trace and debug macros usage;
+ SALOME exceptions usage, in C++ and Python; user CORBA exceptions usage,
+ in C++ and Python, with and without Graphical User Interface; some general
+ purpose services such as singleton, used for CORBA connection and disconnection.
+\layout Standard
+
+
+\begin_inset LatexCommand \tableofcontents{}
+
+\end_inset 
+
+
+\layout Section
+
+Trace and debug Utilities
+\layout Standard
+
+During the development process, an execution log is useful to identify problems.
+ This log contains messages, variables values, source files names and line
+ numbers.
+ It is recommended to verify assertions on variables values and if necessary,
+ to stop the execution at debug time, in order to validate all parts of
+ code.
+\layout Subsection
+
+Two modes: debug and release
+\layout Standard
+
+The goal of debug mode is to check as many features as possible during the
+ early stages of the development process.
+ The purpose of the utilities provided in SALOME is to help the developer
+ to add detailed traces and check variables values, without writing a lot
+ of code.
+\layout Standard
+
+When the code is assumed to be valid, the release mode optimizes execution,
+ in terms of speed, memory, and display only user level messages.
+\layout Standard
+
+But, some informations must always be displayed in both modes: especially
+ messages concerning environment or internal errors, with version identification.
+ When an end user is confronted to such a message, he may refer to a configurati
+on documentation or send the message to the people in charge of SALOME installat
+ion, or to the development team, following the kind of error.
+\layout Subsection
+
+C++ Macros for trace and debug
+\layout Standard
+
+SALOME provides C++ macros for trace and debug.
+ These macros are in 
+\family typewriter 
+SALOME/src/utils/utilities.h
+\family default 
+ and this file must be included in C++ source.
+ Some macros are activated only in debug mode, others are always activated.
+ To activate the debug mode, 
+\family typewriter 
+_DEBUG_
+\family default 
+ must be defined, which is the case when SALOME Makefiles are generated
+ from configure, without options.
+ When 
+\family typewriter 
+_DEBUG_
+\family default 
+ is undefined (release mode), the debug mode macros are defined empty (they
+ do nothing).
+ So, when switching from debug to release, it is possible (and recommended)
+ to let the macro calls unchanged in the source.
+\layout Standard
+
+All the macros writing on the standard output start by flushing the standard
+ error.
+ At the end of the display those macros flush the standard output.
+\layout Standard
+
+Two informations are systematically added in front of the information displayed:
+\layout Itemize
+
+the name of the source file in which the macros is set;
+\layout Itemize
+
+the line number of the source file at which the macro is set.
+\layout Subsubsection
+
+Macros defined in debug and release modes
+\layout Paragraph
+
+INFOS_COMPILATION
+\layout Standard
+
+The C++ macro 
+\family typewriter 
+INFOS_COMPILATION
+\family default 
+ writes on the standard output informations about the compiling process:
+\layout Itemize
+
+the name of the compiler : 
+\family typewriter 
+g++, KCC, CC, pgCC
+\family default 
+;
+\layout Itemize
+
+the date and the time of the compiling processing process.
+\layout Standard
+
+This macro 
+\family typewriter 
+INFOS_COMPILATION
+\family default 
+ does not have any argument.
+ Moreover, it is defined in both compiling mode : 
+\family typewriter 
+_DEBUG_
+\family default 
+ and 
+\family typewriter 
+_RELEASE_
+\family default 
+.
+\layout Standard
+
+Example :
+\layout Verbatim
+
+#include "utilities.h"
+\layout Verbatim
+
+int main(int argc , char **argv) 
+\layout Verbatim
+
+{ 
+\layout Verbatim
+
+  INFOS_COMPILATION;
+\layout Verbatim
+
+  ...
+\layout Verbatim
+
+}
+\layout Paragraph
+
+INFOS(str)
+\layout Standard
+
+In both compiling mode 
+\family typewriter 
+_DEBUG_
+\family default 
+ and 
+\family typewriter 
+_RELEASE_
+\family default 
+, The C++ macro 
+\family typewriter 
+INFOS
+\family default 
+ writes on the standard output the string which has been passed in argument
+ by the user.
+\layout Standard
+
+Example : 
+\layout Verbatim
+
+#include "utilities.h"
+\layout Verbatim
+
+int main(int argc , char **argv)
+\layout Verbatim
+
+{ 
+\layout Verbatim
+
+  ...
+\layout Verbatim
+
+  INFOS("NORMAL END OF THE PROCESS"); 
+\layout Verbatim
+
+  return 0; 
+\layout Verbatim
+
+}
+\layout Standard
+
+displays :
+\layout Verbatim
+
+main.cxx [5] : NORMAL END OF THE PROCESS
+\layout Subsubsection
+
+Macros defined only in debug mode
+\layout Paragraph
+
+MESSAGE(str)
+\layout Standard
+
+In 
+\family typewriter 
+_DEBUG_
+\family default 
+ compiling mode only, the C++ macro 
+\family typewriter 
+MESSAGE
+\family default 
+ writes on the standard output the string which has been passed in argument
+ by the user.
+ In 
+\family typewriter 
+_RELEASE_
+\family default 
+ compiling mode, this macro is blank.
+\layout Standard
+
+Example : 
+\layout Verbatim
+
+#include "utilities.h" 
+\layout Verbatim
+
+#include <string> 
+\layout Verbatim
+
+using namespace std; 
+\layout Verbatim
+
+int main(int argc , char **argv) 
+\layout Verbatim
+
+{ 
+\layout Verbatim
+
+  ...
+\layout Verbatim
+
+  const char *str = "Salome";
+\layout Verbatim
+
+  MESSAGE(str);
+\layout Verbatim
+
+  ...
+ const string st; 
+\layout Verbatim
+
+  st = "Aster"; 
+\layout Verbatim
+
+  MESSAGE(c_str(st+" and CASTEM")); 
+\layout Verbatim
+
+  return 0;
+\layout Verbatim
+
+}
+\layout Standard
+
+displays :
+\layout Verbatim
+
+- Trace main.cxx [8] : Salome
+\layout Verbatim
+
+- Trace main.cxx [12] : Aster and CASTEM
+\layout Paragraph
+
+BEGIN_OF(func_name)
+\layout Standard
+
+In 
+\family typewriter 
+_DEBUG_
+\family default 
+ compiling mode, The C++ macro 
+\family typewriter 
+BEGIN_OF
+\family default 
+ appends the string 
+\family typewriter 
+"Begin of "
+\family default 
+ to the one passed in argument by the user and displays the result on the
+ standard output.
+ In 
+\family typewriter 
+_RELEASE_
+\family default 
+ compiling mode, this macro is blank.
+\layout Standard
+
+Example : 
+\layout Verbatim
+
+#include "utilities.h" 
+\layout Verbatim
+
+int main(int argc , char **argv) 
+\layout Verbatim
+
+{ 
+\layout Verbatim
+
+  BEGIN_OF(argv[0]);
+\layout Verbatim
+
+  return 0;
+\layout Verbatim
+
+}
+\layout Standard
+
+displays : 
+\layout Verbatim
+
+- Trace main.cxx [3] : Begin of a.out
+\layout Paragraph
+
+END_OF(func_name)
+\layout Standard
+
+In 
+\family typewriter 
+_DEBUG_
+\family default 
+ compiling mode, The C++ macro 
+\family typewriter 
+END_OF
+\family default 
+ appends the string 
+\family typewriter 
+"Normal end of "
+\family default 
+ to the one passed in argument by the user and displays the result on the
+ standard output.
+ In 
+\family typewriter 
+_RELEASE_
+\family default 
+ compiling mode, this macro is blank.
+\layout Standard
+
+Example : 
+\layout Verbatim
+
+#include "utilities.h" 
+\layout Verbatim
+
+int main(int argc , char **argv) 
+\layout Verbatim
+
+{ 
+\layout Verbatim
+
+  END_OF(argv[0]);
+\layout Verbatim
+
+  return 0; 
+\layout Verbatim
+
+}
+\layout Standard
+
+displays : 
+\layout Verbatim
+
+- Trace main.cxx [4] : Normal end of a.out
+\layout Paragraph
+
+SCRUTE(var)
+\layout Standard
+
+In 
+\family typewriter 
+_DEBUG_
+\family default 
+ compiling mode, The C++ macro 
+\family typewriter 
+SCRUTE
+\family default 
+ displays its argument which is an application variable followed by the
+ value of the variable.
+ In 
+\family typewriter 
+_RELEASE_
+\family default 
+ compiling mode, this macro is blank.
+\layout Standard
+
+Example : 
+\layout Verbatim
+
+#include "utilities.h"
+\layout Verbatim
+
+int main(int argc , char **argv) 
+\layout Verbatim
+
+{ 
+\layout Verbatim
+
+  const int i=999;
+\layout Verbatim
+
+  if( i > 0 ) SCRUTE(i) ; i=i+1;
+\layout Verbatim
+
+  return 0;
+\layout Verbatim
+
+}
+\layout Standard
+
+displays :
+\layout Verbatim
+
+- Trace main.cxx [5] : i=999
+\layout Paragraph
+
+ASSERT(condition)
+\layout Standard
+
+In 
+\family typewriter 
+_DEBUG_
+\family default 
+ compiling mode only, The C++ macro 
+\family typewriter 
+ASSERT
+\family default 
+ checks the expression passed in argument to be not NULL.
+ If it is NULL the process is stopped and the condition is written on the
+ standard output.
+ In 
+\family typewriter 
+_RELEASE_
+\family default 
+ compiling mode, this macro is blank.
+ N.B.
+ : if 
+\family typewriter 
+ASSERT
+\family default 
+ is already defined, this macro is ignored.
+\layout Standard
+
+Example :
+\layout Verbatim
+
+#include "utilities.h" 
+\layout Verbatim
+
+...
+\layout Verbatim
+
+const char *ptrS = fonc();
+\layout Verbatim
+
+ASSERT(ptrS!=NULL); 
+\layout Verbatim
+
+cout << strlen(ptrS); 
+\layout Verbatim
+
+float table[10];
+\layout Verbatim
+
+int k;
+\layout Verbatim
+
+...
+\layout Verbatim
+
+ASSERT(k<10);
+\layout Verbatim
+
+cout << table[k];
+\layout Section
+
+Exceptions
+\layout Subsection
+
+C++ exceptions: class SALOME_Exception
+\layout Subsubsection
+
+definition
+\layout Standard
+
+The class 
+\family typewriter 
+SALOME_Exception
+\family default 
+ provides a generic method to send a message, with optional source file
+ name and line number.
+ This class is intended to serve as a base class for all kinds of exceptions
+ SALOME code.
+ All the exceptions derived from 
+\family typewriter 
+SALOME_Exception
+\family default 
+ could be handled in a single catch, in which the message associated to
+ the exception is displayed, or sent to a log file.
+\layout Standard
+
+The class 
+\family typewriter 
+SALOME_Exception
+\family default 
+ inherits its behavior from the STL class exception.
+\layout Subsubsection
+
+usage
+\layout Standard
+
+The header 
+\family typewriter 
+SALOME/src/utils/utils_SALOME_Exception.hxx
+\family default 
+ must be included in the C++ source, when raised or trapped:
+\layout Standard
+
+
+\family typewriter 
+#include 
+\family default 
+"
+\family typewriter 
+utils_SALOME_Exception.hxx
+\family default 
+"
+\layout Standard
+
+The 
+\family typewriter 
+SALOME_Exception
+\family default 
+ constructor is:
+\layout Verbatim
+
+SALOME_Exception( const char *text,
+\layout Verbatim
+
+                  const char *fileName=0, 
+\layout Verbatim
+
+                  const unsigned int lineNumber=0 );
+\layout Standard
+
+The exception is raised like this:
+\layout Verbatim
+
+throw SALOME_Exception("my pertinent message");
+\layout Standard
+
+or like this:
+\layout Verbatim
+
+throw SALOME_Exception(LOCALIZED("my pertinent message"));
+\layout Standard
+
+where LOCALIZED is a macro provided with 
+\family typewriter 
+utils_SALOME_Exception.hxx
+\family default 
+ which gives file name and line number.
+\layout Standard
+
+The exception is handled like this:
+\layout Verbatim
+
+try
+\layout Verbatim
+
+  {
+\layout Verbatim
+
+    ...
+\layout Verbatim
+
+  }
+\layout Verbatim
+
+catch (const SALOME_Exception &ex)
+\layout Verbatim
+
+  {
+\layout Verbatim
+
+    cerr << ex.what() <<endl;
+\layout Verbatim
+
+  }
+\layout Standard
+
+The 
+\family typewriter 
+what()
+\family default 
+ method overrides the one defined in the STL exception class.
+\layout Subsection
+
+CORBA exceptions
+\layout Subsubsection
+
+definition
+\layout Standard
+
+The idl 
+\family typewriter 
+SALOME_Exception
+\family default 
+ provides a generic CORBA exception for SALOME, with an attribute that gives
+ an exception type,a message, plus optional source file name and line number.
+\layout Standard
+
+This idl is intended to serve for all user CORBA exceptions raised in SALOME
+ code, as IDL specification does not support exception inheritance.
+ So, all the user CORBA exceptions from SALOME could be handled in a single
+ catch.
+\layout Standard
+
+The exception types defined in idl are:
+\layout Description
+
+COMM CORBA communication problem,
+\layout Description
+
+BAD_PARAM Bad User parameters,
+\layout Description
+
+INTERNAL_ERROR application level problem (often irrecoverable).
+\layout Standard
+
+CORBA system and user exceptions already defined in the packages used within
+ SALOME, such as OmniORB exceptions, must be handled separately.
+\layout Subsubsection
+
+usage
+\layout Paragraph
+
+CORBA servant, C++
+\layout Standard
+
+The CORBA Server header for 
+\family typewriter 
+SALOME_Exception
+\family default 
+ and a macro to throw the exception are provided with the header 
+\family typewriter 
+SALOME/src/Utils/Utils_CorbaException.hxx
+\family default 
+:
+\layout Verbatim
+
+#include "Utils_CorbaException.hxx"
+\layout Standard
+
+The exception is raised with a macro which appends file name and line number.
+\layout Verbatim
+
+if (myStudyName.size() == 0)
+\layout Verbatim
+
+   THROW_SALOME_CORBA_EXCEPTION("No Study Name given", 
+\backslash 
+
+\layout Verbatim
+
+                                SALOME::BAD_PARAM);
+\layout Paragraph
+
+CORBA Client, GUI Qt C++
+\layout Standard
+
+The CORBA Client header for 
+\family typewriter 
+SALOME_Exception
+\family default 
+ and a Qt function header that displays a message box are provided in 
+\family typewriter 
+SALOME/src/SALOMEGUI/SALOMEGUI_QtCatchCorbaException.hxx
+\family default 
+:
+\layout Verbatim
+
+#include "SALOMEGUI_QtCatchCorbaException.hxx"
+\layout Standard
+
+A typical exchange with a CORBA Servant will be:
+\layout Verbatim
+
+try
+\layout Verbatim
+
+  {
+\layout Verbatim
+
+    ...
+ // one ore more CORBA calls
+\layout Verbatim
+
+  }
+\layout Verbatim
+
+catch (const SALOME::SALOME_Exception & S_ex)
+\layout Verbatim
+
+  {
+\layout Verbatim
+
+    QtCatchCorbaException(S_ex);
+\layout Verbatim
+
+  }
+\layout Verbatim
+
+\layout Paragraph
+
+CORBA Client, C++, without GUI
+\layout Standard
+
+Nothing specific has been provided to the developer yet.
+ See the idl or the Qt function 
+\family typewriter 
+SALOMEGUI_QtCatchCorbaException.hxx
+\family default 
+ to see how to get the information given by the exception object.
+\layout Section
+
+Miscellaneous tools
+\layout Subsection
+
+Singleton
+\layout Subsubsection
+
+Definition
+\layout Standard
+
+A singleton is an application data which is created and deleted only once
+ at the end of the application process.
+ The C++ compiler allows the user to create a static singleton data before
+ the first executable statement.
+ They are deleted after the last statement execution.
+\layout Standard
+
+The 
+\family typewriter 
+SINGLETON_
+\family default 
+ template class deals with dynamic singleton.
+ It is useful for functor objects.
+ For example, an object that connects the application to a system at creation
+ and disconnects the application at deletion.
+\layout Subsubsection
+
+Usage
+\layout Standard
+
+To create a single instance a POINT object :
+\layout Verbatim
+
+# include "Utils_SINGLETON.hxx"
+\layout Verbatim
+
+...
+\layout Verbatim
+
+POINT *ptrPoint=SINGLETON_<POINT>::Instance() ; 
+\layout Verbatim
+
+assert(ptrPoint!=NULL) ;
+\layout Standard
+
+No need to delete ptrPoint.
+ Deletion is achieved automatically at exit.
+ If the user tries to create more than one singleton by using the class
+ method 
+\family typewriter 
+SINGLETON_<TYPE>::Instance()
+\family default 
+, the pointer is returned with the same value even if this is done in different
+ functions (threads ?).
+\layout Verbatim
+
+POINT *p1=SINGLETON_<POINT>::Instance() ;
+\layout Verbatim
+
+...
+\layout Verbatim
+
+POINT *p2=SINGLETON_<POINT>::Instance() ; 
+\layout Verbatim
+
+assert(p1==p2)
+\layout Subsubsection
+
+Design description
+\layout Standard
+
+Here are the principles features of the singleton design :
+\layout Itemize
+
+the user creates an object of class 
+\family typewriter 
+TYPE
+\family default 
+ by using the class method 
+\family typewriter 
+SINGLETON_<TYPE>::Instance()
+\family default 
+ which returns a pointer to the single object ;
+\layout Itemize
+
+to create an object, 
+\family typewriter 
+SINGLETON_<TYPE>::Instance()
+\family default 
+ uses the default constructor of class 
+\family typewriter 
+TYPE
+\family default 
+ ;
+\layout Itemize
+
+at the same time, this class method creates a destructor object which is
+ added to the generic list of destructor objects to be executed at the end
+ of the application (
+\family typewriter 
+atexit
+\family default 
+) ;
+\layout Itemize
+
+at the end of the application process all the deletions are performed by
+ the 
+\family typewriter 
+Nettoyage()
+\family default 
+ C\SpecialChar ~
+function which executes the destruction objects end then deletes the destructi
+ons objects themselves ;
+\layout Itemize
+
+the 
+\family typewriter 
+Nettoyage()
+\family default 
+ C \SpecialChar ~
+function using atexit() C \SpecialChar ~
+function is embedded in a static single object
+\family typewriter 
+ATEXIT_()
+\family default 
+.
+\the_end
diff --git a/doc/Makefile.in b/doc/Makefile.in
new file mode 100644 (file)
index 0000000..2033a41
--- /dev/null
@@ -0,0 +1,33 @@
+
+# -* Makefile *- 
+#
+# Author : Patrick GOLDBRONN (CEA)
+# Date : 30/11/2001
+# $Header$
+#
+# source path
+top_srcdir=@top_srcdir@
+top_builddir=..
+srcdir=@srcdir@
+VPATH=.:@srcdir@
+
+SUBDIRS=html DevelopersGuide
+
+doc:
+       @@SETX@; for d in $(SUBDIRS); do        \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done
+clean:
+       @@SETX@; for d in $(SUBDIRS); do        \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done
+
+distclean: clean
+       @@SETX@; for d in $(SUBDIRS); do        \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done
+
+install:
+       @@SETX@; for d in $(SUBDIRS); do        \
+          (cd $$d && $(MAKE) $@) || exit 1;    \
+       done
diff --git a/doc/OrganisationProduction_PAL.pdf b/doc/OrganisationProduction_PAL.pdf
new file mode 100644 (file)
index 0000000..c4ffeeb
Binary files /dev/null and b/doc/OrganisationProduction_PAL.pdf differ
diff --git a/doc/OrganisationProduction_PAL.ps b/doc/OrganisationProduction_PAL.ps
new file mode 100644 (file)
index 0000000..51512a1
--- /dev/null
@@ -0,0 +1,9416 @@
+%!PS-Adobe-3.0
+%%BoundingBox: 0 0 595 842
+%%Creator: OpenOffice.org 1.0.2 
+%%For: jroy
+%%CreationDate: Wed Apr 16 14:25:39 2003
+%%Title: OrganisationProduction_PAL.sxw
+%%LanguageLevel: 2
+%%DocumentData: Clean7Bit
+%%Pages: (atend)
+%%PageOrder: Ascend
+%%EndComments
+%%BeginProlog
+/ISO1252Encoding [
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle
+/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
+/zero /one /two /three /four /five /six /seven
+/eight /nine /colon /semicolon /less /equal /greater /question
+/at /A /B /C /D /E /F /G
+/H /I /J /K /L /M /N /O
+/P /Q /R /S /T /U /V /W
+/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
+/grave /a /b /c /d /e /f /g
+/h /i /j /k /l /m /n /o
+/p /q /r /s /t /u /v /w
+/x /y /z /braceleft /bar /braceright /asciitilde /unused
+/Euro /unused /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl
+/circumflex /perthousand /Scaron /guilsinglleft /OE /unused /Zcaron /unused
+/unused /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash
+/tilde /trademark /scaron /guilsinglright /oe /unused /zcaron /Ydieresis
+/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
+/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
+/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
+/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
+/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
+/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
+/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
+/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
+/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
+/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
+/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
+/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def
+
+/psp_definefont { exch dup findfont dup length dict begin { 1 index /FID ne
+{ def } { pop pop } ifelse } forall /Encoding 3 -1 roll def
+currentdict end exch pop definefont pop } def
+
+/pathdict dup 8 dict def load begin
+/rcmd { { currentfile 1 string readstring pop 0 get dup 32 gt { exit }
+{ pop } ifelse } loop dup 126 eq { pop exit } if 65 sub dup 16#3 and 1
+add exch dup 16#C and -2 bitshift 16#3 and 1 add exch 16#10 and 16#10
+eq 3 1 roll exch } def
+/rhex { dup 1 sub exch currentfile exch string readhexstring pop dup 0
+get dup 16#80 and 16#80 eq dup 3 1 roll { 16#7f and } if 2 index 0 3
+-1 roll put 3 1 roll 0 0 1 5 -1 roll { 2 index exch get add 256 mul }
+for 256 div exch pop exch { neg } if } def
+/xcmd { rcmd exch rhex exch rhex exch 5 -1 roll add exch 4 -1 roll add
+1 index 1 index 5 -1 roll { moveto } { lineto } ifelse } def end
+/readpath { 0 0 pathdict begin { xcmd } loop end pop pop } def
+
+systemdict /languagelevel known not {
+/xshow { exch dup length 0 1 3 -1 roll 1 sub { dup 3 index exch get
+exch 2 index exch get 1 string dup 0 4 -1 roll put currentpoint 3 -1
+roll show moveto 0 rmoveto } for pop pop } def
+/rectangle { 4 -2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0
+rlineto closepath } def
+/rectfill { rectangle fill } def
+/rectstroke { rectangle stroke } def } if
+
+/psp_lzwfilter { currentfile /ASCII85Decode filter /LZWDecode filter } def
+/psp_ascii85filter { currentfile /ASCII85Decode filter } def
+/psp_lzwstring { psp_lzwfilter 1024 string readstring } def
+/psp_ascii85string { psp_ascii85filter 1024 string readstring } def
+/psp_imagedict {
+/psp_bitspercomponent { 3 eq { 1 }{ 8 } ifelse } def
+/psp_decodearray { [ [0 1 0 1 0 1] [0 255] [0 1] [0 255] ] exch get }
+def 7 dict dup
+/ImageType 1 put dup
+/Width 7 -1 roll put dup
+/Height 5 index put dup
+/BitsPerComponent 4 index psp_bitspercomponent put dup
+/Decode 5 -1 roll psp_decodearray put dup
+/ImageMatrix [1 0 0 1 0 0] dup 5 8 -1 roll put put dup
+/DataSource 4 -1 roll 1 eq { psp_lzwfilter } { psp_ascii85filter } ifelse put
+} def
+%%EndProlog
+%%Page: 0 0
+%%PageBoundingBox: 18 18 577 824
+%%BeginSetup
+%
+%%BeginFeature: *PageSize A4
+<</PageSize [595 842] /ImagingBBox null>> setpagedevice
+%%EndFeature
+%%EndSetup
+%%BeginPageSetup
+%
+gsave
+[0.24 0 0 -0.24 18 824] concat
+gsave
+%%EndPageSetup
+/Times-Bold-iso1252 /Times-Bold ISO1252Encoding psp_definefont
+grestore
+gsave
+readpath
+V02B500DBB000197E03B100B008197~
+closepath clip newpath
+gsave
+693 622 translate
+2.48157 2.47852 scale
+/DeviceRGB setcolorspace
+380 163 0 1 psp_imagedict image
+J3RD%fG"r'"b]2#:hXAd)[hEh@M(SI<[AN=7H774jC17kO2kcD3>@cH-^%(Id[=XK>q247Ahs1HenI(2
+c=YP)`9r%:TMHt7qAfcs8#&sq[(8[]Pte2Ul;[&F7]TIg<biG]]lpeiY#jsj)^U*\A$aj*(;!STdr2["
+/_:r<cL#Yb?#MZKeb8fg^#3h]/-ZUoKu@CS=F=F&)3;gKEOe2d;^I^Q5Tc'=lj=%$K#/Z"W&-7C%>D]o
+0aO:5.h[b/,4VVUE\SVpa5aH3*/[B4PK>*`BhYg6/sT*VZPe/5CG_O)k;-i%icdSXcmP&,r=4HJUX?%t
+>$W>?8uC)eodY)^UK+;DX#5dj?FsCE="Etp%?eP>Z-4;nlWpgNCk(0rpFDf_lZTns0/orN])-rki%R,A
+*YSp9^u"T@XBm\%NlU393@pb#/!dj,TF]Z7p&tSM_-mn"<#QV\L;Mos(kbX+'o>AROa,Af3>dfHj71e*
+N^Y7UalJVA1o=D+QV++ffo3XV24@8%F.'E#3rYaIkS+pLrVo<];<\d`<A'\6Vc2jq)O4's<NB-c'q3Zj
+\QuC?lkUNL%`nj[:G!6l<8uMD[Ti.N)f<mZFLb[q(OO]dq0B]l.$Nin$OHa:@IY2)<\G>Ma(+ZX*0s?Z
+A>$a\cj/n0r;qR9i38#".Lcf>_dRNJN'\m&MSu79W'g+Z)h,h;n];2c73I`7Up>h&W_Y.0b9c`DN4*@Q
+RS9TbM7i+j4Ij`1F6X29LHhN[W74F&.[)rDe#E!INCp*JWn"-BMTonF>cu\Zp'V=ea(2L/XS.QHWn2'e
+^TI5<NQUF+]%sO`Mp:P]I([nl(^p<MR=W4_n@4E@.h.HUj)K>1N^G0:[cOgjL]dV["+igHd!.r*'aoa`
+@F4e&7O8_*7:OYh`+CkGM*Ic_q#lF@,EbW/dWn6X<@aA.AT-7TM>I.;9dXpa`85VpSk`q)\b-/X6_Db>
+<,*^#Pt@iN.FbqW2PF'K<GFC;V.-Q0Y#al=Ws*Zn*3r^`epBi_eSDTtD:\T<`Wn--?#J8@`THhFR+L\+
+qt:63K"td`fN^lZ'o0cfEL?ZHEoiM-ATHIK_u]f<J&*83BKRIP$AHA@YipI$,8,jP,-bg'$8WT[a!7kQ
+r.79[Oi\lSBfr+U(lc:AZKLQE>;;L=VR&k,c>tn7:+(,Im/hQ"T?udY8j+)V7A\E]PcAReT2MRe.Q(D#
+>-h>5ea'R*]n4.2Z.U\:CH\E@%?=Vo[d/@Yis:n*0"5W/MI1\ChCc5c*4>`r_7sqjWqCD?LrJAY\=A"(
++caY*13m]%@K?=T^L0l/*#9+kKgDDoQtuBp&W&p8O]\ts0c>s?j,r!dIR,->8E>q:1kklWPtL-nH$$c/
+0pt_rP0()fEB0RbkEFTC%Y6p>;!=-I2'.<4V*Ci`L[?]q8;"^OeQ?*\+'G[GlLil]HF[Cf=DX9223-!o
+Zs)itgJ,E8E49(iQTDM%nThfSmu`H,pAl#-;_U192BMsP`FAA#Wg5jm7Xen=R2R,)>6'/gTQ!Euq@<jb
+_Olq1loH3dK>1j!kN#Ye(lZFBOiZTu/JF&`A9%u-MG5@[b,$l87(QGQQHU[s.BLO-1n7:<1WeGKF[2PF
+BCmZ*&pFMTd]%?2D*":cW77hi9!):#8qg<<eVG5`%pc6flu8F'Ra5NJg$Nt+AZ!Qf\D4629<<:cFcYAI
+GK]CMs*_F^i=qXNL%tP)iZXAqAh+gYNoV:-8(Gc`R".CD:WMf.qZhd@@8OIE2B<<`5p3CVPZB4LM8j#P
+W5NR:*KWc:;>D2d8LK]oA?ra6Z;iKD9BK.:UrI0JJ'M\*\`EI45G1hd<&s8M^@5=1ge!cH>md-8)pul5
+P8)/o@22R2Wk/V=<BqnaPfC<)P3$u&?W9[0[bYkO>]*V)V:ON']%s9FLWf5%jE]W)Q[/hu%>VK&0iU8)
+2][4`jDn?r'+pbuZ9Sr"Q<C1&_^_7E:l&'rY^TmtOfUqPD4$ns[M_e0;s!ZKIRk_>.3+LD-BlRu18uL\
+d.;-7?4HWR``G'f^Lo@%gu\JuT?nt3g(X$A7?CBG1l>Q[Rer[@B([XE;QD%@<\$&-h/^,6YLXeZRh\E5
+B!U,AQE*0OdqlMJXu>%*_Wc*PhCeQ'[IWp;^#,p;r#QLZL;W"*336FB%aSq&&W0&J/0%qn!$DGen,`ar
+J\bb+GZ5S!$&5@.AX*9]n@1q:)K#3nc2SfF8)t:#'TPa2P<YlVR8g=l.?d!X/Z/]iDT-UlQ#0I29p/^F
+Y=5=bCclZU=NfqA$#M;_/>U&4$tga**lg47R'h7b@^TLE=4jjf9Zc<hZWZPBqc0fP+E=t6W:_Z9.(G)3
++nq@HmM?04(=XX_lKp.&C,oQQ8*2HBNQ5Q")'"r<,5?Q"PY_OQA?'r]",j0E!F7hqL-i[ePlUU=Z9>%P
+9a8M;q&GF8U[eZFMErMJ5@j<9oVttDQHCG5\V/*#0q(enEd>k%3iH:B%ER*H!eiq6dASH]j"]K_Hc^!p
+#j^I?qH,CTnRbcBM-R17W4!'#L;.3'fdub0!c==uHbQCZ$]W<lFLk+VO8I/(G::2_0CR*X#6BFni@t$h
+:)aq(`T+56$t`-SPK;i=\!R9s"Ts?B@*j-d-5?`45$s/CCKtgt=F^bCkd4eP)3.2HdA[7l6Q_F^A)K,b
+JDuW"]\]ij>fL>2Kg2H`H,Sif3eL/PM'bWZ7miCk(sY^K`ck(Q;^NYCqN?P2P"3].p$FZF>Fn`.ebPaR
+a]Dg!.$\""VTgMc(f6.`j!i(I\m94*Hc>.?HbNboaG(.n"W+TkPV!-s-P_QZ@r]!4j7aj`SRen,];,K$
+r-go(O>nd+q#,o?'9(9=>s/aU6t1.LXC47$AjGC]kkp$!n9I1=-Y9Yk.4US*,;RqW\mmF^bN?'qbCSU[
+S^/[iaUEWB*M6-"e7q,es%9-:.C=<c.\R6KeLG]VQ"$dsX4F>Zb5H4q?EmT`G&&\(a_Ij)D78bY_W,[6
+.+XB^l&AOuRS9o/lg=gRQ<#lF[#@0n'8j?UnQ>.,+iNPi!6Zi"rUKr[!#<u%oFh-&$&(_)OP"@F+VBQ!
+ifR?M7N2G\5pK7ZjF0$2O!fg_V:8gK.@!@Gdb/`V@4bur>pTTii^Z"j:8Ch!o_*huOi^ZuQA_I48Yo>L
+PhL7DRes'`gWha3$@c0N1>6W$c$mK;Yup?'X#6KrBsZ=SFU5Z,pMdWAT244J)4p!lQ;eU!dCC16W*nlR
+7,p'$=iF3WGarA0GrAo917;<_gG&\W^S#O:,Q82ZKYjF$fAlQD%u3OsE@@nX0,0@6UG9jFH8Qh*aCFci
+/<WdRPf+_ca_\Oq0SDNZ07r`uHiP[pV_bm5np`ircY.D-,moQ$UXH*j1dZbe"fTqNF\8_R@g]8;X(Tr*
+/sAu5;*\]X"+A8^X@t-fbABkj9=Rg@VkqqTms)Lqm8DQk3:rMJ=VMZ'/]SB1`*nk^1[8D5pjBfJR7sbf
+09q&Oi(p9s((CM"6=4T<qmZW-:IF+r#aA@=(Q$.@al<^;I//jpA1rcbQ;&`k8n@KA";VXJQqV*j#OL#Y
+242,70/p\ng96L_@h^3Y\JiDS^EHE'9]cQ_2^9/]8u3$")QVD('tVq04L&\NCfK\*1<22?5HRtuAZ>]J
+\6NoQ2s^$SGIlW`f:1mirHc7dE&[\1(C>l5ic*PO7P>dA^YJB_4Jl12k]T34j$RRo!*;r^Tb)HB1)CFS
+6m8fPHqGn'Mo=X(K`aX>*fnAf1+=3+9)k*t,r2GNZ<HgF5!iiR,[)u]R\,cpa].hX4I4>B10M8!M%D/.
+QW,G?17Lt08mMqI\L?gQUK/eNV!r3=W33-N1MY]9Licf[SBi#%ZJ09+gb#_!S^QhID7A?P/)4QtdW7S@
+08pqW$\lRY*q*oO-P)-U]ro\NC[WbNbN9oXa:o*gG=f)*"a'A`(CGmaiR&KY9\bS8^>ffme7&"jO%5ft
+)&-)+&;eN*&LgDF<@sM0j`;9#34bo14J)%%h!TGNIDI<C2sh(Q7AE`DYPM6OR8'SD?^*U26D[\^<U+^q
+[;)sNY?,NTb8#KH@Bs&&ese7oX%p-.mM?girVB,J/Z)GQFlrLH^L!c#K`aZ(Ku7?h(n=V[)2Lp8g:,i@
+j<e534s)H`j8K8dK#+,KkY*HB%#2ZnnGiSq4VEW?ij"<PC+UE_Ptt&Nm#":YP0'F2M+jpN.<E)W_aA1Q
+1EDJ"-M(o=,j_s4.[l=IX/YO^I(nh:LU@_cf6&AS/NMP=EAacH#):*<L!&n4f;nTQ%>r+!ZIu>(VYdg$
+Cn0%NAcrb>mrWn^Y4mk!h<TI&hlle_e`uBeZIe=TLZU%1b&U^'q$<t1(rN.5ZMB:Yjokj=5b@FgZlSLM
+7PMU]FS%aA&;`hbOa*C./K0R;j3cN_E^^TAQ;e/Z6V[4LI*1QVa]uhs0nRU2:V"C6FZZ//VpkJ=re3_6
+;/"HllgajDV:)?-qK58s;lE\G<Ed@J[8sG2CULbHL;@B'fkH[t7AeUNTqYL<)#TC]EO^pd9%0e3OI9.W
+euUeCrKcW_@5)p"&rgSY6Dmu+,U3:I@T6VW#_`B^T`0MY+L#NA+qk<;_]c83EN*+A/#T+]=JT+V(lcMp
+Z)Hr5@b?1P,dM,HU)aYkb9aHloR:9iR7F!*;psq+3h=SEZfu<.K.iqG+HInFjEtrM9e!D0H?aCJ=KbkF
+=nD'f>('I&[Hd^5G0"Z$Q8Ij.U+A,Z/"Nj>6g!EL\\;DeCVA`upV#H'/a$];"&PFA=tWmZ,85sRj"\(1
+IO4BEalMoWHL&-Bn9Ts$$EsP:4U6YW+]-g%4r4fb)j-(<e6Xj)NCMe;f^mrbp3Sr5:K)(1*>40#AWjTE
+GVET*):8j<ZDje2@CTJMLKec8n=WUV/]Rt,[bu?fg[<d,3h&pC\fG];e)IQ4NkOb$Qc%Z=@Bi9DG$!ds
+d/C@:Xd7^Wro%k->jdptC\@L<]\Y;CgZAG/J\PTs(d'\m&VS,3nT^R9595m+jR9Q_[U1`hJ&%^r8,KFD
+pB28]+9K-#)\7]l,&o$47P>HO((\U.6UfN/ON='B8M$<+-##9.W5T]HTQj]N%BB+X6.%*NcDPa*m.u2p
+=KgKlROhX%(o,'*`tai578TXP?aWM.>-D&.dOTF>8pI@^>s@Uu9.cUXr3Y1[G0<lthcQjQcKR5]EkQ[Q
+(so>hZeb:kZ9GL;8'W%aLrA;E\)VclM0Z8D9dl;8j"C(V4lB-r,SggoHa[/(^]@_(%>Viq&NH"U,8Z5,
++iXWtp$!Q[87YLV,aM.PPY,KW-_o6u07-B#B4R2E1H14e,>iN&0o#Ls:gXnr*6%:tO?DRl3^L.h_OXY=
+2)r-GoX\,-)p``GjnE,d=DV"ceWo`<Zp(SbX%fbQ6(h:d2_#d+\TYL:X`do#Jbaf25B'^`p(n0mJ)YHM
+]Oj)5Kmpcj=Y,S//X=OF+-5%?$4-fd_BA?H1bo^RKu9W>#b4(/&rT1&nYjZOruR6B,VgegP"M$@21PjP
+oVu%EQHUZH.<O!ISjk.IE[UMMHTn(K-o<Co&rT5SdO@#PiDfH\RoC_W)6HN2SmjLH'F?>YQT]oP/2f!d
+o#jt<eY^jHe)oD&\(iShX.@]&qn(O"2lkd*qgQ<:RB9Oe%'lP5<A?:=\aak<I(leNGMU^-QF=LM%u:o0
+#l&b_i<CPOp]+Ak6XfKJKMEg.Lo6S5G75ZU*J?SO&fD).8L813?#`EJW`^+'b2UWWH\piAH-PLcLQ(Y9
+nt"+`1YNQRJOQ9FV\3,^iJQQ[e)f*tJp?(0@DQ:`3`FGgoWM?^P"24R(;d"Lm,9_rO\WB&5&M/Qh9P6\
+]3R'+H_&j]I(qkK\-q.&pA2X3YEp50#3,Ef4ttW)_sR8bb<L%Z#P8?."+S.[n;'aN(CYr2?]Wie7NiD%
+`?Oh3bZZk@NQ7g"#ipk-,EU"mnnCd`<t^20V=P"PaJsPl!".uT]]O2pT$JeU\d[fJM.+6ZP_r0bQV=:*
+WV$UX8d<UW]-l)X"_+rEY1?OkF@-P'14rQbOW.#pdepQ.X-NR9^o2Qa^+T/<c0G%N]=r4Y$j5f#KRMg]
+fSiQU(Q:AM=SF<=76CZ'W#H30"1e40IDK8eGXLU-pkD.BnG%Z+,nl-G*:ElIF[uK_Vk]C<m!_AHOsc1/
+($jRQop/6^deSR4XP7j<j:cgGk"@b*7na17lc+VIU/>UR8e]4)n9<>qeG=#7QV"!cWm5f]\56g<:Fjo+
+"SFlo7PNg8#G%`oCURF60/I&hK3tlZ"/[q;8[@W9_QVSgoHEr6K&LZeVp$4rLrEhrf_cdVood>T1>'([
+!VleJ_'#r648KTtKu.3dk^5Q3&rFOMce%5!0c,eh,B;qsJib-:aJ?+54H<>ePtE?Cl"n4>16+e8ZY@)3
+EYC+*!!RK:qLLl(d3s*O'dA7dEP/#fl?u!o;Q%@r[;*BaZW"!X.H]]4(5kbZfW;MS4cMQ+/>sQV\$\hL
+%^*]"&6L6Ids8Tk%ni8'!s=.j4g;FT^)%FU_nIk8m!^h`P0(GD\SSV?!;h=4i/h%SndlWm.=_SDoJRd$
+Ld^6"=H$LbH<ien;:tL&5p:VHhXXf*g/02^9')4mFM,hP?pu:28[LG]=\q.bD[3BCJFoO3k`dHc*g'!.
+[[e(WXBM/lW(!)Tf)ral=a*p4Q.kn[_-sFr?5?a"d2p3);sfm]TsYZQT[993>;b:-ApE1WLoHq?gOKDB
+e1B1GSmNn.^*G\nFFis&O^tbYVp7pW!.;SS:T)DL"UKZC+`M[B(**.!7&"ZlPPQpLN5hW4aR"3P+HX?F
+O4bM=8LB\E-$"9IWa.0Bbbd0fK\C&tRa*:%WU/bs-BQTQF@n,'Nr+t>$L-h]2OR==e1,S:XZ0R#<l_7`
+b3aL:-*Z%'G"XEU`F$"(SF3kj+L[uC<N;B9XjZZZWhE@mlV/GN)R;e@QYXk_$<0/@?MM`[gE2Erj"^"=
+PM[gTJ3BQ$GU+$o#D>Dc0XtXJoacjH@SM%3ZiF0'7H6+Ye93hoNQ>U!jC8Yn-\t,uE0ra'"SRGk@$:>]
+ea#/a:(YP0A9pZeT21fTLBGt`o;#8u</6_sSOo_:)_QFG!j+\g<GMe<.f%n-YZP^B4!g3;@p6*@Q)eJ&
+gK6A.fMr8o_X-a(?>io'"m"<n?sE$]KVKH,2j_@RnD%9NnFr6knkYZc="Tc)5T_YG_s-ghK#-BkaBUJ;
+rJ/<5d3tM_.i+&_,1$&>E]F#H6f\jT%$F+-O\-n)R67KR/=4NA1?k%?B/Z4(-BkDSG'cEFcmUWgqiU"@
+/#T?<RRJ]q9W->(1npu6FW%72.lF8i6G$R-_e_4]*%o!5XkFtT<9lT9;Q*g&2[c1jl5_UZ+&BB-U4jPn
+==fdhXq(_94YC'NXBXEuNlU393@og?/!e4eTFZ8]%L2]\6"&',9BI)'A2o)CFS&$M&rK-;d?q"Q-uML.
+iK'@**X)k$]ql@.XKG\XQV6HRZmp3b(lh(_dq&m*W:QWDW"^-X`ed'W;<[AdPE']DVbQFjg40U;TVXVR
+Q($6@\QsC1lkThKNlbk=38C[16((YL[o;\e"(E^0n%2_nef30-_/j!hDCfs`NTl/79-lQaZdqtGJP*2Q
+r)QT-om1+Z:^='/#6]@dT^RZRh=CAh59]P&KD$YkMT)=[Ls0Tm)1T]%nd+j[q%Jo^jKaV)W_G%/b@P_Y
+N5B3\R`qYX8\F>04If3D&]tOi/Kpk'^]eiQ,*b`re#B_^AP/7-0e+SoMTf6O>cu\ZYo=.0a(2L/X>Tk9
+C+T+,5/RRN2*Rp8\_XEtMl#^)WEcoLEJc>_^Lb%6ml4dMl#?mHj0ACgN]%E4b2or)=9IC_\mr68"a'AX
+'*s:Z@?C7h7MK]/0]5fP]Ab[@N^mT_=TjHC,EbW/dW_4Y<@U>5=`ESh6=DQCX.!rE_npOXS\+(6q?7%9
+_/7EY<-aHMNCnjBOUL>X7\oCN<GJ\j`FcFDY#fDhqZ5(a_kl%#(2@<'fSX':C/1g``oV9@</kRVrM%[+
+G<=o)2jC0#,C/6%cV+6`jah\>E#@qB1BWKVAMB7eX9%hmI)-nDBB165$@bDdYioU@pCW2",-UdS@P\p]
+5@9MNoQEGCONAa\BcN^;.$_rOZC-*G@4mql-?Emci^FTQcR5slfNc:i!#<u48i7BF8u0ob'^@`eGi,,n
+-a9Va@^B6u_CN%ZrIVprZ.UZ#]02iMZ#!>&o\46"hf?23/YnT9g8dDr?D#cK*QIDd^m,F'LSc:0MT+U1
+03irn,Eg111:_5,joED?!".uS,T7$qKgK40LiaWjMd\cCO]SVj0c>n_,E^TJIR,*%8E>q:*/[FD:,:dI
+ph[BBS6!"fo3&E2EB0Rbh6Yf*d=Br<9B_Q(2%GZN!L?[n`fl,0;5m?kQ!)o(gK1GX(bN<fIZ%U0_i8>`
+o:jWHF5$"^b>#_.ARAQ@9if`2iH][\?5L)0NrJUb]OU^eh<+;d`&o(.lsmX%n&XS[R7ro&*rpPu*Y0)=
+)<C@5]ch;rCYBj*Lq_keaK,"erf"jlEQIKm1B3HWUiK$Wp%]Dg8`__L>e3ohQHWq3.BLs91Ru^f;i0<+
+HU+0!V31U+)NPpo+W(1\\pBiAVc5-g.]l1D:_&lC%<h?WOW'/1XEI5gN[neMg9#PAD7THU\D44\9<G^C
+E*1X@'l2Y%qgcCgYNb1j=k@,e@]6_>FqYsK]p0+$LdkT%R".;l:cK]F%0qPQ@8BF)2B<<a6t)-YU>_!f
+!#<u1R+uF:+-/s&Z8ggN(;br$APi^q&d8W/9O:L4Ut+E_S08P^W<AAQ4eAPdN>H^QN:!E=BiKk!2P!TH
+0H3strDn>JW`CB7UdFpK8Y]C(<+gWFc"F?0S;q5aTZjC:ghPFje;h&PF'`cd]B/_3J&#@XQUIR9RnT\V
+?+,Y#/_KH63q=.>N_^kaahSq"a'8r&"*Hog0"=;%"RL<M*U`ZD8_ifn]V@,^gYP!fO1uqq-g[!h-BlRo
+d]$KRs"9Y^-8R%8njt^-9rBe(gtmB=T2-j,.Ld#A7\S5n[#/-=Rn9O'AX+a9;QEitVj8ob!F7inY?,N5
+.h.ZXB!J7d"sl%PL>f1*/i%\edd)(ghCgW3h=CGl^Ygd^R/?1OI)9>;lW\M,)eI&mnbF_r;]p$LZ(MW[
+'D`"=K0eH-QrFD0rI.,n&HDi;4VN^l,12drDD*#g'b<rmP`A<]P=ajKR6/\s/XK,m',ctlLu41^UQ]uQ
+E7g(Vbb``ZCoU%rUJ]k^RT$qg9;^-6M7-COEE/L*eSPP.DRf&:=6o:d'ogaTZRhI1MP[IsD6$m<i%iH+
+R*orcY8<\YigG4=d]aQ-l-UQi[Ti8=Ho\/;]lN0(%SW0U.@"o7ndkn$+aO,=VkC8=1a3_CL8T\o<C:c=
+j`W^+DWo9Gf'87+U[eX`M9tL/3TRJk1niGGQ9$>?ksV[Y/W\"bnd/j\/F7Q+SeMF#$11-.;4hrcjXQTj
+VUFA0#PC]e;h*>tonq".qY[9nCR+2pK#_6(fW<Xs4fZtIZs0YUqea45Ek:%Dp)9dmpO'^4YA\X&loJWU
+6QnFJ4t7S2:D]*Ck'LCe;lF9.Pir5?"Ts?B@*j-d$24g^6Xao3KLR0]MF=2dGf2osq0Y\BdHKA2misJ.
+=.fW+H;Q/Vb2q()KX,/BRET9,H*j@Y>>Vo%Y@m5,K`7]CB[h>s-Ab'_6>$s8Kg&O:4K[HTHGsL(=ErG(
+<VlrS^Kl*:XO__eVTuYZ\#NAqNPO2)@+oF`HL&<<H`UQ0fDGg?rIDan&;dhi^>i$a.bX7&K<$;^aguNG
+G=2JZ!eJ.Q/(Up)Y+C<`iD@UC3[5)j`$1<lXAmc.?ot-gkBqkJn<(g<Z=tN9K\_SUjfrNIZ=,@BU">;R
+]]$mlS5*]ql0F@C]U7(m`Daq8`8l!TgskL=6-i;I3F%hA[8sJ1En'E^k<4F7;mBEj2(F6E^uht-+E"6-
+H0''m>oqU1`SpE7I:"Y2bPhP@K#-C&phW,='8j]B?]Wu[595j-jKc<9^/=t0I_R"%8/rBW#DGI;OI0i:
+*>+)qiUL$7=t(8I7,UqpoR9(LO\"N4-(AEF=&2G"EiET`>qqYhjqC=K<:mb"Xda5FS)O0/Thss;=tB$'
+8Yo<,<8)IYRe`p^lBPPBiiuXg<pQ$k]mde+Yr!BeM63@\2)ZZ29\,u0cK]YS="U*0NDF5W?LLe1MOgY6
+P"4E^>W*Z9+JVbO[[_L2<)bu^hAKS,?SMP*5bN'TN#E33Gs\29BN.#7&;[umO[qglK\ZVCe'Y,TDEAu%
+aJ70Sl*1r<JkDU)a_\B@0UU(]F%N.8DX<n<h5E0Z,"!Z=cmT3s;`W;tFAf)[[lldE:oLH3NER>0Y<f8?
+X&XZfAO+IR3+e?>/?0!;F1VS[F]E>:=L_EbAs>@H`H]&*Dg/Yoo)F6S)GnVhQ5W4_3NSWBp=kcPj`7me
+/lsiu/!kcHSBb4N&dJSl\Ql:.6llQnE]E%g3)iVk!e\AL&[ra''d%J-,YlH+\kMXY4XEm<A)^bjQp2on
+l(ll02k3WU;n:uFqYYfgkVNV](5YPTdV..174t-*W)G0FqOL*T=0#A:[CRpo]jJ!GCfWVDK[blfJ-tQ,
+<O14n\6JB%l_VVeF1-Z.C(gpdI\KuR>`OT0b705o@W>MZgZol@a1cRs4Jl13PF"NV&1ALVmfnE]+Y]j"
+)=7o[`"#?3+98R9MT+T&Ltl_r3&do_&h+fW/ur^,,;Q5lZ9'NM)AR1We*ZrhS'EA,g"c.F5+g.K1ah@m
+="^5i8r&\D_OF;ue1*<<NDcfXX1YJjWnh^->-$2R.qTH<O[lb*V+/C%!SqY&gb(MZD:7`n]=T^TX52mh
+I_WIu-m[7_c"WoL<@l`c1E2@p\[!hmSl7&?>tQ4CFRT>8"G+Bt&9q.k**lF6;N*K=rMlc!1e5RYHl>!O
+Ni.k-Q2@jY-$IDdd[=%J=Y5r/;/@*Ic94%=c)-\MdA7>cEDPd.$58/N6?#dA1hp"rdY;&QC(lCo+L[q.
+V:]VhRrQI.EB,#!3sBf>A$3>Cp3HOif55M*..irs!oDk.ddIlb".o;P^Ik)"(Tn5=Kmhq;\<ln@s,G'/
+neiF52\uCA^G.DIj7W9NJjA7uLcd-r%"uN,E9N6I-P)*QU<uNEC,6ig8"al/%#Od*P0'NjM+jo>qL+aX
+X8i9,4YiI"k-KoWl>8YRcY%=`nBfgj3[@hmKtD31hfh8`o`r`6Vc9\HWc*d>C:*`<f;nTQ%>qspZIthX
+MbU%bjE?+_C)RN_k+52F)D=1slLa__\m94SEHOclTAd#\<J'nY.`UMRq!:Gu,s3Xu<pp:r_?C$n5oq_)
+*$,gaGsc#ephS/$'8f4fE<sJ)(C5RD==q;h>s0?naJ=uE1o<nrOrG!,#B[r>1R^BPdoj'?FZ+BgB@H$D
+#(Je/d9TM964#KhPY3<%g1k%mb]D<>eTWTW[9K`C/'^3[Kj;3'e1(*;Ed<&OCUgLtq[4.)fs=jrW\ou4
+Ma!ZU-B>!.YjRW_?#\AR4kgQ^2'NjEk9Yl>iQ>_:)19@'_#f1V:s6'D>s/II6=FisCdK!PLW"^SPlY^t
+[n*IN9=?'N[+fOZjK`D;M8J88\>?>&'8BoRR()2H3P=3`heu:0Zg%@-K0l.gV621/+koV7;]aHOh*Lj7
+IaoOjBDl;G>-6C,[>4)=WF<#5XL:bbNmhUJ=tOp`D8OtH\(pC19>0'NFhQP0cg%A0"+[@Z0Xtp_,85cY
+^7T&6X!T9YLudQ@9YO[1ScBM`:e2QA&1oai:2(J!h2(!8]q4\KZsGI)MnS/5f^sVY+F?Z9Z<9#U;(7a)
+'MR^Q^'ufM6,<`4$]3$mGu!O`3V<:75rg1BP6mc%NCfNRcg/X55+tiQ<9f`P[6g-KX]Aik6d"6D@Bir$
+0,ld?cTJU1kOP&N^$0FE>\(;??/=UO>-M4rb!l<=">uoTm`[Jj&W+J9*E_*?3tmWrjRS^DZ_&rPF?lL4
+,g.#)=&2.+:mbKK)\@`OP7!%SOtPjT`S?J5l\[nLON<^1VOTgr-^;PS'$4t$?<ocIj\gnn/C&rU.b>,!
+CIu7YAiEWQQ>lKQYF8@`-cE&#\DD;<h2^"%XeACVethH(6M<1rNQ5:E.1:mV/W^lIlcRJ`D/cW45m=Xr
+R*;PAW\4%02=CE5<uo]t#!4E@hSeEY:#'N**o"cEEd:-o>:GP^2dC;\9GQFiHGX#c\)]FD%t?uSnMm=F
+/Jj@6i\0K\nfJp5a5g,9,_A`8PK@AK\Q$"90:#9Xdi"t,D).VRj)__h5(,YMctHB>,o2J/>;4hVj&35a
+=&2c[2%#ULWE6(MC=T?'DS9>W"q4+6l<TY)D7\Tt]4JG,DgP`,="$eom<?3LD\#M$^#8DjR+1g*jqQg8
+@D$S^]N`Q"O1maoN9;5q/RZH2!!RK9;7>h>_BCV3>Oi^CLVtAk(eb6!'oTlf&STC/2]aFiQObMbP">2.
+asAfeUp=1sQcpN".>6,V17QQ9o,4(4>:Op2BId*kE]$=HdGrVQ=s8:YVn-V#.\0#U<iS2qeYbd+]3D=;
+Cc3d_SH>0fdVUgs)IZCaEEjK-.t`\rG&Ub@2f%7>=LVsIWE-P#HOAZJiGgiRRdHl$a5HM*/=E%;]lgq0
+%_#rUf`QE0T`>/*H5-jB_dX2PPWC4-6n_g8R+%JGjDr:Nn^f"Ja!Hp?glZ177O]mT7-4!mK[+-dR);5/
+eIp8Scu%+m%B:(RLtJI[BbZl@/qhqt;r&0*6b2M_I+@,^Qh>4q?*@>r()n!K[f1`j.lN;KVV,ao>-8Xq
+NP=Ls\m=`JS$hPOHbWp,(X*WFbD!iBlSt@qo,3P.A+CK2hG5Scah8b"#JsJ=e/'$gTE;]N'+9L]+n4]S
+2CB&n7&$rB]LW60:`C!_-GsuWp6*OhZAD8T="/GgV=P"Pb$O\.c)1)4$H8t^Mbg%*(/oY?7&&(81l%>G
+?RZs6ee?brC4(4s1*9MRc"a^mY1K`I.K*!k<';i\Ep7/8=!j+omIq!J^%$3Uh6*(PCmJ3WV*('f-LHQn
+;`,a8Y)H#G(Q?AoZ2"f4RjX0:jg+;V"-s)l5c*+`!kN[i$A?:Td+F"+4I/o$S2#9+Ji+L-7iV!M!jQXi
+LW$!oG`-TB/!`esEqripkd$FEU,,rjhK9G;Q^!J!_hlo2FjXmI2S4uj2Ps&?BSH&TV!+g=lIABn=jH04
+<i]6@0rY_tV:fL)C2KQm9JrNqD4?6uYB+Ga>$$'ieZ!PJet)R0Xp+KNIUQU9GQ&s)MoK7Hf_ebjr;D(/
+Eg^aF!W)_C^n?cK/0YT3K0pe9fN^H^&;e<aYpctW0,fei,8"#TJc-dTaX"0*,RO8rQ-1JZfA+5Q0mubC
+ZY?2fmeBtiga8gi#TR,J!".uU/KTmBV:)?MRXHrb:8l\mFD;GJ/?*>HCUN?%K#;'%4RBLl4dG,D[Fq[J
+RpEkkn[X^@$Q?->nj>DgS_*%R!TAXG477#+?&$$rBjNO%CX!/VmW^m,o4Q?X!;V12i/h$i*YA^4!".uS
+A3(Y?M*tg8#dc^mH<e-nOkB;T5k^=2hXXadSdP[T5+clKFKSCoHq@Z8#FsUd_J[<OnQFrP.V_@)>kD)T
+*g'$hd9Q=$ALaA8En'B79!qsF=fifElq.ES_)t@>R8+,IT$_.gg?k3\Ej9N/YMA<ff%o/fg21-MGG`i%
+!IdhEff)P5f+3_AUt!W"V)?LkVDDCMr&.k3!&^KPm\hZT%-`G^SIikXSf\D!+r?mR\p>kCMaeq2W9e+\
+*0<[d1.`IS73=c@=:Jt[;I7e=ZmKi`SCt5.E6b.Q$1$;oqk1];DsAkPO%?(pWH?:",)ZAK^F44cPu=ed
+XOV*/MWJTb@'A4`ek6I<a(D^4/TuJXVO^M]>cr0P*SR=e]\]i9\deK/qS9gaGYB_/%eY03f5-3T*Bqb"
++'2l+qN=K"J,fr@kS+X7"b]2#:hXAd)[eJGfC&Bc`T7np4QB;KggWDgN'(WK3?,h0-^1^cXlsl8(Cj':
+g$\+#e_`<U8`L=Qj48V?FM%VX[1'Vg8#&@K$FZ_lSPQ1`C/m<k8s:p0;BTO<dcKq)HWY)b4!fcupO$.Z
+:TJ'7pMYLcDHAorb1gWX=mT)MXDMdjDUn&T3%:g<]lRXf\@cE4(Q!3CZ;+IJ="NCU5TF_j'G:Q/E5E`X
+,Q_8+!%Xt@nJHpO.hmo[e&bT?-,CX`a<St*)gY"$P;f<f`OeGg)4+#A%B5lFZSn;u-R0j6Wad]@:T-)U
+_$K&)E4DRd2^L5Jjeo96D2K&,X"H9((XB&:Ek>OtfISos7?Yf.6n`;@WZ>9rCUV5JAX*;0'"_kc)QbOE
+7f(BEZS4>hMdm,:FlFHeVnOn]Ndg%2fdHbt/!eB@+:n5]%LE;j5G-9Rj7X2rKu7@2plmfg&W4Ndd?qji
+0--$BUQP?dL.NMO8DgXc<#-&tQU<)2VrZ-;24D8B':759o0&^AkHBaX%Z*WL:>\e/)o5pqDkIb[Z;K:k
+""^AN"a'EL[p#q9ldd!ANko82<t)$=o>]I#[p'mi)jS_5Ed-@.(Rrmbpg6:i/@ZW^BH1;T\=ASKjt@Ts
+\NI/.9U"'WPr>Ah:]LN%4T^4#i38#".Lcf<N=Cd.bXs5sMT)=[LpSKJ$]W3#AOFo-m3Ik:V".U"WUVNu
+^?+qkjN;*lRa%]A3E+c"4J'3`lXgfR59-EF+Jtr$ouTmIe#AT;,F56,W7@m^lH>1+>ctSA%LVTT`o'*.
+fQ;B*WYh"!Z<R#\rQ;rqZ<_?,/'>,7d'V3&CfX2+[=lE*E;5Ae*?Ln`?a9=:n-lUq>-AiF8-=GI"+`F>
+b14[+!*;r_iNUCF7NiG#`D&mWl_66#N^mU,aOGr5+cEO5;-?#Y.4S*u9PS'p/UWj_18^#+Wg/c.A5<hq
+7QO75`h?6XBf-P=4K;ns)/U^s7AWppeQI$<<G&8UCKFn`f:@We@t%Qf[WhDAeGls]D:\T<`oV'F5@9_'
+^"W"']jG\:qrRtYJ\kgafITK.'8OP:EL?Z17icfaj_^<b_u]f<JNmPHBB16M$%9]5;!6%h,8#;l,-Q7(
+@P\p]4eo9<X@='(KXtHM<:\#48inVT"a'CJ@5""m-?EmcibLQDV%i:jI0,#iTt@81)Ee.[8u9ucY3'Lo
+_uhQh-WOln`8HYa4"IJfrH6dcThsTHB;M<fC6#upCr[i.GB14=QOHq(9(RABh_2H2`WG<V.NXp7bW[40
++,XBuc`%U/,Edf!iUI/k?3'\F^n-TgX3'MqGXBu?(>&ViSqoe/0fZO@0bfU8bp[_pMErD+8DJ5g*1g"R
+EQDZGW=+Gh0Q9_@%N2(u^jf!2ipjP&p3N$'18Zi&K8O(iQ;ZcNe]UR95H.GBbVhgg[omQKgGR^XI_+!C
+28c:;/Ol^Q[8bEWV<r-->&H8<D;1h3m<ENJ((Ar'VPb(b+r@Cu2BC,#F(0-VbZg\]O28#<q-'1;kl=jD
+gC;a;)@m'k_OIdLj>j[\Cpog-QHN_efP@nKbuj:051,Iu,]&;f)G\G>[,l7N<4V0GI*A4H8+bL731S9l
+F33eFIlVtm+1*LD%Z<lQd\t[<9fA>5W73;=qQ3Al<3+TN29Nma[nN8nXE47ZRa5H;:o9Q%CshurR9Zn5
+MlY_'GeDkhf?<RSl[Z`W0,I^-lORr_gRjDT>Eke*>Q>,qm%.9-Q@JrBl0&fo#6fcHiD=(S9YR<@\=G89
+UfK&`MS!@q\E%ec+-7M+/3$<Y9.,:p=Y861[Tt#74=3iaUXj9@HVRo=Z,++^.$I!]&lT,HI/9X:BiMZT
+2P!F5d&L%^@8QU,SCVIU\$YS9pO$(M2EN32q.I'<D""jflIeb74tLW/gY-K9]M0`6)3e-7^hm%cQmaD[
+%(gLgEDAW+P9#_(3:V7;<`]pmbWm-Z-l`j-"$`Va5Q\NC(Cc*dU+lqD4Zo*21E=f?4E<M)O2rQH"liW0
+'pD66N)ik[]%h0]jt3R&dBb`I:+%GH]*;1]MGL0)_!-\Jb\+=qc'bZhZIl#%gJ*p,OcMi$eg/8"3q:0q
+YINpO9-'#3j`7mV:0?&Ob\BO!CA01\0i55j6(@9(o60i`^W]o'3d)-S3Lhts/PKA=)U6=.E\'nR)_0.V
+i*[%N'?UUVK0LLikYqHu%>R=1&K$a-)[_'Z?]WjXC,6fi7q<4R'RiOqP"F`_R4PL</<rk?')@d'Beb`=
+V\>KJmWgjH:ZrJdh$s$GK2LMZMH)7s9rC.S%pG5nWE#uu*n9It*fBfffAC8<$U=\n:K_N-CIPDVD7&'b
+QLmdtPjQ(gh3XV]l.:?shJ]nD'<;DoD`L-qjX%qbDR:#dM^M7q$'fX@DX[mQ$/l#4_4Ile9A10UL838#
+!!-@g&rK*:Z&$&-/KBXub:3_VJ_p9eae\Ka9WCqcQH!F>\U;OX<';jBF,A-*m1#Z#h\6=?$AU3]5:H/\
+CZ\7cVGa?l#K6<%oQiXbY=FeuipX%cS^,CcaaVm1bUiI$WML*;ESIVhpEduFF18Z^pP[;P_gK2U>SmkA
+q7qMR0^UY99Q;niB@q4lb58XqPfi(X()R+tJCso;e'M2Z)A*@26X_G+6SYn)MDo"lG3!5B)f3Q)bf4^#
+**lE/+nB>83`;PC.G4$EKZ7KQRS91[H+R3#TjgXWd\q/Z$G(0'@[)1-*Q(Ni31MhW'9]/+6n`3DH3Ib!
+X^!\eebI%![b@uh>7oUPHIZ\t2;5M4Q,T;8AR/EiFtMgBHa_FoNr0">"T6,$E6nGO-P_QZ@r^0!A+fYP
+alKaqI'`qNr-lGSO>nd8%gmqV+Y_PR3[52m_r@pLZr/OqN5m.TkOa?n,*BtmZ=s^["T4P.-*PA=_=KFM
+^*^1!]]&6=HI!tFf;/N26D;dT;sHL0m5CB]-:n@s6i^:a<2u3EX^\J;X&gf#iYfjKm'4.g[VI\!dqZ;E
+>rM"K]&MsE.%,5D]l(KJ;mRJ<l]o35@s0r<Y7*Q(NqK3n*puN[^^s^HhCH(*^01N.5UP0&a>=qM$&(_)
+J-*<.*>""E@Z`XW8hgo-*g\NnoR9(LHcY9/M)49jqNX8+O2p%To_FbGVDC4ghJW"4]dJk$o?$(`GWXa2
+=*(e%lufmRM\YP].iF8pC6<R0*I-Xb\=AR_omXR7Yup@Y-QSf*ijDs[2S37leQQtFcma]$<i()?VcCu%
+o?MW4H=-0*q?+VIM-@,fQ]-&^*m/-)/Ii2qHSGM<^mf:4bSguDKUbnTYQ8#m%Z!L30h@g<,oDH'%gt;.
+H9WKe8>FFD%#R[/5,?g#=Nk)U0Sc).X/=t3DZjoBS#tr@IX^4Jd$up[8f`13QVse;'k6!jghtBkPF*S4
+%bHBSg9nqkH)4oQZg;M_.k],h['HfW<c"@`iHF"Jf14rUqfmTsTD-OrqYu)]i37F'oC_p(`*r0qb[*@G
+ON-@$q(/[I09^oN+0X<2&dJSn6/bXRA0r6'LI>S`3.+aQ(5bALdCA7\4WfbV@urYpnkCKr59FpTbdLdO
+QqUiX2mh-$2k3"n;n:uRjZe":BCn-ImHI-29kdS;_.`bY!#<u5)P'L"=0#A:[CX5#^>X,oCfWJ`QH\O!
+=fh=TA[0><Es`>uRdJ\6>uWBo:2At"d-AD.0M^sZ_[S\t;J*6tA)'C^\m=l,baii0@T,N5cZdk/$O27#
++Y]i[!3VoJ_r8uKS4Y:DMo5sXV9@RS*fnA`ngPO>nFq<%T/'PJiUltobGGpJN1o\\HHmRqVjkfhnT[jc
+cKAuJf'9$ASM[6-0jqY/`?Pt0ND_<B6n_fj="S..>ckQ<2Cergb@Rg-/C&!AZ-dHc3b\jVdithj]@9df
+(:9,!IZQ^j%p@B/kD!3FgXg7I:)qMm2slW!RtE3JbI:jgf'@%Z"bO0k$q<TX#$Fb&$L-c-8g>"-7:Qot
+n0#04>d,+5G-b@@,\tM4Eg]n*qNG:*j&68KAgV1XY$4hl6m8edS^(W)B&dmE7;pSu-tV2Z@l1)^;p)M[
+5).jc2Cf5?dn7-pAht<*(.F4HA[=/Z%,4]Efj&5JmM1Jq'ti\@4)YX6e*d#0^H\q5r"]eLKu7?h(n;WF
+qY\*<Z+0^t7k'PCAFf3plgaiRJjA7uLcd-r%"uN,E9N6I-P)*QU<uNEC,6iY^SC?+%#RP#P/nc/L_K>\
+/=!s2n#;6-B/G!1T(@`=l?;fk]]\nlN=(F0U=#q3MB)bb9V=$Uc0ta>4]8:ZlEuM_C9:aBVjFJsgRcGr
+ZIms`M`%K[BQGS%m/$Ct[rY=Wc>+3%@D?Zf\hEKa$b$?/_S!,E\_GjT3.%Zl9tRQ#l'/@#e&rR1@Jp:[
+6"&&0lm<GTKYJ\G!kN\$&r=Kcd9+=b2%qG\QS3UeL$\JY4lgNa,MGX1HTiM^GLPgJ0q$7_O13oaAM09?
+,`amRb(T>1d9Y&O6a>69FZJ7FC3;tjY?`uZn[QhM[2ChG(TrYuVT!&N=_uYZ;lS5[[Q?(dl\3=8F/$<\
+BN4:M[og@Ee12laic@/L5&f.gFM:$h`][B3<sA%==bs@$mHXlUd,onhi3!>IIM1CQ2]H_ubX&JcCRJ"7
+J,rq=(l_!pETlb@31`8Y=3ZKD:/`QV2<Cr`['?^_C:,C*8V:-pKj;[Z;q_)'2J5@Z-8P:r\g9t4`$GkI
+m6S9Z1a,q"$2"M/=ALDIXP&e;UsWk]m&XDQ%ar5%g/r0<HT'm3\]^\+a?+spH?7sa=6F`-kCS'>+*_Gd
++oR:Jj"\(1IR>?Cal@@ofB+7Wr-lCg:e2QA&I4"UTobXX/fbO[7,dZ<PZfLPNCIE?M"GR=rfKb4P$'W5
+;'pk:i/c!%^0LN&9]%X/ZefZpSNUVH8bDuC6$Q5iNqtURh+=G?l',p/5)2\)K8Z``!F7iiXO\n%g?!dm
+@BD'sNE8!.bA"<:gt%fBP2UDk>T@rcC"6d$YuiY\g;%+5V)P.#aHZ9:0W8S1Pt^8mXe;1b[$.NPRX&0=
+C+%RA<"a&6=?`n'"a'Al*=[eBU+o2l=sk,@OUd:NoQi_EON67a8*$+7-[j.4'$./_17fs:QS2F@dHpRQ
+^#'?Gle1ejI(iquVpjdcq3=.C</9N%OSGNpkHA%,enju)4DSjBlajgtYe)H(Rk:&SBNQo+ZMSILhOZVL
+Qk&EkId_NohOVshm<.AlGeENj9"l3Z4e9q2l/lio@4tJ/gG50t>)Pk#5%%27`"hYEHGW_l<r`6'Sqf]W
+nJJ&s/J:i2(_*B:Fj2"J86do.r0=f?Cs$<eV5j3\'oYg5;"87n;U]?fgF\93Y#<ng8uIm+h#X\0C73GL
+M4DR=9o,4!CNbs$W75P0)RKh[V7.hU[i<TSl[m>p6a%sRqdhfBUfT:=2`;,qHZre&=80=r-)H*T[iBWP
+l_WEmH"(*I\4bB_p4C"#GrOkcqj2dt+4'-J&dnnr_BCV3>Ts=MI_Qu0#a@e+(5g*UOf5p11E;IrUbUOB
+Jk7/Las?PW1pU%3O$o\j.@eh%2O[%30aHe1HTZ`'+&jW4&rQFY]r<Yg>qtS=GuPh".\"/Pm]4nh26,JL
+gKo&*#3P#d!3Vp!g$I:J?)lXn\(VS_[\K/RjLa7gGH9JUqgQ<;="G]+ZJf]<i\://2DZ#+`T+6a$sOaF
+l'ot+&',Foo`]_/hXHl=/-&aI6XfKJKMEg.LrJ?W6dk*4oo?a-mq9jr$Mf7phf$!inl5d?^8::dPN#(<
+HbF&&8^kt0np&L;'H.@ig?kV3?&ls2/sP[-Yo@[R`*0!;M]37E(R4d*?$T3s%lr+eEFlIChU%V%*n`B<
+6#IJXJfR&#X&SO&-$&OfE0T8L(C?>W5maj"(p47\/u]=_YF=lqPE.-Nb;]#(#4)Z*"DpGo0SiCJY'O9%
+$L-c%7NiD%_uaN3)SpC;KJjs9#2C*(+Hab"/Z;(7&m@H#U<tu[_IjR=):4:b`9FN4DDrMOq?qkihf6/r
+<+cSua\8QM;!Z6!b%jqU`06'ilL)*hY1D3@>74'D6#X>NmgDe>f(lbgmI/5Vp?-P/5Haa=_uBCV^#-$g
+$k<XMKYZFdYKNLb&W4Tg1&/DA4!g!1jg)FQ"7c6dJO(Dt=@=2F#)5HQYdedE+VTXM@Spg7?6'-.7q9re
+oS,dZP"B1]pZ/2O.XfKOc^BI*nM>O:?F+ppdWG&O4=AVPFU!NdU/>3\H:+j#8Yo?k<;0*TH>cl8$L-i`
+@]rq;<pS;:"_D;ZC,i<GG7CG!i3lhVQMYre"M1bgC\M&PhXu'+?>m<bp'1VF1a6%B=_+sN21*UiGkq6O
+-%`nnCF)?t!HRm\4^`2@bN86jID2CofOOIHqhW1aE9Oqho_O6T*qAF#IKoIk4W\W81mR4pGs%ZO$"Lta
+n<pp0o/?2kdJteqVfUPPqL_&,cfh^qC,(JbHbl\"ML@YV#^f+60rTJ'-P<H3.e&8TG!(OU1MBa&-(<'$
+Bt<R&qRq42@&:PSX+i-VdqHGJe&q@<;9+9,\/YtU4*)%h`O;6fQGu!2P/f5CD'9LW!2ff3e%ju.LmiEg
+*7:h:ZC-`nA[NIS<nq"3)/VgsD92?u5p;;RNlsC#H;>uA8u302FL=5E6EZgl<ssl%j.&*lN[a"OFQ/ui
+S8K6%a`T/29BgL(3`SAN>1D03<aB#ekH-j^O*^Ec_#:N&XHm'@rm>Gf>4%X1FhZgS[Qe,b/$77eH+[JO
+pY46pq1$4gE0q%l%hFB4@e!RU:-TVXa&oX8>dduk!.R8,E(DMtqZqkZfrfCR4c9eZX4N?oe62A[Hq'^t
+a0^-X+F6SM;FcD/:@=@YATGgj\mI+4bbf97XP(oZE&_*QK%b_T=&2X@<#QbqMb'R?W,5#1FhpnQe6DT<
+SPlXmA@#J?1<f`]8#=ihFt5-S\tB]SPr>[SXA!8,#0]\d%GJpJZX,(=LF]4bqnU2n1$>p#kjcU6?-^Z1
+hJmh^hW[Hrdc*IcJ3I<NVpjc$qgCch0Se]YpC2Pc@F44c+r(oH`aFq<e)ELaO@W^+)&(RpoTQspcWLA&
+HuW8=$L-f>dUtG-:$5GhiFr5'NC+nOkTf4/&:IF?;$^,64SX8&AC">J<TR;,<_Xurr8r92YY;q=,rC@J
+q6X=B<k<[5VRU*F/2d7ZbuhGg2fDF6j))0V^c!kUQG+.=K#-Gd/S;V'K#VN_gK?WXD_7/i5T=Yhj:VUM
+JjLE9fN^/E%Ycq%0]qmFk-4n$e'X!$AiCcka<Qim8f`0:E]DiPWEYBdi0VY7&NF3m$G);>V\?$<i@LX*
+Y\5U,*5UH#HI<mWVsQ5=:8cSk2(G.pX&c:P.M(h#D>O1-=6nEF*K&$KZe6oGCJD+dDRE_$[i9b<lZBbo
+ml,%4iVQlW?n9RI*YSp9_r1#DXBLm*gB!U>'=@9Tm'^4U?k,->%IXIQ4^ejl;p#sILHFK*k``G'l\dg!
+%[ba_d2d;Kj:5l;Q:Qj.0u*s7oVP\>Q:p>g)/RT#9ffAG':IA7^HJ2JW"%Gq%Yf4!0;]CSPpVnS";]Jj
+UY=B6S7*rb%+]2WY<%e+UCO5T^#rs[4^O1NZT5,O:op,j'I*GZ=\r%2=.@1f'VT2+i=P128_mg:aIG5X
+eaAc`]h4.EFg[Lqp3Sr0&-p,/o(dYshf#GTl1kaB^Rq^^HpT1XID;NFfW8ZY'njFI:T)\('dSH'?SZmh
+Q1U/:["&=%oYP/oRE_V8M59>H>>VibmhkDW%h+I_,Vgbmig0>9]kQprMo"ECGL`87LKgb+kcV@`N\HlH
+8N32CD"A>"<KQp_dpD[U`"M5:\C2n8gWS8h`Gf!3e!p31C<^QQE:&Co)7%o7i`b!3^,$dm`8_d'Vupb@
+fn)LtXggb*[0UWY+jJYm7O$]H7%t8a_g0!9N^j5lAO$6uSrlSiE`kf%<@4"M;!Z.1`PF@!9d29g`"B79
+CX5]<<Q(b;6D@*98``SCWCq50?.AV^7JTl3<F>EF`FcM^Y#fDhqZV_`<I[5?O4uOdcY9gkmFJ=l[c;;:
+?#H!US`]<c]O('Yg]d9QJ&1&[2G?Red:TB<ES12D7])JO2(5gm1]X\M/0@r/VE9M#$@9T2OQVioi=^?'
+*O06^@FZ9<`uPcT4Fta$Elf;aB,mUM\nQeTW\=P_@%Nc\-8TA+hJ/WZX4bc)r;jZ"Tspu&g-$Ui8o$<=
+5r/)HF&JN.-UE@dOV43nZPh"W]n*:pCfq]XC+FU,j,Z5FNoutLm;dU1+*VAZiVe(>3$'Aeipq5DWSm'G
++R+k\ms$s#puc6U5j+:j>WHO>+opAK!".uS,T7$qKgK40LiaU@=\pg*D<I,)iqA?q*tNVViU\4@8De?p
+e<T\(IQljka]u8I0pt^HZO&IK:FMAtV,,.ug"u:I#`Qp)>Ws)sV*RerL(&e-++)N&O'8m7k80&h*\Rb>
+^"i"[3p_lb1Rc\N[5_D#qf@/7L0`6l(K`Xj^8,a/?.#_Eg-:/)<2t0-Zdj$6E*Y2_Qn"qIb\X^+m>SAa
+-NIsJRkQ6A$*Ms7_HRSM;edBcD8`/caK/8hh2K@CdE([#38fn>S+9,aL/''O.KBWooWhaSQcu<_8VGaE
+LL*O4O]LNlY<Zi!RT)b9)4sGTTU)oE[5OX7VPM^8=!_#,=F8VkQ,iQCs'W(`XEI5gRa5ZSg8pS&oC_nW
+\(kj;/$77gF1g>4=,Yo2qgcCgYP:3i'+]i9iGj+$Ah*OlaOdUs)kD%'R".CD:cK^4/?3Fb$L-bR1)CCU
+6fLr+T]"\28ZCDr#90r0+*^=^dPl!-f-b[_>k5F8RU"p@32TD>ZZQ&-@0"J##`MZ.5Dd]Z8&`)pN8UL0
+>P,L:HCWfi<*PVE@X3eqT29;piplh^b\+=f2E&76X(Q0N>'@M.?+4aJb9UugS^m+OI9p<ba7]0(qL-*e
+BN>:H%9on_QAnC82H__S;JJ,`h2S_mZ+p>CFS#nH"+nB4n>J0!&tT=E<+tA,/\9h]4J#=bUXA5tHTb^H
+LV/K3q3/Oh13^s>>5EZ]jms@Cb$-EF:$2$2gt#[dROjg8piR2c7>AV'W<OT\i:2$@*R<hb;;1;X]%o6A
+4`SYOEEF1r-LHr%Ao1\>c$$qJ)SMp$.*sh$fs)X2hB)Ej'TVj8^YZ-^>T2RYi4.2i0N@nNO_/E5g@f?3
+9-Dm024tDG'4M7$J\[aOQJ=(&%>R:)D:k(I]bPJ)iiVFWDE-R88)t9F%#b0f:J#*fBgf+(/X4H?#*^n2
+2\:R!)H2rLm?]tHce-__4UfD_=j&-)l:!=1%PF^/Wofeeiq.\"hpn1Erjc=<=6p\A'opCIZWJ<Qa6fbU
+C:7@6f,JSPiH2V9D\mcNgA-$.hXB):"qLZe_-sR7lUAP9r-d,QGo,%(YEd.=T25dB$3p>-Q;dhc\p>"t
+KgR$Qk_qDI&;cUrlXV2VPcS.Jg'pOcW^c07adS3$qWW[b8>t321_T!`>D,D=Z\c?[-8RM/g!(;eJqlag
+2sBmgm4+GqDH!I5\]drq$ot(aXbt;6[p3_#R^NEkM5=af2!Z`N>F*k,[_/a2CQ%WCr49X\n*A6_s*T2X
+?\<u_`he?g7#AraURN%Y`j`5Fk2U5)>cq6a[5\54!*=_;+E1FN*Yem2#Y^,,0ptod1TI13BWPMt'bd"c
+ES1285pMF"%>s01!IBu01u0e)S)s59R6DtDH+_FApmo`..J@j9'+CS^BLIKIaaV6G\`qC3K8-2ZW])EP
+Wl&;Qf<.!3e],2NGg7_.<`CS<'%3@9-5eI@KA,D\\m94*Hc=Rsp:*7e$s*V9"_rW7e8/mUC:;]0j'),Q
+b@.T6Cc6&Gf$"0(!c:4G:hJI*'+/VE+],'.6,+%g2k1In]NrDnECV6K)!$7d!%XtCE`jZV;^dpQjg&A_
+'m0Xr2.irs]..j?SZlb5jqRr@`A4)eP,WQ/O%Q4k!QES3pu8S/SsNGL[8sJ7XOes;lJ6p#AOA/>9fH#M
+dqZ;F/[jtlqVqI&5Ak[LV:tNc^"r.dX7c&`K#$>!(i168$])d]Z+-<Q1Ehds>O?Y?j733II6c\/-en2(
+#_KqO:c%BFQ2iG5U/=IO<\YDM7AH!4lu"s0O@\F&=VR;q2`@^>/Cq.R@540Dk)J'#Ec@dT`+5$UnSnE8
+Cs_C*MDZH8e>5"$N>cq&Vbs0J.ZTCm_Q`a96K'TOoD6:3J(X+Gp04,:4gdj_CcQm[E85;8kd649VGVWO
+?L;s[e8.Na<&9u'=-aleM6&epmgN^>h!T?t*P#F=Yl=\s0n9FLoF_T:K>O<9a@&')Sgb\GB[m2"DSKhk
+g20<S<N@-T1YM.1Wp,n/:9]U'<KogW%@BMDabE16D`E*hVfTuHqL&"0c5-mj"Nlc[Ju$n4<l8O>fr2>/
+FW,U5X&GrT>BRs9H+@=efW5P:.sfNTDq_=2$Z3GlE4F\.=%fTWmc1se>)hf85*LJO)A&sH[MbKh@PJ^8
+ghQ-r]?%3sClGHTSnEQs<r`<5H3je-_;S4XA0N$%LVmR530[Gg(Q'Sk`RQ2M_X`2tA5YE5Q;&NP8medB
+m&jPDQV;!)3IKCh2O[A';jl_+I64(IBG<KB(5#,O;CL%_4Z36gW'@,^fA0K-qL2I\:TEI;]WPR"8LJ)N
+B$D*t`[qt<<OU?]1SIlE(6`%3GJ#jf9tTNPrI;UA)n7Ysj_8Xk"q1i.@m-jFa>PeV#0ofEf??JucmFth
+UBYBu+O(\'0t@d7`#[5QXAS^-IRYEaVt>!/*fnA%O5d/'F9!hhV"0pAW`q$@b2tIS@O6:0DDnCERG2%p
+!c(SF/U;H\@76m<WAIda,+2'#e0P9Nio/2GF&f7NC=Qdq?ED'r/l]]]QjtaIl87g4W$YhJgT<=0S[)[:
+;5_t38>YkAp:n<13%Q*`s+Yl/*r'O1iJQR$A0hO>)\o[2bN5B+L<L+3"bJX:%Aqls[1.mM+qV3;Ft"/`
+\"aE-e8<#BE6%"A#lK\!j-*'qmR^B[b:R;4)k[8DH=\q$c"@]8eCo1*1E`"-.MCToYbNc6$d)BhR+%s&
+)pW2\XV/C=cY%BHeRl?oY?'u^gBE-*R:\\N(7S=,fkc.Bhlk)f`ohBR?1-=6XmY_,]jG^pr"])8J\p@7
+fUPDa%unP<Z'bEb[jdTLgY^?_lj<t"IR0XrGMFX)c#XcM$m6F!5QE=4U9SsM@Q,3c`aeP\"F<E\OiaCs
+Ja'^KW*-GG;[J@oB/H(%VXk[_fmM/0asY8pisK]]CXJUcMG%-=e>BUPm0\hFT$j&eC@8[VcF3MN_;EfO
+$i\1WYh3#NG80o*-]iofC'J02X%B'lRe45:kY,Pe>:9."%Kcrc_Vh0kH!?=Fil:"nolgU5-Ji\&ZH_#(
+Fh6@[0UV5oU#fqf/#T)&k\NF/&W/t#d5\d>0cQ*B@k$Ebq0(A-3hEX&6eYN6Q:kf;a]-8k071D[db-tG
+MVsLbkHOTINJuP,[Mo[!]b6SuUUI/H\qNVM:kD\ONU"Jo^K[jB*#82WL;`)W=^6,o/Z.'5F'EM)p+pH5
+*kB7K#IRa8oW>hZn'#SM<s<&UiEfW3M7FJ@]&R[qq=[/rOidk:8nZ'Co)+!R+L#NA+oMas^E9]$F>b3R
+LrCPMBUiBZ(lcP1Z'bH05ou-0,][T5U.Zr!b+fN)I)9A"KhW`;a5l6$3.4RB:1oGA7aMqiQ(S2iHB1Xn
+;Q7%GI4h9iWDk?iC9:o,;`h(EWg5GM_V)3&XL;m`B#AAkg+@L6;5FW2X48hs,:]7]e8*bk\)tC,"+b5r
+)H^U3+eae31g7EOmQo0^G@_iKBAR(trII2+OB==P"T<d9aX:Z(!3VoL7%uCqZrSmqNC;-mQ4m^mer_iN
+Osr5Y!g[34j)LJt^0NIZbiTR1Ph'T9;mG)@g%0'hg7^Eo1g2_eYp=,,RZ0e+<guftVUXruiO)fJS(?`P
+g=4?FH<`%(:"QM=d:dl1hY,]H]%:r4>OAVP[GCG"[osRV7f@f;&P4C<XbP+>NJF6*Bf'Q,DLXpD:Rg$B
+Z[X\0E'U(6(b?:,j+P:CE0hh1b7KK?ic.DEorJ-DVkYuVe8dbpON1mO_YNFq\!4/ZD/!fHaR5G/AoFZL
+no"DrU(e%C"Hl2;T[5*.qCN&67&/2*8u:!^s%oZDWc]-N=o/&denZ##m;fsGYh,sW$QY\ZBX1gCp:F&)
+heosYDKcJbb3NuG?E\Rrj]_\7SD^F]GMX8LLL[[H#ILfc:hWkWko!0c*!TPr-jbYdM@D2S@'Q/;BOap[
+eVHR2c'Y;-/Ji4m@^2<\@BUc5$V^ti!F7i7PKBX6J/Mo`<]mK#X<rm4/KL?Og@<;76)rD,1oOA7"&:?(
+UcPJN.V%>*qku_o:[4cWV#>aC?WFQ[S`"BSYee</*3N:SPhKs)PS.8Q&tMFn=#c?t4Mi-Y<OTO$UAJ]?
+?uQrErYEm5:_\rU77u*tg249nETkSP(tECe)XV^T&dJPT2.7&`<"Z/@JOCFA`N(iBKj97gWZV=J4WKMQ
+A+D&WP!LFWalK_r_21j*7kiSSk8Vuf2Ohrte#D-nHMF,GkVMtNk)2^(dO6bmV(nk"F%0,LMO^\=VcbdE
+%@YaT]%Lo.X=_%)Ks]XAg+<cg>C,#\\(hr>/"P,LiOcV'2`k5e]7+QugNRiLQO;ro]!3gKPCOud;H5#'
+.6o#_TM-cl$jP2jcNSPZhXHlm/f=SC6f7DMS(7.Q8MU?YocO7;SrQ=9Z2#)g8Ka3fjRQGAY#R'<bN4TB
+!mS+bRn`&Vpj;]/rLQf_ZhbC@M*Rh4kk&%I/sT/,e*3,)F[i?/X&Q,7>0UB]>+F42()mrW+(_cG/JagT
+0rj#PV3ObB1)YU%2_4#LR4'2dTGsA#V=XiF!1%#l($qfE6)rPW2DP`3Q9hb*b;D'e#,DR+"DgAn0SiCP
+(C#W&+Y@qs9rQTM0cDS9)aZ>"NCOlr(8G&',`&khZ=us<*<qd$A<8.5:1lDH2WjEfbHc<_T"ZT@\dS(a
+7&!LbDgG(-QL^obWU2%=M3u\/10L`V6SYmcAMoikL8tK:dpTFa9X\_3>pP#+R^,S&''.STZ^P[\$Tdk(
+?*Dq>V=Q9Z]k(Ui2s+Xk`m_%J=`"r?4f7/9\D"'`"/2mPFLBk`W&,\.eSR>cNL)_$Y2s?)>\s\?M4E"5
+1KmNH@n"&eDn)=CG9j$(.r\-co%*tm7l##->Ktacg.*EWcY'Qk"LZ-7U,Q<%'k6-tIS-ieVkpn>`2<SM
+e(%X8>-V;6=&ZtG3iK]B?D:Bbeb^Z0np.ni[ekcpm;ojEDU3[Iiq7YGhf%-0ecuA1^"j`sGD7EuMf#q.
+Or!X8Rb;4-)_>#h!Na.J1tX?kPSp:;AMfkfk0%>@&SsA"%Aqoe0bA00j/pu2H:$MOaBR(Nqgq`rE6BQ5
+f+c)$g6o>1XU2U;F!#;1kH:f]Y(K&a;&g&n4"[,]K/D-E2=c#\X@f?hF[[3g5cRd6(@,P\)4]&h\h($(
+45SE`[D-R^l[/WkDgu#0[qiVSd-Q+gglFParr%A`i39^24qeN_`8`RslrHIRlZYM\)/GMO!<%@2?r0B6
+((ge*6(sC-Cb?_?Ld^4l=Hlu<(QCmoObiXI595hVi,@j9r_Y,09')5hFM:m)ImG2QagBoE#F\@oO/_a)
+JFfHkg?qta$*pa?[2#a.P-&WJ@BpfQ`d:jt=_u[TNJdCWY@4Y;X4A'"IB@3ug=hkI>?9!gZ<,cqbI)6P
+H*Q.A2qGCNqes;T/_7Q-*rBQbi:3)PmQJ[SG%BH4=p*K,!.@&hDl>2K%eYLfiGRjpXrcb^\KYnsX*QDQ
+N4*55M!JA2er[tK9j'$-6R?Kh,r00r;I7h>baMI"K\;tWBXCqV7Z;bugn;/jE>L`#f'oKP?E\Zjih$IS
+e>]Wq[9AniKtQ8Ba,PD.n:nQG[S&3@aR$:FX_sVFXjq9ugobOaI3-i'UYY;q.hfYrk&`[gNMf,%MVh[D
+S-tiS"dn:d\)#@8Mpe'fJ3DgdQc'XK#CJe1:q/nNnG.l(U/<l)<\40-7,i1kbM#)NO?=d`aWmNRk*.i1
+:+#jh^tkA9Rn]<HdBM5kc=XD+`6r2LRC6=A2WJed0Q+A!<4Z>GSD\A9C/VX<M8r]!<1EQl7;]eAF4aa+
+3gCn(f!I689H.HlgoS"8mRnLnp?]u82=FN-:%dCnH/N#=3)iX-LOMIm=L\8g*KS9PE`kN%="Tc_5TfJD
+*"iV`K"n!4fAlQ@%>I6E0aO:5.h[b/,4VVUE\SVpa5aH3*/[B4PK>*`BhYfo$%G8'1F\jB#;;Rl+g\0'
+iV`VG^?@4r)pX?/UUk.l>$HTIhl!qu/\7E`X&c8Z.lF3;Ek>PY<ibV2[?7M%C0E0SVR:TZ=1?s;2_,W#
+eRlGM0(t4Zo((>EhQMo3]kP07ET/!@Vg^AdNhO/Cfdq3qMXu()+:cI+U'Tk53+39k;fW`0LGiTNGa(q)
+'oOqZ&U;N#0cb"!@o:gY=fE]]8_S3Q4%Z2!QV->@8=V]L$?*I&&4]+!Gk.IiBFfD&ie[H+53WcJjXu`g
+UHY;-)O1p(p8_3W'q3Us\QuC?-e94ONTFNR4PlBn<N<B,TfqV+#Ku,iE4=Z[odUX/N;9@.l1c5555tGU
+iUIbOjX-lnXOq0Gk?^m/Q(0iX&-iSg^>EfoRo"o6A[)Y[_kD&5Cbd?iCVnfp`k-6!g2=s(OpE:X]\nB$
+,jlODW`8#E\L$ZHN65\oRa%_Xf,J%>aI]QtlY6k8Da[l.Qdga9.@3_B;kYsj"O_&KWk)s<LK/)tm&mtd
+mn4&F`r!'V/FVn!Wmq'WgTC2XNQUF+]%sO`Mp86tr-mNVfA$94",+HuY]tOJ,8Z6Wic4b;L-$WEalTg2
+L]d>FrII6WE*,LL'aBCZ@Bd7`7NiFo^S9'L`+CkGN^mU,q#";a,EbW*cq!Ei<;2\A--l==Wat4[32Xsr
+_fg.VSi161q>4WT6_I5RPZgKbY=iWZ>1ED&/[&!GdMjd<`EI[lD-![d3`Rf+:o;o^elJWEeS8gQD0DA4
+rc$b`3F-iSK>$;lH!akopN?_hK6-!VG]s?=k<*V5//0TT50h]a=n9*sPQ@f7CI&l#BKQV7eS2oEY]t7.
+*<L#q)_ksc@DNk&7ia>IFFiBpHH@6!B@NXL.Xk#:ZKZbR<AKue+**4Ml16s,^*g8Or;qU<U!KWWM<!^f
+-BgTlZ:C\;k43iJBs26_mU9;$f.1nkh(D7kGhF>Pk?Xe/C3*T!<p8"`]lK&j)cpg^>4U?_7@OaelrsF7
+Cc,VF(7#u8d"4,ZGinmO]l:G?S8LHd;?5Zq^tb#Q1R6,FF1Iu@[l^/.%s14uNb7Ts\B/8:(6R-8I8Hh?
+X-LiXjIM2XB1gm@f$qCL0nQq[EApOf-OYRCgo`%EJ\pB5\/Y'D$\g.sV*&IQ>'&i!r2Do\Q!16fZ!"20
+l]p2sI_fHt=R7nHlgajb[+[*4gL\+NEOT2U(H]%UnT;HMmrt8_rr%D^i:%RW()IR<[Qe-M9QiW@<lnn=
+f".(20`ZO8ShNZF):8_16C\V,oJsGnD8_o@7a,$h(lZJ(&]iI.37r#fRaObX<_k$'7cUc;`)9qrM)OK.
+=NnK\+HX\*Zc9ADIar/ZRZpDqQ<rIE\ERmWCSm]gW59Phf/tM'iN0p:%GL0k59,eCjL-N(qLI,&8Ym2Z
+qbl/s[9TW9q_Y<)%W=>1F]WGV#k3.'?B8a*eaW?\^9MV#DEAr%aQ0XP9WhSPqg^lfDoa1=o_NsL?Oq@m
+g$J<U4C->n>HQEAN'uLJ392g_!eJ00Z8j1r7g5,L@.1#3[N,m=4=3q(X0'],E_]k<[f#g35Aj;%<&Vu:
+NCTd@ktS&227Gti[MmCkX#6ElA(Fct[WQble8D`7D?g8l`o:sJD,*/TjiM7XgTC2h4eg*VDc)q3[LMnC
+ZWSfDb124]CpdG"f?;`t4e5&]\6K\k4Or2QNBeN2-YsCB#'3*N:o=,@^>*TaiUHQqBtY:$`Z27]<,pk<
+HH70@-fgEe-@\W60DSkY>:u8d-8R*@dVCb-5@9RfeE1s=T$SjL.K'a/7&///1g40/R7a@+.J505;PR6k
+eZ1Qbg\(M(YLkB]fhIXQ.?dM;Ose/qg@)M^mOijV.E(/V\*kp'gMZlA^YgdTS/r=OK>?C6R"j00ZIm4*
+ni86J4gC0mj^8Ob'Fk?$K0eG_\5Xdk#&Zfe;&GNA%0VSI,7SnH=ub&n8(qu#r+W>:DTUZHQOL"8/XK(7
+%Jc6Z]+8dJTTVk,mWfnH:ZM&h'aB@ROu6oIG-rNZ,c+"F'Y+@#Us`r,g(G0kOhG%A3Lm7]A$+b\GWai$
+-`*s3om4=>%uZA*l#jR$D\nndlM17k5;3oo((UKF_dW'PS5p^>L;H.3:RB&Zkk06aXY9uq[FjY`3F"7m
+qglKBL:X)I(lRB#r//6unVG+a2Z.tnU2PgoM<cFC]Nrs@A?"$/F3C8[84/*E1i?$W;hiN]G<DEk-gdnn
+@BeFT2WtU9gMs\rD7,i"Ao1+o_dP0a99o0aN5]85/+"hp<NT'&2/MYLUJB9QC"R5Zp4G![aL\UC9GQj_
+G.>8h="B!]$%g!#ZC+CUF%2W)E&l_aGuM!)mWQ77:Da2alL]A<*\S=^[G'tj3o*Pd6_2<ZEO_ag(B]*%
+)fN4?c5?aZaQJ^QSZaJ0g/Rs85:+Y?KZ3sIRS@DCH,Sif4.]5\dlE?Zq#-m`.!/W]*gK3l;JEMLF[i''
+Vq#N^C8G7E=ftdUe[k^&_.0`QBTLd;rmbem>37U'h8/[XHsL(lLQ!]$lZL;hmQ:Vj"Q43,>I]&2H+/^O
+2R1p.c:91Ab%$p/Ht38e!c5[qY\6+-'+0FZgG$\nC*O@B2W@Rn'65lINQ,Fi8E4_>&r+8lnnC0d;V%,T
+i3?sSC-=>7_;t*q9V,$1S[G:Mk,din4dAjB1WdlcP=h$6kKOol0p]sn1>-KdMc$G%DDte&B.K8"m<6+t
+cKC,%hXIm7D78VU_W,7=h(EmjF3a@K]tJ?fHi=';JplT3YKT0T'8j_:E)2h?61'*BhHk*c)m02,Fh(n>
+f(4$gfP@mgNL4d=+R+_F@ZP3/i\;=0`LbCXo?KVjOZTA!fec:KkES%RNYune@,75/k)H@I3cR0N:1hu+
+eC&n5D)Wl&`n_,c7Vt%,bpJWCNDWt\euMfFm<6'MYultIHTI\EBNXV;q^mr*@V8ltCpm7_NlJ3Q(i2:)
+c'*EbhV*2+94EejE&b(`7kCB*mYX,:cW@hF+S9un,**$dZ6]Km3LnAr/!7jWEPYna2`%0Lm>/DaDcj(*
+0)U[CUN+?PH9WO6aJ<iJ/=K?_PfR48a6^*;/XO\Y1J*8RB/c:)-Zc9Rk'oLd:T-*B*?'W&U=*`IWbjM`
+5C^]7<D'AsWuR)4lVVuojm;\e]Uhn8Fd^ipF5!=*4)9T.E,XO$[moK4[s5MD0,MXalMl%=2fDeKeai@d
+`8\$rS8LD1ON?Lf\?%jMo7;EN>HPsl't4F#6/bP:A1e_PLc-GS#c(KPfnhU2OdOoqY9/_CA*nOUIB=lZ
+alQF2@p2e_PY%`-3Mb5?+co3_noh'6V*ATh=U^$H*K7sKZC*:9lZp5%F&ZF_[o9]gm&S\eeMg^,]]ZLZ
+*3MdVNPska=Y.">A!YqhYW;$pLJ?@0m^tXM:HRUfr:[p6E&Zs\dg^\M]Q%#NI9sO.W4AE93)llMd:g<5
+n0XA3Ym,0a*>#,j1#EIc6m=>+S%72fKfU4DV]9]m*cK+=Os\\@ZR1mY,r2G^OgNl0bU,+=m*]SlQcPY[
+=aOkh#&6sPbk?)iL;R<#(NcM0)2-:I1><7=X+A"AN^=m&C'.2$?=hb?2B)0ITk8m5W!u9R@SL^3:1gd9
+qhj\XF2ZpZVnMWnIXU,r3%O%Fl\<)8hDhHm7hkL3@BqOk'BT%UIc_a`kS+L2s+<Vr&=?EL)%D?giXm##
+p%\KC7A@&3e7L]XO%/1"f`[=(-'670P)2#m=Y#h2V@qR@^1B0j:$*$:eF%TFKL$_V\eF@c7!u\>cW?U\
+jR&j,.Lqo2SuCeP39q%mdseg`Y?0Je(?LRu@;ab7ef+Li]k4J")tn%lDWu;T[]^L5c0k7O^Ktjr*#6c`
+AA_O;\45<9Z&Qd]neg]l$LrSg?LdLh]3VZEJO&.TL9rE>#)+q.OU-%i+Uj4H+qTLQC(1H/66i_sX%B&5
+A]^=`Gs`a8cY#%Ac3FH"b;=:bSC;2qREXc5:RlM3%16Y'R*fMFBp3hVhkee61eK>`ND6*+B?j"7S]pH'
+];tW5"0pSIFZS?"H)$M?ic)Arc.:^n1tdX@md`i*9(pcK[]f?1gu</6_VqCk\c[tp9Q.C[mECRi-JH%B
+ZMB:YAd$h>6"$h96m`Q$L-o?CQFoYg'8eYVbrEXMV&O,*j,rQs8Z:0S5oVE<lZ'r'E4K562[%,OeRqTZ
+F*;*UTf\8l-dt(#;6;*[2;6<46Y[OoK0`_Kq.#-+;g6bueT]PTq-1"'CX9TrL;dZ+='rC_7AeU?Zp1\D
+gNCL8F1PXpf6bL!om=D[DNEE2T*'V[@;qT]*[_DS`+&8hgkIU2O3-I'R=)@BqYYfXTTD,a+qG$56Qn/9
+>WO)@M8S>X.'ul*(Os2lchREi6R%Z7,dM,HU/ND!a.r+Dj6gCQHd*UM-]>ERlukGG;s-RMcU)YL*->g&
++hpWg;^kH7og53EW&L_U\n,?W>,sUJ'h\Ej[plVq/5<0.TsJL@g9%eah4i;,\D8)?B!pTqHG-^>XaC$K
+m+Ac*0Xtp7$NYdj26hDL`Wkmn^Z':#CfY!FfRZ<GD4!.$%g-U`+AdkM@BS0s2-MRIK/t^0A[8'>euVHN
++`FjEc5AI17c&)U)m.]P]sfV394h*_UN*b!RnVS]g$J-@6'f^KPLf&WOQE<!SF1SWREJEI3,&it>n+6s
+D*]@#3;n-'@Bd\=d!EpU>2Zelm?X^kOhBPF=l_05Fl)Y6]No3;4$@0[eA4RW0nsa.&W(11g0!)C?QfZa
+;B.<ZZa&6bFuj#K81Sure:b0%CoD/1QOmguRS=QU=t\Ec[NfdZltSH3NOBbmVUK-M->^fbXiYAoaR#;-
+-?#lano"JtcC`S-m.L6@TZu\B8fR2Z25IsXoZD#.m80]Z.5Z8)%XU7<euNr9m<ZNTYh%^8ap"*QB!g8D
+G'e)+h/'RUXuB"-g?3[khCj)RmH4Fr^gF<*9HG,VDL]t`=NkYE+-<$rW@qnbdGj\H4<:TF>HQE>F2D1d
+\7@>9%u<UnEAnS3_&&&"@dY)o@Q>Nl87YUXdt,7]PY)n#[cFl&/oAg:;`UUbD)IeXB/<#aoqO``crnjV
+I2/SKC/S6B\n(K8fVh`;of@e-X];@O>4md'G,\<>eRpa_`K$X(ZHfRQ]/86efPNN]e!@UKX$(4PVJVXl
+p.HaHakP)6oWhlZ\D+/elRk*EDJRKO\?'!(jYC^=)f<%DFpQrB_AfVU>@nfaCW%.=."bhOenW1a&NHOk
+Yo\tDUbXA=N^"YK8`Z$o>A=<oJ[Zs^(irSid@7J?/@jR,EmA>mg5S"\3P@n%dN%nW9;U##Vpm.jG6Lkr
+4CM8,oqi1<NF$4!)HJ8nVG/+h2&`om<KXN;D+^Obq3.-0mCU%"072I9qYItb0=WCQisU4O^#%DC?7kK'
+a51-@/=XO,n&r>9%d4T5i<=MChU%V=/boj*6f7DNPYNYBI_T6OpZtL0'otlG&fCOU0)UmSjH>ofW_k:5
+94egYPeLcbRSDqnRB5gr4Io8]'D`F>M*[l[+7TXP/t#G3;sFrBg[4Y/I(g`l3"r^K?#nQP<Yl4)a(;Hb
+>kXLAY1%6/\LnX:PD[D'E89mu.k?Y<jLsGhGFQk-_1fd8S+r<;0,WKbA(u8EekNK9aL:ZD#0T=;aF_6r
+E/&H`V$r*d+n5hs4f]9Q259Vsb\Ai`NlL+Af#3G,f9&Xo%@Kni9e)IPV=P"OC1el]b?K%Bj)MN`T"!JA
+k3WA,4e5=pD5PP2;^\B`.?`pa8tO_87j@MI`.h&6XO^pEpq2d+@?=UWdV1"R=(mfAAe^+jiobEZ7N(rV
+1E,u/^;:b)*"5/*._3ioPMAfT%k<=MQl-(I8SaR5Y&a=D!s+MdBL,h+G0D8?$\guP/SKeXWmlnoU((_I
+AfV@t7q2!:lX@CMElhU-GC67G.sT6DEqbg<AM]cJB%)#u^"kbn:L,dN70Uq'U,hG_W^Q7106t7qcanc"
+V#IAYlIC4"B!hMce=Vf5ja+aKX]]JkHIYpDCTc<,f%YiJhf?6^mak[^de.gthJ\bXp'1DH^gSp!>XfeM
+L;m\B\*I%h-'QJ_EnPi)!W<(N^u'*D]HQMHG=*A^k8Ze(&oY`5XsgoF1?FM+UTs%;OuFS*`al@m"DUd]
+Oio#5R<4lMieTSV:)U_(E>"hP,-C,,G(W"t2/'(;3sLkdV6Xg:l?c-te#CkINCplnZWa*2CDG"RHA^:Y
+fdr,04e],qCtgOBl[?)!Ek&Q\[qi\-[sGYmYIA,giO%?V2Hq#!]oB&CC=QL)-CnKZe@Jt)GYAkK!823I
+?r0>9@L!-S2B^AT]3VZQKuDs?.%EaW)3%,Em:c-@.3+I;ipp2.2A[a+9&Rt)F)#,9R5Wf`=gZ#Pd[`/V
+N(NUJJNdO=)/T^::6=#&;VIAgdn-<3B@PV"=sGN$`iUr\N#M9h_-CES/<&=@4tAC+g>!IuFh6/[R6d_a
+M7(@nCN!PI2g\bY!9:mUn;a"pZOr&5@NB^KFue*8a^L_mN4*("!->\YDFc;rbm8C-ST)Vk3TCZs`1IW3
+jB;?sIn$2Oq!<;k+HXV&cab<\q"p(BATGlpp%]Gl9BJ$%SD%O6Ra,O:WU02*4.sou<!jWaMb'R?W:[Yq
+17q=?dqX"#D-F,FXOaFpb.MUH09SNV:NsG(l"Gi6SJK6d\\@!@2stP6o6J5uEOd'.2_6,s#J]2ed&7Wg
+s+SDNYdce@.iS],_6)=f.uQ'FJ2j2s(aKj4#AHM,0X]t"(;XQM=n+D?<N-dL`a\=+b]Ts*NlWGB\@bh>
++cJp[Xa+Hc>qBbbAb,!%enj$0:1mL[eFn;SDGXPZ2Tog?gRbiX%<eL@UsWj4)6DD#9q'A/1i#tB.qu`S
+DRXEklMGnP6D1e:%@^:2L>/l>-^:%Teo*O;94le%<UTfC]jKp2C`V+:L7_aao@nZpdm:4ID=P&H<Jd&N
+5T!0A,S?:GB0mM5VPGrI%V`j);(.r+UDA_V)Gp^.=ut>t[cB%9)hpuGPIY6WH!?_A/sEgc;^V^r7c/+/
+,Vu=QIX9[`:`AsU*=dVPT!kUMl<KUkj/:%7/m2IXWp$M7*As`pEk:S?].>ifFcso:Zb3Cn>?fh8pp\!*
+0?]jYlMeEP+8;hlo)!mN?8+>hc2S0+]>%^>>ZN3gNlL-7R4Ne_,F$C5TF]Z7p&tSM_-mn"<#QV\L;Mos
+(kbX+'o>AROa,Af3>dfHj71e*NX#KH5NNNG<3B@UQV6HS)3iE\.?dKh'6mICo_EkthToi8`e`uV3ZS]S
+/!7kHEB,J4[j.0^jf;D:c=]:TZUf/Jkqn__VNC&K3is0a?*;XjYM8I])Vo#e=1_c''fr`[`mhaWYRA)Z
+!JJY61bfG%;cagea($$tm#tSUQ-&(VYQhF:Ws"$jTTCQA*Z#,t6_Q4?'4*%#Cdk)gG0F\[*/uj$XYuqK
+T$V,UR;A`f-<D^/bF.r-'32X!D7Eg\#7TI0i,?qGmIp2"\D3N3B_70,EO=JtdqOfQK4VGiW^ggsMTokA
+(p:hn[CGU)a&\0uXRt48+h_]f;kU5HM]V$!]!8F/`b"D.HtcrVGR/@g$PA1rj7[5).Y0dR3:ZEAMk;A]
+F1Igo(^$&@")pP1OEShoXUAj\=toZ'7@b*(`F@'d`+>baN\t=kGlqeLhNC00%Ojc:<9]]0jj)P3\n(8u
+4D)o"_pWZhHI$6QkIh(QpnBrcc`0A'PtQST?e"pfp&@sj;r?+t`FcM^Y#VOQqR(@^s0+^pPhS?id;--o
+D)V9&_VK4C>jg2o`RaX)]jG]Eqq_PUK"td`fN^lZ'o0HSCj>l47jXAAASQAb1]dCKIR'ND\'s=LonC'8
+:D\+=eIlp`S?=4YNPOFi7iSS]o6%RuD9$/7)'!Z_+ca]Ln[AY;b;+1a+qEd`iS-D9cR+[=708*.Tt0Bo
+C-<=\k+k$!/?4$qU;NtZfhD7S9![!L[B$EUrIVprYVn&@$JSV%@'86&er+rnWH,LQmC-lEZH6^^[9APO
+qb<K1A76>AFuC4t:Lpe7XNQf%[ut\i>VV!QOoXQ`31M[("+e2nKf>LGf).D:h/5.q;&HZ8-JE=Vic2Kg
+D7(OL8#1.8'V7YEPtKdDflL&!e!WlJNENX"<u@)kA(.C;@ODqb:ug!T]1JaEA[7^tH?DB7;5Q+:F]N?b
+T37tsAkb:l<Nfhrb2^jgo6q82[5mW?f1!*lEOIi8&W(R$nQBMT=`kKS4ct<1?Q#58e`!?3Q,TEa$WE)>
+l,c"BNpO*i0`ZL7T!1a9g(*n2^7fJ4Cb>;VLqb-R8?>P_(lZJ0Ds6Nd59Q'/UiK$XRSP>rb%%`toC_nr
+QqQQt8Y"LG31A-)o;V*IIlj=LW)O*E)N..\;Q06!9er>9W7,L($DbsI=KL)SFis'.>9/[A+g77`_;=U%
+\m5dn'8=$RDDiFCG+24%dCcfRbhMG<Q[llWY]rho)ZtM#hHDLICPNttaLnfs*36P%OaoM6E&U`3%0gpk
+@8Nja2B:q:6(H=\`)W-?@n'qo[WHYg+)/f"OuXaj9dc.D>7Gjg[Tb5G8YslrUpablS4VG@\KpTjeWMb!
+m,i(<QUYOAR5)-e24i0-[2Nm2;g,8$E4?mJ3otCe?`^ag<]_OW^LqK;XVSN3=hA?c>]&(RZYo-`]O"g/
+]<cD2HZ!2/2jV`*%>MUSD:]b;HKa2)jDGb`[H:62bWm%b-:AH,#%YRg:oG$ZRgs(!)A+<\;6:UM`Z&op
+oPqbiF%@;a-WH5[-BU>/EiA#E/CnIX+UjY^d>'WLbnuOS4#2-0T=&>eL<QpA7W[!'Ni-_KhbJGr*gJ+\
+;=R\f^?[Gph/^,3Ion6[(]BN?B!^2C2QL,hgMXLU/iL<VJbo:nh6.WAc1:UX]jNM')u^3QKYua<3,DV?
+(QQMr0psSA:Eu+Ije*.)lh1JbJ\bb+GZ5S!$&6=Ud27O3%/u/Lit7[.DE/_u8)t:#'TPa/Mb3"@a],D6
+/UGUs1DalPcS]`;g_6"7mBo)n2B(s`X&=c&UGSqA7\q!#8u5H)<>q,W[oINMhGoo5DR/hWfB-u&AW>;Q
+F]n(6]0!"@D6)FI(=u9Wc#mjYl:i5J8u5:W:oJU9"qLph_dW$OG.oUEMoT>u)'!fA.@%bXBWq]18YXRF
+1YL"I9Hg#3B=+B"=GpUjf5*mFZ%i.,^>X$$S+3HTJk$cAa.pp/97au$PKTfN3K/O"1i,'S/NM&>XZW)]
+ArXh'$ATk"`Z)8l"Wj!IU.hQ8)EdjIfP+)hCpmh.O^)BtR'm@n)S!k"=fY6;.mb<*Lp^mFH"2QOFECfZ
+GDAP^dc\@"Rn]d)Z'U,PiKs=np*kWQYVC*U]4Cb-jN??80'EDJh!otZ+O=^gjqRZH59\DJlp`9"MFCnB
+Gf3W7(lh*rdJ3p"73dseAC>`kM>I.+b9_2^KYD"MRS7>"3OIpg4.FQ/;sEA[.m]n+.+A#](6_7b;e_Km
+>t1A_W(,l+HGsL(>E?e)d.huCo_>^Y*m\%Y)<g\#4K[30,K8V_\m6?NHc-6GmCkWbc>3T8"PU^O0[<ol
+n_7uh4`-6AbR)sdau]+HI(TL1!eIr@Y\-'A_$Y(t)c5\@66d(Y72k].XC<s7NQ,J5LtmQ\)NI=VdV1gH
+Y:#Q,A[89lAlg[Ia!5F]]Rd+'PKp!Z7`7HugnD1rE5q3]P=hQH)t`;&6,ulDeLFR3*%A^#E7Se]8c),s
+c`sgXXW'BSInHKbXf_<i_N/`Jh'eM6<;t1jAR?:@jphIp_SNJG\)nnO'$/%uEOVpZ:=VqE\?`82]:&`^
+F#b5#2Zt/1$#7?1d+1TJM%PRuif%!G/hk\42<0\[oF]10OZVWb3A]5_q3=/*O3)LWr@rfGk*$VRdW%:<
+:?Rhoo_sD-Thss;=q'+orI-tF<6AK)ThhXdWg+L):9@[#<pKA3eU"c&Ia."R3rPYfBs:e.(<]^diGZ82
+Y*U*0cC6_e?LO68p&>%`_-lbSbVgOT8s`0mDle&[o-epsZAs=>*Ph_p^msmaHl;/SHGZ?d7uTIa&;[r-
+E@@<Z0,TPcSZ\pWU-@_$\Kl&A.tUPFDp"Qt`n\,40Pnt1D2G@IXZ1(@RZkk[qL:P@ce=U%/F%3*T[G92
+agB?*en_\W<(YPFSCs@=k#5m25//dg2f*Mk$^qB8F4m@,8LoY<E48H/o&eb"Y0su>RQ&F=:B,OBf\<ks
+S?i`^_;_P5b\`)sHt]gkCeUl?0#<&l==bjF&e)j71>tq5@o=<!Lc6MPkbE_](Q5b49pk!%W6p\_A5()j
+Q(KF<8m9ZOgpSitQo_*>l(c77p7+<Z:V#NZI/]d'kYsSh(6(h[;IB&'AN$)TW)RM33i,lZ=/XKI<,-dQ
+q*)"6X;3l4QG[@@=tJ6oAZjj(\6Ei/q]0:2FM(lI="ECpqg6(cE#:\9(BoQ1>3](roktk3aCK<o4Jl13
+PGUSen0dQ7nHO3S*:Tj?0uFKT3Si(1Uf$FnMEN"XW8&RXmtj,sZ7-cF9+lD?,qc`4VHW2MbT[O2S!Igu
+EB*,8k6l`c5&O19<$oj%YsrNW.5[?m0rIc]<%6'Q@of:(X48-=W\ne"8#/#BbpJWDX^%T()`A%u;OLBs
+eu]D4o6JG8QTC[4R>`V.IWJ5&/m6AW_Vi>jgUO:Q-HD-\<@nZmS^G-,T4/oPkS+L5!cC<Y:mT<WY7556
+g//W59q<#UZeBDdCL.e0KZDhEf#3S,erqt&&\-V=].ItpgliOBc.b+"c/)BcXR5O@I8Aab([V\17=W_L
+'Ui#SR8'SXku:aUp%^tTeLK+<`GVkbX]MQgq\=k-@'`u%p/gWRV,3uB.(61AVWhd+>jh>j`N%kq[o+l'
+X;0n)J\p@7fUPDa%unP6YPB0(:FVRPAb-H<r!EZ3K#+,LLeI:Sp4g2QmWaYA-JjWi@d[pQW]'4(_qiW6
+$d(sbP/uK8LP2[/.!WgEmeH_&B'l&3STBQ[l8LhJ3[aG64-kW\U;bnB3_P%=9Pr7J2$V#kY>hO0WpO!5
+<N+EJf:'*:[8*sTBsa;pp3!@)d^IZ[Xk)NX^><`d.F#<MC@QS,[qO0U/E1X8_7Jg7\^RD$)0A8[&K&_]
+L?3D7gi6EuH*IHc6!>se.nQcLJ[QLop?Y5_'8f4fc3V?c]c2r#j3\Y/4gb`5a]]=#Co11XQ9ndGq%R8Q
+jI/+VcH3u<FRu(eB?uG;l@f)05A8C.74%t,VGh3YqLqD8;lWfr0A#;(ZWO>2CR+bPL:q'#=R=UC7?Z26
+[G#HcfCT!(9V^E\[sM]Kh0ZeA03?oI.]ZF]@;m%\7N3"r`FEnTr*Dl6M7?safmL^=rrRbf+L#NA+qk<;
+_]c8JHpS,;M8(7<BY1i2jc-`ZXdJul6R$><)cCA8Fi,\g\Qn^g<5I6CN4YYpB9_Cs3h/<FZY+p)K0Q$V
+*V2ld,&&g/]-\#c9gR0)QT=/f3kVH/i2sJhXiB+55@SFeA<KLt=fU"e1g2I8CGD/rA[?9VCJ08dk&WOp
+%[U\7!pt/**Nn`BZ.A5`@-1Rm(+UTpFORNPqKnq:l#aKW:fg%+%d.jm*,W3,<ZohI1h)RoP>X*cNA]aU
+R.Pg7+bqu1P$'Sa:u7I.>>_9(2IOIk04p-AZMJO[SMV^VpC.$4m\)bAO'4@%OSbk=.?E2(rh32g<9f`P
+[9g+@X]F_*lLX]E:9`A%<a-lAa(_k`XVSNk[c)&5>OH\SV;CTb]&)llbLQ=fJ%!t$e]Pl=rJA>LYo(,s
+2^+.%A+Fma^)Jd,J&%^r81YYi#_^'gE6)iV*tX7HTMO4@mOn3l]OPi8l\[m\OL:m$.4[_[cBPZsD&I/T
+Usk^=k&$NeIW"8;\n>p6lb7ifGeBtn3\/X>8>K)=<#T$pK(,_bl?,^W_;/4b]3TR"<I2D#F?*Td7ie#5
+iGc:H%JK2"[;]q>g<BhK3L+i!1"a^>m'WN1D)nhAf4@"1o:sb!eN1]3*q$-l13kfr::TV?4!7?Y;m"X9
+FLiI][i@96gho"/9h;$S/Jj:%)R6f9?*`."6lV-=,aGbbBXF4%8RggeYa?u=9<"_lM(33uVbjia\pX1D
+4t'4<,P$fmUf(n[qIMRU:T.6-<B?sWX]MON?a%N;DS'/W=DSa6rKbE7Z<?QqRq8>MCU`&9(H[o5j*/(@
+0%ZTSmJ?g`?siZ_ee\XJ^#F"`X@=i`NQ>T_e>sEe/XO[H+7LZu&dnnr_BCV3>V[6.LVI:O\=;2%nr(,T
+/stCR3o?",j=P'b:.ilsZ_]4`>d9\LB?V9X-G7bngQ/i(XuAc=ffjXW,4?n]&rT5S]dYe9SMH[0VpMA<
+)OnI@m>SZJY1Hs"Gis-M*0KI^@`pH<12SR#,8#OD?ns>mG0=U*j`7m^NiJSbj\2K-l#01:qO'[C45L]R
+Kh^B'XB'*(f4F6]k.A03%Q>&XaTZ`Oh%5oGWRU-R\mV[1geFCU@)^^EQ%X!g*F?e>EYclZ,41RVjU[bX
+nlYjW5NWUsPg3u#Rn`&ZRFLYM4b$8bYK:noK0uD2BbX0>*g]Hq;sDgND,-d(WE!^KHIZ30=g$?Aef$+=
+aSqdak&q,4IbA2=g?mK2L!JRu\QuA&CF,_NID9.Y(`X;%#lh3Vjc@I5/b+gIA)<UiL/(G0LUpa[#<SKq
+"E-Sq0S[4hV$q%TRILK'8XgEM1Z=<A;dHjPE(?F]#=OF),^IM'ZA5fe="KZ[-1=p2b$QoM9dWbNS&O=T
+S^1Uq(OZVDlug+6n`L!SXO^o;)!fn5g8;DcXr'hj)`"kOC,FZ\#4$9=hiBa%%JMrPb3O2]SZ_-ln_iu2
+:0qidPa_2hTAF6<3\1T]iIY1dOf3=jSB,'tQMC]U8SODpjd=_W"&9!WJi]RN-puu.qh@=DchN/_,nl/)
+@aTG=Ai1Nf7q1rO"82I"OiX>]Gr2Bk/!N[Q;V?`;AM0EFB!XM)k&EJPcY$2@jSj3CU-GF&GeF<H5c.AW
+FR!^,V,=6l.b-SmqM@bG=)6@`"bt!+Z:-1I)'e_&C40;p:PZ?sl#V)T?+5#PjiMk$3#e4Xc3:2"Bjk0>
+G'55JLM+DkGS\JL-$sZ=>qYK^!TO6-5p"Bd45LVCKu5(<k^5]@n;4^8Xa%G]K"tL/,HJ?PAV.d]Y@O]5
+4I(62Q*R6ffm?%pd@&6+/I$U]SN:?.)"Zu2$$ejAd2%sXSKViBO07+Lju#J3c&9!b'k]sDhcbZHX09\C
+rki3MfdsRI4egD?[G*:Al[=KcEdkbF[nF-[ms;Y(0,Ns1rqh5^i39^24qeN_`8`RslrHImOiQOcpF#S3
+!<.I4i/h%t*X_jp^S+KF>W*`9M*n"ufAnD7(5t`C;:s*A3?XARA<Jr0MGY[aalQFRAA2,"QV=7i3OI@W
++Fuf:'A<$WJO,u+k`f7.*g'$j;X'9Wh*(uLMa&;E]!L\+pT6SoO"0b4_!A6cm#ESPHI1?Q2(ae,F$AQ&
+BjBB$<n6$DH$%p!pY+ZY[=N\^n<M&&*ta'O@duE*^+JjMa]G'.]X$u\!*I%'0Lab7HO+(IR;g0)3Md:C
+_jW./X>-$^N3T-sW9egk`K7C$D!<HJ:>;#CASu3tY$UUb]d@ZSX7C0gInlX-amAkR5bQK&F@n,'O%?(p
+W)KVcp%\K`e7o^JX\u?$XOX@OMVWTj@'3V4p,`_HcXsQ;D0ChKWnUFG:9GB0Xh*tC]Nq^"bME$fJA0r[
+pae$0qb>#WnT`8q4!0R*jKa&'4Z7;IJ3P-:W$C.-on5H$:AA>!*9N&:,#.j-FtFDH\789Yj0h)AO?Opc
+R3W[<p680\1.TP#odl;#Al@h+n^f^/:/qt<ipM3BTL>:^#;gGGl(h&0EU%&Afh\GB*AHYV8sN1q40)-a
+j3kUkP"d&plQqhrB=(iZ<kDqOh/Bf.DHAorf'R.V^L*&VeaiH_^gHS4lm;rFK>V/<(q`$k'op:DnlZs0
+6S4MF^`SWhlj=%$K#/Z"W&-7C%>D]o0aO:5.h[b/,4VVUE\SVpa5aH3*/[B4PK>*`BhYfHrg1hU1AC^p
+CGq[--SqaWnp<QmcmU_#*>49"UXCNr-hIlSr-gip05@!%WpQju.kZ/&Wk.W%eR!0@)s5<<Zb7qC]3CTT
+l*n?D0<:Ylb5&C#*uA^Ne\-E5?kXA'Q4^0P[c/:0/6e/S?$0=WQV)*QT9d[^+:m)iq?[+R5p+He<%]$t
+LI:&5(mIcE'oPN@&XZfHqYYn7UTsV/L.NMO8EB>E7'9NAPfr0P$$=1$1Rh(9'3WQ9FZl<lkB%U7$@tR>
+;/$_:<?@JuVGla0)Jflq<NAG2<LVHU\QuC?lkUNS.J[P&g"r$]Krs0JGMCt5(Tl!.q0ZK)=-jZhWI8Ph
+h&%*5QO*M;@IY,"UQ68)a!WVLm#t'jji]Y?&-g>bT*/pqS</Mj.J!st6_ElSN(PH3MT)=[Ls0Tm*0/(7
+nd,_.*<(E%+0oTKSl72*bGA,DCrTg;Ra!2N3R$3"31\BnZjGh$Im]mV..h7K(7.Rh;Q7&2I7g&0W7>X*
+C<^4s=0B[kYM05<^EeqEXS.QHWn2'qgS2!/lg!X)]"@Culc[0=otJ<c0?aga#4'.6E9o\[',K?B]Q*]_
+jHCg2H=L/pL]ZOSYC\Lec.GCL']4X$@E_8p/gT,-3b$E;_sTA\N^mIHq#lF@,EbW/dWn6X<@aA.A^^C%
+Fo)#bbiZ6'[,u?iS'P_Gl/_ht6)%1(e2f`.O\;NLBf,Zt6CguR<9i!``E'<HX]K;'qV?n>@^&u$eltS+
+eRtXAj-'k)`oV9Q?#J8@`1d!RHXC)<pN?`!K6^m4(jk*cq&"Ff1!A@(Rj>#V6l:q(_u]0*I_d+FB1*o4
+$=Q:F9\.]Z`=d+.)Gt)t@>Pn87j<reCk:stIRtZCfDM@A.[A1'ZKZbR@ksIs-F7F!ibJI`^L*'oo_*c$
+T[>/%C)n@R8>Xb6[$lCuTh_Q:.WoKk@]NY4euQ4$rGKMZYuiQ#CFu:&C9uX]2TpN[j))?^/se)jipUHL
+h_2I\c3"0#_;K6p8)rbFoYnGI\EA<-"SI1S0^r`363-Ih^t-k4*$%f]?,GN:=(FJc&UMCN&QW.BPo5=q
+>RhVB@R//"0dM^'1K%'0Prn)gM0&5qrg?"5P?G9LEB0RbkEFTkrddA/;!=-8Poc&ZIm7;I\)fB:rM\62
+'j?l+WE63&CR'eMDSKJ]=R9'm%A([TZW_43]61.4D7J?g='MNXkBX[GY8=hDpAoZX?gr:[-6E\R_W'f^
+giXDVOi_.s'R/D?-NJJ)TPfQ9Sdt"<^tm<rCZZ]8LqY'NaK'22bD`[cCe3kY52_OA?&iVL8l!BjZXn!Q
+CPH0QR'gOBRB1Of).g6hE-FE%k7N-WBQ*`!)NRFbd]%?2D*":cW77hi9!)9kriFK(ce%7g]j7hoX>W]T
+R`B'Hg+@KKD5Q3,\6H*p9:aeuGe2aJ0:0T<oma]i?Z2qZmgj`_h=4U+?99*f`al@M4H<>nQ@M1AYLjO%
+#6fcHiD=2u-6!>J6t-`fHr_O/MFHQ&R,h^>)ir$M&igWur?mh%AQ$'+r_EK\9P.3`Ut0BAS5*]qW#PF$
+5C$(2'K6I9\OUJaB^Nh\2:kWM<*rWah,WiDG?/C[(:A:a?Z4S%<]7p^Q"OX]>.1m,[_gq-[Ma9HrRHIC
+B&6bD[r(g(J#^6?QoU,6GDF+GEEKkc2][t"^u*Q[Um!;TbJ54'a6X->"+nB4n>J0!'+KZ5U+lqD4t@8'
+]q2E;&VS"R(5i:Ri95,<)A1+0;Q.76.4pHNVDAOK^2#Kn9d]J2bjoa;S^6K+$69J36)2gV'P^>tQVOAV
++`HY8ri9)#egiVXh/^,6YLTXkkKT.PAp.>t<i4EPX_qk./^7npdEQiY?66SRea`B_]fg9Dk?\f/jMT^k
+9h\bm)VN0?1-#!N2_)VdYFl9bo+hV[K/]J6Lf;"BmWuPfO,0"f./\uf@hG("DE/\da5dirr,tXXO[pc2
+R8g=l/XK,m',d%[Bf(ga?]g2hicRDU:Zlg;oa67;UJY_>8lZq!8Z#GNeJ`:"TfGKjbQWSbR2/Rk*sh(_
+M#=nb+,GS:(PBQa;QAL=f,CL.iH)V:D\l'shY2<0?glVdmLK>O_-q=#Hr_1(M4R<$\K$o1>o\gB+)hIl
+$0;;56(H;Vr$f)`D*set#7O2M'R%HeOba\(nJmS&j6p+Y^..@M\Rb,"99*'2QF:Al.>p)s1h]UPX]D3:
+\D*=Yj\CRuS_37N];!Ui9?rkIHH)_`\rB;W<3"KKonW3Sqcp7)X7bZSMST4r=fh=T9rcf][bIqY$]W<S
+rI.g#f3>rRo6e2XYBTm3!saFpi,JHb7N3#"`T+4+$uOZ/LI*Q?K\-Au3YP^AJk<ka3>-*<$,iPbe4'63
+I`16N8@2t`)iMaH;<[(i73Rgb,gn\8Q9P+l5$P>cCrH]:RN9\oBsH=h4&aI2DRX/NKdrfhB[f(+(6M7d
+;e\)bAO;qbW`896.`GGp=05P;YNl;i`FH2VCt<r%VU]Ij>A\@^S+6:M\ijrVlbf=dhnD!ec$T]jZJ<;V
+E7_!L[hS@X4C6\7c:9/Tb$D=+GE`-hnohhhct;Vf[gIi,+\g%*/[F&G2OdF.X(As#DR\Bfk7iKh,'(dF
+nn1Uld->a7ATEW$\^p(h5ol![Hb&/+GWd+/3U=rTom/cmcWA$?meN]nWNXHm6D4:V^Zr#f]iG)6Io^?m
+lMZ=P@^4T;[VI,\q,=\)D0G5^_V&t=h!R*o^"W(#^"tE/X6p&hK"k_J#io_H@Zr+Ddm97V+?Z&R"d'"n
+ke[<O'K9E\fAlQ6#_U!&OLTB^+Us7Fi_`gR?7-VK7\^FfngZn30,Fp?@KF!_;aHsI$<2;!C7?oYP9puX
+ppaHV&dG*sOjN63Gs%[<\hmlW*2QPIP_sT9T1u7`l;_#I?E%&-<bmu3okM<KX?WeIq_atmBsh.3QJ6Pr
+iGlD4Cldc@h=5c9hVED-*W??#Cgbta<h:>(M8`nm%@h3FZJ][\gppKe?/Yd.4<C^s]G^)BJj!FZa-8Uf
+n979kO[hfBb8>4gS+4MjH+P2[2k1LP.uD.%NCo^==Y"N!g6g*[%G(H'9cB6U>][q2q9;0t3F+8(6abY7
+GIu\W(Q6,noQe;]mt\g:oiQXnX)H/HmJ1+lfW7m'/XcWP[(i_dRr,aoE4F]+G,Os)q.73Eml/GGqXoBQ
+i,ABA/e\bJ`8Rt'N*\RbON(h9aM_7&@$6$R=_XPG`=O(b*J2@b=F=F+'=VFHfAlQR(5g)k;4-ER4WBI&
+A.gm:Q:!$_8g:AT@AM:(17-BYZJ-s/?["-C%s?N6GSk\/#&Y0L1!$dK4]fM@_Y?OO=dVrrU9IlR'l$c\
+27YSb<F;q3CUQ;.P/V">=m]7*AZ"3t[p3ee4+5]AA:IompUfP\rI;UjE*,4L(Cc/<?fKI'j72`%H=U<l
+2a16XQY\o+%<dXuTZq+*R1,BK'o9e:0Gk2jlLg,GBu(cA(B^5Rk&s99dO1!9kpC`!*qH5IZ<Hsgar[j$
+UX!X5S'>Pd3O?kSn"74*/rCU6MWCP\*7Uu?1!8OS\10)QRqA^%Cpk8t3nnMahJTgWmHE#NNoQ/JWD898
+VV>s03h9$4>HQFAG$X;!q<Q%50pOoZ3%*Ppq1cf%YrJZ\1Dc"jj>&_HSgF72Ic[45fB_u2"G+Bt&9q.m
+)$u&7iR&Kq:*14-7A>ohe7L]XO$XHBjANrD94b!;M^1i13-P\'9jtk_YYO)F7q6Q7`9qb2NBWsfVL8m:
+F#fa"L,?IMZIr:ihQ)amh0'Q]0*A;p;2"^c/Jecu''X58@5!q+L18k>$t=4Y8@<F%@1ZoQK0bKdeFI[/
+^0g'U$haf3K>V*%(gKfX'og4CnTbrrq^DKfAb-H<r!EZ3K#+,LLeK97%#2Znn;$X-q\4ItT'pm0ei)u@
+]:Fu&>G=UKEk*/"#5_u9f5!6INHpFNU<mDTR*8#=%@#"Gc'YTpF#C'fD,HePLDuAsl))NBNp;TrV!Y23
+l7WLf`jYNB]rUU[%>j[eZ.U?4HPLue)gPY_Y553,eT>lgSC`N2l,.n58mC][p%nIB]f<6_k3a\/N5[_p
+)$]`,^O)ff0+M(dS^-A?3h7ndCUN11HGa)$pZ+dhrea-RYP?%J2&h%a+0W`OIR>6?8S"!0*2ZF[PY1&c
+fn?YB0:C$rP=OBlp=GldB?>H$;M:@1;/"I*73OH[7T2q`@\Uso<b*RHWt\sX3-u=59u>;&Zqt<h)&(SI
+>%K^0[TV)$qgsF]F1PXpCAYnDo_3\qk4<Bleb\uc]pb=7!aNZP09?EkA1>lo^.XDh.T!2I^oIsV<^I%K
+lr]Q@(rdd$H3tkAM7MWKLq?,3N/a-]"Z?.8`qN_lP3?Be@T)iD]cXGum(-UYR*?t!Bp@Um3Le<lZcW.5
+K0Gu*.!02U,)JpedciU2I6+,tWRND_.]m0`>+iX2YPS3L_d]n(/@K=WU=3kbgF]l!lhY$BIU+Re]=Zne
+p:\/22s5&ZbiWrU0WhuL?P=;j1GPu$HOYSC@q?MdL-@d$a^N!;/-YnKI(`i>(N?<h/eYjLYSkhh`*Kb(
+CptXKf^sU)h/50IN^k=Rdctqdjc;ECemS6?9]$Ld[+].HSPJ@3\"ru]6$CW2'NZk,`CY$sg_AI`I\A$K
+a.%3RbA+'3Vbu6PWq?PS5C-#\G$!drqe:Q6m?ZAqq>1#rgo`Rt[FP'LZehjogSOo<JA5K2Qom87&V\0^
+n;t':R)ibgPmJipZ"YWe65Peu3#i\?#)'i:E-Q1F,_@ZsOeu/GYh%6*)HhsH6Qo9;@4;VB,^GLnIkDn*
+"_7YTUj"YZ%E9#8N35Ar'?:6M&A3HO'Fok,6-.,:2],FA6NL;>2All78;&9H=n;?8^L*&Uh0->8Yh1Ie
+(Q6D9BN//r-\JsK[T=?*"Z)jod)%\3S4!^*pd&kY%5O-!2Th[\l</q;"p)_(PE::TZ?]-H9q@Z%(sF;g
+&ra^&?O7,eZ>(F#rI-t?&L`T5/JX45,>i^@AiUro87Sqc"Hl2"PY't7Bk4)F/!iqA'01HkAN#uOk>Rf0
+NVu(kctHB>,o2J1Uf(o+\n*dj:T.6+;+K[:pJlZ+?S@2Hh<af\]dur<Q'L0<G$8/E[hFV8hRGH_%<e;m
+Tm(1W=q(;ihYDP2ZPf+r'.o<d@k_!Mp#>@^\&^,O9/Y!^(;F9C(ec8E&X`i7ZC+E&K0?ONDT!LA-PTG$
+(3M[/0'M)23u`Cb*`=A]P"R!E7icWJ4L*-`Qcg^3-R@*S2Jl2-o;UM*ZJ2"rS+B,pVMcF>dN91$h(ee%
+VnX=<lBCq@;P9D9-5.hi`]"hG9kL.teELR*SBdFY<MnAc[bNHhj(YsaD)`KZp;>;?qKP+DDtk!^h!B2N
+@MS[7N\P[:JM<H//=ocjOAY-_"%X%:!-;[#9WpncmI7k(4r;'aJ<D&gLrEg)(sG61pg/a9_<D?dGTDqO
+jR6+,Q0Q$tb(VK;i18r?'0K=3Vcq.uhc0ka.H%f1*YqYG6>4hM5iu/R(WcZ_E9n9)(kN!Ei&Kq'>HZOC
+";."`H8?'9_]`FdXY4O#gY#XD(!S1M2]GJdld1ke+s.;L,`8i`KISMc7)e.V9YsC)S-kq-)2oo14,2;t
+"@.6cQ4UK(TlmYO[O;fGQgk=Y8gb=1`M.0^a_\1ZFtSPd,oMA?,^I%oDqF%C;_+,+-1^;Z[V%:_9W#.Q
+]]s>rSBkhhl4!fM5GHN'e4MkRP>%cNWH@uR6Dm_]bhps,]kY#]Y1K`J$Or!6A?sm_eVRPEqYP]TT9ff+
+jmdG?4mqcCc/n29^>@_-2l6o>n9<i^m`\=r(?EKFEUF6nIjWoe[[R#J"&5T>B/>sWa@%>9aCDGV&G>Vm
+JA,AFU<Il"&i@Ld7q54^.i!mLA$TSU3C?B5.tY*rD+::8ADin:B$Qg^Wc[Eq9q8@)"OY$AU,OLF\jL(o
+fk`PcP_oQsd8P8>?F>"-AbfPZ^E9l8lf%:,1DpTm<%3*SVCsZgV=j\8^:mD[Qg,NDipV0,?-F,No)V6d
+?71[=UmZL'O=mKZ`UsQp^7%HVdcb`L!?cqH,*-<R);)<B2jN?5F)dSCCGD%_L.JCP/JsJeNCG+;]Za;b
+.o"=/+e?E\1q/f@[dre>0K1rBVYR41^qMfg=6EWu"Rb8X*h5n[j,o4KEj:^$AjRB\b!e?/Lt>9[+R*Pb
+X(aL[4XT?),b3*.MiEm[E%t3AV>:Xs\N[<"#?Cnng9jZn<Cnt*M&'/eTh6bE!Au-L,pU_=FCEgZM)c,D
+k5jQL!,s0MMaX;=3.=[LNl_DIYm>Y1*K>b_@>LFe0GBc[A$]lgChG7,%#$ueN2A9`P_J5I5YTO##Th1J
+<.V\;Va-"RaY;aL7O9gV8]HWDrfKdK;X'G"61U\F8/NE7!Jpf&3+5kFYK-$R^L"-HlrI="T#kZP>&BS;
+FfOD;\D-FQ>G^3>H+RCd(VBA7!IV^jn9>p"*t=(5^Tj$iG!@.4a^jt1>dduo!.VeWE(DMu%g[j*Tb#c@
+neVO\7%]T4X6qVXMS<FNLtgnTp3OfOY;n,@g?`t)SBbatM8\@l2quU1X(H8"S@%Hr.I?l)dV,tcCs"7l
+O%!Y9WGI;V*h:9HZWXBLK0>aQBJ^X6[e.tb?uT5L(/$69^tc<AgG>=7<OZpegmsd%V:kNdLI5F0f7Up!
+L-6@pX0E>oFr#HZ"`JPa\a[9D^"7hJQtJ"<J1h!XFl7!@#(jZ6E%!h+GT26&+n(5Un2h>B`LdOboPQ_)
+'##1ABbZ\Y-]q"HnsL&cnA#d^`G]o"`Tk5Yc,XmFo@\daHSEPPFt#<:a"'=+-3q.6f(WdHh[K\BiM_BV
+[F&oYb"_Nb:-RG_=5/^<qf8e\DM?:(d_1)jQhM6lp!n#'Y+L_cU[cF-IQ4Egq[76fqeW"a9k54-Uj@Ep
+cB!]oZ094]5TS&=PFZYaD6(_DobcA4QPHS6+r';*2N9Tuc\;G![&=TlP/7BS+?6#W"qekjU+k:t2?ui?
+d_KQZIN('XL.4L;5iu2UU.leQq<U#L7Ko+b;@(?O/m$OEodZM1X&c:NQSkP;[']U8M+m%%H904IIQqZB
+Rmj@3Cq&-d2X?XFkB=Gn/siWPmdkh@hlo&p*Wl_#_W!9EX>VjJNQ'q`3=MItrKaNs+:n5]%LE;k6/`BB
+<%]$tLI:&5(mIcE'oP?7d?rF$1Am1shf#IrmI9mta^5Qm;q>(BH+]`08T_[Onp%fR%ek=\g?j&Eh/95+
+VM+5V3ZRdY1Qfc=D`:m[VTWDNenVOZbgq\8SCMA^/'UPsNkEnV=kWM7D69LKCKoR1(JW09Fd,*tO5%SF
+f^*dTNs2FBaAD#%MHm2*>DZZ;_[;q/Hl/V*kZNc`:^*ekf!Z:(<e?,eU"KTmXi2pS^nonu'YIL6VipCG
+oNmD]Z0;7bm_=n+?OQs/U/\l@4sdN1Er8]dRS;g`nQ__i4-U,L!sc^HB_Z!F?OS[F+Fa)pOe41FCZUd_
+I'X6bQ>sn9d6'U]L^2C7')QOAhei#Gn\h5P3>Ja<1=>m]?,'Z\lam5jrH0crMlVi^aK2eJhegltmBi"'
+[F#M.JbeZW4$6XMa9/i'??<9,/bP5@Wi7#E;o9p89N%u[M%ce[nhAc84dX$__O*a.8dH0Q@+&`T(e5MH
+Lr3%d$tV/]b^i.oLa7d4"dt8.,69>FD(5Z"AjEY0ll'$$!bp.%/5.?&2Cd&L`FcM^Y#fBRB#0G?=*_!i
+7e8&p")EA#+1BpP]&@_@?#DTJV7la)\)/giS-AorGer<WR!^e>$]Dr50j*4c5:)?4A9,4CZiU%%IR'Qf
+3%Q6a$A1\h0\BVk,7o^Liigu+@K.7*a!7kQr.79[Oi\lSBfr+g.[A1'ZKZbF0`@!TVQ]3rhDYUe59Fsg
+o_&GTI_O]XW[m?)q0Z*_%r-I6U@,"l*=d8qID"ES[i9JP`IY,AC=o!"HTPifi3g,_[5W0Xj%=^;*&hBD
+XIdO-L6tPP,8i<dAZ(4K"V@)nTbB4\plu,MUn\R0np+(_63*\l1t5u8WfTj);i-uYTegsr-?-#=mR;Ys
+cE\-F<e?*9fM_-B$=4+&;pBP:HETbUAalhi^D4I"'03/BD)n$m-A'q:h1.2P%-Rd`]**$G@1OFG1(3'"
+8pmoO:R5./o$0,,RKl@39_eI"Tc\-9HgSD4IQ1;Fa!.e`k#suT9@rL7M#DM&+0Oa+ooj^93nSXFji(qO
+<^*#<#Kpg4phM)1XV;GfPlNnX=N8rJr5@JrPhM##.k*eH?)7`T`&OSQH4_ArU!qtN0Pr9C$m`'6@#,@B
+%tVZ]^bC^)"d'"1.AY7($R(I[6t*;baAa"CM'3O06m-n3Kp"q;b-;-`:8#]Q@4783=F\o&Fis)t^KP@(
+N92>-fml"?)%#M"C\@K$\(kj;/$77gF1g>$[Kl^+s+%oBmP!n_)Y&Tr@PN,/DC6NbaCDM99V,H7R".CC
+YLjO%#6fcHiD=2u-6!>J6t-`fHr_O/MFHQ&R,h]S++M@B;E6"g9dc/tAQ$'L[TtPR9P.3`Ut0BAS5*S_
+kSt30r-cq!'K;j'ipq@Vkt^MR[[g*94DIYqV%)r\IF$hJQUQ#IAhBm@@mq!r.%i_X<%$&XJG:3`++q^8
+"jHl_<?QoDj="d<)H7hH2k/M82R5aV<s\<lq'I7o-,`KAfSuDn&jR@M0e6O)->fc9c37mLcE\-Ff#!c"
+jAPPSMOplr>M4BSH`uK#(W-5S,SirTZ9`So@/+,gjl9F[#]BEGNuncs)s*)QI'QAJQ<Aq4c8RqU#A;LZ
+rq^E)+)Rg;mCo*>30b#p.`M2I?,'[(2s\#;rHGT?Y6Kudfk@ZoSSU7>TlU$N/"]Q?)r\5oHSn[H(4$;@
+a?-t87b7Fs_UMU#=\9kfnLQY#+s6s:iTs6u2[@[K+ORj'(,;">7=lXITKWSn7f^CcfGI'rK#iR)"H#Pk
+"d$_hP&U=U?7-*g,X>e.Se4)OJuI.+@7GSN.Zjg1OMG+qUHduWRT1u.9r'6g#?,&Bn@fJP$`):cD>O0Z
+f5('F"cgQ5YhAB(g3'QerjQ,!2]FWsd;up*D\l'shY2<0?glVdILca=\6pu"S45.6MT4[2fc.W=fp0`l
+o+20)$3p]c_4^:R9I^heL;T_T#`MA''T0l(nVBj72Z8ZVT99KhL-6fB`oQUOlgd+fPs8;J!g,U0<@3`"
+KjhN^XtqmM-aWDIChl*MR`e&sfp$B%1(2DT!=A,.)F0\,a?q(5&nhNFc(O^6bUB&G##pB9ii*,&=JA1K
+P^%b6Q4UB$_D\uq9]&kWSBE'CX_]G1Y!juifW")J'g5X8a1D=TprVVdfiS6jnA-!X`ik+.h=/<'4rC(S
+b8ciDA<gLQ_\;.%DgaGPn"uNSo[lSrgM'14JNj!OWh5;_U\33PI_/_nf6]OSnnHD'e*$&5V)W)%*K4Xk
+V0MiW/71"%45IE:H*n70eli7(`&fq[L8Luh^<9E<Q`5QD\JR.uT*7d7E/=F%%NGi7F!3@e=X&M+,N*i$
+Fq#[U_1Z7$/;Q+$@ki5`JHTEg/!:&>Jij#q=!7XhUsOtBZ4oZp!pPoQ@:4j"QqJ]VUg`p7J&`e=kkp#n
+rK3OZWl1Tbm(aO%841t@_>=(lbiVhq]\7EaS^&R&)>sV'rdR/rFD97uP=VOr.?piL6D%/R<@Tk0Po>9?
+U![P=b5HY(?*;`E[;.p#d:Tc://C<iEj]quh(H0P^#JX0^#(KPli$tgK#-A[m^HE*AVrre%qhZZnG%;p
++:lNaq=Xf@6(h%F,QYF-BH%Bb:r-i+CbHfg`M>f`\>i.=(^]3N@9?'A/;4SqTP<W$%m_&LLr3V//9D=L
+c_8=@-pGF=#[*#3)dQ2cDlX#dAWWV8[1k]h,,^Un=S6#/?H_kSh1.2,0Lfu8&CS3NHn`UeL+*`*a!JH&
+-$RNd`;+$c+&)jTl)9,\2A&`ni`5^1:d5q7\)X#orH5=dY3&+EhTpY`Ra:/d?S)7n^KsW)j1V&^G-TqB
+Q0[PQZ?s'FcSiXOhU"_Q)$fm;puL%0R@/qqiqYK)<hdW+j7'l)E"a=P@H2oD0P)Vc94W"(9RmX#%`+r\
+\1iq$"qcU*Z67G^:T%.mA20/kPWK8>8]'J#lkibH",oXPJ\8&t5T#*oj)AErHjHWHA<?S231@LpmrutB
+qYtq?@#QDKMrB1;>UPIuXD@(kqL61$\LaUR/!tiO+0X<2&dJSn6/Sm@A2YG=LdY]L#P;%+(PKdO;5iPf
+4WBI&A.gm:Q:!$^`F%"QA@>bsQqV*j3Mb5C2k3WU;n:u_I6XB$BN.#<_G);?8=sgugZ@r#H+`!oR\O>n
+_Q5.98+ZQO_Hnf&`SuJP$sm3dMN!5HWL0+_2AF"5@b=ZfAd]mp@AOk633bl,f?#`T/NP+kWC3lM@%GNJ
+'g!2ja+EMWoNsiemoB/-m_Kf*(dj(r%".hZOWQ,p>NM#LI'X5WQ>sb5d6'U]L^2C;'`2bo?Z$#Tn]7e\
+3Yp&n>64TgA3XAdpZor$rctp7m<@U0VYkWo?Z*;.l-R%h\<\d;g6(7B9KJStQP0f&fNXi5MPCOS3`]=W
+aJn4heK/`GT?Mm3JRCBI-\[J3E1'g_&LNOSjH757N]..SL;:Gm/;Q+%j71e&;$:>9/.u=lU6uEF8fRni
+j=kk,Oq9JbJk(FV<=3=G,`VnJ1&*/E2NpK@'XWki-%F%u&t(iH=IGKca$Y#rXLe.6%136T)SUIpIQqJp
+$2k'b6_dJW'O!o)R8'SXl4SmF:6ehSeYtEPeRl?oY?'u^gBDJlri"N;(7S=,fkn3&mM?h-cKTJ`?1/T!
+eaE6]^0#=i3u/=1p3OE@\<NjA\m-fo7)BQjoM/C1#"pWO(b!*g"WE7a'<u@%KJJ7E7hEgrp`!>0"3^>0
+Kq+eK2H9g6'"h3.>)Q\PZ&?kS1O?80mrf9<m_g9_=QHs7,c^ZOQsVE)Hg.2II5K:]VSXYQgI]-7$2<J>
+<;^eh+0MI3p"795]:#kSMb3d9C-Nak2rhTEqfX`e:6lRPb.2gWQ*1t?J^i%<\Ceklb3\Q@<uMn^o$Y2s
+9i)s&W:QCm!+urb90qbBR%P9KP!Xk#&4E$N#SKW-dQ$#!7iOkUUg^JYLbk#\,@Ieoa:MAsM@-.f)&R#m
+-B>pHJ8o[m&2OuO-M"B7oNhlu9Yk7b\14.7L<sQgBUhaA-rX&Dp+8^s;bkk920,ZaP/pQ<*p^&9)"Lra
+fjCr'm@Md?[9IL6qd%4tEjS(!f6bL!om=D[Df=tH#6b%:iGKKJVC)t6_rG`=lt/EXJ\Pc:fmL^=rrRbf
++L#NA+qk<;_]c8JHpT%jM8^[DBY7e1)NDc^Z0;*SqYYf`Ulm_hU/*8&9-l@H>e4E!RD3*)Qd\EEJ";Zk
+j2$h]6;AVXMIZ-I=Fpl5&jceCGXU[s$6W#NA>.4(VEfp&khumq3$i>hKh_er\^Io(]@V[:Rf%@%@1_;^
+;H)\?<.)!pn!7t(o[#Z`RV1g4>nHmM,[YE\j71'aIQ:F>a%GUsr,j]#Nn-;^grtF-?Z+G)mF]R03gd++
+1@aYh=hG\GB3Rqaj("h</&UC)@W#R%N!go19gXOY,S$S[!M!24/dRET!7?%S(FtULADuH3QobP8`o,9)
+fGRHh&Ve*4TIbmTXB(-e+A"PA+=iTY'_#CsOprlP6,fQP4MXMo)9LhNBi$'t/VMI4+K?j<'MY,b.:_$"
+iaa;L8`VWm(k>U7P0F14H@6G,/@nlVa(j[IHT2caATsookl#rp@PKj,;D/fE`FEnDj@T@oON=5<8M$<+
+.$HllEli./=WNmLVGZTZdVgq3c)4E1A>XiAT[9WZ8hCsB8>O\5FNSG]T2;K9Wc^q9;K4e"egkgam+'Wo
+8m$nF63tY7+XN/c`1as`RQC\<83l2),TphMKTAR[Z8gPV;'1FkA8$g]S.miFin"OQ@d73Xh@%a6eV6VF
+4d`&^]-Ou`At%U.o:tQGI!ml6O1*1kp=r<Tg^4kXNE5psXIjBae+(r'IQH,B[p'aBl=.rhDg*\uki#^X
+)eu9T9g%HI,TBDK'00ZG@&Zi#,dCWCLF"3@j4"[>@!"#X9a*6@I$PU#&OM0`pdCK2#SKW-i],R.D7A8U
+_dHUYBlt;FLgqQ!1jgDoOMmq\Qn41Q"^=8\_9aU)4TuRV+HjhT&mZ_I!@AFU.*t`n*"&@Fd;U"X14rJZ
+n7n3_%Tssl.^XIaJ=@^jeDZ_IXB_l"(=!-%)2Q.<HG(B'fAlR;24@7;1PsoDHTIcp+7q$'&rT5SdO@#Q
+>r%68Im<2j)MLAU5HE*\'FNZ2]32>`C:)_9P07IDg+>4`?*`4&\(iSp/"P,SG.ZT_[;,ql\U;0LYW(7A
+\_QXB@KtjiJGa4,,n<4/@A"a+3!L()"5n08N"@e0!_7k+=W2,d.*plVZ8bV#:5[cJJWkdu4*<03DY<fW
+k/Jr8R7:i$0];b?*T'RJ"6m%HIC>;7[d%`'iDDeoC:DZS@et/K.*JVGmI97D4e-;3PC6p/D(8gC,l<F_
+PA@?uN7F?PJ>G(R;T5IN,b1&]&<LM/WRSR02&-6@!aoiM7LKq:+Yn$/,"`i-aQ%5R*,H&'A$Mh<YUkSd
+"V=."!*M^E,qG,]j>!#AMDPBu#=,"kll&P="Gro3d56A!NJYbEnMp;Y,9MpKjC.hjQpV^Ta[8tJ5]g?_
+%ufVU!J%=@2&HWHZO&2>CGH`c-3`ccqYYfk.Fd("8u#@a<N:1fX^V67Y1K`J$Or!6A?smip4rP@rE-MZ
+XnA0C]&dn=^TBGQc0G%N^>H-h$k<XMKYl]Ppl%ru(Q>`WY'CD07d6/Zjf5GM"(ec?/!Yf4;"6Ag(F'AS
+Ud:@rOuNZ1#Jf?@'Hh';K[1t&\iAId;4kdBFEjdFS/F1a,I[`uM!/-.h5h7T`K4h\ZHc6XH0ObH6,"8Y
+Vo*'mphhG9/`dZ-^o2W?<NgTR^$+<S]UOf1K5"<NC8dZ(jO8C5OD:sqN0StIHDEBud`&Tq+J+]X&C<nO
+_:ZIR23gRa&nlBq8.65h@8_pZ,#'*]8OJSe!0/uBOiG2X/053i)M/8?J8%,t,qG,]K[J^GPWTM<`o8^d
+TKFY:#R+\".;5qb1Drl!6^c%F1/gm^ZXnOCB0)TbVlL^5iEnKDWi3#14/S2>IQqOgg1<=?:oVq/[48R^
+Y?-5*/%+[@K#;'&fdsRI4egD2Ip4M5l[?Y1Ek0q3p<-Iqo6S+-0=U9H!s=.ki@qcX4sL_u`Sk[AWm3r9
+P/lYS3D@.j!;q;\?r*-,jWb'N%0cqI^ke.5"VHK>JiMC"8fWIUA,pmsO:a@7_T0P"Bc_4).*r$,Z9Vg;
+:C`gCJh(\K;/n53Y''iBfZ#n_R0SM"3<8S_+l5p]Hc`:QGdZ!r-H^bpf2+P4WV9=_4QU1P>RZ:L?%@cE
+/W\+5=ik]W1TJl7V!8YcO?8R9-F(tN_D*q``9&h"I(2`W(!*(hR04j3*e[+;Y_6[3!$dK>UiEUo$4DH:
+LkBZnoPQ0,OiBa3BS8br%[]one22G^+D]&hDRX-3m.YtD+0qkVY$3THbb`c[N7MW"SB`L'H0jgE.t>pE
+F@n,'O%?(pWH?:"3hK6Ie>dX`X]ho1XOaFpb3aMi@'J:bG"XEUP5_i7m;pH^!oIn*bj@>ZoX1H=+cqL(
+JKT''4UdImTP-_!(ebs&MSq3*I$>=''a!R)!-K2uJ-aWEd:0X'2I30#/7f,BTWB_&<^nFii7-XjS=E7t
+bE7[4Ej:_/7QMj8a@8-l#hJSb)VJMmRZ#ZG0kbuDWm7ZA$*@O#0IW&pFKtb2ME-cZ`f\Zq^bI\]70YMl
+KXsbc('pUcW=17R+,#KG^kjI[%j[/9`,W":fE\_bLEdB2,S14chG$J'6FQgS^cpXO\*NS]Ku;lS(q`m.
+'9C.D1"dPD:G%aR5Td2Mlj=%$K#/Z"W&-7:s+eN:0drPi.i+&_,;H.PE]Y>'a<WMi*0NrAPKG1,WEc`5
+/sjd/1F\hsrAK>H@<7:\l?bO`cR9Ik`7b)/6W+-K;3;!%,UX*'`,V^qN]%(SLEPT4r$#2d"H3JfWN`B@
+4;WY6@p#9MFr.(g,DB#HL9jL9f4hP&"[ZL)WXPu*ENPV52m\f_9M+3-Yrf5@a(>[SjLeA0TF3U0R95\-
+-rEEdZ2gJV4-@m%dJ<"K3&m7Z-DI`?aAEP9a^O2N*&:P<Ko0CPR6Z-3-4[lqTu]'N2?]3K5dD6b5T1%7
+75P^T%F7Il^E9h/9d5isVGl`%)KeZG;l`o6'h["_[ook8kn!Y+Nlbk==mZuo<Nb"l[p/8:)jS_5Fh:rJ
+(RrtCq0g"bn/*,\%gds->$opO"a:iBa&fP]*)$,-M7HNQO9VIVYZNE3KAiP$oL;OqJr&Gp5pUCY-4[lr
+&bnbu71'jQ@<4.k3,gF):IZKg#h1IqS;-8qd02@W,H+H"jYAZgX%='SV57?h\O%pK&gbL@34>DH'p@c)
+MFdS<73)ZT1N<QmB-!NO,=?He?t_"s$tU"gI$c!-&]7%X+C(j2$H>D/d!7<e$AO0=_iXYH4;\BXJgd]n
+c/eJF^E9uPL-HoIalTg2L]d>FrII6WE*,LL'aBCZ@Bd7`7NiG#`F;\XUg>nrN^b8@\GUM9,EYQ.13k.>
+9duB#jjL,][UUtY9kKT7SE=ZLS5/7rg'$u#5G?G;P^526M_KRnT5&\&k]/TsM8TPEpl(k0#*O`AP$mVq
+>6pKb5siC%/6sNU9P!Y_Uo5Ir(.AHpn@8+$)B[3KUa`g$M)c,ELJfT]mRP5/&Z9Y9.-a8hS4JGlF9$oB
+2%Pa[@G0;Q2`MUC7`*6Vc;PDoas&V:0Kr\d#0R-G_,Q(%.?FSl&b%?G57*GW+s?r.0Gk1OO!fRtU2p3]
+5A,&jjSFKoU!Mr0.Q%j"8u0ob'^AsfRo$*6WjNbY;R'9(f.2"/eUkDAYLoqb90J<aB!keoG3a"^flFRW
+mPdePg@KI#hCk4rmK3E?^L8fQkEF$MRDk3,6\-YA3(b8!8q[bD63'.P'F2G%R04^7+bbh"E633d*&&$n
+k!Flcc;PCG91%*aG[bbKN=NrOZ/E\_4W-aFZ-hXR3Kt!`Z=B;QBQ,S_UOrY?=B9$n(lAA=q(Op8,R-mE
+:n_-K&1`kE71p/^F>=F3!auZPKKt3q3NS:nj7^`2ZeB8^]61.4D7J?g='MNXkBX[GY8=hDpAoZX?gr:[
+-6E\R_W()&bZ6YGO3(n;R2iA*/HC77+0[.=%LWPp_P#8s9K![sLr:KVpoI(>'T9u+1!%:Z2]n($,]Y=b
+L/0(Z8Yn2a>e3ohQHWq3.BLs9*d>6Q$-DE[P"6,hK4E<-Pb^YZ('pUC\I9T]+Ts6&6I?c,>pT^a"OR73
+Ua7f2`<N'HXOpYl)bWO#EGT*&/e"m-.r`MZ0/]%!VNRmT`$R4&`$Q+1FM:BUQUr>ui?U0Y,7-oYd6Npa
+)h8%,^uB_V;$V<Wh@J5up)+?p_r=N1Ud?XHMoB0<\C>[X+-&l:dMX<j9d5fnAMSO1[TP8Kb[o6PK[+El
+S4tA0H/.P-5G(bbZoS@'Kghe7ku;D/-C[Z+<,*./I9*1FMS<F.Q;r%pFup2S6\,f!3]@n48jm)r@$2ih
+&jrMd=CUJ2/Wp3Ii`LTD9b3W5iZfmC7V4*+E<9'!9MLK[@a(Y\&X]:71;F4u!sq(\>:#/aUlg2gAg\,p
+K4.$<9W8e&7N>:'j6cX?O%8*5)'"6$,*PSDnu5<g;(e-Wjg,8`b%i`$bpO0=bjosASPU]@)>so#7&/,n
+1hp#7QVOF-.?uB2:8:dheZ1Q2h.!ouY1P8u.eStBA[0pj2.r,pk/Fg)/g\BnCdK6TMT#W_J?VX;+Uh+8
+!PtkG3&;;hL2sfFdT@A*M^(??cO_id']9'\!CUC-.L_-o!KaZd,8?!Q@F3qKSkg^UisRiqRQ14n^E9`f
+$hd(:O\+VsM);)4/!il*'%r5XAMooNk&Zrtl>\nX:M:Ea'`NkRU/C.(ROp.S9Vk[&'`+(UWDT\FlID?B
+DQd?J=0%V`'o'h<ZWQSf>=G^F4c_fJY1I_ikc26+Y6e_?8SX>'UlPVR!N9sX09"-:@<m6l.kD<$`?Gk<
+W'L`R#]Kg#iWcK9[,CAmA$u%,ID9-MfR-.3&rOXPnMn`r2&M=nUTt0dME`>IaX$Fk9U8a.Q:e![$%0m$
+1mlO"F(rkXG;l,=Vpicd$A1a>;5eS_/L$NRVUB2Nb(VmO<2nEJ<JmnjY?I)HlfB=9/FmU*.FEh`iWtd*
+3=nsJ0u96W0JAX/KlU;:FuC(m7076$?FsIZf'rH.7N3#"`T+4+$uSQWP02lAq)AKLqYYn1+E1FN*Yem6
+6=I+.F@IDeLW*_"BV\rl)3.02dCB*t5pML`A28EUU.m)&9'+L#KXNGTRLr(X`mVAGcqt,akV4Oa`Z-Xp
+Ju%A`/9Wi_&?3r9KYD"rWE!OfC8G7E=ftdUe[k^&_.0`QCc6VdU<RD\>4'nAKsp#[\Qs*>H_'<dHG!SE
+ml-`_b[2d-Q"!cdA3-5C##7U;O]6oA,7Qo50k:8BI"B%>O4Z!)%1%[)Ts0o31*I-``?K;8P[Z-\MoMNs
+aS]pC*g&u=EbR)!8LfqHjYFr*\mm=[bU/N&XQ".ZRnkCfg"cFV5bZNfZmmpGO%Q4s.2;&Q5+>BJ_4)0L
+JY8n$<sTXW@/=!h)E&;H71o#KL,/pm#!p^(SBUnZ_5^RONT-p_]ABa#bPgl3I_fDGG\euW$&ZX[nMnaA
+4!Ta,j>*'F2IZZ=3gJLCnDas/+\J9B7\Yu8S3."<#%2I2j>J4p#Tf$cU\4E\O@Z0&3Ad%!,aCs_Eg^IP
+>qqYhjqC=Neo<X>9rF2Cm-]9fTMXhD=qqs48#9*tP_sT9T1u7`l;_#I?E%&-<bmu3okM<KYh/5B>:#l]
+BsV!F(;!b=i2&pZh$Xe3&M>8#SO5l`Qq3l6M2]7rEPP*r'a_CTQKrEPfoa<cZ5Gd5="s](^L*'N,Rt1f
+K>O;.a@nK.%Z&%IE;6M,/JO,_UG9j.H8cq+a<YdT/;?qGPY%],a]uDW0UBpoo-pchD_mp.Vc/H-qKkK!
+:nO\>3Y@7F/@lT?VE/6US32PNj^=KEHk%A16"Fu6,X`^_Y,l^_r=7"aZeDM3b>#FsDReISG5JDam<#ts
+Y;aYDqY,KRi%TC,/dDo?`'p:/GJYd=IW;J[cBXKBS=b<<'SkW*fX;JE&:rnNW%Jnk(Q(Rn8>GkQrJO,h
+nX/BT4W9DPA23loQ:WHdb%/r"7'9fIQqJc(q4,H=2k*QSZan$FFZlBnkYpam#)bjD;J?iV4Z8R#VGlb[
+)Pod&;leGa'tVq=ZX9k;/(PWVDTmDdQ6-Ln$`.M`C+0:cj=ki\@ga(Yi;u!o(do6ma5\l4A?Jp\5$q>`
+*]Cuu`aggW*2ZL`P0?05YK,u:#m5dr+Rl<d1(t+N_kJjkS3AG9Ma\i[W6B9:*f\5#Z3_M.9-KM@,naoc
+Z<&ZD9I7"_I*-4]S':%OC"2-d5+F,O.b(GGm^rt?(;cBcUeJ<hL_6N"_2t#q-4[kf6's'\2[>((iE#o?
+Ilt'jXY\^;U=j:igb&7NFjf;m\_XGJMr!7eHG<f?pacmg!J\GLn@4E^an5CW+OEX!$I"V,?AIGKouNuF
+XV3E%iZuY$2JjoHMBh&!(hsG9!JR7ei]]@#IQq>j#lKEK,EkZp&m7o"<@sM0j`;;]b$d)q9kP,2eD>C0
+SknP!)=7ob7%mIl'REatR7X:(l.$]+:7kOc<N;=1eRl?oY?'u^gBEVVA['kSQA[VtSC+eeN[9Itpd4^^
+$/R2+;jCf>Ag]u]6h#'_>RD5PJFY\P(.9$ka<OO7'S\o"4Pl/)lgaiRJjA7uLcd-r%"uN,E9N6I-P)*Q
+U<uNEC,6ig8#()!m"._OP/q2)8OT"G/="DT;[I9[?S\(p-M'7Ag3#BGc_n,VjU-K)T[>1[C/#J18>]:a
+ZBT)]'ZX,gT'O28h0pl"Y6@[TR%^CP'!%,1j:RJ)?R1:2,Cj26AdTcB5p?m0@:+D\;t'AF%Jp<Z_;VW.
+N$^%cMo=X1q!=#"-]lJ]ZFPbnnbW385p1,K6lm'IL-f=Q\9(1`'8OP9;.ub32&VED,LO%!FuJ$:-rVNq
+_Yd+W'0Xt,\#T($lrsg$$@stg*$@]i!sVY:7%-1AOTo4!(sEIS)2Ce:U-mJpooR^7'mUO+X]hf,lda_n
+ElDCjfPHk#25\Q4Zs,+_gP*B'DRs(j[l_"[nU%n*Dcc8drrmtj?ng4q4A#8CIA)b$#(j(jpKe&2$isl>
+m_9LM=/*0Ei)8B3$(&ag$<6.+2AF"s63oQ22?f3I@(=Q':*L,n,d5h[p.m-%8u8i8I'-s3R7nrKBrp<.
+3h+FX1WfRkK0>pT.$Q25,*,?k;^jQW>rn`WWRL.?.^`0X>--=+($aV(]3qnrXL9'2P0mmKgF[U7<PmL1
+\(miqX1DRF?@4C.:PJkHr[YfN7;he>V802H0iJ-!l0($H/;4H75^=CN2[0iu@(7=%N]7<*7mfb)4o5)*
+`+!^7Ug>VjMT4ZgaOGB!+-B'hOr5g29du<!jRUu'\lg\S9P0Ip[*ESIS5/6Gg!'G@5bCkdPWCZ/O[Z(n
+ku?AJ5*o-E<2pZo[8sP3X]=\0Rc?TIW)'/EbOKB,Hm3ql"a7LpZ0]1>]N7Ft.`>*+:5IE@!9*F_(+taO
+"HgJRN&?5R8>AF)"DSo,'Zod@;m*Y2I_Qu/-mT91#_U!ed)\m=(Cl8>,&m=Y8hCa8`hP90`-O?aNlWJd
+.4g3L,a:ls1<Ee4<A9`_Ab.@PdVgq3c)4Ksh"l@_Sku?W3Xl^_7\nFGFGaVfVbg6g;3$pWjm]nm^)-po
+fWMnoHS:(k2;kIZZ4o-[6:H2?4G>QpN'sn$0QmmM%7+MjSau`*!fmOOdc##DlGV.kFKB%8+-+G&Ed8(j
+9.QB[5@9K('G:WSKL+QnBOiG/$\q,Z&NG/=,o2A,j&)3)@QbZka(,fC'UD*6P"I"JR:NI+.[Wk@1AR0c
+BfDI*B%*`t(&%KPXXHg7.RDk%)SR#=f>@Si9rHI?'aM>J<qK^USP)gI=\L,G,=DgtBOK1`#a>S0dP0/d
+6lCUD[juU.$pY^9$Y=@*.fDHE:N07V-3jp2_d[U&]KS7hNlGT"=WF;+/X+An+-5%?$4-fd_BA?H1bo^R
+Ku9W>#b4(/&rT1&nYjZP0cl=pj0At2MG#+VaX%R69X7_PPtW;rQc%p[2G^3uCBVJ1lF[co(SUT@!*;R`
+;/#TG])5V&?OGY*_,I=J-u>mdbLDo5/9D=?b/#j<#TcJT!m$!U9rs:2"l"T=;4nn`2$jqP_fQ4cqVT'3
+Ab+Ud'*j9.@PG<^4t@S2a5ZYLm$:!dQHJ>4&(g.<"U'Cm@1[Z_)Arj9_VrlZKMEU(M++/$Ggp=c(lq/H
+n_"&*74"&;jH>?VVHGF98u<6SN4rj\RRA5nQd]u"b@RuFM^;Q;:6nnUbRS3orU.<,^),d1_Z3b:WmrTL
+B=e"Ap0S0`X3k.jF=MA``=8(tR=LM5Vb]Ub_/q/4,QnF+Y\=qh$R-"qGK^Nj"@F%.#ie`HoO8[U$Np]U
+OeGaQ;REbA#;cb^qgLb;d!+h'(C5c4U!Ul.8g>%+7A=dHXC=+,NlGT!aTQoW,a$3E;Mcs%:F_[R-1\U*
+\n*R`c).h(V!;k[SBiSSl4!BA5b_)R[#.!rND-.sBlrV:`T$G_-';qAH$tFA/[lK@\$GX"pKe&2$fMKP
+J1J%^=9=st`o1rbYJiG/9@\>;Gcl`1[BQ4=XqNYA@Q!.95+k&ncfQ@LOI-S-O+F*O!8&&T)8P1+@Akdj
+$A?:;_a$U4%RCs7#GVjOi*[K>$,_On_9MQGI(s$LfefF!.@*Tfd]%o.@kX6EAs7M1k&!/L:?U*["S.72
+U!RJ;H8R%-9;GK8<8*$iV,"$iC:-+1B!GR@f5"COjaP0WZ</[/4$AnWCUIA`2Z%&_5+bTS'BQ.'gar2)
+hUbi:i+;Dj%cHid9K"71Mo4R]bFn13BH2"B"&1WM!&DA^"dQ#?U/^+a4r8e4@V@<o5m7lji.<r>0,]^<
+UTqo8e.+tf!JnWY.26@t-4U$mE=chk14Ht[ZUqOTD`XE7-PPb"rd-o(d&=;i4VElHUsgc7l;RA@;Q81r
+[;*BaZWaK_/%+[@K#;'&fdsRI4egD?[G*:Al[?Y1Ek1!Y[qi\:Wlr)^0<G'J7g"?Wi>U?\`Z_mMDrVhi
+k3bLQ@5&jc"f6fS!*rSMbE+LEXXO='5iAlV,U*a*Ld@:T,3#"3>>ZUQ.?kuQ*df=XNWb!>R"/p(%ZCQ7
+Ti@1-+qDPdJV\P].h.F@+fXQ!HU"3#BTri\rc/ndL-hctBsl&[ER`b9<o%&b=_cOA<S!.XT4)>6flgRU
+.a_t<>4%X1FhZgSA6e#Q\)[2NG^eMQQ^d[9s*_[jn5l7e*ta@K@e#i@G!@.4a^jt1>dduo!!#9WE(DMu
+%g[j*TlA(h3Zeoh`1h6BXBI7oN5hW4aR"4;+HX[?E_.gN:FMILSC5IDnbXr+9BJ$%SD%O6Ra,O:()6Up
+5bQK&F@n,'O%?(pWH?:"3hK6Ie>dX`X]ho1XOaFpb3aMi@'J:bG"N,PcGd/r/So3>'nL>6gob_qMYcd_
+?sVC9S'CC$GeW+?GX_k&LP<9InFm[[3VN;tcE_N8XR@g,J3RDEa:o6l"b]2#:hXAd)[hEh@M(SI<[AN=
+7H774jC17kO2kcD3>@cH-^%(Id[=XK>q247Ahs1HenI(2c=YP)`9r%:TMHt7qAfcs8#&sq[(8[]Pte2U
+l;[&F7]TIg<biG]]lpeiY#jsj)^U*\A$aj*(;!STdr2["/_:r<cL#Yb?#MZKeb8fg^#3h]/-ZUoKu@CS
+=F=F&)3;gKEOe2d;^I^Q5Td2Mlj=%$K#/Z"W&-7C%>D]o0aO:5.h[b/,4VVUE\SVpa5aH3*/[B4PK>*`
+BhYg6/sT*VZPe/5CG_O)k;-i%icdSXcmP&,r=4HJUX?%t>$W>?8uC)eodY)^UK+;DX#5dj?FsCE="Etp
+%?eP>Z.\KPMd<@;Bt)hL(@-t.kB=CB0"7=`lMGtDhXEJj('=er_W!8:X?J9NN5sta38C)m.?_j9+:lNY
+p&tSM_-mn"<#QV\L;Mos(kbX+'o>5L+9~>
+grestore
+grestore
+gsave
+0 0 0 setrgbcolor
+219 3225 1893 1 rectfill
+610 1425 moveto
+/Times-Bold-iso1252  findfont 83 -83 matrix scale makefont setfont
+<4F7267616E69736174696F6E206465206C6120706C6174652D666F726D6520>
+show
+1063 1521 moveto
+<50404C20>
+show
+981 1618 moveto
+<4345412D454446>
+show
+showpage
+grestore grestore
+%%PageTrailer
+
+%%Page: 1 1
+%%PageBoundingBox: 18 18 594 774
+%%BeginSetup
+%
+%%BeginFeature: *PageSize Letter
+<</PageSize [612 792] /ImagingBBox null>> setpagedevice
+%%EndFeature
+%%EndSetup
+%%BeginPageSetup
+%
+gsave
+[0.24 0 0 -0.24 18 774] concat
+gsave
+%%EndPageSetup
+/Times-BoldItalic-iso1252 /Times-BoldItalic ISO1252Encoding psp_definefont
+/Helvetica-BoldOblique-iso1252 /Helvetica-BoldOblique ISO1252Encoding psp_definefont
+/Helvetica-iso1252 /Helvetica ISO1252Encoding psp_definefont
+/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
+220 273 moveto
+0 0 0 setrgbcolor
+/Times-BoldItalic-iso1252  findfont 58 -58 matrix scale makefont setfont
+<486973746F7269717565>
+show
+334 431 moveto
+/Helvetica-BoldOblique-iso1252  findfont 42 -42 matrix scale makefont setfont
+<44617465>
+show
+583 431 moveto
+<56657273696F6E>
+show
+1207 431 moveto
+<4465736372697074696F6E>
+show
+1953 431 moveto
+<417574686F72>
+show
+242 486 moveto
+/Helvetica-iso1252  findfont 42 -42 matrix scale makefont setfont
+<32352066E976726965722032303033>
+show
+633 481 moveto
+<302E31>
+show
+804 485 moveto
+/Helvetica-iso1252  findfont 46 -46 matrix scale makefont setfont
+<4F7267616E69736174696F6E2064657320736F7572636573>
+show
+1964 481 moveto
+/Helvetica-iso1252  findfont 42 -42 matrix scale makefont setfont
+<4A2E20526F79>
+show
+254 539 moveto
+<3133206D6172732032303033>
+show
+633 534 moveto
+<302E32>
+show
+804 538 moveto
+/Helvetica-iso1252  findfont 46 -46 matrix scale makefont setfont
+<4F7267616E69736174696F6E206465206C27656E7669726F6E6E656D656E742064652064E97665
+6C6F7070656D656E74>
+show
+1964 534 moveto
+/Helvetica-iso1252  findfont 42 -42 matrix scale makefont setfont
+<4A2E20526F79>
+show
+254 592 moveto
+<3237206D6172732032303033>
+show
+633 587 moveto
+<302E33>
+show
+804 591 moveto
+/Helvetica-iso1252  findfont 46 -46 matrix scale makefont setfont
+<4F7267616E69736174696F6E206465206C27656E7669726F6E6E656D656E742064652064E97665
+6C6F7070656D656E74>
+show
+1964 587 moveto
+/Helvetica-iso1252  findfont 42 -42 matrix scale makefont setfont
+<4A2E20526F79>
+show
+262 645 moveto
+<313620617672696C2032303033>
+show
+633 640 moveto
+<302E34>
+show
+804 644 moveto
+/Helvetica-iso1252  findfont 46 -46 matrix scale makefont setfont
+<4F7267616E69736174696F6E206465206C27656E7669726F6E6E656D656E742064652064E97665
+6C6F7070656D656E74>
+show
+1964 640 moveto
+/Helvetica-iso1252  findfont 42 -42 matrix scale makefont setfont
+<4A2E20526F79>
+show
+1188 2982 moveto
+/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
+<32>
+show
+221 441 1956 1 rectfill
+543 392 1 263 rectfill
+781 392 1 263 rectfill
+1869 392 1 263 rectfill
+221 494 1956 1 rectfill
+221 547 1956 1 rectfill
+221 600 1956 1 rectfill
+221 2845 1959 1 rectfill
+221 2933 1959 1 rectfill
+221 392 1 263 rectfill
+221 392 1956 1 rectfill
+2176 392 1 263 rectfill
+221 654 1956 1 rectfill
+showpage
+grestore grestore
+%%PageTrailer
+
+%%Page: 2 2
+%%PageBoundingBox: 18 18 594 774
+%%BeginSetup
+%
+%%EndSetup
+%%BeginPageSetup
+%
+gsave
+[0.24 0 0 -0.24 18 774] concat
+gsave
+%%EndPageSetup
+%!PS-AdobeFont-1.0-2.0
+%%Creator: SunTypeTools-TT 1.0 gelf
+%%Title: OpenSymbolHSet1
+%%CreationDate:  
+%%Pages: 0
+%%EndComments
+%%BeginResource: font OpenSymbolHSet1
+% Original font name: OpenSymbol
+30 dict begin
+/PaintType 0 def
+/FontType 3 def
+/StrokeWidth 0 def
+/FontName /OpenSymbolHSet1 def
+/XUID [103 0 0 16#8D049593 1 16#37A9EF96 16#52678846] def
+/FontMatrix [.001 0 0 .001 0 0] def
+/FontBBox [-179 -313 1083 917] def
+/Encoding 256 array def
+    0 1 255 {Encoding exch /.notdef put} for
+    Encoding 149 /glyph0 put
+/CharProcs 2 dict def
+  CharProcs begin
+    /.notdef {} def
+    /glyph0 {
+       356 0 36 223 297 483 setcachedevice
+       169 223 moveto
+       134 223 103 236 76 261 curveto
+       50 286 36 317 36 353 curveto
+       36 389 49 420 76 445 curveto
+       102 470 133 483 169 483 curveto
+       204 483 235 471 260 445 curveto
+       285 420 297 389 297 353 curveto
+       297 318 285 287 260 261 curveto
+       236 236 206 223 169 223 curveto
+       closepath
+       fill
+    } bind def
+  end
+/BuildGlyph {
+  exch /CharProcs get exch
+  2 copy known not
+    {pop /.notdef} if
+  get exec
+} bind def
+/BuildChar {
+  1 index /Encoding get exch get
+  1 index /BuildGlyph get exec
+} bind def
+currentdict end
+/OpenSymbolHSet1 exch definefont pop
+%%EndResource
+/Helvetica-BoldOblique-iso1252 /Helvetica-BoldOblique ISO1252Encoding psp_definefont
+/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
+/Times-Italic-iso1252 /Times-Italic ISO1252Encoding psp_definefont
+220 318 moveto
+0 0 0 setrgbcolor
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<95>
+show
+279 318 moveto
+/Helvetica-BoldOblique-iso1252  findfont 50 -50 matrix scale makefont setfont
+<496E74726F64756374696F6E20>
+show
+279 428 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<4C276F626A656374696620646520636520646F63756D656E74206573742064652064E966696E69
+72206C276F7267616E69736174696F6E206574206C612067657374696F6E20646520636F6E666967
+75726174696F6E206465206C6120706C6174652D666F726D652050414C204345412D>
+show
+279 475 moveto
+<4544462E>
+show
+381 475 moveto
+<43656C6C652D6369>
+show
+526 475 moveto
+<7365>
+show
+574 475 moveto
+<62617365>
+show
+661 475 moveto
+<657373656E7469656C6C656D656E74>
+show
+931 475 moveto
+<737572>
+show
+995 475 moveto
+<6365>
+show
+1045 475 moveto
+<717569>
+show
+1111 475 moveto
+<61>
+show
+1142 475 moveto
+<E974E9>
+show
+1204 475 moveto
+<64E966696E69>
+show
+1314 475 moveto
+<706F7572>
+show
+1404 475 moveto
+<6C61>
+show
+1446 475 moveto
+<706C6174652D666F726D65>
+show
+1654 475 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<53616C6F6D65>
+show
+1789 475 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<5B315D2C>
+show
+1861 475 moveto
+<6D616973>
+show
+1953 475 moveto
+<646F6974>
+show
+2031 475 moveto
+<732761646170746572>
+show
+279 522 moveto
+<617578206E6F7576656C6C65732065786967656E636573206170706F7274E9657320706172206C
+652066757475722064E976656C6F7070656D656E74206465206C6120706C6174652D666F726D6520>
+show
+1630 522 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<53616C6F6D6532>
+show
+1774 522 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2E20>
+show
+279 616 moveto
+<456E>
+show
+348 616 moveto
+<65666665742C>
+show
+458 616 moveto
+<7369>
+show
+508 616 moveto
+<6C276F7267616E69736174696F6E>
+show
+759 616 moveto
+<6465>
+show
+821 616 moveto
+<6C61>
+show
+873 616 moveto
+<706C6174652D666F726D65>
+show
+1092 616 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<53616C6F6D65>
+show
+1237 616 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6175746F726973616974>
+show
+1416 616 moveto
+<6C61>
+show
+1469 616 moveto
+<706F73736962696C6974E9>
+show
+1664 616 moveto
+<6465>
+show
+1726 616 moveto
+<67E9726572>
+show
+1835 616 moveto
+<6465>
+show
+1897 616 moveto
+<6D616E69E87265>
+show
+2055 616 moveto
+<676C6F62616C65>
+show
+279 663 moveto
+<6C27656E73656D626C65>
+show
+479 663 moveto
+<646573>
+show
+556 663 moveto
+<736F75726365732C>
+show
+715 663 moveto
+<696C>
+show
+760 663 moveto
+<6E27656E>
+show
+850 663 moveto
+<73657261>
+show
+940 663 moveto
+<706173>
+show
+1017 663 moveto
+<6465>
+show
+1080 663 moveto
+<6DEA6D65>
+show
+1204 663 moveto
+<64616E73>
+show
+1303 663 moveto
+<6C65>
+show
+1355 663 moveto
+<6361647265>
+show
+1469 663 moveto
+<6465>
+show
+1530 663 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<53616C6F6D6532>
+show
+1696 663 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<64616E73>
+show
+1794 663 moveto
+<6C657175656C>
+show
+1920 663 moveto
+<3231>
+show
+1983 663 moveto
+<7061727469636970616E7473>
+show
+279 710 moveto
+<636F6C6C61626F7265726F6E74>
+show
+521 710 moveto
+<E0>
+show
+558 710 moveto
+<736F6E>
+show
+635 710 moveto
+<64E976656C6F7070656D656E742E>
+show
+921 710 moveto
+<496C>
+show
+965 710 moveto
+<657374>
+show
+1030 710 moveto
+<636C616972>
+show
+1123 710 moveto
+<717565>
+show
+1201 710 moveto
+<63686163756E>
+show
+1339 710 moveto
+<6465>
+show
+1397 710 moveto
+<636573>
+show
+1469 710 moveto
+<636F6C6C61626F72617465757273>
+show
+1725 710 moveto
+<7061727469636970657261>
+show
+1923 710 moveto
+<756E697175656D656E74>
+show
+2140 710 moveto
+<6175>
+show
+279 757 moveto
+<64E976656C6F7070656D656E74>
+show
+552 757 moveto
+<6427756E65>
+show
+656 757 moveto
+<706172746965>
+show
+768 757 moveto
+<726573747265696E7465>
+show
+941 757 moveto
+<6475>
+show
+999 757 moveto
+<70726F6A6574>
+show
+1113 757 moveto
+<656E>
+show
+1169 757 moveto
+<666F6E6374696F6E>
+show
+1325 757 moveto
+<6465>
+show
+1381 757 moveto
+<736573>
+show
+1448 757 moveto
+<636F6D70E974656E636573>
+show
+1681 757 moveto
+<6574>
+show
+1728 757 moveto
+<6465>
+show
+1783 757 moveto
+<736573>
+show
+1851 757 moveto
+<70F46C6573>
+show
+1956 757 moveto
+<6427696E74E972EA742E>
+show
+2118 757 moveto
+<4C6573>
+show
+279 804 moveto
+<617574726573206D6F64756C6573207365726F6E7420767520756E697175656D656E7420636F6D
+6D6520646573207072E92D72657175697320E0206C6575722064E976656C6F7070656D656E742E20>
+show
+279 899 moveto
+<4365747465>
+show
+379 899 moveto
+<616E616C797365>
+show
+516 899 moveto
+<6E6F7573>
+show
+607 899 moveto
+<61>
+show
+637 899 moveto
+<646F6E63>
+show
+730 899 moveto
+<636F6E64756974>
+show
+868 899 moveto
+<E0>
+show
+899 899 moveto
+<766F756C6F6972>
+show
+1031 899 moveto
+<6F7267616E69736572>
+show
+1200 899 moveto
+<6C6573>
+show
+1258 899 moveto
+<736F7572636573>
+show
+1395 899 moveto
+<6465>
+show
+1446 899 moveto
+<6C61>
+show
+1488 899 moveto
+<706C6174652D666F726D65>
+show
+1696 899 moveto
+<50414C>
+show
+1786 899 moveto
+<736F7573>
+show
+1873 899 moveto
+<666F726D65>
+show
+1984 899 moveto
+<6465>
+show
+2036 899 moveto
+<6D6F64756C6573>
+show
+279 946 moveto
+<67E972E973>
+show
+381 946 moveto
+<73E9706172E96D656E742E>
+show
+596 946 moveto
+<4C61>
+show
+654 946 moveto
+<67657374696F6E>
+show
+789 946 moveto
+<6465>
+show
+842 946 moveto
+<636F6E66696775726174696F6E>
+show
+1081 946 moveto
+<73657261>
+show
+1163 946 moveto
+<6661697465>
+show
+1250 946 moveto
+<706172>
+show
+1318 946 moveto
+<435653>
+show
+1412 946 moveto
+<636F6D6D65>
+show
+1549 946 moveto
+<7072E963E964656D6D656E742C>
+show
+1820 946 moveto
+<6D616973>
+show
+1913 946 moveto
+<6E6F7573>
+show
+2006 946 moveto
+<70726F706F736F6E73>
+show
+279 993 moveto
+<6465>
+show
+330 993 moveto
+<64E966696E6972>
+show
+453 993 moveto
+<756E65>
+show
+524 993 moveto
+<62617365>
+show
+610 993 moveto
+<435653>
+show
+703 993 moveto
+<706172>
+show
+768 993 moveto
+<6D6F64756C65>
+show
+905 993 moveto
+<3A>
+show
+927 993 moveto
+<756E65>
+show
+1000 993 moveto
+<706F7572>
+show
+1088 993 moveto
+<6C65>
+show
+1129 993 moveto
+<6E6F796175>
+show
+1243 993 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<53616C6F6D65>
+show
+1366 993 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2C>
+show
+1387 993 moveto
+<49415050>
+show
+1489 993 moveto
+<6574>
+show
+1530 993 moveto
+<6C27E9747564652C>
+show
+1662 993 moveto
+<6574>
+show
+1704 993 moveto
+<656E7375697465>
+show
+1833 993 moveto
+<756E65>
+show
+1906 993 moveto
+<706F7572>
+show
+1994 993 moveto
+<63686163756E>
+show
+2123 993 moveto
+<646573>
+show
+279 1040 moveto
+<617574726573206D6F64756C65732064652062617365203A204D45442C20534D4553482C204745
+4F4D2C20564953552C2053555045525620657420444154412E20>
+show
+1188 2982 moveto
+/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
+<33>
+show
+221 2845 1959 1 rectfill
+221 2933 1959 1 rectfill
+showpage
+grestore grestore
+%%PageTrailer
+
+%%Page: 3 3
+%%PageBoundingBox: 18 18 594 774
+%%BeginSetup
+%
+%%EndSetup
+%%BeginPageSetup
+%
+gsave
+[0.24 0 0 -0.24 18 774] concat
+gsave
+%%EndPageSetup
+%!PS-AdobeFont-1.0-2.0
+%%Creator: SunTypeTools-TT 1.0 gelf
+%%Title: OpenSymbolHSet1
+%%CreationDate:  
+%%Pages: 0
+%%EndComments
+%%BeginResource: font OpenSymbolHSet1
+% Original font name: OpenSymbol
+30 dict begin
+/PaintType 0 def
+/FontType 3 def
+/StrokeWidth 0 def
+/FontName /OpenSymbolHSet1 def
+/XUID [103 0 0 16#8D049593 2 16#BDD032F3 16#E6A758A8] def
+/FontMatrix [.001 0 0 .001 0 0] def
+/FontBBox [-179 -313 1083 917] def
+/Encoding 256 array def
+    0 1 255 {Encoding exch /.notdef put} for
+    Encoding 150 /glyph0 put
+    Encoding 149 /glyph1 put
+/CharProcs 3 dict def
+  CharProcs begin
+    /.notdef {} def
+    /glyph0 {
+       556 0 -2 224 554 296 setcachedevice
+       -2 224 moveto
+       554 224 lineto
+       554 296 lineto
+       -2 296 lineto
+       -2 224 lineto
+       closepath
+       fill
+    } bind def
+    /glyph1 {
+       356 0 36 223 297 483 setcachedevice
+       169 223 moveto
+       134 223 103 236 76 261 curveto
+       50 286 36 317 36 353 curveto
+       36 389 49 420 76 445 curveto
+       102 470 133 483 169 483 curveto
+       204 483 235 471 260 445 curveto
+       285 420 297 389 297 353 curveto
+       297 318 285 287 260 261 curveto
+       236 236 206 223 169 223 curveto
+       closepath
+       fill
+    } bind def
+  end
+/BuildGlyph {
+  exch /CharProcs get exch
+  2 copy known not
+    {pop /.notdef} if
+  get exec
+} bind def
+/BuildChar {
+  1 index /Encoding get exch get
+  1 index /BuildGlyph get exec
+} bind def
+currentdict end
+/OpenSymbolHSet1 exch definefont pop
+%%EndResource
+/Helvetica-BoldOblique-iso1252 /Helvetica-BoldOblique ISO1252Encoding psp_definefont
+/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
+/Times-Italic-iso1252 /Times-Italic ISO1252Encoding psp_definefont
+/Times-Bold-iso1252 /Times-Bold ISO1252Encoding psp_definefont
+220 318 moveto
+0 0 0 setrgbcolor
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<95>
+show
+279 318 moveto
+/Helvetica-BoldOblique-iso1252  findfont 50 -50 matrix scale makefont setfont
+<4F7267616E69736174696F6E20656E206D6F64756C65732064697374696E637473>
+show
+220 429 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<4C65732064696666E972656E7473206D6F64756C6573206465206C6120706C6174652D666F726D
+652050414C20736F6E74206C65732073756976616E7473203A>
+show
+220 523 moveto
+<20>
+show
+515 523 moveto
+<4E6F7961752B45747564652B49415050>
+show
+1400 523 moveto
+<4B45524E454C>
+show
+515 570 moveto
+<47E96F6DE974726965>
+show
+1400 570 moveto
+<47454F4D>
+show
+368 617 moveto
+<20>
+show
+515 617 moveto
+<466F726D6174206427E96368616E676520646520646F6E6EE96573>
+show
+1400 617 moveto
+<4D4544>
+show
+515 664 moveto
+<4D61696C6C616765>
+show
+1400 664 moveto
+<534D455348>
+show
+368 711 moveto
+<2020>
+show
+515 711 moveto
+<506F73742D7472616974656D656E74>
+show
+1400 711 moveto
+<56495355>
+show
+515 758 moveto
+<5375706572766973696F6E>
+show
+1400 758 moveto
+<535550455256>
+show
+515 852 moveto
+<53414C4F4D45>
+show
+1400 852 moveto
+<53414C4F4D45>
+show
+220 946 moveto
+<4C65>
+show
+276 946 moveto
+<6D6F64756C65>
+show
+415 946 moveto
+<53414C4F4D45>
+show
+600 946 moveto
+<657374>
+show
+659 946 moveto
+<756E>
+show
+714 946 moveto
+<6D6F64756C65>
+show
+851 946 moveto
+<676C6F62616C>
+show
+969 946 moveto
+<6E65>
+show
+1021 946 moveto
+<636F6E74656E616E74>
+show
+1197 946 moveto
+<706173>
+show
+1265 946 moveto
+<6465>
+show
+1317 946 moveto
+<636F6465>
+show
+1409 946 moveto
+<736F75726365>
+show
+1531 946 moveto
+<E0>
+show
+1561 946 moveto
+<70726F7072656D656E74>
+show
+1767 946 moveto
+<7061726C65722C>
+show
+1888 946 moveto
+<6D616973>
+show
+1980 946 moveto
+<756E697175656D656E74>
+show
+220 994 moveto
+<6C6573>
+show
+279 994 moveto
+<6669636869657273>
+show
+416 994 moveto
+<6465>
+show
+467 994 moveto
+<636F6E66696775726174696F6E>
+show
+705 994 moveto
+<73657276616E74>
+show
+839 994 moveto
+<E0>
+show
+869 994 moveto
+<6C27696E7374616C6C6174696F6E>
+show
+1086 994 moveto
+<646573>
+show
+1154 994 moveto
+<6D6F64756C6573>
+show
+1309 994 moveto
+<6465>
+show
+1360 994 moveto
+<626173652E>
+show
+1457 994 moveto
+<436573>
+show
+1531 994 moveto
+<6669636869657273>
+show
+1669 994 moveto
+<736F6E74>
+show
+1751 994 moveto
+<726567726F7570E973>
+show
+1928 994 moveto
+<6963692C>
+show
+1992 994 moveto
+<636172>
+show
+2055 994 moveto
+<696C73>
+show
+2107 994 moveto
+<736F6E74>
+show
+220 1041 moveto
+<636F6D6D756E73>
+show
+401 1041 moveto
+<E0>
+show
+439 1041 moveto
+<6C27656E73656D626C65>
+show
+636 1041 moveto
+<646573>
+show
+710 1041 moveto
+<6D6F64756C65732E>
+show
+882 1041 moveto
+<43656C61>
+show
+977 1041 moveto
+<7065726D6574>
+show
+1112 1041 moveto
+<61696E7369>
+show
+1210 1041 moveto
+<6427E97669746572>
+show
+1353 1041 moveto
+<6C61>
+show
+1403 1041 moveto
+<6475706C69636174696F6E>
+show
+1610 1041 moveto
+<646573>
+show
+1685 1041 moveto
+<73637269707473>
+show
+1813 1041 moveto
+<6465>
+show
+1871 1041 moveto
+<636F6E66696775726174696F6E2E>
+show
+2126 1041 moveto
+<4F6E>
+show
+220 1088 moveto
+<7072E9766F6974>
+show
+358 1088 moveto
+<E967616C656D656E74>
+show
+549 1088 moveto
+<6465>
+show
+608 1088 moveto
+<636F6E736572766572>
+show
+790 1088 moveto
+<6C61>
+show
+840 1088 moveto
+<706F73736962696C6974E9>
+show
+1031 1088 moveto
+<6427696E7374616C6C6572>
+show
+1214 1088 moveto
+<6C27656E73656D626C65>
+show
+1411 1088 moveto
+<6465>
+show
+1470 1088 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<53616C6F6D65>
+show
+1611 1088 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<706172>
+show
+1684 1088 moveto
+<756E65>
+show
+1764 1088 moveto
+<70726F63E964757265>
+show
+1951 1088 moveto
+<717569>
+show
+2024 1088 moveto
+<617070656C6C657261>
+show
+220 1135 moveto
+<737563636573736976656D656E74206C65732070726F63E9647572657320696E64697669647565
+6C6C65732E>
+show
+220 1229 moveto
+<4C6573206D6F64756C657320736F6E74206C69E97320656E7472652065757820706172206C6575
+72732064E970656E64616E63657320696E7472696E73E871756573203A>
+show
+220 1996 moveto
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<96>
+show
+279 1996 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<436F6E73E97175656E63657320706F7572206C6573207574696C69736174657572732066696E61
+757820646520>
+show
+279 1996 moveto
+<2020>
+[747 0]
+xshow
+279 2000 757 2 rectfill
+1037 1996 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<53616C6F6D65>
+show
+1037 1996 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2020>
+[112 0]
+xshow
+1037 2000 122 2 rectfill
+1160 1996 moveto
+<203A>
+show
+1160 1996 moveto
+<2020>
+[11 0]
+xshow
+1160 2000 21 2 rectfill
+220 2093 moveto
+<506F7572>
+show
+312 2093 moveto
+<6C6573>
+show
+373 2093 moveto
+<7574696C6973617465757273>
+show
+569 2093 moveto
+<6427756E>
+show
+653 2093 moveto
+<6D6F64756C652C>
+show
+803 2093 moveto
+<6C2765787472616374696F6E>
+show
+1004 2093 moveto
+<646573>
+show
+1073 2093 moveto
+<736F7572636573>
+show
+1212 2093 moveto
+<6475>
+show
+1268 2093 moveto
+<6D6F64756C65>
+show
+1406 2093 moveto
+<646570756973>
+show
+1529 2093 moveto
+<6C2761726368697665>
+show
+1686 2093 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<7372632E7461722E677A>
+show
+1856 2093 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6574>
+show
+1900 2093 moveto
+<6C657572>
+show
+1979 2093 moveto
+<636F6D70696C6174696F6E>
+show
+220 2140 moveto
+<7365>
+show
+266 2140 moveto
+<666F6E74>
+show
+344 2140 moveto
+<67E96EE972616C656D656E74>
+show
+581 2140 moveto
+<64616E73>
+show
+669 2140 moveto
+<6C65>
+show
+710 2140 moveto
+<6DEA6D65>
+show
+824 2140 moveto
+<72E9706572746F697265>
+show
+998 2140 moveto
+<286E6F746F6E73>
+show
+1136 2140 moveto
+<717527696C>
+show
+1219 2140 moveto
+<657374>
+show
+1276 2140 moveto
+<E967616C656D656E74>
+show
+1460 2140 moveto
+<706F737369626C65>
+show
+1608 2140 moveto
+<6465>
+show
+1660 2140 moveto
+<72E9637570E9726572>
+show
+1829 2140 moveto
+<646573>
+show
+1895 2140 moveto
+<6172636869766573>
+show
+2047 2140 moveto
+<62696E6169726573>
+show
+220 2187 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<62696E2E7461722E677A>
+show
+394 2187 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<636F6E74656E616E74>
+show
+571 2187 moveto
+<756E>
+show
+626 2187 moveto
+<6F75>
+show
+682 2187 moveto
+<706C75736965757273>
+show
+847 2187 moveto
+<6D6F64756C6573>
+show
+1003 2187 moveto
+<64E96AE0>
+show
+1086 2187 moveto
+<636F6D70696CE973292C>
+show
+1276 2187 moveto
+<70756973>
+show
+1359 2187 moveto
+<6C27696E7374616C6C6174696F6E>
+show
+1578 2187 moveto
+<7365>
+show
+1626 2187 moveto
+<66616974>
+show
+1696 2187 moveto
+<706172>
+show
+1763 2187 moveto
+<64E966617574>
+show
+1881 2187 moveto
+<64616E73>
+show
+1972 2187 moveto
+<6C65>
+show
+2016 2187 moveto
+<72E9706572746F697265>
+show
+220 2235 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2F7573722F6C6F63616C2F>
+show
+397 2235 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2C206F752061752063686F6978206465206C27696E7374616C6C617465757220766961206C276F
+7074696F6E20>
+show
+1089 2235 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2D2D707265666978>
+show
+1214 2235 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2064752073637269707420>
+show
+1380 2235 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<636F6E666967757265>
+show
+1540 2235 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2E204C657320636F6D6D616E646573206173736F6369E9657320736F6E74203A>
+show
+368 2281 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2E2F636F6E666967757265>
+show
+368 2327 moveto
+<6D616B65>
+show
+368 2373 moveto
+<6D616B6520696E7374616C6C>
+show
+220 2420 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<4C61>
+show
+284 2420 moveto
+<70726F63E964757265>
+show
+472 2420 moveto
+<6427696E7374616C6C6174696F6E>
+show
+706 2420 moveto
+<28706C7573>
+show
+811 2420 moveto
+<7072E9636973E96D656E74>
+show
+1033 2420 moveto
+<6C65>
+show
+1084 2420 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2E2F636F6E666967757265>
+show
+1266 2420 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<29>
+show
+1300 2420 moveto
+<6427756E>
+show
+1390 2420 moveto
+<6D6F64756C65>
+show
+1537 2420 moveto
+<706172746963756C696572>
+show
+1729 2420 moveto
+<657374>
+show
+1795 2420 moveto
+<6368617267E965>
+show
+1946 2420 moveto
+<6465>
+show
+2005 2420 moveto
+<76E9726966696572>
+show
+2149 2420 moveto
+<6C61>
+show
+220 2467 moveto
+<7072E973656E63652064657320617574726573206D6F64756C6573>
+show
+697 2467 moveto
+<20646F6E7420696C2064E970656E642E204C65207072656D696572206D6F64756C6520696E7374
+616C6CE92065737420646F6E6320746F756A6F757273204B45524E454C2E>
+show
+1188 2982 moveto
+/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
+<34>
+show
+221 2845 1959 1 rectfill
+221 2933 1959 1 rectfill
+grestore
+gsave
+readpath
+V00DC0505B000272E07A900B008272~
+closepath clip newpath
+gsave
+220 1909 translate
+1.24050 1.16171 scale
+/DeviceRGB setcolorspace
+1580 538 0 1 psp_imagedict image
+J3Vsg3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H>q_R=AlC^cenm@9
+:1mM9jS"!dTMT<$3[GQ$8#0$s<4ZX!SPQ1`C/m<k<ioH)<bk^Hj`\=EYZP^B4!g3;B=(iUYNoc"h/Bf.
+DHAorf'R[o?>ioWjnAY&^gM+`4=1jRLW!YA=M/6)*KRWnUNmi.<Y(G<5TfJD*"iV`K>JccW*D(s%YqtH
+0drPi.i+&_,;H.PE]Y>'a<WMi*0NrAPKG1,WEc`5/sjd/1F\jBCGq[--SqaWnp<QmcmU_#*>49"UXCSJ
+Wa.BL:8cSk2(G.pX&c:P.lF?_C&MA@==c?\*KnTXZe?uhX'N$cDR\CR2_1HIlZTns0/orfo)!mNi%R,A
+*YSp9_r<C1XBm\%NlU393@pb#/!eB@+:n5]%LE;k6/`BB<%]$tLI:&5(mIcE'oPN@&X_'c3?=/Nj:W=E
+N_(O\8`^SQ<3B@UQV6HS)3iE\24I>'':IA<Gs.cqkS+pM%Z*WL;<\d`<,_k4Vc2ie\A^e5!3&ua'q3Zj
+\QuC?lkUNTNlbk==mZuo<Nb"l[p/8:)jS_5Fh:rJ(RrtCq0g"bn/*!:<gj',@5/Jo(+rqma$An?XE47D
+;9!2=&-r+?#6]XpT^[b2.MiMJ_kHT+N(PH3MT)=[Ls0Tm*0/(7nd,_^7jO8>V"0@9W`La;bGFe:N65ci
+Ra%`$M9P7/4J'lsoEl$7LI@laW:YsA.[Ni+e#E!INCp*JWn"-BLmS7Q's6)<'q5YhrFCadXAKp"U=X4i
+gTC2XNQUF+]%sO`Mp:P]I(nLAp^@W?#DBtQYkX/P.i4/aj0A?*<*I%ALKP_IVuul!s+3OEd!.r*'ao[[
+U!Mq57O8_*7:C0!C^r$$N'a;E\0QM=!0TkudWn6X'dNcJA5]C[`aprp9kMk"`9)2(Skj"Jq?7(W6_[Fk
+e9XP1PtRuQC"3!57\s%`<GL'1`FcM^Y#fDhqZV_nA$T6RepBi_eSDTtD:\T<`oV9Q?#J3gABn>']AIGQ
+peC>X,EgG.(d(88'oU(AES12D7jXAAATHIO_u]l>J\`J5BKRIP$AHA@YipI$,8,jP,-bgo@P\p^a!7kQ
+r.79[Oi\lSBfr+g.[A1'ZKZbR@ksIs-F7F!ic@/OcR6'`r;qU<U!<WPB_<2C$%Gl%Pj(UkrD/@"C2`s-
+L9"@Wf.48orIVprZ.U\:CH\E@C:2eJ[d/@Yj)V]d0"5W0iq%K0h_2J)rW<7S_;R)XC?91j8]8V'GjKlC
+/!.e;Z?^1aNW9'15i@`+1]@smKgOa[QnS^f%"gt+Yh6<h0aNY+^_(f2AjIT%5GXGk1]BB<L]Cr3.6M3@
+*1+n3P?G9LEB0RbkEFTkrddA/;!=-I2'.lOV,HQBg3#TQ;5mO[Q!1S%Z!"20l]p2sI_fHt=R;>X24i30
+[9Ds`gNC6hEOf?BQWplSnThfSn!Df$hEO<A_dnhmCed88L1+W>Ggoc&'V*>9d>/iA>l]AiTQ!FQ)@?It
+^u6u_"<J-aLI:'@3/faE!fKDhE2^^$59Q',@o4YMP"QaV5pZ!bA?&ujR*;FK8Z^Wa31S9lF33eFImB[R
+W,tW`)NRFbd]%?2D*":cW77hi9!):#=KL)SFis)t^L4:uXEI5gRa5ZSg9#PAD7\VD\D4629<Hq:GeDn0
+nsSV56Pc-KAhn`2Ws9ie9X.\jN\;E4Mp3R!4Cl50R",/Z:cJ:f%0qPPTQ!Fq2B;sT^nL9XUfK&`N(.;S
+\E%fr+-9$(;E6"g9dc/tAQ$'L[TtPR9P.3`Ut0BAS5*]q\`EI45G1hd<&u<@NCTdBBiMZT2P!XB<,,Do
+V,j^"XB'+:]&e+K?a*XK<]_Un*t4&lX\k!FZ6^a'5GB8+h9Oat]>^s/)k7i,D?+&'paA;n08>PFC(NKR
+nfr:da`1?tVH5@9bWm9>-l`j-#(sc90W853)\.YA+u(L9;C`N@`Zm4:gi>ItO2rS%.3+LD-BlRu19"Na
+>:u8d-8R*@dVCb1c6kEIh"#eUT?nuC.NK.[7\eB\1oah:Rnfm2.Q&]H;QCE1<[9PQ"?s;!IomrG]"NF'
+&$S9lQ8fVR%:u\5/TEk:@d.^5_CbI3/Je""^I)rV]7jGsL;W"*336FB)ihu"1-$nW;_+0Wjrb30'FkEQ
+K0eH-QrG[U%>R=1&K$a-.2@b0it7[.DE/_u8)t:#'TPa2P=ajKR8g=l/XK,m',d%[Bf2ASk7a95mWgsf
+:ZrK2'MJNrOO6<)2t\d:8>JU%FVj[6T+RtuU_R!3>QI]_<h`V#NHtb;L=r;%8,]I85.8K`oVu2;j\p_6
+X>PkUmeM:G?gnmP((U_*_dW'PS5q9\NQ5Q")'"r<.@&(fo+20)$3p]c_4^:R9I^heL;T_T#`MA''T0l(
+nVGD(2]RjuU[e^"MFSqTae\Ka9WD/FQHQ,r$&m#>1n)[do81]8!BcIi!"eu)$AV$Dd=='22$+ddT2/m;
+Wf9WK5D`BM<Hs400`J5kX)k4&Jj3aueL^EP/V_kn[bIqY$]W<lFLp;2pP[;]pO'^4YP8M9$O;@%iNW*9
+:+I->`oF?"%$!t.Pfi*nq1o.P"Ts?B@*j-d-5?oC6Xe@:KLR7$MFD"%Gf42O)hS,8dE!#J6i`"`j73Jo
+RRnohal--sA3'TEKZKp0BT1q\/X=WEe#D.)"Z(WuACKbU&s5ha;eabXKgqn;W`<faHGsL(>HV%Ceb]N)
+`FH2VCt<r%VU]Ij>A_sgKuW4q\m94*Hc>.?HbNj*fDGgX"bX[#E7fP,VM,o,_^/9]PgX%k`l089]Y":F
+!eJ01Y\6-C'*!GK+M\hA.LQZ769l,rN#jPh!(J3;=PR4G,*BtidKnp",:A+3jO+<-[Lk6J_dtW<]]*un
+S^/[il2:[96D;dTZt_`JP=h\#.CAAg6DIGXeLItA]je<OXk,)2lMZ=P@^4T;[VJ%#dqZ;F/[jtn_W,[I
+h(H0P^#JX0^#(KPlht-I5f$1!Q"`E#Fbu/gnF@Dqc7=s=j)IumPh#j7JO&,]kVNna$&(_)OMCu_)\Iim
+ifPW_<\52B6(cQ'oR9(LO\"Pr=Yu^I.@!NeP1ark@540Dk*&rThJkQH:?Rhoo_sD-Thss;=u@@`8Yo>L
+PhL7DTi%dglBPP\?EmY8<pQ%)omX_cYup@Y>;`#"BsguO&pnFe3>[Q@-$K(.cLH(=?=XkqXjTR_Ol2uW
+*&\H(H,*DJdS%k&!suKSnZnZRY;$$,^n>X;//f$)KYjF%aD<mZ&;\9!ECd070,TYfUN+BAH9WO6aJ<iJ
+/=K?_PffhCa_\Oq0UU(]F%NIeD`F94VfTuHqL:c'd&;%Y/K0[@Usc5ab&'23:oMmDF\8c>Y?7mJT@M":
+!l#JRfROQkj8-H!Z:&Of4#B.S"1U\bQ71S3+`sqW0!L7U3r'?%5OUM/<YFG=KA`YpH_'=3Ks99?=P-Y,
+[?uJ/i(uBY((CM%6=E^#A2YG=LdY]L32BS,(Q:gn;7P\14WfbVA5YE5Q;&`k8nCo2A@>bsQqV*j3Mb5C
+2k3WU;n:u_I6XB$BN.#=(6(h[;JB+AAN$)TW)RM33i,lZ=0,G5TF0e&"(/4_X;2a$P##Yr>&1C$//m&R
+P$@?T\>@L*#_-/ue]>^W"+(#7DKLg@qZV"s?nN1qAiC`kaCK<o4Jl13Qcq]:n0f7h$O27#+Y]j"1)g^Y
+`$-oaS5LjQMoHtrW8)DT*fnAf1+=3+9.#kF,r2H)Z<JrJbU,+pSC212S'EB;WSI&k5+g1M1b'LYMajJi
+.5\&117J^Q<%9`iSPlLhX4AdYWnh^-?E`!42Ce)`b@\*7/N0Y8ZJ09+gb(N9S^QhI]A>2"X53@DI_Xep
+3%Q)Ia+hLk0fZ7@1E2@pj>&_HSl7/*bN9oXp_42E"bT,"&=?EL)%D?giXm#l:+6p97H4uIe8@8eO%00_
+)&.Nk-'Lp^&t)_%=Y5t5jqAVsc=o/*:$31XeF%TFT24Yb)AN`N7AE`E'Ui#SR8'SXl4k5&:8q6o<U1Bg
+eS_p'Y?1'+)\nBs6aKq_(7S=,fkn3&mM?h-cKTJ`?1/T!eaE6]^L-II*#9%kD56'0(n=V[)3)[HneiF5
+:FVQdfeX0>":>A:K#+,LLeK97%#2ZnnHb(G-PVHWU@F&`C,[,ma.r2*"9(e9P0'NjM+jpN/=+JUo*LAu
+B/H(%VXoYgl?>@^c_pCB%17kYU=#q3MG5Re9W$:<oa6[NVc9\HWqD7oC:@HNf;nTQ%>r2:ZIu>QM<#T(
+Cpr*#pBuu'kB+;kY4mk!lM#\?b@ER@%LWMp_Vq`oN(tl>N5jb[q$`9V-^;d8ZMB:YrWNCU6"&&a6m`WV
+L-oCrpk2*_'8f4fd<NTA2&hQGA't)TL.*>M8S$7p7&Es7Q:kf;q1Qb!1R_$Md\$a*FT[+hB9VSn#),F=
+;/"I*74+9mVGh3YqLqD8;lWi4d7Ml#[9'M4CXr:cL(dar!%_/t7AeUN[TdV"qh<&OF1PXpf6bL!om=D[
+DqFg(QN^U/@;skH7OJq/`aa#@r.SVc3QU<&fm9.g!<Rhg+A_bp+qk<;_]c8JHpT%jM8^[DBY7e1)NDc^
+Z0;+;6R%Z7,dM,HU/NP,b9aIYI)9AKRE[(bBtWGH3h=SEZg%DiK0l9Z.(!_P,*PWqdj=JJI5[iuWRWK+
+C;")_>-6C,[Hd^B_d\5N!#@(JU=3kb`iQCKA]!JJ\_SmICVAa!HG/2h\*O"q"+nAJ0Xtf04oL/Tj"\(1
+IR>?CalP:`CNL0hs+*GnOB==\&IF.XiK2]64s:Mp7,j>2ZsGI)NCMrjf^sVY+btRnP$'W)74FKojc\;=
+^0raa9]hOA[,,d_SPJ@3g%>8p6(q-=PZfpcO\)BIl'0nE5+tiQ<9f`P[9g+@X]FbQg@]p2@Bir$Q<Q2k
+:MBf3m?ZLL^9;:8gb+pt[GLG!]jC/og\(RIJ\ba`Qs;Nk&W+J9nX/*T59Z02AFc)1Paa0'J&%^r81YYi
+#_^'gE6)iV*tX7HU2``*=t^_O`hROplkBICON=40kq&9!.$VlNEli./?SIkkVK5>1g2As@cDPa*m.u2s
+T[9WZ8hCsB8>O\5FNSG]T2;K9Wc^q9>-D&0euNr9m<ZNTYh6%#9.W7sBE22;G0=a6\S72\mWV=+g@':!
+hQM.HmJ?j5^u2GA9J.7pLrA;XGg(%e+-=S)Z?\u@`^Q/C5N#?t,SggoKL0*D\7@K<%u<V_;)k@P/Jj@8
+@o9bsFp\5287YU(oTi3!PY,Lb\R`-S0:5FF;`UZ)D)[t[B2cA%p3f/u:hWfh,o2J1Uf(o+\n*dj:T.6-
+<B?sWX]MT)CK7t-G.h7e=DV#"-'fVtZiDZ.]4JG,>dVT>pH,5&m<?3LDcaR4pAKKV?uT41-5R,H`+!^g
+]Oj)CO2tjP=ZiK0j!)X]+7LZu&dnnr_BCV3>V[6.LVtAk.%F0c(5p0W0rWlJ3s>UT,VgeOH:oTKasAgB
+>d@QdQcpd4.@eh%2Ohu>1TB1#HTn(K-o<Co&rT5SdO@#Q>r%mEVpm1R.\0J<<iae%26,JQ]3_\n/2f"!
+P04Aug&Mn(?*`4&Y$,@Zqjl1$G.ZTa2lkd*qgQ<<0K:U)'+9Q4i\<Eo?8EO\a5f!9/=o`SEKOg?&,6hK
+#mGrIi=MAU/f>+R6fJ[pPYNYBMacY<R+-"6*J/ee&fDC84XH:`jV!t\Y$!?C9BHm*Pg3u#Rn`&ZRFLYM
+4eGO6'H.\rM++1:knKRd/t#G3;sG)9Ptn;YX&\I#Ral;d?*@>r()n!Ka^p7Km/RMOY1[[$="Q0hIEq)"
+]3XkAS(6s&ID9.Y(`X;%$&-9*nJIcs0,]biA+CKWQ;8q:\B(t[#Q+o6"G4I_n;'af(CZ&9U%&DI8gb=1
+`M2mYb\B'VNkmsn#n2\W*g4X@nqg&?="KZ\V=P"Pb%EQ"c)1)hbj'C7T$O>,$4R>t7&&)-oSQ?mQV=:*
+WV$UX8uGXgeZ/;"c"a^mY1K`J$Or!6A?s,6G(9abf5.nMX-T.o^?9ULh6-L1c0G%N^>H-h$k<XMKYl]P
+pl%ru(Q?AoZ2"fg9.,sX>\$u>"9&H+JjEekGXNkn$\h#Wd.i8`,nl/)@aTG=Ai1Nf7pqtr"GT>fO%Em1
+GsnN0/!`h>deSR9AM]cLB%)%Dk&ibW:M8/Q"U9ZJU/>URH:90G9;YX%eG=kgV,OBoC=RXLB!kjG=)6@`
+"bt!+Z<:W,4$WklCURGae]UXHhfHA7DV'6Sk4O)8?Z4Qo"pY<a_I7E9Hq#IuMoK7Hf_gIo-'QJ<XthQ0
+!WN4P_'#sq4<bFGKu5(<k^5]A&rFROZ"UdZ1E)7n,HsuIJjU`D8#3G)4JGb(Q-1JZl$U?X17?B6ZY@)3
+F#ol<-aW(9!eWh5d3uA:4X-(^V:-m#l?u!o;Q81r[;*BaZWaK_/%+[@K#;'&fdsB'*M<FF[G*:AlK+m5
+Dn4[V[qi\:o6S+-0=U9H!s=.ki@qcX4sL_u`T&\_m!_;HP0)f/<uDcS!<7U8i/h%t*YA^46K+$YF?Ui[
+M+$?c=L;Bh)3%,GOk;&`5p;@],LT^OSl$r%9')5hFM;0<R7ub,=g[%*3Lrq.PM,U-JO,u+k`f7.*g'$j
+;X'G"FZuKrWDr/J>.%\A#a'Wf2;7_P_-sTNm$:j5T$[M>f'PBM6i,aD\6RqC.uh.1::8132r"$*!J/'p
+n<dH=*ta@K@e#i@G!@.4a^jt1=j?A'!.VeWE(DMu%g[j*TlA(h3Zeoh`1h6BXBI7oN5hW4aR"4;+HX[?
+E_.gN:FMIMV/j[o\mH9S9Vul&Peq>uSBe$RamAkR3L\<F'FHE1O%?(pWH?:"3hK6Ie>dX`X]ho1XOaFp
+b3aMi@'J:bG"XEUcY0]6?e3:=%Vc$SbjAJ)XkN5g]\]i9bNt8H1r!G&GYBZ<!HZ.fZ$=K14!0R*jKa&)
+Y$3QHJ3Vsg3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H)ZH*k!#%Ag
+enm@79;b_!jS"!dTMT<$3[GQ$8#0$s<4ZUdEAj]DA$ZF4qPb+.`ToB"ga9X2YZP=Uq5oP!B=(iZ<kDqO
+h/Bf.DHAorf'R[o?>ioWjnAY&^gM+`4=1jQs0?*R=F=^>*KS9PE`kN#T+h:C^`UoNr"9A@JNogSW&tP+
+%Yqop&I=n).i+&\+Yef.E]Y>'a<WHQPWhY_PKG1,WE`O+/sjd.d`J$-CGq[--SqaWnp<QmcmU_#*>49"
+UXCSJWa.BL:8cSk2(G.pX&c:P.lF?_Ek>Y]fISp2*KnTXWD%.eX'Mq1B=HYK2_1HIlZTns0/bn.b4U4E
+af"nP[LPHSW8[4;)s+[HNlU393@pb#/!eB@+:n5]%LE;k6/`BB<%]$tLI:&5(mIcE'oPN@&X_'c3?=/N
+j:W=EN_(O\8`^SQ<3B@UQV6HS)3iE\24I>'':I@+!Bm&NkS+pM%YG1>;<N%i<A'\6Vc2jq)O4's<NB-]
+F@l.7<C_O5X4%FcElf-&fkh:heFq@.[p/8:)jS_5Fh:rJ(RrtCq0g"bn/*,\%gds-@IY2)<.<GYa('+7
+*0sALQ-3b1&-r+?#6]XpT^[b2.MiMEJ0FFgN'80pMT)=[Ls.%h*0.r\Om)-Y6R7i:U[YfVW^@\SaeKKY
+j;MMbQc17Y)9fBj4J'lsoD,cqLI@laW:YsA.[Ni+e#E!INCp*JWn"-BMTonF>cu\Zp'V=ea(2L/XS.QH
+Wn2'qgTC2XNQUF+]%sO`M]C=B1o.mipRD^$#DBtQYkX/P.i1mQ@js0ijN;h3U#fbZGQ[pC"+S-pd!-r?
+'ao[^@F3Y37MQGk7:D<\Zq`=pLdn/%\@d8Z,EbW/dWn5i,qAsf+E-Ld&lTO3bi[B"`9)2(Skj"Jq?7(W
+6_[Fke9XP1PtRuQC"3!57\s%`<GL'1`FcM^Y#fDhqZV_nA$T6RepBi_eSDTpV3_"4`oV9'gMYVi`THi?
+^0bg1quufWJYHF\P.AjVDi0Ze0_$S\_\4)Nc!`V(_uKf>J&*83BKRIN!WYPqYipI$,8,jP,-bgo()ImK
+`ZqbPr.79[Oi\lSBfr+g.[A1'ZKZbR@ksIs-F7F!ic@/OcR6'`r;qU<U!Y9qC-<c)8u9uc[-E'+UJe)A
+.^a$)/iQt9f.48or+H1AL"7f`CH\E@C:2eJ[d']@<;sGS/iNNROtBk$hIO+J^&A=ZIpaLfW#QHE+Mbq"
+GMF0n)'6n*kSIpP63.%:5i>H%1_LB,KYa;-W,t3E!/X,&nAp8h0c>s?j,r!dIR,->8E>q:1nIPnPtL/$
+flXr:0pt_tP?G9LEB0RbkEFTkrddA/;!=-I2'.lOV,HQBg3#TQ;5mO[Q!1S%OV=itl]p2sI_fHr`Zic3
+4^ufQ[9Ds`gNC6hEOFH#<I:jjCD;b0-+BjBqE9@hfjL0qc2,I'_aa+I86qf1MoA)f'\g:(*<:T)TPu:N
+)@6S"_BEm&"?IV9Lr?!L8?>uJ(lZJ0EQIKm59Q'/UiK$XRSP>rb,'.#Cq<t-R*;FK8Z^Wa31S9lF33eF
+ImB[RW,tW`)NRFbd]%?2D*":cW77hi9!):#4Gd+>Fi\e3^Kn(rX--"0qQX_@g9#PAD7\VD\C>>=9,)9g
+AVEK)&1b02CCc@ljnK]g(-dS<iaF`iVChh#`'^9.aC[V-Q[h<Y:cK^9$35`FThr702B<<a6t0"QUe248
+N()a2\E"Pa+-9$(5R?_B9dc/tAQ$'L[TtPR9P.3`Ut0BAS5*]q\`EI45G1hd<&u<@NCTdBBiMZT2P!XB
+<,,DoV,j^"XB'+:]&e)u#QWLfFuq"9c"E#%?e2_-Xo2S9>]*V)V:P$X]O#6:MrgO[AA(^3p?MQc"UU"=
+AiQbj1D>Ru8)h&BSl-Gj_E]44-l`j-#(s_l&?%uP)\.YA+u(L9;C`317O'XDZk`N\N^@5R.3+EO-B^p\
+&uf-A>:u8d-8R*@dVCb1c6kEIh"#eUT?nuC.NK.[7\eB\1oah:Rnfm2.Q&]H;QEj!egiTa7<6"HYLkBa
+.ijerB!^2C2QL,hgMXLU/iP;Odd)(ghBZ+%h=CGl^Yge*/05H4<jTnu2G?hl)%28@T@#.^)M]8`hOkDS
+'FkEQK0eD`kYr`)!/Eoad,5$n.2@EPU<uMr@LENm6R1""4Dm_.L;W*!=VOn<.@3Z'')@d;Bf2ASi0$[]
+:2pi9cfbr`%1\"ZTMK89RT1u.9rCqT'cN?4WE$!!lP5l=DRj&V=6p\A'opCIZWZZ2RoQWED7<a;(E8Xb
+kte'[mh_JDmeM:G?gnmP((U_*_dW'PS5q9\NQ5Q")!e>#.@&(fo+20)$3p]c_4^:R9I^heL;T_T#`MA'
+'T0l(nVGD(2]Rjq!"oSHMEh3*aQ2oK9WD/FPXM@Ql&<bt"-Cc=OI,V))*37;jg(;M$>gB?7OX@t4SF4(
+MU3b.-oE3D<3"KG&P@Id[k3bnAQA#d>/t0ZfrXn*9rcf][bIqY$]W<lFLp;2pP[;]pO'^4YP8M9$O;@%
+iNW*'jsq7,`oF?"%$!t.Pfi*nq1o"P"Ts?B@*j-d-5?oC6Xe@:KLR7$MFD"%Gf3>V)idEudJ3p"73dse
+AC>`kVH#.494cQIKZ7RZRS@DCH,Sif4.]5\e+s4PKgVS.j"u'M(^!Egd:q)I9R``sJ]]IKb!a[]-A+m*
+Ek;13_`k?Sm+-KJ-Ilm`dd=ggSYG4e\m94*Hc>.?HbNj*fDGgX"bX[#E7fP--P_QZ@r^0!L.<OQ[UjL4
+I)H!c!eJ01Y\6-C'+0H2+gC0X66d,"`?MR#]OEZ8NQ39Kkkp#Xs,kDKZ=uFq;_"'U-*lc__IG?hbpKc2
+]]*unS^/[il2:[96D;dTZt_`JP=h\#-dio]63g5adU:N2Pbn=^PLcASg;LS=6Es)IZ?in;bp0Mdm2"=g
+g=[sd;(e,,^#DZn!8fH=g5Ldd$bYFP\84>R'8jch0t?S!6R.c9jYFA_^1%*BJO&.T=>V'2$&(_)OP"Y=
++VBQ!ifR?M?83=W7cTW`oR9(LO\"Pr=Yu^I.@!NeP1ark@540Dk*&rThF%@7!,%Lpo_sD-Thss;=u?Y,
+8Yo>LPhL7DTi%dglBPP[_N.j%<pQ%)oj3nIM,1%")"ib,5(?bs2Md%k2f=E++VuPdg(ej`g>CJ,e].Vs
+R9-V[>W*XSK#M3hR+ujL+d'lWnsNak?SMP1^n>X;//f$)KYjF%aD<mZ&;\9!ECd070,TYfUN+BAH9WO6
+aJ<iJ/=K?_PffhCa_\Oq0UU(]F%NIeD`7YkVfTuHqL:c'd&;$M`>Xe.Usc5ab&'23:oMmDF(uue"'DU)
+X*)SP&ueBl`FuNW'R%_7Zp_!XC;:%o4b:ANG,UDO+`i-!Y4ho!DY[\+=/tq`*ZGWE^uDVDb\fKaON?Lg
+GtbAF0:78Si(uBY((CM%6=E^#A2YG=LdY]L32BS,(Q:gn;7P\14WfbVA5YE5Q;&`k8nCo2A@>bsQqV*j
+3Mb5C2k,=F;n:u_I6XB$BN."2(6(h[;JB+AAN$)TW)RM2MB,a"=0,G90KQ=2NB<)$,??5SOo8pJfcmcg
+>jC'+J_Ar3W/]4]G.5G.<QfN2AR0j^^c4C+(Cc)7J8eU`lq[;(aCK<o4Jl13Qcq]:n0f7h$O27#+Y]j"
+1)g^Y`$-oaS5LjQMoHtrW8)DT*fnAf1+=3+9.#kF,r2H)Z<JrJbU,+pSC212S'EB;WSI&k5+g1E?j[ne
+MajJi.5\&1)G^:0ctYEfSPlLhX4AdYWnh]*9X!)"2Ceb3b=$tala&Z8?J-4*7d^j-PZm;^]3OU)/&X@A
+'u+'?&\BFqeL\)DCj<$f1;ejej>&_HSl7/*bN9oXp_42E"bT,"&=?EL)%D?giXm#l:+6p97H4uIe8@8e
+O%87D)&/*&-'Lp^&t)_%=Y5t5jqAVsc=o/*:$31XeF%TFScC/Q)ANa=7AE`DoBK=.R8'SXl4k5&:8q6o
+:MCQ4eS_p'TYi9[H*)NK7#Y7nQACg+b<r\a,BT<LZ86T[h6(r0'XkmbY@$c5E"3BZHc':^(n=V[)3)[H
+neiF5:FVRPAb-H<r!EZ3K#+,LLeK97%#2ZnnHb(G-PVHWU@F&`C,[,ma.r23%#RP#P0'NjM+jpN/=+JU
+n:1YaB/H(%VXoYgc=&i,c_pCB%17kYU=#q3MG5Re9S6*>oa6[NV`TZ5.C?+VB!iAV7]XoE"Ceb;ZGS4j
+8^2Ei$*q=?<f!<diG>SlWqC,'lM#[p?*F#3%LWMp_Vq`oN(tl>N5jn_q$`9V-^;d8ZMB:YrWNCU6"&&a
+6m`WVL-oCrpk2*_'8f4fd<NTA2&hQGA't)TL.*>M83df57&Es7Q:ke0=bOe+1R_$Mds8moFZZ0jB@H\\
+#(HQG7;.bI'HU'OVG!o<qLqD8:l/1$20^EB?P0>>CK:4Y1;PAt9;$Gg4]YQlZs.@.lZL4PF0ANE<]XUm
+j*SCD+7spR#6fas@;skH7OJq/`aa#@r.[]fPKIHWfmL^=rrRbf+L#NA+qk<;_]c8JHpT%jM8^[DBY7e1
+)NDc^Z0;+;6R%Z7,dM,HU/NP,_nZoLI)9AKRE[%ABtWGH3h=SEZg%DiK0l9Z.(!_O&nst7dj_ZhI6q?W
+VU?j\lFg4s=+<rFEiSeE-"*t1,W/,h7al+[gE\[:*PT^;\_SmICVAa!HG/2h\*O"q"+nAJ0Xtp_,85sR
+j"\(1IR>>2[Sl[!Cqa?Ys+*GnOB==\&IF.XiK2]64s:Mp7,j>2ZsGI)NCMrjf^sVY+bDqSOg"t[;(7c&
+jc\;=^0raa9]Hd(']*giSO]K:l.l8h(nT)fPZfpKD&8Vgl'0nE5*&R?<9f`P[9g+@X]FbQg@]p2@Bir$
+Q<Q5<d:p!lm?ZLL^>X(B>jdq_[GLG!Y=\dRg3)]^J\ba`Qs;Nk&KmdanT$W@3b*R<e+/o1?:udKJ&%^r
+81YYf!//4_E0raK*tX7HU2``*)>tD-`ZNSVgfcobON=3%R2hYi*g=aCE>_Fk>qD>aAi!#[g*[<!J0]1"
+eG=Y[T[9WVO:<+b$_m]8;gN:AT2;K9Wc^q9>-D&0euNr9m<ZNTYh6%#9.cUYBXHKqG0=a6hf-*\Y'3O@
+g@':!hQM.HmCn\i^L49j9J.7pLrA;XFj(!nPt8tlU0-cb!`^q)5MtB),SgglJO3dA\7@K<%u<V_;)k@P
+/Jj@8@o1eLFtk"e7c[H-"HG8aP=fCa\R`-S07gt%;X'FsD)[t[@'KIVa9+YYcbM?j,f5O2Uf(o+\n*dj
+:T.6-<B?sWX]MT)CK7t-G.h7e=DV#"-'legZs%<I]4JG,Dn'%i=$*80f-lGMY1L;IpAKKV?uT41,s$m<
+S5?H\Cdp?"&\LRd=Bq_)/XO[H+7LZu#QY-^_B@2r>V[6.J\kkN.%F0c&Vn@KZ![u\/KOm^!&7$gP"R-c
+asAgB>d@QdQcpd4.@eh%2Ohu>1TB1#HTn(K-o<Co&rT5SdO@#Q>r%mEVpm1R.\0J<<iae%26,JQ]3_\n
+/2f!u`\1l/g+>4`?*`4&\(iSjW;KO\FM!&NQ]'XF@/dp_0=NJR'+9Q4c7i2Ojt\;B`l,%5#Z`0#QHSD5
+&,6hK#mGrIi=MAU/f>+R6fJ[pPYNYBMacY<R+-"6*KN_O&fDCD8L9QljV!t\Y$!?C9BHm*Pg3u#Rn`&Z
+RFLYM4eGO6'H.\rM++1:knKRd/t#G3;sG%S"\u$sX&\I#Ral;R*e.8Moue)1Y:?eVD&/KZIJmrc>-8Y[
+Q#b,[]34).aS"EcIB$PV(`X;%$&-9*nJIcs0,]biA+CKWQ;8rpb@U8V#Q+o6"G4I_n;'af(CZ&9U%&DI
+8gb=1`M2mYb\B'VNlRpc#n2\],a-9Fnqg&?="KZ\V=MD)a9+8e9r@N=bj'C2RK-ua#^l2u7%DG6Zl2Xg
+QV=:*WV$UWVNEU-eYmTt]kY#AOh[si.h.BVA?smip5;YFf5.nMXnN3_b3*lXh6-L1c0G%N^>H-h$k<XM
+KYl]Ppl%ru(Q>1l1&2-`_]r3==5VE8!!3<+Jj>stGXNkn$\h#Wd.i8`,nl/)@aTG=Ai1Nf7q9sB"GT>i
+P"B3381^P;-]-!BdeS9r:GA53B$aXaqK4-U5GhBU"U9ZJU/>URH:90G9;YX%eG=kgV,OBoC=RXLB!kjG
+=)6@`"bt!+Z<;"pHUXg^CURGaf)(0@j`A"=DUGGsk4LUAhW>DAm)o-J_I7E9Hpf%]9>=2?2G$FE-&p&>
+EB/Eb!WN4P_'#sq4<bFGKu5(<k^5]A&rFROZ"UdZ1E)7n,I-J1JjU`EaX"0+4JGb(Q-1JZl$U?X17?B6
+ZY@)3F#ol<-aW(9!eWh5d3uA:4X-(^V:-m#l?u!o0Rm(H5RP26ZW@.Y.okm5K#:rS<?K_K'l(5ZY>/p7
+$C/KgEk1!S[ct32o2iN=Y>q&lqZD2$fl*6o4sL_u`T&\_m!_;HP0)f@\SSuh!<7U8i/h%t*YA^46K+$Y
+F?Ui[M+$?c=L;Bh)3%,GOkB;T5p;@]jH<Y&Sl$r%9')5hFM;0<R7ub,=g[%*3K/J9PM,U-JNX"[kVQH[
+#)WDO66F_1D'kGNVSB-1ktOKi9<D7\Q.kn[_-r#J.8u-N-Dr,rf.?XMFTRUeOP8Xe9,6=RH+dPQQeV35
+!J/'pn<dH=*ta@K@e#i@G!@.4a^jt1>dduo!.VeWE(DMu%g[j*TlA(h3Zeoh`1h6BXBI7oN5hW4aR"4;
++HX[>!!t3F:FMIMV-k0WY#Q^6bbA#29[5FOP0N02amAkR5bQK&F@n+XEWDk$BbP/IqO^BX<$W1PoGX-"
+XNTldb3aMi@'J:bG"XEUcY0]>X`hm)]&.J:gobioXkN5g]\]i9bO,0+JAC*IGYB_/%uA0PX'!S^RO_CW
+6`CWeNCPF\J3Vsg3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<Zm!(^Wu3=L@2"-Q8A&p\#r0e/Pa
+AlC^K1&X%t:1mM9jS"!dTMT<$3[GQ$8#0$s<4ZX!SPQ1`C/m<k<ioH)<bk^Hj`\=EYZP^B4!g3;B=(iZ
+<kDqOh/A4rhpR@Xel2[_?)2K+Q,5=7K&:!].K%WmLW!YA=M(BOK7o(REKOLZ3q\i`5QD?D)u^3LK>Jcc
+W*D(s%YqtH0drPi.i+&_,;H.PE]Y>'a<WMi*0NrAPKG1,WEc`5/sjd/1F\jBCGq[--SqaWnp<QmcmU_#
+*>49"UXCSJWa.BL:8cSk2(G.pX&c:<@!/L*Ek>Y]J8@+>`D-_3YM$"CX'N$cDO4NL<4bl=HZ?[S0/]]/
+qYPEMi%R,A*YSp9_r<C1XBm\%NlU393@pb#/!eB@+:n5]%LE;k6/`BB<%]$tLI:&5(mIcE'oPN@&X_'c
+3?=/Nj:W=EN_'<Q8`^SQ<3B@UQV4-\)3iE\22BB9o4c_BGs.cqkS+pM%Xg;:;(33J<"8e#L/Frc)O2qS
+<NB-c'q3Zj\QuC?lkUNTNlbk==mZuo<Nb"l[p/8:)jS_5Fh:rJ(RrtCq0g"Fl*'B#9*p<;?h"k'2CBB%
+a(+;"]S90IL<EP(cj01LrrdqiT^[b2*X)Ir6_X#UN(PH3MT)=[Ls0Tm*0/(7nd,_^7jO8>V"0@9W`La;
+bGFe:N65ciRa%`$M9P7/4J'lsoEl$7LI@laW:YsA.[Ni+e#E!INCp*JWn"-A87ZB7>cu\Zp'V=ea((.\
+WtpT#P.>;8gTC2XN8iCg\Qu"SGYR<j>l`cbQjaFiLO6YlYkX/P.i4/aj0ACgN_:aab2or)L]dV["+igH
+d!.r*'aoa`@F4e&7O8_*7:OYh`+CkGN^mU,q#lF@,EbW/dWn6X<@aA.A^^C-`aprhJ0r`j`9)2(Skj"*
+89=W]5b_+`F=6_+I5[j!C"3!57\s%`8L\$SXBL`hY"*8I)SLlM!O>h*&M!a&eSDTtD:\T<`oV9Q?#J8@
+`THi?^0bg1r!!B0K>M&9fR-.9'oU(AES1(mRjF8hA2;c:]E/$6J\`J5BKRIP$AHA@YipI$,8,jP,-bgo
+@P\p^a!7kQr.79H!(eHABdAR7.[A1'ZKTf0@ksIs-D26h`a:ctcR6'`r;qU<U!Y9qC-<c)8u9uc[-E'+
+UJe)A.^a$)@^B7?f.48orIVprZ.U\:CH\E@C:2T([d/@Yh%G3C/XL7c-Js']h_2J)?0_HATj8bg*%W#g
+MT*k[GjKlH,Eg111:_58@K?FZ5i@`+1`d58KgOa[fQ9;#&W&p8O]\ts0c>s?j,r!dIR,->8E>q:1nIPn
+PtL/$flXr:0pt_tP?G9LEB0RbkEFTkrdcAF:uG^g2'.lOV,HP#)Kdg/8>+JtQ!(diNE3/^l]p2sI^rP\
+==fb@,n9euZ!-O\gGQ_(EOf?BQWplSnThfSn!Df%rrI\e@.9Og2BNNf`FAA)gibn**k(/#Pmi[[%fcSp
+TQ!F8rXT9f_P(qiCcWXLLr?$-8?>uJ(lZJ0EQIKm59Q'/UiK$XROJE)J0a^,Mu$d4R*;FK8X-pe#aJ/_
+F0H)LGrh)4j:jVV)NRFbd]%?2D*":cW77hi9!):#=KL)SFis)t^L4:uXEI5gRa5ZSg9#PAD7\VD\D462
+9<Ho65ePsWEiZnMB18$BD-*5+)\7bCgotbPc8-2saN(KP9WY,#O+9IQ:cK^9%0qPQ@8OIE2B<<a6t0"Q
+UfK&`N(.;S\E%fr+-9$(;E6"g9dc/tAQ$'L[TtPR9P.3`Ut0BAS5*]q\`EI45G1hd<&u<@NCTdBBiMZT
+2P!XB6f6ER?imH3XB')o)Wb_I?`dB026)p>UM$r;@293`WnhU'>]*J%AQn8@]MPc?]B+qGG.caP=?IoH
+%>Vl2EEKkc2][t#A9(g8VH5@9bWm9>-l`j-#(sc90W853)\.YA+u(L9;C`N@`Zm4:gi>ItO2rS%.3(5D
+-Am="19"Na;ur?/Ahod!#%][m8LH<nh"#eUT?n`;GteL$7\eB\1oah:Rner>k7Hl6qO^fhegiR\NCIVe
+REQt>lD87=B!^2C2QL,hgMXLU/iP;Odd)(ghCgggh=CGl^Yge*/05H4L;W"*336Be^Q-@aELA?UP5CB`
+jrb30'FkEQK0eH-QrG[U%>R=1&K$a-.2@b0it7[.6ie<h8)pkb'KQ+<M+M($a[D.l/XK,m',X]O3?Xdk
+B+o"/mWgp_:ZrK2'b6'hUJ^7iRT1u.9rCqT'cN?4WE$!!lP5l=DRj&V=6p\A'opCIZWZZ2RoQWED7<a;
+(E4q!l#jUD+O`mslK*Gth<24L7FqEk_dW'PR'%'-I%t'ofW:@=+dL5]Ec;9]$3p]c_4^:R9I^heL;T_T
+#`MA''T0l(nVGD(2]RjuU[e^"MFSqTae\Ka9WD/FQHQ,r$&m#>1n)[do81]VG<DJCVt:<*$AV$DdAZ\p
+9e)K'VUMK:$B7ZU<3"KKonq!`T3SPGX&]T;JnJSs=fh=T9ra%]S(Ok:(jl,BCV&>pG72[\V0BZ2YP8M9
+$O;@%iNW*9:+I->`oF?"%$!t.Pfi*nq1o.P"Ts?B@*j-d-5?oC6Xe@:KLR6iImmaQ#fL=4)idEu?l9)n
+72h$)AC2g+qC*2Db@T,tKZ7RZQq6AgH,Si`/tGdNe+s4PKgVS3B[h>s-C%6$;eabXKgqCOW`<PmaRrH-
+5-7:$Q2:`>`FH2VC_<-'DDu19>A_sgKuW4q\m94*Hc>.?HbNj*fDGgX"bX[#E7fP--P_QZ@r^0!L.<PR
+b%5VHI)H'c!eJ01Y\6-C'+0H2+gC0X66d,"`?MR#]OEZ8NQ35.#lK9A,*BtmZ=u.=;_"'U-*lc__I"[Y
+bpKc2]]*unS^/[il2:[96D;dTZt_`JP=h\#.CAAg6?t;beLItA]j`QjR_bWHlHOLe'X'a&(2H(-dqZ;F
+/[jtn_W,[Ih(H0P^#JX0^#(KPli$tgK#-D"\84>R'8jch0t?S!6R+@gbjnnQ^%).'JO&.T=>V'2$&(_)
+J/EA`)\7`mifR?M+rgWA`a\JjoR9(LO\"Pr=Yu^I.>p\B;V?0+@53=&?h7F-hJkQH:?Rhoo_sD-Thss;
+=u@@`8Yo>LF"".GTi%dglBPP\?EmY8<pQ%)omX_cYup@Y>;`#"Bsh.3QJ6PriGlD5m[%.chXPm)?LO68
+p&>&D_-lc">W*Z9DMZ<.o#N*`rK5%ZnsNSWDC#8_5bN'e//f$)KYjE*(i1fH&;\9!ECd#0)?GacUN+BA
+H9WO6aJ<iJ/=K?_PffhCaF!nn0UU(]F%NIeD`F94VfTuHqL:c'd&;%Y/Fi[0T?/;i\h,*(7]=h:F\8c>
+Y?7mWX*)SPHG<jlfW96h/Xk"![+_X*bAFiJE4F]+G>#'lms)M%YBS1WqYu)]i37H"/fP=W`6>'_/64hS
+OK?GNR)nDf3K\hVi(uBY((CM%69l*lA2YG=KZ%=s32BS,(Q:gn;7P\14Wfa&jAIr/Q9cm_8n6:0A2FBA
+QHWr>3Maet2k3WU;n:u_I2S3_T[Xf!&hu8>6`&]YZrW.hVo!1)qP@5p=0,G<<P%:8]jJ!GCfWVDQHa'L
+>&@<PA[^E5\6NoQ4/LNqGJ%7#=1dSfrI;UjE*,/kG*@^"@.@@3AFC+kaCJhEBGMC'.#'te0H^K2$O27"
+?gt"!1)g^Y`$-oaS5LjQMoHtrW8)DT*fn=7&h+eI1B*KY,r2H)7S,5!bU,+pS0D)oS'EB;WSI&k5+Y#i
+1J*!!LBaC!.5\&117M%:e1*=*SPlLhX4AdYWnh^-?E`!42Cff2b@\*7/N0Y8ZJ09+gb(N9S^QhI]@CTH
+WZ4&prgVfK(b?^@pP-TF!#S;q->O(+ipo)X[PeGUSn2:0#S[aT"bT,"!!!E['+KLWiXm#l:+6p97H4uI
+e8@8eO%87D)&/*&-'Lp^&Jt)B3t@TMjq(*Xc=o/*:$31XeF%TFT24Yb)ANa=7AE`E'Ui#SR8'SXl4k5&
+:8q6o<U1BgeS_p'Y?1'+)\nCTA[>P,(7=.m('0fWmM;jgcKS`H?1/Ss4k=f`[bd[$bSC\.J;7P\=DV"j
+'8X\=lS>sACF(=I6D9J@":>A:K#+*Upe3.R%#2ZnnHb(G-PVHWU@F&`C,[,ma.r23%#RP#P0'NjM+jpN
+/=+JUo*LAuB/H(%VXoYgl?>@^c_pCB%17kYU=#q3MG5Re9W$:<oa6[NVc9!KlLg%ZC9\t4=/PZRoI@aY
+ZIu>LCCP15Cpr)up5*So"*D!-!&j<M`qOkMhJ_n>I?OIL^gX@sHd39@N5j*rq$Q7G-^;d8ZMB:YrWNCU
+6"&&a6m`WVL-oCrpk2*_'8f4fd<NTA2&hQGA't)TL.*>M8S$7p7&Es7Q:kf;q1Qb!1R_$Mds8moFZZ0j
+B@H\\#),F.^SoS""X]L-VGh3YqLq7m;lWi4eTbXp[9Ke8BqQCK2R+R'5G3/b7Ae+@[S6%m.o"$YD3\@B
+!#q3c]cjl#YI@10#6c]_fPai]*[_\\`aa#@r.[]fPKIHWfmL^=rrRbf+L#NA+qk<;_]c8JHpT%jM8^[D
+BY7e1)NDc^Z0;+;6R%Z7,dM,HU/NP,b9aIYI)9AKRE[(`0EgBV3h=SEZ`jl?I6sK!W3g;&,*PWM^T"N=
+*C?MuTE&_K);Qo\;Q\P!<LWl<__J=D.[E='MF1*f7'-+JI7D\+\_SmIBJmZu:qPU<\*O"q"+nAJ0Xtp_
+,85sRj"\(1IR>?CalP:gCqa?Ys+*GnOB==\&IF.XiK2]64s:Mp7,j>2ZsGI)Mh!%7f^sVY+d#=VOiZ%D
+;(7c&jc\;=^0raa6D)_/`0PC'SOif;fc8:g/=k/OPP>jBrB[8Xl'0nDcAOcUJ7j!#ZlY><W7L9uMS4JT
+@Bir$Q<6k)d70R!XOc-K^>X(B>jdq_[GLG!]jC/og\(RIJ\ba`Qs;Nk&W+J9nX/*T59Z0"g2`?-Q<u?H
+J&%^r81YYi#_^'gE6)iV*tX7F?dVC]!\YCL`hROpm!:bpON6F%.4go`."k.QEli.';_XT_VK5>1g2As8
+73BljFS^J.SC"3Raor\f+TT]b0o15FM,:/#Wc^q9>-Bi^b%YlG7<X)]Yh6%#9.cUYBXHKqG0=a6hf-*\
+Y'3O@g@':!hQM.HmJ?j5^u2GA9J.7pLrA;TQ)T^OR7G?FAD#[D>;)@o5N#?t,SggoKL0*D\3L*9%u<V_
+;)k@P/Jj@6TolkGG!-q/7V#CW,[NbaPY,Lb\R`-S0:5FEP$+SG"#l[dVGk%d%K/MG:2!Lm\-@^LT$h=P
+\n*dj:T.6-;L,)SNt[l+hpjdLG.h7e=DV#"-'legZs%<I]4JG,Dn'%i=$*80m<?3LDcaR4pAKKV?uT41
+-5QP]TiIhSCh>UHO,q:8=H''e+UZB-!"^Ou&dnnr_BCTlr%]3$LVtAk.%F0c(5p0W0rWlJ4!'I(,Vf&c
+OrGZr6DZH:>d>"eQcpd2$#J%*2M?Tn0KI2Y(G_W0-o<Co&rT5SdO@"U]eWeaVpm1R.\0J<<iae%26,JQ
+]3_\n/2f"!P07IDg+>4`?*`4&\(iSp/"P,SG.ZTa2lk^tG<2VZ+Rob$)[Uo0i\<@%D"=&O^uR4I4GHcb
+507CZ&,6hK#mGrIi=MAU/f>+R6f<J#PYNYBMacY<R+-"0&<B?B&f?":8L4AYim9ZlS-('qb9\nmPg3u#
+Rn`&ZRFLYM4eGO.:[/W(K`6^!W>(bR8qB^7;sG)9Ptn;YX&\I#Ral;d?*@>r()n!Ka^qe]m1u0kY1[[$
+>OE:HQ-SW:]3XkAS(6qjID82<FBTt#pP$LnlPKHj5*q/GiZSmrDEB;4R,g%7#Q+o6"G4I_n;'af(CZ&9
+U%"]X8gb=1`M2mYYQd$(NlRmA#n2\]$\(aAnX.r55:hj_,>lR!b"4FYc)1)hbj'C7T$O>,$4MecrgHNZ
+oSE_YQV=:*WV$UX8uGXgeZ/;"c"a^mY1K`J$Or!6A?smip5;YFf5.nMXnN3_b3*lXh6-L1bhA8.^>?'g
+$k:L="2\)KnuM+`NJbJYTbuRF8s>=Yjf4_.!!3<+JjEekGXNkn"Fn<tcfg$C,nl/)@aTG=Ai1K\a(*J`
+gfcoeKh,b&G_Dpl%uA?hdeSR9AM]cLB%)%Dk&ibW8`Z*10F!4RT$_$<R:NI[9;YX%eG=kgV,OBoC=RXL
+B!kjG=)6@`"bt!+Z<;"pHUXg^CURGaf)(0@j`A"=DV'6R2N\ljc);79&-i.9NF-T`Hq#IuHC!$!GjkkQ
++Wn\LZ?.!)!!*.P_'#sq4<bFBJ&<G6k^58d&r8t#Z"UdZ1E)7n,I-J1JjU`EaX"+s<2*;@Q-1I/Bmdc^
+/XaGP0Zg-M"X8dfU(bYV!eWh5d3uA:4X-(^LrAHF:^oa4;?0V[[;*BaZWaK_/%+[@K#;'&fdsRI4egD?
+[G*:Al[?Y1Ek1!Y[qi\:o6S+-0=U9G*iFUV?nf*,4sG\FN*tb4>\kT9Mo<N=)/R#b!<7U8i/h%t*YA^4
+6K+$YF?Ui[M+$?bYRFb;)3%,GOkB;T5p;@]i6UXE<`(<26)8PS'Fmh9Q,4ir=U`Sq3Lrq.PM,U-JO,u+
+k`>PI*\IJgJ1*2l/O#k*WDr/J>.%\A=fk`jQ.kn[_-sTNm$:j5T$_8[>4%X1FhZgS\QnQh>IE>XG,I`B
+GMDdK:C+YjE0slg*X.22?Y_X3"sS2Ma^jF1$k*(?!.VeWE(DMu%g[j*TlA(h3Zeoh`1h6BXBI7o!(N`'
+aR"4;+HX[?E_+-;:FLn<-#qU3+oO*L9."[.FP:XmSBe$RamAkR5bPq?PY*KEKh/#fWH?:"3hK6Ie>dX`
+X]ho1XOaFpb3aMi@'J:bG"XEUcY0]>X`hm)]&.J1bTG3$SFVYaRDj'q)t!M%J=U"b24>ou%u@"=@+WJk
+%j-nPjK`kYL0GaaJ3VsfkTgKE#D>ENi!<jO*=mro+HP_c<\5,=_.+$iN-7?+LW8CQ3@'nb-^757;Rp>H
+>q_R=AlC^cei=kC:1mDV[.\o4TMT<$3[GQ$8#0$s<4ZX!SPQ1`C/m<k<ioH)<bk^Hj`\=EYZP^B4!g3;
+B=(iZ<k(ikh&l^QA(Ji"f'R[g>OC#R$pnA9TjFqSN"-4)LQLIL=LrAp*KQ3<0p,_*.j80<^]4og$k`^J
+K>6A!W*D(s%YqtH0drPi.i+&_,;H.PE]Y>'a<WMi*0Nr%K?>Jo5RaMo/sjDKcfpsgCGq[--SqaWnp<Qm
+cmU_#*>49"UXCSJWa.BL:8cSk2(G.pX&c:P.lF?_Ek>Y]fISp2*>W8dM9IP0X'E4TAt7WBQReWTlTqsc
+-4u`,54\i9?S9eVUb_n'_ocG5*#:=L5/^te39]3O*L4NI+:mZ,rWra\6/`BB<"o?BLI6SH(kbL''oPLh
+EL>6n3?=/Nj:W=EN_(O\8`^SQ<3B@UQU7G<)3i8f!L_/Co9n+rGs.cqkS+pM%Z*WL;<\d`<A'\6Vc2jq
+)O4's<NB-c'q3Zj\QuC?lkUNTNlbk==lFFK<N[]-S(]J2)jS_5#dmBDP;s$Y#9CNbi)6W:dO5*K?f:^;
+XFh6,]]8Pr/3WS,Mp#\q0E;4_#6]SX@.78l.MiMI5N2,<N(PH3MT)=[Ls0Tm*/qY-nMk>#4!^!2UN.eW
+WWso;bGFe:N65ciRa%`$M9NOpreO>t;(;GJ5pqrFW:7q5.[Ni+e#E!INCp*JWn"-BMTonF>cu\Zp'V=e
+a(2L/XS.QHWn2'qgTC2XNQUF+]%s)7a>aBdI"u"rp^@W>SO/3BB%Pg3ZNh81j"+<2:$VD!a5sW"a8c8F
+"+igHd!.qe!t0fM+KtQn7O8_*7:OYh`+CkGN^mU,QqRuS,EbW/Or6Zb%47B6A^^C-`aprp9kMk"`9)1h
+Ptth])>((U6_[Fke9XP1PtRuQC"3!57\s%`<GL'1`FcM^Y#fDhqZV_nA$T6RepBi_eSDTt@LqdXlJVZ!
+:i=m1'P?NG^0bg1q`W4@5eKX,F=7%U!?K*flSj2T(4UVMATH<@PQ1^c!5TdSBKRIP#CjW7YipI$,8,jP
+,-bgo@P\p^_IITLr.79MKh3PqBLDVp,*g=tZKZbR@ksIs-F7F!ic>WocR6'W"GThRSP^fBC-<c)8u9uc
+[-E'+UJe)A.^a$)@^B7?f.48orIVprZ.U\:CH\E@C:2eJ[#$=F"$a?<mFQ-eiq%JS>q`Fogr9d:TjT>@
+qi1GDLkK2V\E\eqH],GplW>^>EW?)j5i@`+1`d51J&:0+fQ9;#$\(S(0j(eh0c>s?j,r!dIR,->8E>q:
+1nIPnPt#1;flXr8/"')nP?G9LEB0RbkEFTkrddA/;!=-I2'.lOV,HQBg3#TQ;5mO[Q!1S%Z!"20l]p2s
+IQ\?o87iWA1ra<?MV>-IgNC6h;R>0:?lQMnnTg:#Y.u!QrY9aq@-P001rBWV`C'.h4C15qOhBEo=P8E%
+blE7/TQ!FQ)@ln!6D4t3CcWXLLr?$-8?>uJ(lZJ0EQIKm59Q'/UiK$XRSP>rb,'.#Cq<t-R*;FK8Z^Wa
+31S9lF33eFImB[RW,tW`)NRFb`1]ujAMR!\W77hi9!):#=KFt@oW%;)^L4:k.lL$PC,K7Tg2'g424CKK
+Wdnu1>FjCKB=?[#GKYF2VZXJ8.eh&eY"a\g`@q#/X?RAUaQ0XP8<-"]NIV!O:cK^9%0qPNiD@$p2B<<a
+6t0"QUfK&`N(.;S\E%fr+-9$(;E6"g9dc/tAQ$'L[TtPR9P.3`Ut0BAS5*]q\`EI45G1hd<&u<@NCTdB
+BiMZT2Oud[<,,DoU`Q.0XB'+:]&Wdj?a*UJ<]Su4")!2(//:f([bYK%fA\_#"hofl]NqG>CH)O_CqX4q
+=?IkCnG]g\YIFF@7gkC!A9(g8VH5@9bWm9>-l`j-#(sc90W853)\.YA+u(L9;C`N@`Zm4:gi>ItO2rS%
+.3+LD-BlRu19"Na>:u8d-8R*@dVB&::*G,oh"#eUT7CT2qAg3,4I&Y`dqW/DRnfm2.PXOQ;QE$]<[-%\
+*H&2iKN4qt.h*E3B!^2?[S!ZF'l0AoC0')KdbSiRdI+KEh=CGlQ<l7&>Q,9DL;W"*336FB)ihu"1-$nW
+;_+0Wjrb30'FkEQK0eH-QrG[U%>R=1&K$a-.2@b0it7[.DE/_u8)h;j'TPa2P=ajKR8f%nrg,pIcfkSX
+Bf2ASk7a95mWgsf5NQu*'TRYLR*fU^RT1sF6]snfdV<>gWE$!!i7/\s6AJ[H=6pMK4<hffX]ao^)ca&o
+D7<a6<f<5(iH;b<mh_JDmeM:G?gnmP((U_*_dW'PS5q9\NQ5Q"&,RrEnT2lTE\Iar$3p]c_4^:R9I^he
+L;T_T#`MA''T0l(nVGD(2]Rg-,Ou-LMFSqTaQ'R_9WD/FQHQ,oBf)8U,65ucEs^(UG<DJCV__JgQ9@!b
+c%%VH9e)K'VSoF>.Qp*a%t@TYeV_Ud[p6)fWO4esMP16T5HF;.258]=[bIqY$]W<lFLp;2pP[;]pO'^4
+YP8M9$O;@%iNW&l<4<SFZ/`+^./kG=Pfi*gprER:"Ts=++OG?m"r.Dr6@^c2KLQITMEdi_8Ao*t)idEu
+dJ3p"73dseAC>`kVH"Um6tLBFCee=nRS@DCH,Sif4-RlsPF;'SGse<'B[h>rVC__+ctV#+9h(sXW`<fa
+HGsK9:Tdc1ZDq2F`FH2VCt<r%VU]Ij>A_sgKuW4q\m94*Hc>.?HbNj*fDGgX"Y5nVX4V]X%i(#B@qt]U
+4sD;-M.<jEHNXBIrdVa,Y\5-\'+0H2+]*E266d,!6Xk%K]OEZ8NQ39Kkkp$",*BtmZ=p>.1C]Ve,r4_4
+_IG?hbpK^J'FkX)S^/[V$+0he6D;dTZt_`JP=hHG.C89O$C+MgeLItA]je<OXk,)2lMZ=P@^4T;[VJ%#
+dqZ;F/[jtn_W,[Ig?0(UFlN!"!8esJ>IDo^K#-Cr=:$62p]7!rWR>TF59Ya&jW`<XY$qD2JO&.T=>V'2
+$&(_)OP"Y=+VBQ!T@$a\<W*""7cJF?]NPIXO\"P`#kX]c.@!NeP1ark=Vuh9V%QoB#&uPl:?8YTUr%[K
+Thss;=u@@`8Yo>D1Wji(TfSoDl'5G[?EmY8<pQ%)omX_cYup@Y>;`#"Bsh.3QJ6PriGlD5m[%.chXNq2
+hX?^+c2Rfq_-l@^89OY=2SrqnQ@).\+d'lJYgBJ#:GDj!^n>X;//f$)KYjF%aD<mZ&:]3SECc`,0,9Gc
+UN)Z2qEGRRaJ<iJ/=K?_PffhCa_\Oq0UTZ9n*-'/3B3PSVf>;8qL:c'd&;%Y/K0[@Usc5ab&'23:oMmD
+F\8c>Y?7mWX*)SPHG<jlfW96h/M;<^[+]?IbAFiJE3S'!F,Q%3mr,dD06bV,q?_J_i37>CVA^h8`8\%H
+aokrOLWIb\\P0/10:78Si(uBY((CM%6=E^#A2YG=LdY]L32BS,(Q:gn;7P\14WfbVA5YE5Q;&`k8nCo2
+A@>bsQqV*j3Mb5C2k3WU:`oo7I6XB$5VtM2(6(hV:?b`hAN$)TW(lLk3i*$1riADd&*f-t]jHb"i7'Fi
+<dQ=$==mRcA[Y0#Z;PPk4/LLgB"V,]f=U/<rI9g`E*,4,(Cc/<@W>M_AiC`kaCK<o4Jl13Qcq]:n0f7h
+$O27#+Y]j"1)g^Y`$-oaS5LjQMo,N,W8)DT*fnAf1)R(g9+R3#UCsP2Z<JrJbU,+pSC212S'E66.GXJU
+3J:!PoI:joMaj/]B@M6517M%:e1*21$q?F#J^l5MWnh^-0W`1WegUcKb@\*7/N0X5WZ>TYfWDV5S^QhI
+]A>2"X53@DI_Xep3%Q*a$\lRY0fZ7>b-PorgbLa'AlC4GbMV4X#S[aT"bT,"&81nn)%D?giXm#l:+6p9
+7H4uIe8@8eO%87D)&/)E$'E?k&t)_%=Y5t5jqAVsc2T)C9d^UBeF%TFT0jsT)AEZ>rhE>(oD2H>R8'SX
+l4k/d%]NHZJ85ikQ#=-<Y?1'+)\nCTA[>P,(7S=,fkn3&mM?h-cKTJ`?1/C5[I/`N!7n>5*#9%kA>;A`
+=F!p<)1]TaneE]T;YQ<sAb-H<r!EZ3K#+,LLeK97"oq#anHb(;)$YRZU618UC,[,ma.r23%#RP#P0'B%
+.!Pqt.@//O;L+5DB/H(%VXoYgl?>@^c"6MS%16;AMc$+qkX?DR9W$:<oa6[NVc9\HWqD7oC:@HNf;nTQ
+%>r2:ZIu>QMbU5'CpMLMp@opDkB*%pDYK(6lM#/*^u\J:"KV]J!+.GTN(f*TK:$,Qq$`9U2iPPj13nZX
+rWNCU6"&&a6m`WVL-oCrpk2*_"TUtV0mKVu/cgpOA't)T<[T,T8S$7p7&Es7Q:kf;q1Qb!1R^`X1O6q$
+FW$XoB@H\\#),F=;/"I*74+9mVGh3YqLqD8;lWi4eU#2H[9Ke8CXr:cL8R,==_CX1oqo]D[TdV"qXp<=
+)kL:ef6bHaj8cjMDqFmiY4mLa@;V<soJ6/"\k$6hN&F0PPKHb-H$_XSrrRbf+L#NA+qk<;_]c8JHpT%j
+M8^[DBY7e1)NDc^Z0;+;6R%Z7,dM,HU/NP,b9aIYI)9AKRE[(bBtWGH3h=SEZg%DiK.-dt.(!_P,*PWq
+dcaZqI6s],WRW.&lF\I3=od/&[D35b!EHDX/@A+[,0al1gF]g;732\8Ip9(bCV2.['"D*qo[pkBX]W5E
+0Xtp]hNr]*@k!e(IR>?CalP:gCqa?Ys+*GnOB==\&IF.XiK2]64s:Mp7,j>2ZsGI)NCMrjf^sVY+d#=V
+P$'W5;(7c&jc\;$qI'm79]gjC[*iqSSPJ?(?juUG/tl,*PZfpcO\)BIij9&85(QD,<9f`PZso^iX4HU%
+g@]p2'!0Aeo*=rCd:p!lluT`1[LHiVh!UM5[GI*fMHb"cg=>3aJ\ba`Qs;Nk&W+J9nX/*T59Z02AFc-k
+D>Q$f!'m2r81Y)I#_^'gE6)iV*tX7HU2``*=t^_O`hROpm!:l=ON=5<8M$<+*eR(]ElhiTr@jI0VK5>1
+g2As@alTh=eG=Y[T[9WZ8hCr+4G$GpFNSG]T+[MUVUV':>$j"_<i^Acm<ZNTRFSB^8Tfd6BXHKqG0=a6
+hf-*\Y'3O@g@':!hQM.HmJ?iKZJ_s3$n`J0Lr@8OGfhU1'9C+CZ>lt)6Nr^)5N#?t,SggoKL0*D\7@K<
+%u<V_;)k@P/Jj@8@o9`i!^.We87V23,aM.PPY,Lb\R`,crg6(6;`UZ)CG),PB2cA%p3f/u:hW]T[2+`l
+OO35k\n*dj:T.6-<B?sWX]MT)CK7t-G.h7e=DV#"-'le:Qp76eRUrcR8@Vo:p3WXem<?37/^O=L9)BF"
+!,u!g[HA!S`('4bX<o;8O2tjAGheTd/XM()!"^Ou&dnnr_B<dl>V[6.LVtAjp[h?0(5p0W0rWlJ4!'I(
+,VgegP"R-casAgB>d?L!Qcpd4)%9C@/Xt$51TB1#HTn(K-o<Co&rT5SdO@#Q>r%mEVpm1R.\0J<<iae%
+26,JQ))[@HX>VRDG0=L(g+>4^rI-hFJ(X0CCL,BSG.LCc;<rYeqgQ<<.)6fBcNAp>i[B"%>RM4*a5f!8
+*+i)[-b_uV&*O]+#mGrIi=MAU/f>+R6fJ[pPYNYBMacY<R+-"6*KN_O&fDCD8L9QljV!t\Y$!?C9BHm*
+Pg3u#Rn`&ZRFLYM4eGO6&;V"r5sp;*.284N/t#G3;sG'S%8Nm&X&\I#R\`Ka?)6&Q()n!K@9`fclgWUc
+P1a]]>OE(1I@LC5\D?TiRq6p@!4lI>=<&(e$&,cPmSpgspDHiGA+CKWQ;8rpb@U8V#Q+o6"G4I_n;'af
+(CZ&9U%&DI8gb=1`M2mYb\B'VNlRpc#n2\],a-9Fnqg&?<s\k"V=P"Pa9+8e9r@N=I'RrYT$O>,$4R>t
+7&%Mq1l=uLND-4uWV$TCqPOaj!,4;/c"a^mY1KUOWJk_lrib"Vp5;Uf_ebjsXnN3_b3*l,>Aj1le4.Q&
+^>H-h$k<XMKYl]Ppl%ru(Q?AoZ2"agiiR%>?1L"3"9&H+JjEekGXNkn$\h#Wd.i8`,nl/)@aTG=Ai1Nb
+!$fne"GT>iP";@2GsnN0/!`h>deSR9.j"c9A?ko&qK4Qb:M8/Q"U9ZJU/><>GpOAo9;YX%eG8JUV,Nm`
+.b/jaB!kjG=(-5E"bo`'SNj#.](MrNCURGaf)(0@j`A"=DV'6Sk4O)8?Z4Qk]p9`aRXf3VHCQbpJAu)=
+f_gE'%u%p@nTc+m!WN4P_'#sq4<bFGKu5(<k^5]A&r8cHYeUBN1E)7m@^#!cJjU`EaX"0+4JGb(Q-1JZ
+l$U>o*1=en1MOM]F#ol<-aJ!hWbFend/XjF4X-(^V:-m#l?o%O.B,Pq5T7<OZW`=;/%+[@K#;'&fdsRI
+4egD?[G*:Al[?Y1Ek1!Y[qiVt[sGa7XE@1U!s=.ki?Xc64Ota,_W*A\koMGrI)k>(\SSq8!!%R8i/h%[
+rXfHj6K+$YF?Ui[M+$?c=L;Bh)3%,GOkB;T5p;@\?d`%5Sl$r$aQ8T<FM;0<R7ub,=g[%*3KV?id)f8d
+JO,MgVj",<*g'$j;X'G"FZuKrWDr/J>.%\A=fk`jQ.kn[_-sTNm#_ViT$]g/g?k3\FhZg9[+sT%MC_Zo
+(;/F@QeV/dk7t\fn<dH=*iD7'io'TjG!@-P\n(@l>dduo!.VeW:Zs>>$N>UnTlA(h3Zeoh`./FjXBI"Q
+N5agsaR"4)&s121E_.gN:FMIMV/j[o\mI.YbbfGQXP.SPSBe$RamAkR5bQK&F@n,'O%?(pWH?:"3hK6I
+dif?krE?C,X&Q-Bb3aMi@'J:[Q('@7a(Vj6X`hcrH85M\gMV4.XkN56ZUHM`bO,0+-bWo`(^r#9%uA0L
+Y^"=).j'kojKa&)Y$3QHJ3Vsg3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb+b**l
+EgQDP!ABg6AlC^cenm@4alcU5jS"!dTMT<$3[GP=.Y1=p!#fDu@8$[Fj`HA;<ioH)<bk^Er7[iBY#oL@
+4!g3;B8&u)de`mmd;QO"DHAgR3brT1>q]9kjnAY&O]nFmqJFsrLRd9W=M/6)*KS9PE`kN%="Tc_5TfJD
+*"iV`K>JccW*D(s%YqtH0drPi.i+&_,;H.PE]XO,80fr>*0NrAPKG-_l!1Mu/sjd/1F\jBCGq[--?&/(
+H;c!fcmR7ebn>q(UXCSJWa&/M,GnEi2(G.pX&c:=l-_'#Ek>Y]fII];*1FcWZe?uhX'N"qA@L=\[k"#t
+lZTns0/orfo)!mNi%R,A*YN0KIoicE!"Hf9Ku`703@p]0)^r\I+:n5]%LE;k6/`BB<%]$tLI:&5(mIcE
+'oPN@&X_'c3?=.\,SCt/N^FkO8`^SQ<3B@UQV6HS)3g^a23H,G':IA<Gs.cqj7@"#%Z(^G;<S^_<A'\6
+Vc2jlaufG5;j:-0'q2oB\L!#2VKN<+Nlbk==mZuo<Nb"l[p/8:)jS_5Fh:rJ'+5LTZiI6/Dn#W2HLlj.
+@IY2)<'LVITgg\T9TCbTQ-2bc:]LV*#6]Xni:)Or.MiMJ_kHT+N(PH3MT)=[Ls0Tm*0/(7nd,_^7jO8;
+TX'(J#$3.;bGFe:N65ciRa%`!\O<M$.A"k^&Jt*IEC?PKW:YsA.[Ni+a_1*Gh*MEGWPG:9-hTO0>cu\Z
+p'V=ea(2L/XS.QHWn2'qgTC2XNQTFF]%sB.)BI,tI(nLAp^)*##=-)`YkX/NIgM"Pj0ACfAhtZrb2ob8
+8,r\p"+igHchKmT'aoa`@F4e&7O8_*7:OYh`+CkGN^mU,q#lF@,EbW/dWhhh<>^?]@%\Bj\mtf.!+9kM
+4JHs[Skj"Jq?7(W6_[Fke9XP1PtRuQC"3!57\s%`<GL'1`FcMNRFc6)q/pSoA$T6RepBiG_/#ImD:\T<
+`oRiA5d#<X`THi?P"M@o>GqW!K>M&9GN`W8&Jr7CDV/c[7jXAA8[6jg_uKf>J\`IipcK`6$AHA@YipI$
+,8,jP,-bgo@P\p^a!7kQr.79[Oi\lSBfr+g.[A1'ZKZbR@ksIs-F7F!ic@/OcR6'`r1XQ%!7<2oC-<c)
+!h`I@[-E'+UJe)A+nVeJ@L!^!=!Z>:oiAt>Z.U\4MTd!`C:2eJ[d/<9Y=&BAXqtleiq!M\_CPB&NM?SG
+]jWV)Cd'%)J!SM8GUg]p#DpRa1:_58@K?FZ5i@`+1`d58KgOa[fQ9;#&W&p8O]\ts0c>s?j,r!dIR,->
+8E>q:1nIPnPtL/$fPgn#0pt_tP?G9LD_@SUkEFTkrddA/;!=&+`?(.%U=/:jg3#TQ5CZYk1N3e0Bi2!5
+l]p2sI_c\nbTdi]onLk.[9DsZb8n<:D7Np>QWplS4(a'!0:1@N<qS_nhCt=%2BNNf`FAA)gibn*Oi_)e
+E@^`hhZ//ATQ!FQ)@m+,_P(qiCcWXLLr?$-8?>uJ(lZJ0EQIKm59Q'/U+ba^<_E@HJ0f6X?j9sjQqM%4
+8Xq,),Fm&WF33eFImB[RW"Xt$erMAUd]%?2D*":cW77hdBr&BD8?,^kFis)t^L2gsVGrI*Ak,:og9#PA
+D7\VDMqP2>H_&kl-^-p"2]M/\s+%oCY]rho)\7bCij!aPDE@Z=aQ0Gtr2s6WR".EZ:cK^9%0qPQ@8OIE
+2B<<a6t0!N"BI)jN(.;")!#E^'9Gaq;E6"g9dc/tAQ$'L[TtPR5Gh8EoP->dQqh9m\`EI45G1hd<&u:f
+AH&%BBXG?^2P!XB<,,<%[,.i(Ut0"_B`1]>?a*XK<]_UnSQ`C(CQt7[*mJW5>]*V)V:P$X]O#MX]B/bb
+J&#H#2X;X>f4i0-0Nbu"2][t#8n3"&9kmIWK>8SU-i=Sb#(sc90W853)\.YA+u(L9;C`N@`Zm4:gi>It
+O2rIE#oo+$-B^\<:[&:n>:u8d-8R*@dVCb1c6kAmgmW:JT?nuC.NK.[7Yabg1oaXZO%uV&.Q&]H;QEiW
+djm1-%<AjKPecSX.ijerB!^2C2QL,hgMXLU/iP;Odd%R37]Y.Agn*n^^Yge*/0*+6L7[?Y336FB$[]nS
+1-$nVf"I<kjrb30'FkEQK0eH-QrG[U%>R=1&K$a-)utmcit7[.DE/Mj5p+Ml9SNEeP=ajKR8g=l/XK,m
+',d%[Bf2AP,`l`a<]_&scf_YR'P_h!U=!TFRT1u.9rCqT'cN?4WE$!!lP5l=DRj&V=6p\A'opC.U"SfK
+M_2*bD7<a;(E8T2drgXTmh_JDmeK_f?Z6i%((U^j]4#[rS5q8[G/m'lR2hMg.@#\:,k(d:$3gN_^u4]1
+-jC7lL;T\Qpl%fm'T0Z"nQ="M2]RjuU[e^"MFSqTae\Ka9WD/FQHQ,r$&m#>1n)[do81]VG<DJCVt:<*
+$AV$DdAZ\p9\(:ZVUMO6.$S&8rhWVponq"/[p6)fWAP%m1/Ci,7P"1j9rcf][`C"")',%!FLp;2pP[8P
+huLGtYP8M9$=S>!gg`9**\/%c`oF8tClLY$Pfi*nq1o.P"Ts?B@*j-d-5?oC6Xe@:KLR7$MFD"%Gf42O
+)idEudJ3p"73dseAC>`kVH#.45en$.KYR[GR*B6lH,SiW!LQMme+s4PKgVS3B[h>s-5/D:;eIologY3F
+W`<faHGrXM2QYMGeb]N)`FGRljn;>9VU]Ij7Og(T*PR):\l12iHc>.?Ha[1[='Pq6c[<T<E7fP--P_QZ
+@r^0!L.<O[_.@RG4N%:#!eJ01Y\6-C'+0H2+gC0X66d,"`?MR#]OEZ8NQ39KkVrW2,*BtmTG]kX;^@FI
+-*lc__IG?hbpKc2]]("_SU`(Dl2:[96D;dTZt_`2Gq,Ug.CAAg6DIGXd]0]h'KuCuQI_\Y3rOZJ@^4T;
+ZT>dodlW1`BQi,f_W,[Ih(H0P^#JX0^#(KPlhsT9'=Ci9i#F#/!K+kV0t?Q+$JAXL@O.=UY!)jcJO&.T
+=>V'2$&(_)OP"Y=+VBQ!ifR?M?83=W7cTW`Qi]PsO\"N\=Yu^I.@!NeP1ark@540Di6jWmhJ#!@:?Rho
+o_sD-Q;-S-=u;Cr8Yo>LPhL7DTi%$$lBPP[MPXIX<pQ%)omX_cYup@Y>;`#"Bsgn)i#?fFiC(*/m[%.c
+hXO6g?KS^9oS2sg_-lbu]Cm$QM8`roON]mI+d'lWiqNAZ;_\9%^n>X;//f$)KYjF%aD<mZ&;\9!ECd07
+0,TYfUN*4(H6`KPaJ<iJ/=Jm+Pf`#p#i'_(*14sIF%NIeD`F94VfTuHqL:c'd&;%Y/K0[@Usc5ab&'23
+6']SX1<Ch;X&tM6.s9#%HG<jlfW9/ZPtk=^XP#1KbAFiJE1u!$<u\9qms)M%WE21;qYu)]i2:c]/=nRL
+_;__Eb\fII++iK[=ZBBq%@DYG+@#o8('b(t5N,GKA2X;rL;2^9k_rOo(Q:gn;7P\14WfbVA5YE5Q;&`k
+8nCo2A@>bsQqV*j3Mb5C2k3WU;n:u_I6XB$BMsYVRLr&c;JB*d-jH">NmV:_#gGts=0,G<<P%:8]jIpB
+U,;`nQB)ie==mRcA[^E5\4<XIH]?VDGJ%7#<sq]bk6&EUE*,4L(;YF"?gQ:s4rYN'aCK<o3F2@sMLiPC
+0H^K2$O27#+V4?Q1)g^Y`$-oaS5LjQMoHtrW8)DT*fnAf1+=3+9.#kF,r2H)Z<JrJbU,+pSC212S'EB;
+WSI&k15+"&1b'LY8H,C1WALV\17M%:e1*=)/J>*bWR`RWWnh^-?B`p4d)nHH^Ljh+/N0Y8Z5mJ2fO2/B
+S^QhI]@(QdHOL/^EJ*+%3%Q*a$\kZXn$i4#M[tigj>&_HSl7/*bN9oXp_42E"bT,"&=?EL)%D?giXm#l
+:+65E7H4uIe8@8eO%84!2tW+\-'Lp^&t)_%=Y5t5jqAVsc=o/*:$31X"R^OPSBpC5)ANa=7AE`E'UVSd
+!D97gl4k5&:8q6o:d?n,AR;oQY?1'+)\g/5=THo%dCBsSa)/:imM?h-c2T#<9rXF^e`JZ0^L-II*#9%k
+Ku7?h(n=VZ`uDDC1(fIn2QM"YjfsmPr!EZ3K#+,LLeK97%#2ZnnHb(G-PVHWU@F&`C,[,ma.r/i"H#\p
+P0'NjM)9f,rg(@]YN]<7B/H(%VXoYgl?>@^`2,5WI(F_oU=#q3MG5Re9W$:4'F??TVc9\HWqD7oC(i:S
+e8+aa*H&o.ZIu>QMbU4$@CFpe(;#RKkB+;kY4mk!lM#\?hllPhIL?C2_Vq`oN(qI,!ldXud>T,=`JVh"
+ZMB:YrWNCU6"&&a6m`WVL-e-:pk2*X!K'8gZ$=3!2&hQGA't)TL.*>M8S$7p7&Es7Q:keml%Bs_reX?]
+dcn^4FZZ0jB@H\\#),F,c(\'#%2tKjU-`I6g4`"m;lWi4eU#1)Pt7b'CXfB/L;dZ.=_uZ97AeUN[TdV"
+qh<&/:PIEge]Y@Pja4^KDqFmk#!m?_@3Lp%`TES?`aa#@r.Ro]&'3jQfmL^=rrRbf+L#NA+qk<;_]c8J
+HpT%f!(A*:BY7@l)NDc^Z0;+;6R%Z7,dM,HU/NP,b9aAP`56">R6r(FBlr?U3h=SEZg%DiK0l9Z+`f\-
+,*OaUdj_ZhI6s],WRWK+C;")_>-6C,[H_TY_d]'9m'^[mU=3kbgEUl'Hs59F\_SmICV1k/GeMuf\*O"p
+#oE[$,.KlH<c%cNj"\(1IR<!J_q?d_Cqa?Ys+*GnOB==\&IF.XiK2]64s:Mp7,j>2Zk*6U!64%Rf^sVY
++d#=2&U?4);(7c&jc\;=^0raa9]hOA[,,d_SPJ@3g%>8p6(q-=PURn"O\([4Bp@=o5+tiQ<9f`PD(;e^
+X&ePOg@]p2@A$Y22CgYVd:p!lm?4LqQJ6Di>jdq_Zl\*qNIYOUHhIC>J\baOn*Dl3hg;G6WE;i;59Z02
+AFc-n[U1`hJ&%^r81YYi#_N+#E6)iV*tX7HU/745qC`VC7:5S/oPQl9ON=5<8M$<+.$VlNEli./?SIkk
+VK5>1g2As<`8SKLm-]<&SC"3V8hCsB8>O\5FNSG1JI\#:C"5hX>-D&0euNr9llr,4Y?7lL9.cUYBXGWk
+E%;+',AOaDY'3O@g@#cb=)IH[kQ^iIRU2aDlc'kSLrA;XGg(%e+-=S'0H!Le8i;c^5N#?t,SggoKL0*D
+\7@K<%u<V_;)k@P/Jj@8@o9bsG!-q/87YP9"I;b0PY,Lb\MS1%09OIj;`UZ)D)[t[B2cA%p.6b7ct,#u
+,o2J1Uf(o+\n*dX07Q>8P0.oJX]MT)CK7t,@\HVN<:!XH*Ho\?Zs%<I]4JDe@"R&a=$%G6m<?3LDcaR4
+pAKKV?uSutVAB[n_;]H:]Oj)C=2X*,f*m+0/XO[H+7LZu&dnnr_BCV3>V[6.JUeq!.%F0]%u\FP0rWlJ
+4!'I(,VgegP"R-casAgB>d@Q[MTd8"l($1;2Ohu>1TB1#HT6LO-.<bQ&rH[];COH&>r%mEVpm1Pg&q0h
+7]Y)g?lIg(&QG`3/2f"!P07IDg+>4`?*`4&Yh!\N.'8*9)nT>C2lkd*qgPqXn1dJqi^JR9i\<Eo?8?G?
+`oJm8/=ocj#d%/N!!j8Frrn$@i=MAU/f>+R6fJ[pPYNYBMacY<R+-"6*KN_O&fDCD8I9l<i6liAQ72p&
+9BHm*PepQ\Rn`&ZRFLYM4eGO6'H.[?<>_.OknKPV%[g%h;sG)9Ptn;YX&\I#Ral;d?(]QH()m^/a^qe]
+m1u0kY1$jh;XKeiQ-SW:]2rkDHe%Q[ID9.S2k1'_$&-9*lLs]W0*R0PA+CKWQ."QTJRZDK!!EW6"G&eq
+n;'af(CZ&9U%&DI8gb=1`M2mYb\B'VNlRpc#n2\],a-9Fnqg&?="KZ\V=P"Pb%EPg6"]_Fbj'C7!)7+u
+$4R>t7&&)-oSQ?m5lRXtkF``Pp3TH4eZ/;"c"a^mUX\50gC9%\A?smip5"]W$#-j&XnN3_b,\@<>3@Z0
+C\m4A^>H-h$k,c$C:iH/n7Yi9"cUI]Z2"fg9.,tHaY=Zh!!3<+JjEd_pd?GD$\gm>d)^l0,nl/)@aTG=
+Ai1Nf7q9sB"GT>iP"B34GsnN0/!`h>;!7JB%5WP8B%'>i&m[Sj:M8/Q"U9ZJU/>URH0"+%8>]="eG=kg
+V,OBoC=(+&lE=Ep=)6@`"bsu[XP%F@4%6$sCURGaf(bN!j^jn]B+UJaT(?p8?Z4Qo"pY<a_I7E2X0'\_
+MhB$QDu>&+-'QJ_EnPa9!!*.P_'#sq49u#rKE*+`k^5]A&rFROZ"UdZ1E)7n,I-J1JjU`EaX"0+4JGb(
+Q-1JZkqi0G.Y^6co4bksF#ol<-aW(9!eWh5d3<X&72D(ZV:-m#l?u!o;O12F[:gRUZWaK_/%+[@JsS3A
+7;R$[]qWt5WS+@2l[?Y1Ek1!Y[qi\:o+JH<0=?_h!s=.ki@qcV"nECc!8f":flfRjP0)f@\SF@.!<7U8
+i/h%[q@Npc6K+$YF?Ui[M+$?c=L;Bh)3%,GOkB;T5p;@]jH<Y&Sgj`*9')5h>bYX]R7ub,=g[%*3Lrq.
+P"7t:)(qUU5VuVL'E^^g:MH'IFZuKrWDr/J>."9-9!).[Q+FAP_-sTNm$:j5T$_8[>4%G%mCljs\5DIp
+>/Y1ED7s9EQeV35!E6PejjG*n#8)g3@e#i<N@O$AK44<'>dduo!.VeWE(DMu%g[j*TlA(h3Zeoh`1h6B
+(]l?-N5hV)=R:>u+HX[?E_.gN:FMIMV/j[o\mI.E`o_>6XO^l@SBe$RamAkR5bQK&F@c&XO%?&HBlUY0
+qO^3Te>dX`X]ho1XOaFpb3aMY8[-jK;(?qh%;)ftX`hm)]&.J:cn'B5D9D<l]\]i9bNrDn9*!!T<g[2/
+rJ8DOZ$=K/<t>hIA$UARY$3Q"J,g]g3#Di/"GB*M:q-?\*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb
+-^757;Rp>H>q(7s@e1E.RMRoQ:1mBpI.htQTMT<$3[GQ$8#0$s<4ZX!SPQ1WkB/h^;Bn#sa(lEYj`\=E
+YZP^B4!bfGB:HoAG$AOdh/Bf.DHAf^-4Bp^h(MjAjnAY&^fP@i*$uI2LW!XRG.K9#*<O1?E`kN%="R.e
+^]4oo*"iV`K>?C6W*D(s%YqtH0drPi.i+&_,;H.PE]Y>'a<WMi*0NrAPKG1,WEc`5/sjd/1F\is&N6-(
+-SThAnp<QmcmU_#*>49"UXCR>Wa.BD:8cSk2(G.pX&c,s+Z4T%Ek>Y]fISp1`FJuiIp+CHX'N$cDR\CF
+<a2(,j*&&k0/orfnf;hB!,skW250ts_r<C1XBm\%NelY'R2Go&.p9pT+:n5]%LE;k6/`BB<%]$tLI:&5
+(mIcE'oPN@&X_'c3?=/Nj"KX2DFFJWJ0bhr8-W3HQV6HRkY.:.24I>'':IA<Gs.cqkS+pM%YZX4!%=)#
+<A'\6Vc2jq)O4's%&;%H[@5W`\QuC?lkUH"?HHcFfW>pY<Nb"l[p/$=CR*2)E4]EE(RrtCq0g"[Aru>U
+%ga\Bi,AC\<\G>Ma'J3PN%P_PLr\WK&-r+?#6]XpT^[b2.MiMJ_kHT+N(PH3MT)=[Ls0Tm$iiemnd,_R
+3@'d0V"0@9W`La;bGFe:N65ciR_tpd)9dt.2P/6moEl$7LI@laW:Yr&.[Nhja^<R*77sIWWn"-BMTomg
+9s3*Knd)?`rEHS\XS.QHWn2'qgT<@ANQO[&Z,#eYqp"F#I(nLAp=l/GSJSq)nCS.E.i4/aj.\Fl`9NVK
+b2or)L]dV["+igHd!.r*'aoa`@F4e&7O8_*7:>$Z`+CkGN5_R>q#lF@,EbW/dWn6X<@aA.A^^C-`]kH3
+9kMjf)u=[]SNirlfp)bq6_[Fke9XP1PtRuGk4JM'fE5'B;ejj/`FcM^Y#fDhqZV_.5_@Z2p1SkDeSD*c
+Xk*B'`oV9Q?#J+1A`g#uZsE.Pr!!B0K>LQa[4i#5$]E#7ES12D7L=C_ATHIO_u]l>J\`J5BKRIP$AHA@
+YipI$,8,jM?dWOD=oAF&7jG;&r."knO@^\e8N`_G.[A1'ZKZbR@ksIs-F7F!ic@/Ob[WDR/HUPkTn"MT
+C-<c)8u9uc[-E'+UJe)A.Pp:J'!ib^emt&UQ!R<rWnAr3CH\E@C:2eJZ^U9u95_;r0"5W0iq%Jr>\L@"
+*Ua)^_;R)XCd"Z-LrJC/\EnZ2fmnc`Ej<iK@K?FZ5i@`+1`d58KgOa[fQ9;#&W&p8O]\ts0c>s?j,r!d
+IR+GD8E>q:1nIPnPtIi-flXr:0pt_tP?G9LEB0RbkEFTki`AF>!,.TG,nL.kIo>4S\+KZn;5mO[Q!1S%
+Z!"20i)FIa$FsTM=R;>X24i30N7$jr)caW2EOf?BQWph+LIe.<BpX2>rrI\e@.97MrZ5!l`FAA)gibjf
+:7l'i\;[k'+TR#-TQ!FQ)@m+,_P(qiCcWXLLr?$-8?>uJ(lZJ0EQIKm59Q'/UiK$X6ie^#b,'.#Cq<t,
+P>%Y<l)`0K31S9lF33eFImB[RW,ro2)NQV:9jcCBD*":cW77hi9!)8_0*'S"Q$VhD^L4:uXEI5fnrYH/
+>-2tkD7\VD[F4$"MlaeUGeDn:GK]CMF"+3kDV.Uarssq(ij!aPCs*3J_IKls9WhSQR".EZ:cK^9%0qPQ
+@8OIE$iplp6t0!n$s"_lM*kcM\E%fr+-9$(;E6"g9dc/tAQ$'L[TtPR9P.3`4CTNM!5p4J\`EI45G1hd
+<&u<@NCTd?-IZX<qOL3V<,,DoV,j^"XB'"6]&e)_.]5M3<]_Unc"FCeD-"/hHJNLu>9Ob$Q.G>H]O#MX
+S"q\6-+I?%;leak%>Vl2EEKdmrfr,*`N,BMVH5@9bWm9>-l`j-#(sc90W853)\.YA+j]AB7K*:F`W.`l
+`,[LGO2rS%.3+LD-BlRu19"Na>:u8d-8R*@dVCb#!+W@."PS2dT?nuC.NK.[7\eB\1jRn4Rnf!lW\l8s
+;QEj!egiVXg^]r_YLk(^=I]._A?K)f2QL,hgMXLCXRR1HlKM!S=DRIHQ,<EI^Yge*/05F0I"PaF1TW2b
+)ihu"1-$dQ.jpY+jrb30'FkEQK0eH-QrG[U%>R=1&K$a-.2@b0it7[.:]VSt8)t9Ggl=rPP=ajKR8g=l
+/XK,m',d%[Bf1Q7B+p][#'hAK5H#7l%,-P,UJ^7iRT1u.9rCqKPH'mCWB6\N.i"N'DRj&V=6p\>>uo'Y
+W_f>73X)D"D7<a;(E8Xbl#hd8i-&nclKs#7?gnmP((S<1_I;sOS5q9\NJZVf(Q<N5.@&(fo+20)$3p]c
+_4]]l9I^heL;T]-(lU?`'T0]`d>5/E2]RjuU[e^"MFSqTae\Ka9WD/FQHQ,r$&m#>1n)PFo81]VG70hY
++4Fs6$AV$DdAZ\p9e)K'U!MZHp_?7_4K?r3eCr/^[p6)fX7co1MT98/ea2fcV,#3M[bIqY$]W<lFJ;qk
+[u8MrpO'^4YO[$FR^%C[iNW*9:+I,QZt#db*#:=XPfi*nq1o.P"Ts?B@*j-d-5?ac6Xe@:KLR7$MFA\.
+Gf42O)idEudJ3p"73dseAC>`kVH#.494cQIKI-RQNl>VZH,SDo1OhsYP8XT/KgVS3B[h>s-C%6$;ea\e
+bsj3ZW`<faHGsL(>HV%Ce=)AG`FH2VCt<r%VU\qN6XoZa?,kuI\m94*Hc1BfH\^HrfDGgX"bXZ`XqA;.
+-?"UX@r^0!L#Wo3SB*(FI#J++!eJ01Y\6-C'+0H2+gC0X66d,"`?MR#]OEZ8NQ39Kkkp$",*Btk5RBQI
+;_"'U-*i@Y_IG?hbpKc2]]*unS^/[il22#s/tc&iZt_`JP=h\#.CA@t$<n-m<@RTU]je<OXk,)2kY4qQ
+'r]8?2JXTK^M:12/[jtn_OY+i>iBm/[A*8=Z<V=Wli$tgJrF%*\7o1dmrYSUnQ7o&6R.c9jXW<9<LNmg
+!'oJ(=>Tpg$&(_)OP"Y=')m_U@W;[\?83=W7cTW`oR9(LO\"Pr=Yu^I.@!NeP1ark@53d.VNY/IhJkQH
+:?Rhoo_sD-Thss;=^VGr1o*C0oP/M4Ti%dglBPP\??[$374WBSe=(/]Yup7uM`%*RBsh.3QJ6O#a`4jr
+i3rNjhXPm)?Kp'7p&;pX_-lc">W*Z9M4%JFGRP'4+d'lWnsNai?PrhDJ3XZ:/,g%bKYjF%aD<mZ&;\9!
+ECd070,TYfUN+BAH9WO6aJ<iJ/=K?_PffhCa@$eN0S;b8dn+B0D`F94VfTuHqL:bo9cqk'/K,EmLJ2E(
+b&'$c8Yae8F\8c>Y?7mWX*)M.3ko(,djqk"/S:bi[+_X*MF?#=@^t3p(;$^&ms)M%YBS1Vro\fuhlq?!
+/fP=W`8\!<XDU*AON?LgE]dr40:78Si(uBY((CM%6=E^#A2YG=LdY]L32BS,'7WJ\n[RY'4WfbR^_/XQ
+Q;&`k8n=)&A@>bsQqV*j3Mb5C2k3WU;n:u_6Rna*BMti&(6(h[;JB+AAMuhAW)RLglD7O`=0,G<<P%:8
+]h+@eCfMu3Ia)N4>&@<PA[^DMZ2cKN4/LNqGJ%7#;7hhUrI;UjE*,4J_W-E6iGhdEbPN*:aCK<mbXPWe
+PKZ96n0f7h$O27#+@$3;1)g^Y`$-oaS5LjQMoHtrW8)DT*fnAf1+=3+9.#kF,r2G*#$VptbU,+pSC212
+S'EB;WSI&k5+g1M1:eJ=MajJ`je*M\17M%:a/CjFSPlLhX4AdYWha*h:p8M&2Cff2b@[O#m5D"NZJ09+
+_!LeGS^JTPY?c'*X5$n;I_Xep3%Q$fq1cfH0fZ7>QO/\mj>&_EXtqSoUY[*n#S[aT"bT,"&=?EL)%D?g
+iXm#l:+6;G`Sp:\e5eRMO%87D)&/*&-'Lp^&t)_%=Y5iWV@WFnc=o#&:$31XeF%TFT24Yb)ANa=7AE`E
+'Ui"l%2T#fWYHG;:)Qg,6>G%seS_ksV:Y&L)\nCTA[>P+'1o:Z]5>#]mM?h-cKPG4_(?ImeaE6]^L-5l
+>S[hVKu7?d\-uCk)3)[HkLb`Z:0VqbAb-H5":>A:JH0*I=@`Jm%#2ZnnHb(G-PVHWU@F&`C,[,ma.r23
+%#ROoKh8*2M+jpN/=+JUo*LAuB/H(%VXoYgl?>@^b$hXA%17kYU=#q3MG1/_!Mr_ooa6Wb+TAC_.eS\D
+C:@HNf;nS#*AXI%ZIu>QMbU5'0X+c`pBuu'kB)bb?dT6mlM#\?hlle]FcNAB_Vq`oN(tGsN5jn_q$`4s
+'pQl&ZMB:YrWNCU6"&&I"==ikL-gDEphWDG'8f4fd<NTA2&hQDiSYPp689RBa^ihF7&Es7Q:kf9fK@/b
+1R_$Mds8moFZZ0jB@H\\#),F5_dnr,74+9mVF7BTg4`"m;lW:Nn]2_O[9Ke8CXW'mI`5g&=_h"5-)T4.
+[TdV"qh<%HB"D8cf6bL!oglW#DqFmk#6faP87WOL7OJq/`a`dd9SQ%`PKI9QfmL^<!<Rhg+L#NA#QkEe
+6Qr\tHpT%jM8^[DBY7e1(k9RNZ0;+;6R%Z7,dM,HU/NP,b9aIYI)9AKREFPgBtWGH3h=/s5T-s*Gs\4P
+.(!_OnnC^mdj_ZhI6s],WP@[4C;"(r6*/%@FisZ7_d\MD@J*8VU=3kbgE]S\ICA0V\_SmD4#Pa`HG/2h
+ZV/:7"+n'fn?;0trsOY%h67a?IR>?CQt*FICqa?Ys+*GnOB==\&IF.XiK2]64s:Mp7,YidZsGI&MFQWg
+f^sVY+d#=VP$$LO:]Q\Ojc\;=^0raa9]hO@A>V.@SPJ@3g%>7_3/g12e63"sOZfGRWAN=O4s`ORe1-_e
+[9dQFNE.Qpg@]p2@'*%o<]^b^d:p!lm?YpQ[c)5:8T"2`[GLG!Sm?89g\'_)J&,O^Qrp3j%>i%tYo(,s
+59X@QjDpYk2GYn)J&%^r81YYi#_^'gE6)iV*tX7HU2``*=t^_O`P<),m!:Z1ON=5<8M$<+.$VlHnbHi"
+="p#cVK5>1g2As@bG4Pegj4$,T[9WZ8hCsB8>O)bdFqS]T2;K2.?Y%'>-D&0euJC7I;Zf-YgdHs.kR49
+BXG`pQE+l6hZUAm/pBsjg/E%(hQM)Ac1:mb^tgZr/1qinKYufSGfj%0'91)oZ?]%h6S"OS5N#?t,Sggo
+KL0*D\7@K<%KJn+;)jLu/Jj@8@o9bsG!-q/87YUY,aM.PJ]/p##t24-0:5FF;`UYN<th%JB2cA%p3f/u
+:aYdk%2OpnUf&U\.SVgl:T.6-;bC:qVcTs#CJ_UDZF=2F=DV"u*HoP;Zs%%lCK7h!Dn&]FZYEdcm<?3L
+DcHUFmeqX:hf'Dp-5P'^_d[UabXO6+O2t;*\K%JI%?nt#+7LZu&dnnr_BCV3>V[6.LVtAk.%F0c(5p0W
+0lR894!'DOUbXA=P"R-casAg@r-hfLQ-:R2.@eh%2Ohu=dcgVkHTn(K-o6/(HA+h`dO@#Q>r!-_NkjoM
+$>i\A<iae%26*KF?X'_d/2Xs*MT]V<g+>!o-*#^;\&GJ9$_>`3G+@?jpT**so6e=20K4@P$O_]]@5.JX
+?8@Ru`oJm0XF<emQHR@B!!j8K#m,Umi38:G*Z5EB6fJ[pPYNYBMacY<R+-"6*KN_O&fDCD8L9QljV!t\
+EYSbCbN9HUPg3u#RnI.QC"2Qr4eGO6'H,uk#=>1_knKRcL5?,2e*7YdPtn;KVS_W+Ral;V=0>Wk()n!K
+B3qlHm1u0C2UuZR>OE4629+m']0\*9He%Q[I>ltLGO-(U$&-8bYW.#2/o-<`A+CKThE*$Kb=Ak"#Q+o6
+"G4I_n;'af(CZ&9U%&DI8gb=1`M2mYb\B'VNlReX#n2\]+cja@nqg&?="KZT,a/32\n<jgc)1)hbj'Ba
+R)p_?$4R>t7#fNgFBVBgQV=:*V\FCk5,VA[eYfemQ!Uq)Y1K`Fb0=Z#@^'":p5;YFf.OA`/b]X30&:QZ
+h6-L.[F4Yo^=MasljaC.IDB8Fpk\&O'9'rkVjP,G9.(FpjYHXf"9&H+JjEekGXNkn$\h#Wd.fR%,nl/(
+U(MXgAi1Nf7q9sB"GT>iOMtbG#pcBJ/!`h>deSR9AM]ZEiikGM;JA4a:M8/Q"U9ZJU/>>TR%5.\9;YX%
+du$PfT2VaiC=RXK?DCE"f5&q5okqTUZ<;"pH!Q<TCURGUQE,/Jj`A"/DAQNrk1=gj?Z4Qo"nMbI_G[U?
+>Xg(U=L_f0Gl3:d,uhoqo%A8@!!*.P_&uPK4<bFGKu5(<k^5]A&rFROZ"UdZ1E)7n,I-J1JjU`B_.92F
+*26@]Q-1JZl$U?B"di"2ZY@)3F#ol<-8R%ip4G]*d3u8Fr;qsNV:-m#l?sS5#,kNO[;*?hV'i?G/%+[@
+JnnPofdsRG`K&8Z[G*:@HV=@sDRnRU[qi[#j`nJr/,-+4!s=.d?gr;V4UVXR`T&\^R[-#[P,%(nH#13(
+!<7U8i/h%t*Y&1(6K+$)6p;b+M+$?c=L;Bh)3%,GOkB;T5oGEu^_.MASl$r%9')5hFM;0<PY!%).C@rO
+3Lrq-dn"$?JO,u+k`f7.*X=l_dV2T_76[DBWDr/J>-u/9:92t3Q.kjGZX9t>m$:j4HGaC'>4%Kr9t'##
+\QnEcqk`0>>J"3[QeV34&UV<$n<A;9(D2MC<H.`GG!8ocaCOk0=`qJ*!.VeWE(DMu%g[j*TlA(h3Zeoh
+`1h6BXBI7oN5hW4aR"4;+HXH*&kOXC8KsDAV/j[o\mI.Tb^^?5XP.SPSBe$Rah5np4eU0#F@n)nIjUpg
+WH?:"3hJd88SSu4X]h]%PZ@$lb3aMi/?I)I(/$6J>@OqmX`hm)0%4^JgobTXL!oF7]\]@VCUNU1JAC*I
+E]VJZ%u?idYrKsF3d#nljK`cQN`.TuJ3Vsg3$]7K#D>EP:q1$o*=mrlJ.Xc:<[SK<7Uo<*jE<[.O@Wn[
+3>>Xj!0Trc;Rp>H>q_R=AlC^3Sh2dh:1mM9jRtr!MU/5#3[GQ$8#/gl&P>bUSPQ1[.<0Zn<ioH)<bkP^
+S.;GFXk7Gj4!g3;AZseS<kDnBdquU"DHAjc^?KjS>qX`ujnAY&NSa.A4=&5VKu@G?<Lc6+*KQKGEZ%!:
+<`tU/5TfJD*"iV`K>JccW*D(s%YqtH0drPi+omP@,;FGEE]Y>'a<WMi*0NrAPKG1,W&/6m!.i=g;Rr=G
+CGq[--SqaWnp<QX9OfmT*>49"UW@+'MFB:i:8cSk1V-P'V,jYJ.ks)\^9q:NfISp0rGoqjZe?Yt>>;EX
+DR\+IG70tilN4V&Y;`N<neZPbi%R"RrX0*g_q6SD9L^fWNlT_UGmp9BJQ0eS+:n5]%LE;k6/`BB<%]$t
+LI:&5(mIcE'o%5`&X_'W/KKmBj:W=EN_(O\8`B3M:]aKGQV6HS)3iE\24I>%EOiaMGs.cqk*)1_!f9@@
+;<\d`<.]fAV9*)p)O3Lc<NB&.Q"nie\QuC>lOqA=Nlbk/fPK-.<Nb"lK\@PM$['bZFh:rJ&3H0>q0f^.
+n(8Tq%gdd'@IY&52CBB%a'\-Lr03ABK>lpC&-r+?#6]XpT^[b2.MiMJ_kHT+N(PH3MT!:BLs0Tg(66G1
+n0djc5pVW8V"0@9WXg&7J0f7CN65ciRa%`$M9MPs)kBd&oEl$7LBa>>W0E06.[Ni+e"TfTbRUBfVq%g?
+MTonF>ctlBP5=j/a(2)M/@LI2Wn2']eLe6<NQO=q\_XF_Mp2=hHG8:9\'+aY#DBhLE4Cj$$P/-7j0A6h
+Aj[r1P%:l/L]dV["+igHd!.r*'aoa`@F4e&7O8_*7:Dhp`+CkDJ]?`c#df=T,EbW/dWn6X<@aA.A^^C-
+`_dh;bbij7`9)2(RnY,+aor!'6_[Fke9U[uO$\=pBls3*7Lr(N<3"Jp`FcM^PuT(Eb6<Vl9n-9@2=!,s
+eSDTt@^_2;`oV9)gb+q?`THhP]3asXqi1=NK>M&9dFtHAPD@.fES12D$R(_V9Cc4j_u]l>J\`J5BKRIP
+$AHA@YipI$,8,jP,-_[^@P\p]7AI-NoR]4MOi\lSBfr+g'ogB:&ug8q@ksIs-F7F!ic>No`og:br;qNm
+Io'b+aOM&i8u9uc[-E%QNu=lfW,Of*;R9Q/_!4e>jatBZZ.UZcl#i<@C:2SCp<.m$j)V]ID9sf@ddqdu
+h_2J(m<\ea_;;@49Kj[7MLXTg1<a&k`Jqt#1:_1t:&t<F5i@`+1`d58KgOa[fQ9;#&W&p8OSABR"osWP
+j)J2nINKPl7q<681nIPnPtL/$flXr:0pbGlF"+I/CH%eZkEFTcdR??n;!=-I2'.lOM,5F]Wc^M!;5m$!
+OfFsYZ!"20l]GAQ=p875=)=1,24i30[7G*,]61jH0X4l#QWplSQ#jFkY8>s4o)4-U@.9>l"r@k@Yt6N,
+HqlmLOgsGN;0VXg.0+k5TQ!Euq@<a__P(qiCcWXLLr?$-8?>uJ(l//:EQIKa1E_e#UiK$XRSP>rb,'.#
+Ckb),!)'218Z^Wa31Rs"1$R3aImB[RW,tW_@X/uFdNaukD*":cW77hi8pr<V<NOcPFi^+[AR2OmXEI5f
+ZG0:i^S-qgKppn<PM.WJ9<Hq:FLg6]Ft7D"_g9%)Y]rhmRfcj/;K1:3INoenaQ0Olr17+G5_&hW:cK^,
+rs+3D@8OIE2B<<a6t0"QUfK&`N(.;S\E%fr+-9$(;@"h<!=4lTA9,4k[Tt),9OkCFoY)h4Oj5<$RFHP0
+4.oD`;>EluLI\.<BiMZS\r-Zfe7`pu<Dm`jK@Qu#lG[W_>-D%;FSI_N+_7rOm+/d[[R4`;:@&c8(!^l+
+Ls7R'\aAeaI_&?.(`Xk<R;'TJ0R.DE_XT1kj70ZBV'?dr`'=;6-l`j!#(sc90W853)\.YA+u(L9;C`N@
+`Zm4:1_MkPNQ<A#.3(AH-B^hDcfmj'2(F\\jfl:Sb%inm8#+OYh"#eUT?nuBC!:aS7\eB\1[1_cRnfa+
++L0(J$D1A"eg6R%X_tIOXN`9'q]%f!<O,d[2QL*NbQ,(V/TrY(WonK%gT;7Wh%oI.^X@$[$m$%FG,O<g
+\#VD;)if[11,UQ,$Qk\A@UK`A'FkEQK0eH-QrG[U%>R=1&K$a-.2)\Mit7Zk<]LYL8)t:"b]ZQ(P=ajK
+R8g=,,)f/A',d%[BafJciA5]M8p*"DcY(`G'Zs]#U!`*=RT1u.-DH#>[2P<*WE$!!k]HS?C9_'-e)g('
+$oU9MZWA:C#n:e&D3)YH<aZBJkm!eFmP]Dlb23fB8DtA3rHehRZsdqkS5q76LW3im(L%Um$%fqRj:DRo
+$3p]c^u*Lp1^jBnL;T_SW/O=j'ECOqnJJ>o0cZ4oU[e^"MDYm+8Ye+59WBNhQHQ,r$&m#>1n)DFF(rk`
+>:YHEVpXbI@M&O!:nX$+9dg*;Ro60RaSca:5_%0)F\&n-[p,WZ/+s>[MT6C3frDJO<I3,1[a8Sa3F,qp
+B=c82(Md<fpO&@bXjGd0#4ibIiNW*99G[Yc`mu^2q_gp-Ju?k6e;+))!<7X8T[64t-3Xd36Xe>$9I^/G
+MF6CN(rU#D)idEudJ3p"3>R??UsaNVVH#.494cQIKZ7RWP!\;PH,S-H4.XUYPK;Msr?n5VU4=.5Q;'r+
+;<Ke4KglY>JlO:#HGlNu+d,[#O=AE-QXH'/jn:)#H<FpB>+bN3*@eH+SC-a9Rrr?95+^X"fDGgX"bX/=
+E0tp`P!)jL`%<Zi?'89HNFa_elb!8u!eJ01Y[@SX#7(;qTs3a.66d,"`?MQh>[fK)NPOH!k^6u0,*Btm
+;9:qp;_"'U-*lc__?D6=b\"1pgkII,N^D]'88NU(reXE_;u+ou=$`HVAQ+sJ/diqb<+#9#D-h-aXhj.B
+b5Hq0@^4<-G&'5.a\8\fXg[I_?F)/ldGgF;XJY(m!8fFaX*t-Q0!edL(i);C'8jch.TPhQ6BQS\e)h>a
+SDF5GJO&,^=>V'2",0"6&D2(C#nMk\i@r?K?83=W7cTW`PV,3$O%A>p=Yu^I.@!NeP1aqt6OT7)k)u[%
+H9jE@c=!u(Zs"gUTgU:@H1[tYs.dl=PhAIE'h"ukWRY1ZAsXEt:nQ,bj>I6MN``"*R&-618Wm7.Q)ZAZ
+\S[qmj1lVA0'-ZU:[43loj4PC^YnUK>W*Z9@)1cAP_kWneIT=H/U/[-:EKRd^n>X;)u:'I!(*Au=8X*;
+%>;Tm:p:'l0+EfWi'8.G@QtusaJ<iJ/=J"+MTOf'M);):0UU(]'"P*tD`F94VfTuHen5bj:oJEugoaR'
+Ndt[TBg!XD%&2*ZYkZ1,5?388?hJ_eC3*[_94YIL-(<-_TNWpjbAFiJ+eW)CG,oK2iHW#[lLap9I\BJf
+f&DoE/]Rqr_8YlPXDU)81UgXFF#m>@+..RCi(uBY((CM%6=E^#A2YG=LdXK?32BS&&WB1h;7P[6.34+4
+j0.\mH7pCr8>@nI"E%3MP!>Y'pdE,!2k3WNZH6YBI6XB$BN.#=(6&Qj7B#jiA/].bRmQ;EHAiJ>0rMm'
+Z>".+908?TCGFP4rl7a?>&)QT<O0qc\54`a\P7f5DmEZB^`2>Ql!gJYY7eIt6GH(.bV8`mILbgt\E%O.
+lL%:sQcq]:n0f7h$O27#+Y]j"1)g^Y`#q;NS5LjNLrLYoW8)D,('$j4nOVGq6NrXk,P#N4?6^kLbN71)
+,fWnDS'E;LppB/m4.jkJ1b&Y%MajJi.5\#h#+&)Sb+l:FACdXgWm'G[)VjJW%B.;tco:W\4^"ael1V.e
+$J01)gb(G+*Ra7sUJUA[X5*P!A:I9)0`&_>R5qC"@hpSd$Mf_&?>-faSl3CcbN9oXp_42E"bT,"&=?EL
+)%D,s+qYZV66-f!7H4uIe/fhCIn/M'0Ec8\'Ttgo;-<_l#:khSV=7&]Sc:F5:$31Wgko#kT24Yb)ANa=
+7AE;LOZGWXR0f?SkHkSDegE8P8Z<G\APOs\W^u'U)JtMV:8H*MoueqiMe\4*X*(AkH3OD^7P5>^Q"Iin
+R,&p0Rsj_b&t2Im<m4PVdtG^#neiF5:4nP?jYIGQr!EZ3JcHq_=A11\$A3jPOU)X^,8>mL+tr0(%OW!O
+_./U1"E#4rONA[9q(-gs)1P9?o*LAu'.96k-?3b,l?>@^c_g;k%17kYU=#q3M1k_h9W#]Q<#UFYD_7Eu
+Wm[==G,7N\95.;(NJ:qJQdonolV0:(C:;m!pBusmIrr9XXV33rb4fhXhIO'?-!j@uN7hYWH(H?!Mi-Da
+ptOq(-PX6]1%b5@!X/[X6"&&a6m`WOJ&>^Apk2*_'8f4fd<NTA2&hQGA't)TL)UL#8>O[Z7!\_]Lr#oC
+ktFhW0o/HZdlBhTs#,j3VN:QFelb53;.K/h2("S]VGh3YqLhb/;6!RY19)>r"[AAAl`j$gnmu$c<U*UV
+4aom&!8D7sqh.#.>(p4!eB9^Mo4bR"CfTffk5u[:a=sl84F7_R[X`@;S:09@MM:-^fmL^=rrRbf+L#NA
++qk<;_]c8JHnYR6M8^Z9#eXV&)ND[EZ,lhhr?@*>+OWf&;un:u8`?u-*2Z(IQpmj8=^9s-3h&`NONA14
+'0W&:.'Xm(+t#n]dAXC_I6s],WRW7.g9"h.0<E!*Du#>!JO5jJXHJJuQG!g:6`a4bS[ob[RS'WIBjG'6
+HG/2hYmP@N"+n?Yml0Ss+phS[9<B"$I0/(Aa]Ru;S7X)Js+*GnOB==\&IF.XiK2]"![//46m9p%S6dof
+NCMrj\?(-F+d#=VP$'W5;(71=AQ%3'^)n#R6tR!eUcJB6ONlplM9G`)4I=Em'<1@?OTLhHBp@=o5+tiQ
+8h"mD[2+<9U/`O<R(TT6;Q\A[nTk';_cO6EWjQ&:^1m\Z=QS+ZZr1[]KjLQ5>Ju!g!/e^4dgP5t%ss+;
+J20f1-4P[=AE)"\VI)%XJ&%^r81YYi#_^'gE6)iV*tX7HTn!EM=t^VI`hROplq/r3LVKX(aW((>(5L%B
+crgLW&MAd[i:@db>"o3hbNErgm*\0:O3f:s8hCsB8<D/sFNSG]T2:Qql8;0*euJnD95$+0bR/=kX[2:a
+q\1C%4fd-]oVlDrf5QPqmPde@g@&=ChQM.G1`FJ=Mu[g?qo0Q=Dm`e#p#q,G[r&0UE`jAG>:joH5N#?t
+,Ra\YKL0*D\7@K<%u<R1YrJO[/Jj@8@o9bsG!-q/87YUXbXP/OPY,Ghl"%4S&s1<`;0YLS.l*SaB![j=
+mWh$i9]X\A,o2J1Uf(o+WZ<^_8=rXl1.n'7ED2#6ht:*B?F=.=6m1&2"d[%4X]Hf,WMO4Y$B\OC[d"=E
+2dVR%0)#`2p4#fO?uT41-5Q2`_d[Lk#b8IbNh0OLPO+"Cks`]Z!"^OU&dnnq5_'Dj1aWkDK#=;P.%F0c
+(5p0W0rSV@3s1(!UbK=NP"R-casAgAr,,^kQcpd4.@eh%2N#Xho;UN^4Zo6-,&nHIqB\L\aC!FH%0@8/
+OiLpQRS>u,194@>25gB7[pH8j/2en=Y01F`g*tNC7?6,?T$o97We<9sF,X-Pe;4mjo6n.'n2Mi(G3*GU
+i[hT%?8EO\Z<K'Z.tuP\!R'An&,6hK#mGrIi*Zgi+rLiF5N,HN"?n7LK1'1rQkX!e*KN_O&f=#/8K<ja
+jV!t\Y$!?C9BHl_/='d'Rn+gQg!"nZ"b0>,1.f-=(IOk6U%?tq/t!EAd%b^Yh);64JlJaKW[t`Z8Zg8f
+&aB2hZ"8Pii-'t=IOeQ`>+ueRc#tUVX'Oad=InIIID9.Y'jK5o$$3XOY0cLb\d=52?KO.-V-a`:alM[T
+#Q+o6"G4I_n;'af(CZ&9U#6388gb=1`M2mYb\B'VNlRpc#n2\],a-9Fnqg%p+"W`$V=OsLY%%V8c(U7J
+9]d-QQ:WDVl3t7:1n@75PZgd2QO9M:WV$UX8uGXgeYEjd$s&d$Y1K`D=m[%,A"5r#E]>o[r<'I]/=$YY
+K'.6egZnNkc0G%N^>Gq,C^pe^Eh?M(E%ETpM+kldn^re\"uh^fjg+]<"9&H+JjEekGXNkn$\h#Wd.e.R
+,nl/(U(MXgAi1N_`8crhoR87iNl>MuR1,Z$rg#h1E`f-;AM]cKUiQ6hhIAF7:L`n8o_JkTS&sbJauh^`
+5aYGZPith.CIG0tW)>Ze/-B+U:oi.B<E;\!Z<;"pHUXg^@B/&Ke`uP9$ZW_rWcr4N!pKZtc7b>p"leWr
+VqA6+Hq#IuMoK7Hf_gIo-'QJ_Ek"f]!WN4N5p0!;4<a\(Ku5(<kY+;f%#DaY^^)c#.2[cYU/B"uDD)TR
+5GSjY,ao;\Q,hu@fUTN[/XXd0ZY@(`=ZW,"-aW(9!eWh5d3uA:4X-(^Sq(O^b&f8)!MRdg[;*BaZP8cr
+UG+1jG%W8,81^%+rJJp5ZeI(?l[11KEk1!Y[qi\:o6S*uDAVX;[_ZO1i$DEo/:)_G[FVUMN.++@436M=
+\SSuh!<7U8i/h%t*YA^46K+"["?mt@LVmS`=L;Bh)2^g,:tXiP"WrXjJ.`.;MG5=P`T32MFM;0<ONA\C
+l(gd[3Lrq.O@a8[=#uR8k4DgT$A/P4;WcD0/M6oTTu*c!RY3#c=JX8YQ._E@[pH=Am$:j5T$\U`>&BJ7
+bn@j.\4(9(g:S3e(q[WQ1HKZYs*^MAD7E]m`t=0I@e#i@G!@.4a^jt1>dduo!.VeWE(DMu%g[j*TlA(h
++oMt-7%`BCXBHtQMo2;e8?>ED%#@-COsj"-9,NLX,qqlsJls)o9H`p%SD%m@L<HK9amAkR5bQK&F@n,'
+O%?(pWH?:"3hK6?:24oDX]dq1NRh]!M3MIb-EYhb'+%s-Y@t;sVUZSM#2a:-gobioXkN5g\Q\HGb8lHV
+B>.blYr\,e#Ah060mLfW#9/cGjKa&)XfdADJ3Vsg3$]7K#D>EP:q0m7*=R`hT@#V<2usVD`M1^mS,+'7
+N(@AS\J1>[)N2FAZ2%'7=!j;.AlC[JU2;KOasN=_jS"!6Qc(6!=X<tM7>t+mdgB%QK-uu5kjf#h%]*!f
+;el!:jVi1YY1RPk4!g3;B:`2j<f:M^f06[e+E[B1`gKf/h4OGAKj'1T[btb@X<n_mLW!YA=M/6)*KS9P
+E`kN%<c`l:5TfJD*"iV`K>J`r#[B+u#):$gON<qE,8,mLT@'UE67i.sa.tI>*#9q&P""I&LdZhr/sjd/
+&o!laCGq[--SqaWnp<QmcmU_#*>49"S\X8]l&@Hf:8c7rYj&6HV&YFYktmhV3k6cC6E:h/*KnTXJ^NjC
+X'N$cDR\CR2_!:KlZTVdXV"4>DT.!Ud]=0Fglh7`_dDpmq8Op(NlU393@o&(-^M&I+:n5]%LE;g6/Z,V
+<#->\KYjGq(mIcE&r/p9&XWD^2'%`HA.f`LH:]EH8`^SP`/"F)ONOF6)3iE\,_Nk*Oi]HFCBU5#-hH#F
+#%p>s6KHU@*=?(AJQ&P5)O4&:/?2_9'q3Zj\QuC=X4A36/u)7&=eJ]>4LRHiWECG=MQJ'WC8]l==./H-
+I4W-?n/*,;lNr9_@I8(D7P:lbQV$_o=G>Hj4N^:%0F.L_#6]XpT^[a[!Z)/t^nG-A)u:olL;Y:@Ls0Tm
+*0.ho&d\tm7jO8>V"0@9W`K^mbGFe:N65ciR`M>3.$RV44J'lpOa,sl2a`R%@1bHk)Atl=9'+OuNCp)h
+RRcMjMTonF8#fXkp'V=e0ikR4XRh>:?6a-5g9%`oAJ1Or\(iV.$(^)MI(nLAnuFAF#7e@PA/KST-OhWH
+;som,gfkqTb/*RL-j0GP"+igHd!.r*'aoa`@F4d'![SD87">h]oO\aPMF8\O=IaP'*f3?ndPs?m9c];;
++7X&]\cjFJ871qt'ZO]GSkj"GafPb#5GD"ge9XP1PtRuG-r[-_7\p6d:?IaSAR[)JW`Gecb,k<S.BcW#
+FZW"jT.l!"D:*-<#1mq-?#J8@:$2+q^/8dWg]SD=19oI_ZT-Kn%gp.oZ*>0!-In$5A?kXj]E/$6J\`J5
+BKRIP$AHA@YV62H,8,f"U9SCE@P\p^a!7kQr&uJPOi\lSBfr+e$'e%-ZKZbR<tp`\VR%BJ@Nuh\^S'&S
+]`(,XTZh)VC-7)N#F*[d[-E&PO]&1/.^a"bT!)>"c0-t*%-"g*UK=>?Wr*4!%CJiGQ7I?oQ#O:i0"5W0
+C?9]R`GO"k*6oL:J&nIZ*'I@$D2H<;()uC&/P<]eEja[2%KQKZ5N%W*1`d2.KgHrEGZ6d+%>dL3nMk=k
+r=t5[j,qtFC-<Pu877T?Zsk=.P!u)V\Lb0j0pt_tP?D/!E=n[8kEFTkrddA/;!=*7bef90V+Dt1ksRG!
+-\561dch2"HWZ<Y+LM!HlBbqa5NqVD]p9?5[9>/JgNBgBEOf?BQ7Hh'nL:8$/(*YC3itug__?7\"E#qt
+NaHN<)It?90uDdc(OW)e0`Z^=TQ!FQ)@m+,_P(qi5QW#=Lr?$-8?>uJ(lLah;4--b59Q'/UiK"*6;%B0
+8thDn"L_/2QcGt%#in0b31S9lEsV,M1I.V[W,m7G)NRFbd]%8DoeN.9P/Q:$3fF\NrgHT^[CRqr<t:'^
+CK5.%7\+.ug9#PAD7X!i\(mjh8o8lA>b8m7'oD&']+M=#Y'<MY3miZ"a6trp"mZ8F_8rhRXJSAdI=OQ?
+:cK^9"9=*@Thr6U+rgT;6t0!f9HG\sN(.;S\E%fr+,*-/;$dAk9dc/tAQ$'L[TtPR5icoVN7MhrO\R+j
+k]FC_+Ipe*Ok=aON>SETUpKm12Ou"Zdj]DXV,j^"W`/4`]&e+K%BA%H;*#\oV&H\bD)$rRT%ajMfqS,,
+jR,*OMb,ID]-V(bJ&#H/<K&7@%<7,/+I-aY2S3n';;tQFKJ+htbJ54h-l<!n","H60W5["!<[g>+`Sp#
+;C`N@`Zm4:gfbX<O2iE+q&GPj-BlRtdMZ;q>:u8d-8R*@:/a!=c6k>L*"i]AN5K9aab9q'6]P%,oVu/6
+D+pkW.Q&]H;QCG.<N@p%/AAYFY>HPYqZUkc18NL'2;(Ck:MRAlm?)`aY!!DR5HV@b:#`?g\)-?#psoXP
+KpPE7(oh.W(QQPs1-$n'9.PIS;d]S2'FFdCK0c-VQolu+$\q+/&9r"\.2%3J,-cCB<[e]B73O>JjEa$:
+P=ajKR8bq!/X=@fZPf"QBf2;Ok7a95mWgsf:ZrI,"V-A$Th/hD\Kp`5%]-r)YmPmDV\trFWAD,f659[&
+_s;DK'bZR;ZWZZ2RoI7AD7<a31YXLal#i?FBD7;e@XWR#?R7S![LW[bX3WC8S5dfBNQ5Q"(<gA\.:^K[
+YL!OP$3p]c_*AQf9I^VYL;9K*(lUL''S4-:&Qg;b1E;FqU[e^"MB*LmaQ2oK9WD/FQHQ,r$&m"Y-&#%T
+o8-En:F;<%@W1N?L4:kIbc$]i7-9h0K2#t)qKt&f<3"%iEN59rF'=aQ/%,`&(;j[g:ae5(>j?*?W)]to
+#lSr,FLp;2pP[9W[<fR.BJ8R-!blAV7rYtrA.&VkZUcbeO9RHhOhYJ#pW*I9"Ts?B@*j-X!Yl)t6U3@#
+Cdo]aM?"e3Gf42O)idEudJ3p"73dse@51lkRT1l#5Gc^d>T-HSOA+YrfShop1RLn7e+cnnK*@o8?ukH&
+C6:ZP7Hh%FAO`L;SlG"*HGsL(>G=_;<;Qh;Y>q`.Ct0I668(m:dk*EPe8!qRPYpQ4RU)NXH]m&3G5,'e
+!AV;sE7fP,9)XUd=lM>U*8Wo5Jm3"ir+lE6!eJ01Y\6-C'+0H2+[?<\66d"q`?MR#]OEZ8NQ39Kkkp$"
+,)SdaTEuU4;^di&+oiL.[NQTWbp'JcN7r22PK>!=n-n`1%@9a9EiM8H0fO[3kqq[R63dFge7uC+]J?A`
+PZFaUfG/k?@^4Ht[S&cXdqZ;ECt?dXNl,hDgobUreV<C5[9KXF)u]p5K#-CmF'L=B'4@h203G<)6J$Y,
+jYF+m#%@Q4JO&.T:]p\/$&(_)OP"Y%%0hU+ifR?M?83=W7cBEloHl^EIn(cH=U^Tn)O&<TP1ark@53PU
+@'XJDVJ/&]:?PP)o_sD-Thsj7asA*k8Yo>LPhL7DRms>UlBPP\?DBT`<o]@SjDMY<N7_rI>:iGHBX:n0
+QIl(u)fW#UjgQ^ng>.%f>&.3Op&>&D^/&]L]>Z!*D8bCQPWMlWH'-37n[Vo3`ub;2^n>X;//f$)KYjF%
+aD<U0&;NZJECd070*I(qUCkT6H3Y@L_k]%:/=IsePffhCR68&f0UU(]E7ndUD`F90^ba)3dM"[-cffIC
+/K0[@Usc5a\d/A&:8l[?eB4msY?7GoCGj76P-\MJ=DO2seW+!LY1fT!lWq*ZE4FJ9[k"T7LM;\'DHFH`
+_W_$8?a+cK/L('c`*oong_M[fON>slfds9j'eY#$TMP>.((CM%6=E^#A2YG=LdY]L32AM7(Q:gmnQ=jA
+2'7oNA3^FeQ;&`k8nCo2A@=uIQHWr>3M`APreaG3Z`1%OGs.&2kS-#C^.C_g;JB+@N>e?`VF"tH)PpK:
+4+Yr>oI3LT[9p%8lnnSbI_f[(>%olF<OU]rY?TtP(i@^_GG8:p(VAf&r>!"QmFQ.h,7/,&iGSA5%P%F6
+a%\28I%=jkOLi4Lcfb3=$O27#+Y]j"1)g^Y`$-oaS5LjQMo1&WW8)DN(lu``1+=3+9.#kF,r(eRZ;iND
+bU,+pS<a<\RSG4d8S#8D2Mf[-1b%eVMajJi,P3tg-CZ*LbGl9@,t]C^LfN`%.E,ns3i.?Weghc(.q#^1
+Cpj^'ZJ.gNat=?sQ+H8m[Fm,JWt!e[I_X_mpac<k'lq1G0c3#X,6NnFj>&Wn?:ptsb1@aHkO\ZZ"bT,"
+&1AMB)%D?giXm#l:+6p97H4uIJ-%_OO%1=tq%*Tb-'Lp^&t)_%=Y5t5jqAVsc=o/*6_n_t]^C&.T24Ya
+\]fAP7AE`E'Ui#SR7!"`,BViD#,stg<U1Bf77p-TY?1'+)\nB?>d@N"'+3j(6!ps%DAO7WcKQdef<(;'
+XmZ!4]AIQE*#9$HJ&5Xa(d']()3)[Hi\u6k6Re;DAb-H<r!EW.K#+,L=<&e,%#2ZnnHb(G-PVHWU@F&`
+C,[,ma.r1'7#1jdP0'NjM+jpN/=+JUo*L@*7gPMTVNZi^g35ZNc_`Lc9`Bf8U=#q3MG5Q^6(Lp<oa6X4
+rD]Z>,#q/+.[s>=f;nTQ%>mkbZ,!Bg>;`G47^Cc#pBuu'k8^s:0)(:JT'^j<hlle^-+`o'_Vq`oN(k)p
+MT4\W\BKCp-^;&MEmtp.rWNCU6"&&a6m`WVL-oCrpk2*_'8f4fcl`I'2&hLnj3dZ*L.*>M8S$7p7&Es7
+O%1M3$"V%e1R^qto6IF+D]>4mB@H\\#),F=8LJMX/6\)TUsj&-q:.*k;lWi4eU#2(O'/VeCXr2C/n&.n
+=_uZ97"WA[[G#KKqh<&OF-#'nQ[?^60iG\lDqFmi2XPOO?uX[**Zl,T`a<^Fgk;PKKYCu;fmL^=rrRbf
++L#NA+qk7_6Qr\tA1Af:M8^[CBQsS1)NDc^Z0;+;6R%Z6@hFPCU/NP,b9aIYI)9AKRED>Pq5!"k3h=SE
+Z\c%MI6sXT.(!_P,*N,%6YUY`bpoJdWRWK+C;"(f:T.<0[Hd^B$X9jg/@K=WU.\:hgF]kuI?*3*\_SmG
+H]?bNHEUX.GO,51!t2Ndhq2`\,6NA4j"\(0"tq']aincc9YOs9s+*GnOB==\&IF.XiK2]64s::67,j>2
+S.7+g!(:=Zf^sVY+d#=VP$'W5;(7c&jc\;=^)7iI9I>s+[,,d_SO02N=ks"-6(q-=PZfmjHPE7'l'0nE
+5*He\eEW<&[9g*fW5e-\g@]oO>Hh5rQ<Q5<5@V!'m?ZEWWnh[*>jdf&L">d>[GC:Qg\(RI(oZAl3#jgu
+&W+J60j*4Q^DW*SAFbpXN`Rq8J&%^r81YYi#_^'gE6)iV*sDX4U2`_g68'17`hROpm!:l=ON=5<8M$<+
+-]6&s&rCG9?SIkkVK*PZ<bXO`cDPa*m.u2pRme_>8hCsB8<(ujFII&-T2;K9VDPfj:9Rd$etI4hAT#7j
+Yh6$tC?uGTA@1'mG0=a6b>l%,Y'3E*U?d':hQLpG^%22RXC&1k9J.7TK>Z]REVrQf+-=Rhn_#Ir>5N;i
+5N#?t,SggoKL0*D\7@K<%u<V_;)k@P/Jj@8@o9bsFtNcV87YU(oTi3!PY,Lb\R_^10*"XW;`UZ)D)[t[
+B2Q3mNX%_0:?YY<,o2J1Uf(o*C'99X:T.6-;S$\-VcTs#CK7rO<b#C==DUs:oo@:0Zs%<Cq^nu,Dn'"h
+(H\JEm4#SOmoR+1k4sMB?uD=t()IEA_I;t:]Od8,5KDf)=ZiQ_*DO^B+7LZu&dnnr_BCV3>V[6.LVtAk
+.%F0c"9:n90rW#o4!'I(,VgegP"R-casAgAoPRh4Q-:R2.@eh%2N#\QF*ZR3HTn(K-o<A8ju#N$dO@#P
+jVBXFVpm1R.\0I+9o`4h26,JPs&YQ=Cc3daP04H@fr[05?!=FJ\(iSp.V60pBXutQ2lkd*ktSnM0JtAp
+$O_^,f5R+9?8?5P`oJm8.RlWMQHRmQ!!j8K#QT@ji=MAU/f>+R6fJ[pPYNYBMacY<R+-"6*KN_O&fDC8
+$RLErjV!t\Y$!?C9BD=M/Ac*YRn`&ZRFLYM*LT2@Zl0YhM+*\*i,i^6/t#G3;s@8;'I'A$W)`-uRal;d
+?(t>7ef,?aUJeC#m1u0kY/+n_>OE*8D8tg_]3XTD42pX`9>+\O(`X:Ms+A3tkI=bd0,]bE@^4T+P^aj?
+b@U8V#Q+o6"G4I_i!<"+(C>Z1+lEVg8gb=1`M2mYb\B'VNlRpc#n2\],a-9Fnqg&?="JsA+d1N;b%EQ"
+c)1'RHnKD$T$O>,$4R>t0qCY0P_r0bQV<E:TsWO58uGXgeYgplNF')!Y10L0lOA`lA?sAE(2HXEf.F@6
+/b]X4b)(#Hh6-K6XlB)&^>G[Yldc"?KYl]Pn;;Z>(Q=sDZ+1:'8o]p6jg+F?!!3<+Jj>stGXNkn$\h#W
+d.i8`,nl/)@aTG=Ai1Nf7q9sB"GT>iLI#Id#pcBJ/!`h>deSPc:Bd-1B%)%Dk&ibW:L_d4,l33^U/>UP
+$3Uj"9;YX%eG=j`P6Ru9C=RXK<i7@If5&q6"bpAgKNTj,HUXg^CUQnff%YnujU\iUmalg)ju%:p?Z4Ja
+jo5L:_I%7A>Xg'&;oN6df_RcR+d:&<E`lYc!WN4P_'#sq4<bFGKu5(<k^5]A&rFROYYYI31E)3@UTs%\
+JjU`EaX"0+4>JiF!(nQCl$U?X17?B6ZY;P)2ZoSiVXs'N!eWh5d3uA:4H=\)Uf/_Ll?s;1*2lje[;*Ba
+ZO3[).okm5K!ARbfdsRI4eb;R[+d1@kXDZ3Ek1!YZR_$ho6R`L06ca]!qguWi@qYXQ5^Kp`R_1O4D$r*
+P0)0mq+SM3!<7U8i/g2,*YA^2_-rGXF?Ui[M+$?c=L;Bh)3%,GOk@#:5m*35UXE:%Sl$ql_PMbh<5)cq
+R7ub,=g[$i$Cf?(PM,U-JO,u+k7a4O&s5b^;X'=$2'/5aWDr/J>.$8\$`hkEQ.kkJZS&H6m$:j5Sp=bO
+>4%X/rMn[FOj@oh)n"OVE.?`J(YeW_!J.[d0N_R;Y6g!'@e#gj:,a>YVIT1">ddtd!!#9WE(CZA%g[j*
+TlA(h3Zeoh`1h6BXBI7oN5hW4aR"3`"d"6ZnjtC$:FMIMV/j[o\mI.G8>*:,XP.SPSBe"<3$dpA5bQK&
+F@n,'HNU$@WH?:"/s-@9<2t(5X]hnGW(>ta$H7>+@'J:bG"AHEb@n9:V7(_V]&.I^^TMbuNOJ.t]\]:T
+HenPuJAB1.\1B6NH!S>IZ$=G%'-!%Sb459YY$3P1J,g]g3$\h1#D>EP:q1$o*=mro@So+\<\5,H7Uo<*
+jE<[%K#g1hq';8#-]Pm;;!CpT;(n;1AlC^cef>rd_C#md[.\o4TMT<$3[GQ$8"i]9FGaWfSPQ1RWDI>h
+<ioH)<bkW;S;t'cYZP^=3phsPB=(iZ<19A\h/Bf&Xg]7Gf'R[[=`5+gjmr(m^gM+`30!qELW!3^fU/JC
+092''0pt/"-NB"H^`W%o*"iV`K>JccW*D(s%YqtH0drPi.i+&_,;H.PE]Y=r!$j<K*/6[)PKG1,WEc`5
+)j3kp''Yq7CGq[-+Kt%b5%>n/cm.$(*<qEkUXCSHWZ6n]:8cSk2(G.p%8<DECGi-JEj%7$==c?\*Kk8G
+ZJ$lgX#458DR\CR24HbOlZTnVm[&cA%L5(F?LTp(IHpKX_r<C1XB\g9N5t!,3:)Z(.s\<oTF^f3%LE;k
+6/`BB<%]$tLI:"8#aA(5&r9!:&X_'c3?=/Nj:W=EN_'tL!$m_q<3B@UQV6HS)3iE\&X10\Z^K>2Gs.cc
+B(LlX%Z*WL;<\d_>m;ZKVc2jq)5T)?;QEg`'q3ZZW@4n#lkUL^G/["Taac::g\TT7[p/,u8/9;+Fh:rJ
+(Rro\l$L0Pms!Ok%gaJ;g-@QD<At:;_..L')R_jVQ-3b-n,NRu#6]TBi:)Or.MiMJ_kHT+N(PH3MT)=[
+Ls0Tm*0/(4n6$"u59uE6V"0@9W`La;bGFe9A;UaLRa%`$M9P7#1P/BboEl$7LI@laVm&3>.[Ni+dch<X
+F\64AWm>F&MTomY<J4FhFpeb:a(2L/UNQGsWn2'Rg24;,N976a]#\bj3ecSfI(mNNpZr@t#DA<!0Y!'9
+EqP=0j0A=e5!p]^Qt3M5L]dV["+igHd!.r*'aoa`@F4e&7O8_*7:JLf`+CkDMaq:)q#lF@,EbW/dWf;?
+;ui.UA^BUo<`_)G9kMe@FQR^-Skj"IRC!HB5GD"ge9XP1PtRuQBllCY7\s%`<FAf6[:ZgNMbWNfqZNq0
+A#rf!epBi_%qW.QD:\T<``m8i?#J8?"P3*i^0bg.bGG4BK=bN1R!_@N'/4oEYuppX7W47,a_$&C_uKf>
+J\`J5BKRIP"+S33YipI$,8,jP,-bgo@P\p^a!7kQr-eMfN^BC8fdHnf.[A1'ZKZbR@ksIs-F7F!ic@/J
+asV8pr;qU<U!KXD8j+A^1m(#!dY`H>UJd:RWj9c)>-hD7f.4*u`HoF2Z.U\:BuP\MC:2eGesgNnj)V]d
+,Sp9Ziq%J^^q_nm2=CWYVI6X:HbLF4MS8"(G)DkY,?)Wo0K"fT@K6CZ5i@`+1`d58KgOa[fQ9;#&W&p8
+O]\ts0c>s?j,r!dIR,%UaPZPk1nIPnPtL/$flXr:0pt_tP?G9LEB0RbkEAIGrddA/:u`0L0Es$sU.Aut
+\og1]4fMEGQ!1S%Z!"20jRh/[I_fHt=R;>X24c+![9Ds`gNC6h-F@%GQWplSnTgb^DjT5OrrI\8hQWAP
+2BNNfTO>$lgibn*1<!epR9[1-$NP[lJ.P7&)@m+,_P(qiCcWXLLr?$-8?>uJ(lZJ0EQIKm59Q'/UiK"*
+$3'pgalRQbCq<t-R*;FK8Z^Wa31S9lF33eFImBI>!&R8!)NRFbd\q7k>riuo!7U4U86lG'=KL)SFis)t
+^L!/>V"IqDRa5ZSg7X]M?+NUEK@hf#9<Hq:GeD8&pWMt#s+%oCU6hr6)\7bCi[e"j*]bHaa5jOO9WSmB
+R".EZ:cK^9%0qPQ@8OIE2B<<a6t0"QUfJ00N(.;S\E%fr+-9$(;E6"g9dc/tADe>9Wa.9F9P.3`Ut0BA
+!'o]\\`EI45G1hd<&u<@NCTd?,1O282P!XB<,,DoV,eI*XB'+:\brZ60!A>-<]Q.Cc"FCeD-"8[[WQ,j
+>]*KP%F4?b]M<=q]B/bbJ&"?'3'8N(%>Vks0K?^W2][sW`br;VVH5@9bWl.>-l`j-#(sc9+:%g")\.YA
++u(L9;C`N@`Zm4:gi>ItO2rS%.3*4?-BlRu19"Na>:u8d-8R*@dVCb1c6kEIg^Y8cT?nuC.NK.[7\eB\
+1oagu"&=J?.Q&]H;QEj!egiVUrA(ukYLk.ClPKiD.C%R.1g8_@gMXLU/iP3V)UW<3hCgggh=CFr\_o/$
+/05G_I`(/"336FAB8+Ce1-$nVdi4Urc!UMg&-<.AK0eH-QrG[U%>R=1&K$a-.2@b0iG\M@DE/_u8)t:#
+'TPa2P=ajKR8g=l/XK,m',aJQBf2ASk7a95mWgsf:ZrK2'LHA"UJ^7iRT1u.9rCqT'cN?4WE$!!lP5l=
+DRj&V=6pXt*KD4MZWZZ2RoQWED7<a;&kaOr06+U0mh_JDmeM:E6a,,^((U_*_dW&D9N;`<NQ5Q")'"r;
+R1=cJEGtm\$3p]c_4^8l9I^heL;T_T#`MA''T0l(nVGD(2]RjuU[e^"MFSqTae\Ka9WD/FQHQ,r$&m#>
+1n)[do81]VG<CmOkO])j$AV$D^ur(^9e)K'VUMO;$B7Y5ri3mbeV_Ud[m-kDX7co1MT985frFZp4f[+M
+[bIqY$]T2iFLo=A2iGrGpO'^4V3c!-e,tAs?h!iL:+I->`oF?"%$!t.Do$"h1IqWE"Ts7j@*j-d-5?oC
+6Xe@:KLR7$MFD"%Gf42O)idEudJ3p"73dseAC>_(&f^n;94cPe%)uX1RS@DCH,SiZ$'e+1e+s4PKgVS3
+B[h>s-C%5s:8RGom4tM:W`<faHGsL(>HU=C0NrUR`FGH45VndUI_0C(>A_sgKuW4k[7Mp9Hc>,OF1u""
+fDGgX"bX[#E7fP--P_QZ?Er/YS9jK5al>/0I)H'c!eJ01Y\6-C'+0H2+gC0X66d,"`?MR#]OEDlNQ39K
+kkp$",*BtmZ7*qk;_"'U-*lc__IG?hbpKc2]]*unN(Ken\buS^6D;dTZt_`JP=hZIBsd/R6:"8DeLItA
+]je<OXk$k0l6Sp;+op:I;9J!pdqZ;F/[jtn_W,[Ih(H0P^#JVjZX5AoHe&9$K#-D"\7nt?'8hk0n[Rq7
+6R.bQe1?+hr_<InJO&.T=>V'2$&(_)OP"Y=+VBQ!ifR?M?83=W7cTW`oR9(LO[O^4=Yu^I.@!NeP1ark
+;^7](k*&rThJkQH:?Rhoo_sD-Le@_)=bRoZ-DH$%oI=uITi%dglBPP\?EmY8<pQ%)omX_cYup"hlSKND
+Br0Nt1.b^hbl4nQm[%.chXPm)6>2U!Ac)RE^e(_S>W*Z9M8`r_fK:K:+d'lWnsN[13_KGQ^jlte//f$)
+KYjCd+:Kk%&;\9!ECd070,TYfUN+BAH9WO6aJ<iJ/=K?_PffhCa_\Oq0UU(]E[Z<a(H@r1TsL`JdXONT
+d&;%Y/K0[@Usc5ab&'23:oMmDF\8c>Y?7mQi=j?#HG;J&fHB]#opX':N`i")X)5H*E4F]+G=n]lms)Kq
+0"9$kqYu)]i37EOlmE$o`8\%Hb\fI;HH>0Ef_hmV0:78Si(uBY((CM%6=E^#A2YG=LdY]L32BR\res0/
+&\-nF4Wf;G+47%bQ;&`k8nB_['O"cqQqV*j3Mb5C2k3WU;n:u_I6XB$BN.#=(6(h[;JB+AAN$)TW);YV
+3i,kC&Z\Oh27hmm]jJ!GCfWVC\l8^;<c(mIjG#I%\6NoQ4/LNqGGA@g'$G^_rI;UjE*,4Ji`cT"@VV3Z
+%''bsaCK<o4JkI[!5lSon0f7h$NC)m+Y]j"1)g^Y`$#\*S5LjQMoHtrW8)DT*fnAf1+=3+9.#kF,r2H)
+Z<JrJbU,+pSC212S'EB;WSI&k5+g1M1b!61MajJYUXY/PH2UL3e1*=*SPlLhX4AdV8osh`98!:]2>\C4
+[:Zc!/N0Y8ZJ08L6S'?!,Wah+]A>2"X53@>FMG_2<]J'=qhE#J0fZ7?h[:.66K<40:(&52`b$>(p_42E
+"bT,"&=?EL)%D?giXm#l:+6p97H4uIe8@8eO%87D)&/*&-'Lp^&t)_%=Y5t5jqAVsbQ0Sj:$31XeF%TB
+MU,rLC&J*G7AE`E'Ui#SR8'SXiKP7G:8p@S<U1BgeS_p'Y?0fX>*oN96AWCY((4-Ffkn3&mM?]tMWo8a
+>d"s5eaE6]^<gP;Bs%YWA,tPl=6rs@)3)[HneiF5:FVRPAaOF:":>A:K#)skLbpRss+\FbnHb(G-OToB
+ipeFuC'tl=a.r22F8ABNP"9-SM+jpN/=+JUo*LAuB/H(%VXoYgl?>@L7d'CN$u1,WU=#q3MG5Re9W$:<
+oa6ZGKiEZ@!&-I!C:@HNf;nTQ%>r2'Oh[ac>>;+,A@C6ppBuu'kB*"mW0Xq=Z@=jHhkQNC%LWMp_Vq`o
+N(tl>N5jn_q$`60mh!7fV\r#-rWNCU6"&&a(^:ZSL-oCrpk0h;'8f4fd<NTA2&hQGA't)TL.*>M8S$7p
+7&Es7Q:kf9BS=B:1R_$I0N_-U)_[dYB@H\\#),F=;/"I*74(SaVGh,LWeEp=;lWi4eU#2H[2PRaX4@$Z
+DT-+k=_uZ97Ac&PRE".8qCFtFCo1C=f6bL!om=D[DqFmk#6fas@;s]mV6\'sYi5-)r.[]fPCqWIdgTae
+!<Rhg+CH$K()$h#_]c7_/2e^cM8^[DBY7e1)NDc^Z0;+;6R%Z7,dM,HU/NP,b9aIYI)9A;In_,+q7P^.
+313PiZg%DiK0l9Z.(!_P,*P0C`b/99I6o;<Io<;SC;")_>-6C,[H[o^DdSu9Cp5=):<.+WgF]l"IDY#b
+\_SmICVAa!HG/2dOD%$G%KWn0k-8,a_T`1F<,];5IR>?Caj9K[CD9A@!.dDn?l1^5&H@GNiK2]64s:Mp
+7,j>2ZsGI)NCMrjf^sVY+d#=VP$'W5;(7c&jcS1`^0raa9]0sE[,,d_SPJ@3g%>8p6(q-:1IrchNCfs?
+W0H"Y5+tiQ<9f`PZtbR7IobNN\+D;>08S5]FijT:d9!_Zm?ZLL^>X(B>jdq_[GLG!]jC/og-qa(IYCn!
+p^@Rcab%K@nX/*T.h.WX6S_e,IU=f0J&%^r81YYi#_^'gE6)iV*tX7HU2``*=t^_O`hRNM"F<9TON=5<
+8M$/f.$VlNEli./?SIkkVK5>1g2As1aes+"h"lLJSC"3V8hCsB8>O\5FNBFCIiX\N@1VY)5+bWMeuNr9
+m<ZNTYh6%#9.cUYBXHKqG0=a6#uuITk?o72#2_#)>sL>q`VTUb^u2G=.`ND(#fF`fR*9G0+-=S#EEPm<
+9.uZ_5N#?t,SggoKL0*D\7@K<%u<V_;)k@P/Jj@8@o9`TqE4o\87YUY,aM.JL.UK)\R^^\0:5FF;`UZ)
+D)[t[B2cA%p2M.'7cgpP%2MT#UdlhRb"Xdb:T.6-<B?sWX]MT)CK7t-G.h7e=DV#"-'gJTK2UcP:^oJ5
+'XuAi;QD\+m<?3LDcaK7`m]"&gF2RX!!;tO`+!^g]Oj&:Kude8=R;nd/XO[H+7LZu&dnnr_BCV3>V[6.
+LVpn>.%F0c(5P5MdAYi@3=11+,8)FFP"R-casAgB>d@QdQcpd4.@eh%2MamGcoCC_0/oNJB<gYOk(-!s
+dO@#Q>r%mEVpm1R.\0J<<iae%26,JQ]3_\n-'Tg[L0$g-f]&&u9MWcK\(iSp/"P*cCqJN$QWr;:qgQ<<
+0J]]C'+7"?@PKjD?8ENt[(u&!4>dKeQHSD5&,6hK#mGrIi=MAU/f>+R6fJ[pPYNY?!(Go[R+,.A)NRDK
+OGEIg6R@pbU[jeb)Fj^Zb@L2^Pg3u#Rn`&ZRFLYM4eGO6'H.\rM++1:knKRd/t#G3;sG)9Pm15*WR]tt
+kcImr>,]Xq()n!Ka^qe]iDnOG#2*:J8LV"14b>\9ZsE,:S(6s&IC._4(`X6A"a7XhnJIcs0,]b&>b\`@
+rH?fo^uMa4#Q+o6"G4I_n;'af(CZ&9U%&DI8gb=1`M2mYbT6X%NCTc5O:6pG,a-9FnfS@,0dcrl-1_G%
+2Hqc$9r@N=bj'C7T$O>,$4R>t7&&)-oSQ?mQV=:*WV$UX8uGXG7j$)<Co47<RoZ>+9+6uqA?smip5;YF
+I:BY;BiTK(]%;&8h6-L1c0?<e^>H-h$$G\AKYl]Ppk\U_q'W=QDKq\39.,tHcYE7M!!!*'JcHq>pd?GD
+$\h#Wd.i8`,nl/)@aTFb((V427q3/,"GT>iP"B34GsnN0/!`h>deSR9AM]cLB%)%Dk&ibW:M8/Q"U9ZJ
+U/>UNkV*(!9:\speG=kc+!#i!W`7-[B!kjG=)6?tNBT3sU=a;3lM[U1CURGaf(oiIj`A"=C)/mbk4O)8
+?Z4N<UaGI;^t``a4#R$QMoK7HelmHUm;p>&WA,qT!WN4P_'#sq4<bFGKu5(<k^5]A&rFROZ"UdZ1E)7n
+,I-J1JjU`EaX"0+4JGb(Q-1JZl$U?X17?B6ZY@)3F#oM8-aW(,#(o*u:[#.s%28h)V:-m#l?u!o;M.k^
+Zs$a=ZW`)JX0k"eK#;'&fdsFdeY:N-[G#HJl[?Y1Ek0tBPa[TcHZZsY0=U9GEkNKr^T*TW4UrodV-l$f
+m!_;HP0)f@\SSuh!<7U8i/h%t*YA^46K+$YF?Ui[M+$?c=L;Bh)3%,GOkB;T5p;@]jH0-.SkBk"9')5h
+FM;**PJ<qM=g[%*3Lrq.PM,U-)).a\+]KpK*_e&7bik;FFZuKrWDr/J=iDGe=fk`di#;8,X^SJ:m$:j5
+T$]Eu<b[f0<AqC%\QnQh>IE=YCR8+Q1[Al2s*1,CE*-@'*ta@K@e#i@G!@.4a^jt1=;DMK!.R8+n45)K
+%g[j*TlA(h3Zeoh`1h6BX==APM?"l@aR"4;*!"'SdRc!Y:FMIMV/j[o\mI.YbbfGQXB%V.KLR<:8]:B)
+4J:'"F@n,'O%?(pWH?6mrh!#ce>dN1,jq.(XOaFpb3aMi@$B+g'<&hZPuiT;/2k[g]&.J:gnj^(m"bab
+]\]i9bO,0+JAC*IGYB_/%uA0`Z$=K14!-Alc_n3FL0H<uJ3Vsg3$]7K#D>EP:q1$o*=mro?sj89<\"fA
+7Uf5.jBa\cO@Wn[3@'nb-^757;Rp>H>q_R=@Bn/feiPg\:1mM9jRQkHTMT<$3[GQ$8#0$s;`X%C8H,Pb
+B/I2r<ioH)<bk^FI!.kOT%>Mo4!g3;B=(iZ<kDqOh/Bf.DHAorf'R[o6)kI]c1\2%OB=$blm<MXLTXtB
+OmGM[3K;*jE`kN%0*R]d5QD?D*"iV`Jq.8`2uGEM%Yqr/d3sZG.i+&_,;H.PE]Y>'a<WMi*0NrAPKG1,
+WEc`5/sj[&n0s"h,lWV<k)f@C@Vn/ucmU_#*>49"UXCSFfp+<!,,W1j<@XP;:Hkf0.lF?_Ek>Y]fISp2
+*KnTXZe?uhX'N$cDR\CR2@>/b!>_`kY;`N<o)!m8>qbt(*YSp9WSMPRXBm[tLWAI23@gBS>mAF5+:n5]
+%LE;k6/`BB<%]$tLI:&5(mIcE'oPN@&X^K43?!rKiIDdW!_F]%8`^Rf"KklZQV6HS)3iE\24I>'':IA<
+Gs.cqkS+pM%Z*WL;<\d`<A'\6Vc2jq)O4'!.B?J1<D(eZ\QuC?lk?D<>/OpX=mZuo<%c4.[p/8:)SN<<
+Fh:rJ'PTsk"'N:on/*,\%[A#`6>feZQ5^-ia(+ZX*0sALQ-3b1&-r+?#6]XpT^[b2.MiMJ_kHT+N(PH3
+MT)=[Ls0Tm*0/(7nd,_^7jO8:?daa<!`pq=bGFdNXMS6iRa%`$M9P7/4J'lsoEd(oLG4l`+4M3'.[Ni+
+e#E!H`=f(JWn"-BE"-Pl;6JNOp'V=ea(0a%-C.k1Wn2'qgTC"g*+E8Y!7gKRMp:P]I(nLAp^@W?#DBtQ
+YkX/P.i4/ahIuF/Urq#+Y%+d5L]dV["+igHd!.r*'aoa`@F4e&7O8_*7:OYhJ-%SI!68Shq#k_"(k5+e
+&pZmB<@aA.A^^C-`aprp9kI:)oF=5MSkj"Jq?7(W+bi`=e9XP1PtRuQC"3!53fON@cmgo!`FcM^Y#fDh
+qOGj34Gq[^[MqW'^MC8^D:\T<`oV9Q?#J8@`THi?^0bg1r!!B0K>M&9chQ].a#fdEYk\-N7jX@Q@cFg9
+U]LJsJ\`J5BKRIP$AHA@YipI$,8,jP,-bgo@P\p^a!7kQp]<f,OiV&'Bfr+g.[A1'ZKZbR@ksIjT@7I1
+g&2GE:FEKjV#l99U!Y9qC-<c).\BWg[&SO@UJe)A.^a$)@^B7?f.48orIVprZ.U\:CH\E@C:2Kh[cnJi
+F)8DC0"5W0*oD4Uh_2J)r6Ftc_;R)XCcip!E5Z6@\EnWQGQGqGUl[[&('+>b5N%W*1`cf!K>QT/fQ9;#
+&W&p8O]\ts0c>s?j,r!dIR,->8E>q:1nIPnPtL/$flXr:0pt_tP?G9LEB0RbkEFTkrddA/;!=-I1oLFH
+V,HQBf^1Sf8#]JQQ!1S%Z!"20l]p2sI^ocH<%4+@24i30[9DX75R"IPEOf?BP&#1iT6IonXB/X!rrI\e
+@.9Og2BNNf`FAA)gibn*?bX@YdAti)QN2NNTQ!FQ)@m+,_P(qiCcWXLLr?$-8?>uJ(lZJ0EQIKm59Q',
+?d_J9!`(5/8>U@KCq<t-R*;FK8Z^WI,_&=\1W`VQImB[RW,tW`)NRFG:LTHS2)^XpW77hi9!):#$_GqM
+F6L#PSL&hck0oe?@aA_pg9#PAD7\VD\D4629<Hq:GeDn:GK]CMs+$Zl0Qj>5RfeJbij!\i-5RP]aQ0XM
+r,u!lR".EZ:cK^9%0qPQ@8OIE2B<<a6t0"QUfK&Z!(LHq\BJ8B+-9$(;E6"g9dc/tAQ$'L2>o1ZbMUb$
+U_YsLS5)<_=lf:)5G1hd<&u<@NCTdBBiMZT2P!XB<,,DoV,j^"XB'+:]&e+K?a*+7<]SABAIl-"D-"8[
+[bY2o>\A6WV:P$X]MU:?S)sABJ&"IT<a6+N%>Vl/^c8tINt[SqA9(g8VH5@9bWm9>-l`j-#(sc90W853
+)\.YA+u(L9;C`N@`Zm4:gi>ItO2rS%.3+LD-BlRu19"Na>:u-?-8R*@dUa8ac6b6co^Z?QT?nuC.NK.[
+7Z>W,1o`\oRnfm2.Q&]GhNS#?<\$&-h/^,6Lt/R_3rP5bB!^2C0WF+/"p)3c@^[`1Wp=i?hCgggh=CGl
+^Yge*/05H4L;W"*336D#fi>;rmW?*R;_+0W`#o$c'FkEQJ\U.TQrG[NreEl"OVj<X.2@b0it7[.DE/_u
+8)t:#'TPa2P=ajKR8g=l/XK,m',d%[Bf2ASk7a6t)L4JucDVEq'b6'hUJ^7fl1F`Q9nQ4![$m7TWE$!!
+lP5l=DRj&V=6p\A'opCIZWZZ2RoQWED7<a;&=QnMT/h]qY4imcmeM9rh'?'kp(%I`_dW'PS5q9\/@nXI
+\K$o2.2U%[j"L`1$3(-[_4^:R'D`(DKgHsQ#`MA''T0l(nVGD(2]RjuU[e^"MFSqTae\Ka9WD/FQHQ,r
+$&m#>1n)[do81]VG<DJCVt:<*$AV$DdAZ\p9e)K'Jq,<C$B7ZU;l8*Fonq"/[m[/r/+s>[MT985frXn*
+9rceZW`/;O$]W<lFG*l$ognF1l[6G(YP8M9$O;@%iNW*9:+I->`oF?"#o2IU*N/sYq)A?Trr[j=+4,6`
+-5?oC6Xe@:KLR7$MFD"%Gf42O)idEudJ3p"73dsaJ.d,qU.[#&94cQIKZ7RZRS@DCH,Sif4.]5\e+s4P
+@4@Dd+ReS1-C%6$;eabVPnKolN7@.@W3%*[>)h,`(&J/h`FH2VCt<r%VU]Ij>A_sgKuW4q\m94*Hc>.=
+?FNqr!#u1=MgE6KE7fI'ne6VT@PQO5L.<PRb%5VE/7\e]!eJ01Y\6-C'+0H2+gC0X66d,"`?MR#]OEZ8
+NQ39Kkkp#R!0PAKZ=uFm6RnAE-*lc__IG?hbpKc2]]*unS^/[il2:[96D;dTZt_`JP=h\#.CAAg6DIGX
+eLId`7:NSVIodcCa7WWR@^4T8p%XeadjDBT/[jtn_W,[Ih(H0MXfBio^#(KPl2BcI,JW1k\84>R'8jch
+0t?S!6R.c9jYFA_^1%*BJO&.T=>V'2#QR3MOP"Y=*smci@PET0?7-VB7GlLkoR9(LO\"Pr=Yu^I.@!Ne
+P1ark@3p_'k)d]DhJkQH:?Rhoo_sD-Thss;=u@@`8Yo>LPh7hDTbXJ)lBPP\?EmXu_rHq1NC($]Yup@Y
+>;`#"Bsh.3QJ6PriGlD5m[%.chXPm)?LO68c#sh/!(fF8>SK*pM8`roP&*88)j/6QnsNak?SMP1^n>X;
+//f$)KYjF%aD<mZ&:sm+ECd070,05^UN+BAH9WO6aJ<iJ/=K?_PffhAW5Q8'+.'t.P=_k0D`F94VfTuH
+qL:c'd&;%Y/K0[@Usc5ab&'23:oMmDF\8c>Y?7mWX*)SPH3H(.bi1;A/EY+SYM-+%bA9)a$+O(g0Pcrb
+ms)M%Y;RoeqYu)]e1T*0'Z1*1`8\%A*&]i"KSO)H=Zg;#0:78Si(uBY((CM%6=E^#A2YG=LdY]L32BS,
+(Q:gn;7P\14WfbVA5YE5Q;&`k8nCo2A@>bsQqV*j3Mb5C2k3WU;n:u_I6XAl?dq%P!f]^G;JB+1)u>1_
+W)RM33i%Xo<NK5:<P%:8),$_)CfTdIQHa'L95FS99t&kr\4J-T93m>UCSb9S=1dSfrI;UjE*,4L(Cc/<
+@W>M_AiC`kaCJa]N29hgF,*!\&1AM-rs"+m+Y]j"1)g^Y`$-oaS5LjQMoHtrW8)DT*fnAf0urpL%jZWm
+,k:XTZ:-C4bU,+pSC212S'EB;3FqU[3hObI1b'LYMajJbkED<6,+D?*e1*=*S3hQ(M:3R>C>Ep0?E`!4
+2Cff2b@\*7/N0Y8ZJ09+gb(N9S^QhI]A>2"X53@D2Qg'?GREj8$\lRSX"q=/"s&T>A26.qNXmM'bN9oX
+p_42E"bT,"&=?EL)$p:1iXm#T2CTB!7H4uIe8@8eO%87D)&/*&-'Lp[YpiYT+Wcq;A'aD()J&i#c".QV
+eF%TFT24Yb)ANa=7AE`E'Ui#SR8'SXl4k5&:8q6o<U1BgeS_p'Y?1'+)\nCT:R?TK')>Onfkn3&mLVH[
+c<G;#?1/SuFjfr2^L-IDS#)b[CV\p!(n=PDl$SN:,T."s:FVRPAb-H<r!EZ3K#+,LLeK97%#2ZnnHb(G
+-PVHWU@F&`C,[,ma.r23%#RP#P0'NjM+jpN/=+JUo*LAuB/H(%VXoYgl?>@YJ1'sr%17kXPs;5:auq3P
+4f6]-oa6YpJ,u[t.eHi&/s-O<<3,^#%>r1LXACI6MbU5'Cm%dJe,$!IbsJkpY4mk!l3DFFcu4.;%LWMp
+_Vq`oN(tl>N5jn_q$`9V-^;d8ZMB:YrWNCU6"&&a6m`WVL-oCrpb2aq'8f4fd5W*A2%PVa@LuYjqEH3f
+8S$7p7&Es7Q:kf;q1Qb!&<>"EP<$SDFZZ0jB@H\\#)+%d!%;r874+9mVGh3Xat6)B:T@E0eU#2HT2CeO
+W3rZ0L;dZ.=_uZ97AeUN[TdV"qh<&OF1PXpf6bL!om=D[DqFmi*c!4.9s?U)7OHAb`FEo?qmJ:(PKIHQ
+\6QBArrRbf+L#NA+qk<;_]c8JHpT%jM8^[DBY7e1'RrUQ&a9.E6R%T1A9&O:U/NP,b9aIYI)9AKRE[(b
+BtWGH3h=SEZg%DiK0l9Z.(!_P,*PWqdj_ZhI6s],WRWK+C;")_>+A0bZ9$fn_d]n"UfL,OU=3kbgF]l"
+IDSog\D8dHC=RY%B"QqR\*O"q"+nAJ0Xtp_,85sRj"\(1IR>?C\&TT;r2_4F!.dDnOB==Wrs=BGi@jD:
+.NJGB7,j>2ZsGI)NCMrjf^sVY+d#=VP$'W5;(7c&hshP:4rFTV9.#j*[,,d_SPJ@3g%>8p6(q-=PZfpc
+OXGf[@aaOQ5+tiQ<9b1^1s3'.W`JGNg@]p2@Bir$Q<Q5<d:p!lm?ZLL^>X(B>jdq_[GLG!]jC/mb.n5_
+=HQWl\(ik`&Nm*cE0*Y=9,!H0AFc-n[U16Z!'m2r8/(t5#_^%Od)]0I*tX7HU2``*=t^_O`hROpm!:l=
+ON=5<8M"<Y-icRWO6G)j?RV+3VK5>1g2As@cDPa*m.u2sT[9WZ8hCsB8>O\5FNSG]T2;K9Wc^q9>-D&0
+euNr9m<ZNTYh3NNHR((LAs:Fj?iUYI#@b3uY'3GpVV-3Z?#Or1mJ?j5^u2G;>KjhgLrA;PfPA]S;/QBn
+np*p3>;)@o5N#?t,SggoKL0*D\7@K<%u<V_;)k@P/Jj@8@o9bsG!-q/87YUY,aM.PPY,Lb\R`-S0:5FF
+;`UZ)D)[t[B2cA%p3f/u7_f^!,o2J1UX3^S\n*dj,c"CS<(_R>X]MT)CK7t-G.gYMd(hP$#QbG6ZpsEn
+lM\0IDl-ZT<&bo$iHMq@DcaR4pAKKV?uT41-5R,H`+!^g]Oj)CO2tjDQTCY:m1IOW+7LZu&dnnr_BCV3
+>V[6.LVtAk.%F0c(5p0W0rWk=!?M6^,LS"\O9$>basAgB>d@QdQcpd4.@eh%2Ohu>1TB1"rB?jhjKpBV
+MKq[ddO@#PN<5FpU/WO_lCChR<iae%26,JQ]3_\n/2f"!P07IDg+>4`?*`4&\(iSp/"P,SG-Y(\;2`[7
+D,%Y#0K-Pe9)jL\i\<Eo?8EO,_a(-oaX0)"QAsrJ&,6hK#mGrIi=MAU(]b)$!+HN'F=o!AL]Cm]R+,.s
+*KN_O&fDCD8L9QljV!t\Y$!?C9BHm*Pg3u#Rn`&ZRFLYM4eGO6'H.\rM++1:knKRd/t#G3;sG)9Ptn;Y
+X&\I#Rad3R>`DhO&XqO9a^qeLCUSRiY1[[$>OE:HPU69NQe62"S(6p5Fam%83#`QtdsT&AnJIcs0,]bi
+A+CKWQ;8rpb@U8V#Q+o6"G4I_n;'af(CZ&9U%&DI8gb=1`M2mYb\B'VNlRpc#n2\],a-9Fn;$Y9"ost4
+V=P"P`_eR]c)1)hbj'C3R7gq.WXJZK7&&)-oSQ?-I4qEqWV$UX8uE#_<@[[!c"a]oTY[\Vg1?.L!OC<.
+p5;YFf5.nMXnN3_b3*lXh6-L1c0G%N^>H-h$k<XMKYl]JQ3rkraoSckU9csG9.,qBflB)D"9&H+JjEek
+GXNkn$\h#Wd.i8`,nl/)@aTG=*!%"=7fY:=b_AP2P"B34GsnN0/!`PtZM<LhAM]cLB%)%Dk#X6obU:m8
+jQ_FdU/>URH:90G9;YX%eG=kgV,OBoC=RXLB!kjG=)6@`"bt!+Z<;"pHUXg^AUdosZjD+hiBOa+DV'/F
+cL_+L?Z4Ql/aEFi_I6n4]8dgFMlGH<dO[e0hiYW_1>.&n!WN4P_'#sq4<bFGKu5(<k^5]A&rFROZ"UdZ
+1E)7n,I-J1JjU`EaX"0+4JGb(Q-1JZl$U?X17?B6ZY@)3F#ol<-aW(9!eWh5d3uA:4;n)iJUf2Vl?u!o
+:8Cl>[;*>uPl?D:X0q5`@`)Z[fc`6LD3iXc[F+7^)h"<SCq8@SZAX]gh>sidYIEis!s=.ki@qcX4sL_u
+`T&\_m!_;HP0)f@\SSu\!<.O6i/h%h!YG`lJ74PLCap/(M+$?c=L;Bh)3%,GOkB;T5p;@]jH<Y&Sl$JY
+5GHO3FM8D;R7ub,=g[%*3Lrq.OElN!HU4?%k`f7.*g%20dc(k,>`,-VW7#FG>.%\A4f28q'q)1!]j\0J
+m$:j5T$_8[>4%X1FhZgS\QnQh>IE>XH+dPQQeV35!J/'pn<dH;[^fY*:[ApGG!=B7K48W,%(9Lt!.VeW
+E%hD5%g[eR+`PM=3Zeoh`1h6BXBI7oN5hW4aR"4;+HX[<E,Z5S'.<iOj`8IZ\mI.Ybb`YMXNgbnNQkhY
+RI'b\2k\NrF@n,'O%?(pWH?:"3hK6Ie>dX`X]ho1XOaFpb3aMi@'J:bG"XEUcY0]>X`hm)]&,Q<6tc"f
+mEbk\!7#HubO,/h4cE.q\3'[/%u.^U0mLoYJpi[#jK$m[KPN)\J3Vsg3$]7K#D>EP:q1$o*=mro@So+\
+<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H>q_R=AlC^cenm@9:1mM9jS"!dTMT<$3[GQ$8#0$s<4ZX!
+FT/4,J/(,A<ioH';l`p0jY!f:K[_*ogEi01+Ks=3p:FnE5?YI#DHAgJVX7`O=K\"&jnAY&^gM+`4=1jR
+LW!YA=M/6)*KS9PE`kN%<ZQL>5Te?#r"9AAK>JccW)s*?%YqtH0c4.n.i+&_,;H.PE]Y>'a<WMi*0Nr1
+JNosWW0FSf/sjd/1F\jBCGq[--SqaWnp<Qm_IX?^L^&bITMd3qWa.BL*2,f4Pq&=cX&c:P.lF?_Ek>Y]
+fISp2*KnTXZe?uhX'N$cDR\CR2_1HIlZTns0/orfniosD^u]]$*&^$7^>^k)r$EL#NlU393@p];M?1_*
+?k<#H%Kuc`5p6f,<%]$tLI:&5(mIcE'oPN@&X_'c3?<[$,SCt'DFGk88`UKIPSsE:Q:e"f)3iE\24I>'
+':IA<Gs.cqkS+pM%Z*WL;<\d`<A'\6Vc2jq)O4's<NB-c'q3Zj\QuC?lkUNTNlbk&as9iB7$n'nP?G%)
+)jDi(Fgp/p(RrtCq0g"G0%Pqo#"JiLhshPP/d>/TQc1T0lo`EnO2Y]%&-r+?#6]XpT^[b2.MiMJ_kHT+
+N(PH3MT)=[Ls0Tm*0/(7nd,_^7jO8>V"0@9W`La;bGFe:N65ciRa%`$M9P7/4J'lsoEl$7LI@laW:YsA
+.WbZfe#E!INCK76Wn!p<.a;_3>cu\Zp'V=eX]i$[/9ZqGG0Oj$g9()WNQUF+]%sO`Mp:P]I(nLAp^@W?
+#DBtQYkX/P.i/D>A#NG_2DZ_7aFH%6L]dV["+igHd!.r*'aoa`@F4e&7O8_*7:OYh`+CkGN^mU,n-"J7
+,EbTmn0dk*<<JN.jjNsX`aprp7:``M^]np.QqM%tq?7(W6_[Fke9XP1PtRuQC"3!57\s%`<GL'1`FcM^
+Y#fDhqZV_nA$T6RepBi_eSDTtD:9BA`^^lV88\*J`>X/E]\dYZr!!B0A\MRAfQ]g\'6O:LZ'S]b7jXAA
+ATHIO_u]l>J\`J5BKRIP$AHA@YipI$,8,jP,-bgo@P\p^a!7kQr.79[Oi\lSBfr+g.[A1'ZKZbR@ksIs
+-F7F!ic@/OcR6'`r;qU<Qp7OR^]bpG8W(rq[-E&tLJk,%.THHP<jPu3f.48orG%5hLXPN)CH\CD<rgu)
+p01N`drN"T0"5W0iq%K0h_2J)rW<7S_;R)XCd''WMT+U1\EnZ3,6PDd.G68cJcPe$5N%W*1`d57!(,Y+
+fQ8G`&W&p8O]\ts0c>s?j,r!dIR,->6_o5='V8/NPtL/$flXr*-&9\kP?G9LEB0R\AlIA6_?Bk/d--]t
+2'.lOV,HQBg3#TQ;5mO[Q!1S%Z!"20l]p2sI_fHt=R;>X24i30[9Ds`gNC6h:nYaEF,BSH8TDFMlF2W;
+o)XE4hCr&:1q*?=_rC3M9MPBL.*1FhR9[1-0`Z^=TQ!FQ)@m+,_P(qiCcWXLLr?$-8?>uJ(lZJ0EQIKm
+59Q'/UiK$XRSP>rb,'.#Cq<t-R*;FK8Z^Wa31S9lF33eFImB[RW,tW`)NR"1;PE"UD*":cVa`-n&.Mg*
+=KKqbED!'R^J_19XEI-WJt$>Yg9"D&D*HQj\B:dP8+[_UBWfg!^`1&jknq3,n5h.n)\7bCij!aPDEAr%
+aQ0XP9WhSQR".EZ:cK^9%0qPQ@8OIE2B<<a6t0"QUfK&`N(.;S\E%fr+-9$(;E6"g9dc/tAQ$'L[TtPR
+9OTU=Uf7@RS4'68kT&T15G1h"<&u<@N<GffkqRJmg]L?Lc`$LtV,j]DW6T/N]&e+K$EV^V'\`MOc"E&=
+D,i!\!hKG">]*V)V:P$X]O#MX]B/bbJ&#H2=?IoH%>Vl2EEKkc2][t#A9(g8VH+:%N5,E)-l`j-#(o/!
+0W853)\.YA+u(L9;C`N@`Zm4:gi>ItN5)/BfK><%+-Xhn19"Na>:u8d+Ym1W`bRK%c6kEIgeMK-Skpgl
+.NK.#5,5qB[&RCeRnfm2.Q&]H;QEj!egiVXh/^,6YLkBa.ijerB!^2C2QL,hgMXLU/iP;Odd)(DaC!Jt
+7Ionr^W.V0$m$%@5).p5\?&q&"V8PlZ4Hl!1Fkf6?Q]=S'FkEKK0eH-QrG[U%>R8Wd277+.2@b0it7[.
+DE/_u8)t:#'TPa2P=ajKR8g=l/XK,m',d%[Bf2ASk7a95mWgsf:ZrK2'b6'hUJ^7iRT1u.9rCqT'cN?4
+WE$!!lP0[ODRfk-6sn;em>ek<YZ>TVRhQ4[D7<0>Q<Sd_kod38Y.'nMIcFpu?Yd-`((U_*_dW'PS5q9\
+NQ5Q")'"r<.@&(fo+20)$3p]c_4^:R9I^heL;T_T#`MA''T0l(nVGD(2]RjuU[e^"MFSqTae\Ka9JQJs
+M+\r<+9]i"1n)[dd](IUG<DJ:-M(C5$AV$Db%MG\2(FqdVSjns3d"&m<23DBo8$YcX'DgZX7co1MT985
+frXn*9rcf][bIqY$]W<lFLp;2pP[;]pO'^4YP8M9$O;?;<\"`Mh+JI^`aNlUr&k9.Pd4aR\VL@e"Ts?B
+@*j-d-5?H669l+WKLR7!KgfIuGf42O)idEudJ3p")#fOdj=tnLVH":nb@T,tKZ7RZRS@DCH,Sif4.]5\
+e+s4PKgVS3B[h>s-C%6$;eabXKgqn;W`<faHGsL(>HV%Ceb]N)`FH2VCt<r%VNW?[>9d2428TMIQ%3c"
+95HL:/<!i/\*I'!F*,9+,T$q*-P_QZ>-PO3IQ&Q0`(][Jr.G%N!eJ00n7Xo['*j6/+V:Sg66d,"`?MR#
+]OEZ8NQ39Kkkp$",*BtmZ=uFq;_"'U-*lc__IG?hbpKc2]]*unS^/[il2:[96D;dTZt_`JP=h\#.CAAg
+6DIGXeLItA]je<OXk"V[lMPtC@^4N9[VHio")>2GXg[PD_W*P]=tMuV*Qmt'KYO<AaDKAI(VdjA0Nh-`
+98U>l0t?S!6R.c9jYFA_^1%*BJO&.T=>V'2$&(_)OP"Y=+VBQ!ifR?M?83=W7cTW`oR9(LO\"Pr=Yu^I
+.@!NeP1ark@540Dk*&rThJkQH:?Rhoo_s"6Thss;=r7I+7YX.,Pe(]5Ti$SD+4-H6?Aeoc<3);<omX_c
+YuWE+#d&!`Bsg4-[b=`aiGlD5m[%.chXPm)?LO68p&>&D_-lc">W*Z9M8`roR+ujL+d'lWkEbJB$Rl(*
+^n>X;//f$)KYjF%aD<mZ&;1$-ECclp0,TYfUN+BAH9WO6aJ<iJ/=K?_Pff[S=_qgN0U9kZF%NI'"#uUl
+VfSgW_>P1Bc)>_V/K0[@Usc5ab&'23:oMmDF\8c>Y?7mWX*)SPHG<jlfW96h/Xk"![+_X*bAFiJE4F]+
+G=XRuLHN5pj0tBrhWo]W?fP""%N>q7`7/b9XDEdk)80RY!$#Pl#EF=!i(uBY((CM%6=E^#A2YG=LdY]L
+32BS,(Q:gn;7P\14WfbVA5YE5Q;&`k8nCo2A@>bsQqV*j3Mb5C2k3WU;n:u_I6XB$BN.#=(6(h[;JB+A
+AN$)TW)RM/J-AuU=/se$'tWL=,6"f7X:OTeQ9Sl1f4sl'7@N%N\6NP[X-M7gA$oWYd;.)1m=2oZE*,4L
+(Cc/<@W>M_AiC`kaCK<o4Jl13Qcq]:n0f7h$O27#+Y]j"1)g^Y`$-oaS5LjQMoHtrW8)DT*fnAf1+=3+
+9.#P2V(rSbZ<JrJbU*sJSC212P>#P<);Ode2kSGF1b'LYMajJZB/H7b,+D>l8uV=fm4M[@IoGYjWnh^-
+?E`!42Cff2b@\*7/N0Y8ZJ09+gb(N9S^QhI]A>2"X53@DI_Xep3%Q*`o2W]YYdgYJ,9)Q]a"[;tS0h0:
+L#ZP@#S[aSs+<Vqn*!^p)%D?giXm#l:+6p97H4uICao<$O%*N?)%[!D,([er&t)_%=Y5t5jqAVsc=o/*
+:$31XeF%TFT24Yb)ANa=7AE`E'Ui#SR8'SXl4k5&:8q6o<U1BgeS_p'Y?1'+)\nCTA[>P,(7=/Lf/8ar
+mLf>LSgA6\h;fA6e-]i3]O0]#]ESjSIZ!"P(W_%E$&s\tUY)',Z58GAj0K:%r!EZ3K#+,LLeK97%#2Zn
+nHb(G-PVHWU@F&`C,[,ma.r23%#RP#P0'NjM+jpN/=+JUo*LAuB/H(%VXoYgl?>@^c_pCB%17kYU=#q3
+MG5Re9W$:<oa6[N>lLb@^_MaOAhdJlf;g#5%;n%'IoPe(HMskaBXZ8>G0>$N4(XE,/QY$X:?qtnhgc9-
+jehK5_-XA@N(tl>N5jn_q$`9V-^;d8ZMB:YrWNCU6"&&a6m`WVL-oCrpk2*_'8f4fd<NTA2&hQGA't)T
+L.*>M8S$7p7&Es7Q:kf;q1Qb!1R_$Mds8moFY3YiB@H\\#(8S-;.J*)m2D6_RF3JTb(W;\:8-1;eS:pm
+K3,3WCXr:cL;dZ.=_uZ97AeUN[TdV"qh<&OF1PXpf6bL!om=D[DqFmk#6fa]<j9@J-70<'`a`E,=B7Ku
+Brtq:d(G#4rrRbdTWgsD%MK2'_]c8JHpT%jM8^[DBY7dq!0,#DZ0;++1Eqt',dM,HU/NP,b9aIYI)9AK
+RE[(bBtWGH3h=SEZg%DiK0l9Z.(!_P,*PWqdj_ZhI6s],WRWK+C;")_>-6C,[Hd^B_d]n(/@.nOU-Bj/
+g8rli/[@<R\_Jek\1@F?HAGaCGNc0I!HeABE4?bprtC:/j"\(1IR>?CalP:gCqa?Ys+*GnOB==\&IF.X
+iK2]64s:Mp7,j>2ZsGI)NCMrjf^sVY+d#=VP$'W5;(7c&jc\;=^0raa9]hOA[,,d_SPJ@3g%;'@6(q,L
+ZoU&cO[btkl'.WU!guob5j@nZSR.X_UfJ`OlLf0.?@P8A<,`;<O%#ks/XG.6^>X(B>jdq_[GLG!]jC/o
+g\(RIJ\ba`Qs;Nk&W+J9nX/*T59Z02AE#Kq:0JkB!'m2r81YYfs+J.\E0tH&*tX7HU2``*=t^_O`hROp
+]H09[J]D;A8M$<+.$V_^0I]u4?SIkkUQPTcg/n?CcDPa*lrFo$L<_2fg%?8E8>O\5FNSG]T2;K9Wc^q9
+>-D&0euNr9m<ZNTYh6%#9.cUYBXHKqG0=a6hf-*\Y'3O@g@':!hQM.HmG`p%RfHk5lW"!XJ<42ZGg'u!
+%>)E(1"X'3ZRM8l5N#?t,SggoKL0*D\7@K<%u<V_;)k@P/Jj@8@o9bsG!-q/87YUY,aM.PPY,Lb\R`-S
+0:5FF;`UZ)D)[t[B2cA%p3f/u:hWfh,o2J1Uf(o+\n*dj:T.6-<B?q4rE"[&hpGWW%_DlE=DV#"+9p($
+YJDcU],aqACq*TLf/oh[BlUHZD0K[dVFbd@`UFZOjqeJ^`+!^g]Oj)CO2tjP=ZiQ_/XO[H+7LZu&dnnr
+_BCV3>V[6.LVtAk.%F0c(5p0W0rWlJ4!'I(,VgegP"R-casAgB>d@QdQcpd4.@eh%2Ohu>1T=a`HTm>5
+Vna2k#)bsCa'[>qh(fL2T#p4ml>9G"<ia9@;#5SEZ!NDk-r`fd@Z=Kl=7%oH?*`4&\(iSp/"P,SG.ZTa
+2lkd*qgQ<<0K:U)'+9Q4i\<Eo?8EO\a5f!9.$Y^*!O16"&,6hK#mGrIi=MAU/f>+R6fJ[pPYNYBMacY<
+R+-"6*KN_O&f>Qh8Ks?ijUlb`Y$!?C9B@rIPg3u#Rn`&ZRFLYM4eGO6'H.\rM++1:knKRd/t#G3;sG)9
+Ptn;YX&\I#Ral;d?*@>r()n!Ka^qe]m1u)LqUn-#g[5]aXLcpg[QgnG&-^Y\I@XUqf%]inknLg>jd8/2
+0,]biA+CKWQ;8rpb@U8V#Q+o6"G4I_n;'af(CZ&9U%&DI8gb=1`M2mYb\B'VNlRpc#n2\],a-9Fnqg&?
+="KZ\V=P"Pb%EQ"c)1)hbj'C7T$O>,$4IsR7&%sl'T,U7QPcRJWUq[!7\<YU_J%ILc"a^8WmX-j$FOop
+"KtfL[VCJUYlD.$/XG]Kb3*lXh6-L1c0G%N^>H-h$k<XMKYl]Ppl%ru(Q?AoZ2"fg9.,tHjg+]<"9&H+
+JjEekGXNkn$\h#Wd.i8`,m+-9@aTG=Ah=4:7q-K6"EHXKP!ieXGslN^*IgXldeSR9AM]cLB$eY1)Cto\
+8n@O<FQS,eTg@nI.J5#@6`*dreG=kgV,OBoC=RXLB!kjG=)6@`"bt!+Z<;"pHUXg^CURGaf)(0@j`A"=
+DV'6Sk4O)8?Z4Qo"pY<a_I7E9GYD^o!Mr7?'l7]a+-Xi<V6Go;!!*.P_&uPK4<bFGKu5(<k^5]A&rFRO
+Yg<ef$Q>#E!&80bJjU`EaX"0+4JGb(Q-1JZl$U?X17?B6ZY@)3F#ol<-aW(9!eWh5d3uA:4X-(^V:-m#
+l?u!o;Q81r[;*BaZWaK_/%+[@K#;'&fdsRI4_?WfNCRArp[uDT-+H1A&:7^*-Zlsq0+_p\,5iIr8`N]R
+((1G+`T&\_m!_;HP0)f@\SSuh!<7U8i/h%t*YA^46K+$YF?Ui[M+$?c=L;Bh)3%,GOkB;T5p;@]jH<Y&
+Sl$r%9')5hFM;0<R7ub,=g[%*3Lrq.PM,U-JO,u+k`a?s*g'$j7%_u_<Bd*ILXTV[>%KT$;#in^Q"ou(
+[7@FQi>*@IHFkN1=CS_MQ'1*G\QnQh>IE>XH+dPQQeV35!J/'pn<dH=*ta@K@e#i@G!@.4a^jt1>dduo
+!.VeWE(DMu%g[j*T^V)\/enhF6fN'8"BmGqN5hVi8F-s6*g"I=EEKT2:EP?a-$%+D:,a&W9Vul&XElNX
+SBdp/$1.M45bQK&F@n,'O%?(pWH?:"3hK6Ie>dX`X]ho1XOaFpb3aMi@'J:bG"XEUcY0]>X`hm)]&.J:
+gobioXkN5g]\]i9b:J64Iu$^ooB\#sq^]ItnPWK)#9Sbg@BqZAmS\lRJ,g]g3#Di/"GB*Kn@3!e*=mro
+@INEU8hCj<7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H>q_R=AlC^cenm@9:1mM9jS"!dTMT<$3[GQ$8#0$s
+<4ZX!SPQ1`C/m<k<ioH)<bk^Hj`\=EYZP^B4!g3;,_X$B^`,rSd;?51D7;2&`_1E_?)2\&9V*[3X^(8f
+bGFM6LW!YA=M/6)*KS9PE`kN%="Tc_5TfJD*"iV`K>JccW*D(s%YqtH0drPi.i+&_,;H.PE]Y>'a<WMi
+*0NrAPKG1,WEc`5/sjd/1F\jBCGq[--SqaWnp<Qm_]RAW3!,"-UX<PX?k"lR:8cG`[/-=kN<u:CW\Q'+
+-4<qX8Lo;u?j<T<WE?0?.f9XmB=HYK2_1HIlZTns0/orfo)!mNi%R,A*YSp9_r<C1XBm\%NlU393@pb#
+/!eB@+:n5]%LE;k6/`BB<%]$tLI:&5(mIcE'oPN@&X_&f!?I4kj:W=EN_(O\8`^SQ<3B@UQV6HS)3iE\
+24I>'':HoGGr(H+kS+pM%Z*WL;<\d`<A'\6Vc2jq)O4's<NB-c'q3Zj\QuC?lkUNTNlbk==mZuo<Nb"l
+[p/8:)jS_5Fh:rJ(RrtCq0g"bn/*,Z-?hVD@IY2)<\G>Ma(+ZX*/*e`+i3:3&-r+?#6]XpT^[b2.MiMJ
+_kHT+N(PH3MT)=[Ls0Tm*0/(7nd,_^7jO8>V"0@9W`La;bGFe:N65ciRa%`$M9P7/4J'lsoEl$7LI@la
+W:YsA.[Ni+e#E!INCp*JWn"-BLi<F)>cu\/2@B,7a(2L/XS.QHWn2'qgTC2XNQUF+]%sO`Mp:P]BWU*p
+p^@W?#DBtQYkX/P.i4/aj0ACgN_:aab2or)L]dV["+igHd!.r*'aoa`@F4e&7O8_*7:OYh`+CkGN^mU,
+q#lF@,EbW/dWn6X<@aA.A^^C-`apr\^S]D/"QjhgSkj"Jq?7(W6_[Fke9XP1PtRuQC"3!57\s%`<GGH)
+`FcM^Y#fDhqZV_nA$T6RepBi_eSDTtD:\T<`oV9Q?#J8@`THi?^0bg1r!!B0K>M&9fR-.9'oU(!-_MH4
+lPl&1ARlK;ZiU1.J\`J5BKRIP$AHA@YipI$,8,jP,-bgo@P\p^a!7kQr.79[Oi\lSBfr+g.[A1'ZKZbR
+@ksIs-F7F!ic@/OcR6'`r;qU<U!Y9qC-<c)8u9uc[-E'+UJe)A.^a$)@^B7*J1J%mrH>YZZ.U[/$TJ42
+C:2eJ[d/@Yj)V]d0"5W0iq%K0h_2J)rW<7S_;R)XCd''WMT+U1ZKLpJ'9L>NTf.f53WT225i@`+1`d58
+KgOa[fQ9;#&W&p8O]\ts0c>Rn,CgX'E^0Va8E>q:1nIPnPtL/$flXr:0pt_tP?G9LEB0RbkEFTkrddA/
+;!=-I2'.lOV,HQBg3#TQ;5mO[Q!1S%Z!"20l]p2sI_fHt=R;>X24c0=[7DkbgNC6(*WXp]QOC4XnThfS
+n!Df%rrI\e@.9Og2BNNf`FAA)gibn*Oi_/)R9[1-0`Z^=TQ!FQ)?^%n_P(q94?=PqLr?$-8?>uJ(lZJ0
+EQIKm59Q'/UiK#E1/7h4b,'.#Cq<t-R*;FK8Z^Wa31S9lF33eFImB[RW,tW`)NRFbd]%?2D*":cW77hi
+9!):#=KL)SFis)t^L4:uXEI5gRa5ZSg8Qi`AZjp0\C7Ra]9V+=GeDn:GK]CMs+%oCY]rho)\7bCij!aP
+DEAr%aQ0XP9WhSQN.:mN:cK^,rs+3D@8OIE2B<<a6t0"QUfK&`N(.;S\E%fr+-9$(;@"h<!@*h$AQ$'L
+[TtPR9P.3`Ut0BAS5*]q\`EI45G1hd<&u<@NCTdBBiMZT2P!XB<,,DoV,j^"XB'+:]&e+K?a*XK<]_Un
+c"FCeAQ!1nWnhU';f.UhNRmK@]O#MX]B/bbJ&#H2=?IoH%>Vl2EEKkc2][t#A9(g8VH5@-\\J1V-i=Sb
+#(sc90W853)\.YA+u(L9;C`N@`Zm4:gi>ItO2kX+.3+42-BlRu19"Na>:u8d-8R*@dVCb1c6kEIh"#eU
+T?nuC.NK.[7\eB\1oah:Rnfm2.Q&]H;QEj!egiVXh/^,6YLkBa.ijerB!]W*QCnDUgMXLKm;bjRdd)(g
+hCgggh=CGl^Yge*/05H4L;W"*336FB)ihu"1-$nW;_*a98Dk$R'FkEQK0eH-QrG[U%>R=1&K$a-.2@b0
+it7[.DE/_sJ0YaF'S8IoP=ajKR8g=l/XK,m',d%[Bf2ASk7a95mWgsf:ZrK2'b6'hUJ^7iRT1u.9rCqT
+'cN?4WE$!!lP5l=DRj&V=6p\A'opCIZUs5$O9M6/D7<EF;EK<Pl#jUDmh_JDmeM:G?gnmP((U_*_dW'P
+S5q9\NQ5Q")'"r<.>bRUZEOT3$3p]c_4^:R9I^heL;T_T#`MA''T0l(nVGBd!?@-?UQMMaMFSqTae\Ka
+9WD/FQHQ,r$&m#>1n)[do81]VG<DJCVt:<*$AV$DdAZ\p9e)K'VUMO;$B7ZU<3"KKonq"/[p6)fX7co1
+MT985`8gQA"e+%Z[aV?5qfU'EFLp;2pP[;]pO'^4YP8M9$O;@%iNW*9:+I->`oF?"%$!t.P`/ilfiS@U
+"Ts?B@*j-d-5?oC6Xe@:KLR7$MFD"%Gf41m!00QZdE'gl73dseAC>`kVH#.494cQIKZ7RZRS@DCH,Sif
+4.]5\e+s4PKgVS3B[h>s-C%6$;eabXKgqn;W`<faHGsL(>HV%Ceb]N)`FH2V@WD91!mPMh>A;ZUrOV*3
+\m94*Hc>.?HbNj*fDGgX"bX[#E7fP--P_QZ@r^0!L.<PRb!muqm&U6f!eJ01Y\6-C'+0H2+gC0X66d,"
+`?MR#]OEYr!(S9=ki?JG,*BtmZ=uFq;_"'U-*lc__IG?hbpKc2]]*unS^/[il2:[96D;dTZt_`JP=h\#
+.CAAg6DIGXeLItA]je<OXk,)2lMZ=P@^4T;YrM]T!G8ao/[Xh;Ibf%Th(H0P^#JX0^#(KPli$tgK#-D"
+\84>R'8jch0t?S!6R.c9jWbQIp/V1nJO&.T=>V'2$&(_)OP"Y=+VBQ!ifR?M?83=IJ0U3/oPuf4O\"Pr
+=Yu^I.@!NeP1ark@540Dk*&rThJkQH:?Rhoo_sD-Thss;=u@@`8Yo>LPhL7DTi%dglBPP\?EmY8<pQ%)
+omX_cYup@Y=Iaie!4,krQJ-JY5An#:m[%.chXPm)?LO68p&>&D_-lc">W*Z9M8`roR+ujL+d'lWnr\i`
+HRf)G^n>X;//f$)KYjF%aD<mZ&;\9!ECd070,TY_^_+ZSH8un*aJ<iJ/=K?_PffhCa_\Oq0UU(]F%NIe
+D`F94VfTuHqL:c'd&;%Y/K0[@Usc5ab&'23:oMmDF\8c>Y?7mWX*)SPHG<jlfW96h/5AEC!*Q<TlYWf^
+A$j;E(JCmams)M%YBS1WqYu)]i37H"/fP=W`8\%Hb\fKaON?LgGtbAEKlV\D+@$20((CM%6=E^#A2YG=
+LdY]L32@l!(Q-4B;7P\14WfbVA5YCg%S\=68nCo2A@>bsQqV*j3Mb5C2k3WU;n:u_I6XB$BN.#=(6(h[
+;JB+AAN$)TW)RM33i,lZ=0,G<<P%:8]jJ!GCfWVDQHa'L>&@0J4gkZ4V+':gbE[D>#eSkCG3MH\rI;Uj
+E*,4L(Cc/<@W>M_AiC`kaCK<o4Jl13Qcq]:n0f7h$O27#+Y]j"1)g^Y`$-oaS5LjQMoHtrW8)DT*fnAf
+1+=3+9.#kF,r2H)Z<Jr>!%'KNSAnnoS%kjWGV%tT,bE<F1b'J'Bgr)".5\&117M%:e1*=*SPlLhX4AdY
+Wnh^-?E`!42Cff2b@\*7/N0Y8ZJ09+gb(N9S^QhI]A>2"X53=e8"*dre-i,`X+e@.Dt?(\1E2@pj>&_H
+Sl7/*bN9oXp_42E"bT,"&=?EL)%D?giXm#l:+6p97H4uIe8@8eO%87D)&/*&-'Lp^&t)_%=Y5t5jqAVs
+c=o/*:$31XeF%TFT24Yb)ANa=7AE`E&<I&JR8'O+C)%YP:8pj`<U-u\eS_p'Y?1'+)\nCTA[>P,(7S=,
+fkn3&mM?h-cKTJ`?1/T!eaE6]^L-II)NA(.Jr!hi'Z`0^4,LhnZ.U+]@jRDY!-8\O":>A9J&.fILeK97
+%#2ZnnHb(G-OPGoTWq&3C,[,ma.r23%#RP#P0'NjM+jpN/=+JUo*LAuB/H(%VXoYgl?>@^c_pCB%17kY
+U=#q3MG5Re9W$:<oa6[NVc9\HWqD7oC:@HNf;nTQ%>r2:ZGE:*HSi=_&rXN,nVHk4"V&"m,'N_Q<p:U4
+8M2_*c0">>[7P8g$oTUPN5jn_q$`9V-^;d8ZMB:YrWNCU6"&&a6m`WVL-oCrpk2*_'8f4fd<NTA2&hQG
+A't)TL.*>M8S$7p7&Es7Q:kf;q1Qb!1R_$Mds8moFZZ0jB@H\\#),F=;/"I)0ERM4VGaB,RV2aW;2WmJ
+Q"Xt0[0*8@lVH`0@])t]f4jhKNJc%t[TdV"qh<&OF1PXpf6bL!om=D[DqFmk#6fas@;skH7OJq/`aa#@
+r.[]fPKIHK(7K%?rrRbf+L#NA+qk<;_]c8JHl)ksM8EWIBS6^A(l?8)nRqK'#p#,Ki=YiqE[;lbb,''V
+/@o=HREZmqRCE<63h=SEZg%DiK0l9Z.(!_P,*PWqdj_ZhI6s],WRWK+C;")_>-6C,[Hd^B_d]n(/@K=W
+U=3kbgF]l"IDY#b\_SmICVAa!HG/2h\*M8t;h(F`-[8e$[g@nHiT=7tAgU;0a5H(3)!4j!s+*GnOB==\
+&IF.XiK2]64s:Mp7,j>2ZsGI)NCMrjf^sVY+d#=VP$'W5;(7c&jc\;=^0raa9]hOA[,,d_SPJ@3g%>8p
+6(q-=PZfpcO\)BIl'0nE5+tiQ<9f`P[9g+@X\XH^g@]p,>EDqe&81[-)/"FcCXDr)W]b3M>V:2U/]o5Y
+K@qHXLu%pHEO&\#3*\?`&W+J9nX/*T59Z02AFc-n[U1`hJ&%^r81YYi#_^'gE6)iV*tX7HU2``*=t^_O
+`hROpm!:l=ON=5<8M$<+.$VlNEli./?SIkkVK5>1g2As@cDPa*m.u2sKn(Rn8hCO*3hf8SeAsKa!?nAY
+ku%Kj=t<R,enGl?/O$":Yh6%#9.cUYBXHKqG0=a6hf-*\Y'3O@g@':!hQM.HmJ?j5^u2GA9J.7pLrA;X
+Gg($Y^IH71CND&&M_,$]5G1gI+9DuTKL0*D\7@3#!/AB6:Zt21,7]@Fj&*>IG!-q/87Sn",aLkHPY,Lb
+\R`-S0:5FF;`UZ)D)[t[B2cA%p3f/u:hWfh,o2J1Uf(o+\n*dj:T.6-<B?sWX]MT)CK7t-G.h7e=DV#"
+-'legZs%<I]4JG,Dn&\U[lB)]?P\Vhjk$GJic0F,i$9,[A3UAA\mfQ%HaN)RK#Zkl=ZiQ_/XO[H+7LZu
+&dnnr_BCV3>V[6.LVtAk.%F0c(5p0W0rWlJ4!'I(,VgegP"R-casAgB>d@QdQcpd4.@eh%2Ohu>1TB1#
+HTn(K-o<Co&rT5SdO@#Q>r%mEVpm1N^]dW:<iT,q2-I>)9jNM*iU?(P%`\L#=7"<2$neSqXOerr.tuF;
+G.ZTa2lkd*qgQ<<0K:U)'+9Q4i\<Eo?8EO\a5f!9/=ocjQHSD5&,6hK#mGrIi=MAU/f>+R6fJ[pPYNYB
+MacY<R+*5Z*KN_NZ+1R/8I:GL@e+e4)H@64aX-HpN%/HjRn`!b$.&`n4eGO6'H.\rM++1:knKRd/t#G3
+;sG)9Ptn;YX&\I#Ral;d?*@>r()n!Ka^qe]m1u0kY1[[$>OE:HQ-SW:]3XkAS(-SE+2,Z@YUB,SKn5*=
+hpQ3I3t6_Z`::':NW*@7alP;i#Q+o6"G4I_n;'af(CZ&9U%&DI8gb=1`M2mYb\B'VNlRpc#n2\],a-9F
+nqg&?="KZ\V=P"Pb%EQ"c)1)hbj'C7T$O>,$4R>t7&&)-oSQ?mQV=:*WV$UX8uGXgeZ/;"b_Q:)Y1K_>
+W==4Trj'LZYNWrc`F"DPA(J.YU(_I*h/#!m*I@7'^>H-h$k<XMKYl]Ppl%ru(Q?AoZ2"fg9.,tHjg+]<
+"9&H+JjEekGXNkn$\h#Wd.i8`,nl/)@aTG=Ai1Nf7q9sB"GT>iP"B34GsnN0/!`h<!""=uAMBHFA2>+1
+)K?mj`$_h#r)/.bU!@?!=e-f=8#B4!eG=kgV,OBoC=RXLB!kjG=)6@`"bt!+Z<;"pHUXg^CURGaf)(0@
+j`A"=DV'6Sk4O)8?Z4Qo"a6.e^sXp!g.VtSMhL)"=R#J,&MV2=Ygg=U!!*%M_'#sq4<bFGKu5(<k^5],
+!/\Z=YrI\O1E)7n,I-J1JjU`EaX"0+4JGb(Q-1JZl$U?X17?B6ZY@)3F#ol<-aW(9!eWh5d3uA:4X-(^
+V:-m#l?u!o;Q81r[;*BaZWaK_/%+[@K#;'&fcZDm4:97\ZcDHq]6%fH)2^tfO>ljl$$^qf0%)iSWrHai
+i,H2B4sL_u`T&\_m!_;HP0)f@\SSuh!<7U8i/h%t*YA^46K+$YF?Ui[M+$?c=L;Bh)3%,GOkB;T5p;@]
+jH<Y&Sl$r%9')5hFM;0<R7ub,=g[%*3Lrq.PM,U-(]^7+k`dP#*W8R(d38.lh)Z?FTuJR%8q_5c%A_S4
+d$i3#F]+sd/='KtT$_8[>4%X1FhZgS\QnQh>IE>XH+dPQQeV35!J/'pn<dH=*ta@K@e#i@G!@.4Zrj;q
+.]--!!!#7AE(DMu%g[i=+`PM=3YN'X6_\QkXAU8[JjlGSaC#3:(6$>1E_.gN:FLe7AMVAD\mI.YbbfGQ
+XP.SPSBe$RamAkR5bQK&F@n,'O%?(pWH?:"3hK6Ie>dX`X]ho1XOaFpb3aMi@'J:bG"XEUcY0]>X`hm)
+]&.J:gobio"Kq&lIpT;pbNrj0I_amGGYB_/%uA0`Z$=K14!0R*jKa&)Y$3QHJ3Vsg3$]7K#D>EP:q1$o
+*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H>q_R=AlC^cenl!!:1mM9bhdb4TLWA=3XdKm
+rh@hLF37klPu">XC/m<k<ioH)<bk^Hj`\=EYZP^B4!g3;B=(iZ<kDqOh/Bf.DHAorf'R[o?>ioWjnAX$
+VU$pd)E]e`#fFZ%3(bM-omr[oZ<9;e="Tc_5TfJD*"iV`K>JccW*D(s%YqtH0drPi.i+&_,;H.PE]Y>'
+a<WMi*0NrAPKG1,WEc`5/sjd/1F\jBCGq[--SqaWnp<QmcmU_#*>49"UXCSJWa.BL:8cSk0CT-CX&c6"
+X"]n5Ej]/%6*'[Z*)`tP!*Lm3X'N$cDR\CR2_1HIlZTns0/orfo)!mNi%R,A*YSp9_r<C1XBm\%NlT5B
+omDKm.oFDgTF^f3%LE;k6/`BB<%]$tLI:&5(mIcE'oPN@&X_'c3?=/Nj:W=EN_(O\8`^SQ<3B@UQV6HS
+)3iE\24I>'':IA<Gs.cqkS+pM%Z*WL;<\d`<A'\6Vc2jq)O4's<NB-c'q3ZjL]FV[lkSgINlbk6=D\$G
+26PVL[p/8:)jS_5Fh:rJ(RrtCq0g"bn/*,\%gds-@IY2)<\G>Ma%7j@*.C[44NQ/1YQt(5#6]XpT^[b2
+.MiMJ_kHT+N(PH3MT)=[Ls0Tm*0/(7nd,_^7jO8>V"0@9W`La;bGFe:N65ciRa%`$M9P7/4J'lsoEl$7
+LI@laW:YsA.[Ni+e#E!INCp*JWn"-BMTolg!3XqSp"J5Za(2GW/DpmfWn2'qgTC2XNQUF+]%sO`Mp:P]
+I(nLAp^@W?#DBtQYkX/P.i4/adVTa.G"X2IaB.r#L]dV["+igHd!.r*'aoa`@F4e&7O8_*7:OYh`+CkG
+N^mU,q#lF@,EbW/dWn6X<@aA.A^^C-`aprp9kMk"`9)2(Skj"Jq?7(W6_[Fke9XP1PtRuQC"3!57\s%`
+<GL'1`=)cOY#fC]Rg"Pc@tWC7^^DHceSDTtD:\T<`oV9Q?#J8@`THi?^0bg1r!!B0K>M&9fR-.9'oU(<
+/G8@I7jULBf5c.a_u]l>J\`J5BKRIP$AHA@YipI$,8,jP,-bgo@P\p^a!7kQr.79[Oi\lSBfr+g.[A1'
+ZKZbR@ksIs-F7F!ic@/OcR6'`r;qU<U!Y9qC-<c)8u9uc[-E'+UJe)A.^a$(;up1)f.0jYrIVprL0&2a
+$QYtjC:2eJ[d/@Yj)V]d0"5W0iq%K0h_2J)rW<7S_;R)XCd''WMT+U"2JVY=,Eea1l^9lL@K?FZ5i@`+
+1`d58KgOa[fQ9;#&W&p8O]\ts0c>s?j,r!dIR,->8E>q:1nIPnPtL/$flXr:0pt_tP?G9LEB0RbkEFTk
+rddA/;!=-I2'.lOV,HQBg3#TQ;5mO[Q!1S%.KHSOl]nKhI_fHt6S#TA"cguE[9Ds`gNC6hEOf?BQWplS
+nThfSn!Df%rrI\e@.9Og2BNNf`FAA")`;gYOi^G)ous"70`Z^=TQ!FQ)@m+,_P(qiCcWXLLr?$-8?>uJ
+(lZJ0EQIKm59Q'/UiK$XRSP>rb,'.#Cq<t-R*;FK8Z^Wa31S9lF33eFImB[RW,tW`)NRFbd]%?2D*":c
+W77hi9!):#'`_:8Fir6D^L4:uTp=@\!lnu]g9#PAD7\VD\D4629<Hq:GeDn:GK]CMs+%oCY]rho)\7bC
+ij!aLNLIJ=aQ0:%qW:R,R".EZ:cK^9%0qPQ@8OIE2B<<a6t0"QUfK&`N(.;S\E%fr+-9$(;E6"g9dc/t
+AQ$'L[TtPR9P.3`Ut0BAS5*]q\`EI45G1hd<&u<@NCTdBBiMZT2P!XB<,,DoV,j^"ML[3W]&d\3?a*XK
+:s/0i!FrK?D-"8[[bYl3>]*V)V:P$X]O#MX]B/bbJ&#H2=?IoH%>Vl2EEKka7a55YjDn3NI<-d&bWm9>
+-l`j-#(sc90W853)\.YA+u(L9;C`N@`Zm4:gi>ItO2rS%.3+LD-BlRu19"Na>:u8d-8R*@dVCb1c6kEI
+h"#eUT?nuC.NK.[7\eB\1oah:Rnfm2.Q&]H;QEj!`BY0<h/]o*YLkBa-tRSE!3t602QL,hgMXLU/iP;O
+dd)(ghCgggh=CGl^Yge*/05H4L;W"*336FA,A++=E]GTb5.Qm#jrb30'FkEQK0eH-QrG[U%>R=1&K$a-
+.2@b0it7[.DE/_u8)t:#'TPa2P=ajKR8g=l/XK,m',d%[Bf2ASk7a95mWgsf:ZrK2'b6'hUJ^7iRT1u.
+9rCqT'cN?4WE$!!ih-Y/DRirP=6p\A'Jd:3!*JV(RoQWED7<a;(E8Xbl#jUDmh_JDmeM:G?gnmP((U_*
+_dW'PS5q9\&[PPY\K$kB+'cqLo+20)$3p]c_4^:R9I^heL;T_T#`MA''T0l(nVGD(2]RjuU[e^"MFSqT
+ae\Ka9WD/FQHQ,r$&m#>1n)[do81]VG<DJCVt:<*$AV$DdAZ\p9e)K'VUMO;$B7ZU<3"KKnPBC([p6%#
+hpr.RMT985_5k"p"e+%Z[bIqY$]W<lFLp;2pP[;]pO'^4YP8M9$O;@%iNW*9:+I->`oF>o)bkN"Pfh@Y
+<QG:A"Ts?B@*j-d-5?oC6Xe@:KLR7$MFD"%Gf42O)idEudJ3p"73dseAC>`kVH#.494cQIKZ7RZRS@DC
+H,Sif4.]5\e+s4PKgVS3B[h>s-C%6$;eabXKgqn;W`<faHGsL(>G;*Jeb]Mr\RVpJCDIjS!mPMh>A_sg
+KuW4q\m94*Hc>.?HbNj*fDGgX"bX[#E7fP--P_QZ@r]pi9nsgSb"jcN%'0L0!eJ01Y\6-C'+0H2+gC0X
+66d,"`?MR#]OEZ8NQ39Kkkp$",*BtmZ=uFq;_"'U-*lc__IG?hbpKc2]]*unS^/[il2:[96D;dTZt_`J
+P=h\#.CAAg6DIGXeLItA]je<OMh!=clMYn8@^4T;<XUkgbA+H>/[jtn_W,[Ih(H0P^#JX0^#(KPli$tg
+K#-D"\84>R'8jch0smE=K,p,scghhKVIBQ*JO&.T=>V'2$&(_)OP"Y=+VBQ!ifR?M?83=W7cTW`oR9(L
+O\"Pr=Yu^I.@!NeP1ark@540Dk*&rThJkQH:?Rhoo_sD-Thss;=u@@`8Yo>LPhL7DTi%dglBPP\?Elit
+f"`$SfESneXOum*>;RD=Bsh+2QJ6PriGlD5m[%.chXPm)?LO68p&>&D_-lc">W*Z9M8`roR+ujKpM.(e
+nl]5+?SMN\5bN'e//f$)KYjF%aD<mZ&;\9!ECd070,TYfUN+B8r]_NeaJ<iJ/=K?_PffhCa_\Oq0UU(]
+F%NIeD`F94VfTuHqL:c'd&;%Y/K0[@Usc5ab&'23:oMmDF\8c>Y?7mWX*)SPHG<jlfW96h/Xk"![+_X*
+bAFiJE4F]+G>#'lms)(WDg0ClqYu)]i37H"/fOP2`8\%Hb\fKaON?LgGtbAF0:78Si(uBY((CM%6=E^#
+A2YG=LdY]L32BS,(Q:gn;7P\14WfbVA5YE5Q;&`k8nCo2A@>bsQqV*j3Mb5C2k3WU;n:u_I6XB$BN.#=
+(6(`_;JB+AAN$)TW)RM33i,lZ=0,G<<P%:8]jJ!GCfWVDQFTMm>&@<PA[^E5\6NoQ4/LNqGJ%7#=1dSf
+rI;UjE*,4L(Cc/<@W>M_AiC`kaCK<o3^oMiQcq\p&1AM2$O27#+Y]j"1)g^Y`$-oaS5LjQMoHtrW$D:'
+*fnAf1+=3+9.#kF,r2H)Z<JrJbU,+pSC212S'EB;WSI&k5+g1M1b'LYMajJi.5\&117M%:e1*=*SPlLh
+X4AdYWnh^-?E`!42Cff2b@\*7/N0Y8ZJ09+gb(N9S^QhI]A>2"X53@DI_Xep3%Q*a$\lRY0fZ7@1E2@p
+j>&_HSl7/*bN9oXp_42E"bT,"&=?EL)%D?giXm#l:+6p97H4uIe8@8eO%87D)&/*&-'Lp^&t)_%=Y5t2
++4D*Tc=o/*:$31XeF%TFT24Yb)ANa=7AE`E'Ui#SR8'SXl4k5&:8q6o<U1BgeS_p'Y?1'+)\nCTA[>P,
+(7S=,fkn3&mM?h-cKTJ`?1/T!eaE6]^L-II*#9%kKu7?h(n=V[)3)[HneiF5:FVRPAb-H<r!EZ3K#+,L
+LeK97%#2ZnnHb(G-PVHWU@F&`C,[,ma.r23%#RP#P0'NjM+jpN/=+JUo*LAuB/H(%VXoYgl?>@^c_pCB
+%17kYU=#q3MG5Re9W$:<oa6[NVc9\HWqD7oC:@HNf;nTQ%>r2:ZIu>QMbU5'Cpr*#pBuu'kB+;kY4mk!
+lM#\?hlle`%LWMp_Vq`oN(tl>N5jn_q$`9V-^;d8ZMB:YrWNCU6"&&a6m`WVL-oCrpk2*_'8f4fd<NTA
+2&hQGA't)TL.*>M8S$7p7&Es7Q:kf;q1Qb!1R_$Mds8moFZZ0jB@H\\#),F=;/"I*74+9mVGh3YqLqD8
+;lWi4eU#2H[9Ke8CXr:cL;dZ.=_uZ97AeUN[TdV"qh<&OF1PXpf6bL!om=D[DqFmk#6fas@;skH7OJq/
+`aa#@r.[]fPKIHWfmL^=rrRbf+L#NA+qk<;_]c8JHpT%jM8^[DBY7e1)NDc^Z0;+;6R%Z7,dM,HU/NP,
+b9aIYI)9AKRE[(bBtWGH3h=SEZg%DiK0l9Z.(!_P,*PWqdj_ZhI6s],WRWK+C;")_>-6C,[Hd^B_d]n(
+/@K=WU=3kbgF]l"IDY#b\_SmICVAa!HG/2h\*O"q"+nAJ0Xtp_,85sRj"\(1IR>?CalP:gCqa?Ys+*Gn
+OB==\&IF.XiK2]64s:Mp7,j>2ZsGI)NCMrjf^sVY+d#=VP$'W5;(7c&jc\;=^0raa9]hOA[,,d_SPJ@3
+g%>8p6(q-=PZfpcO\)BIl'0nE5+tiQ<9f`P[9g+@X]FbQg@]p2@Bir$Q<Q5<d:p!lm?ZLL^>X(B>jdq_
+[GLG!]jC/og\(RIJ\ba`Qs;Nk&W+J9nX/*T59Z02AFc-n[U1`hJ&%^r81YYi#_^'gE6)iV*tX7HU2``*
+=t^_O`hROpm!:l=ON=5<8M$<+.$VlNEli./?SIkkVK5>1g2As@cDPa*m.u2sT[9WZ8hCsB8>O\5FNSG]
+T2;K9Wc^q9>-D&0euNr9m<ZNTYh6%#9.cUYBXHKqG0=a6hf-*\Y'3O@g@':!hQM.HmJ?j5^u2GA9J.7p
+LrA;XGg(%e+-=S)Z?]-H>;)@o5N#?t,SggoKL0*D\7@K<%u<V_;)k@P/Jj@8@o9bsG!-q/87YUY,aM.P
+PY,Lb\R`-S0:5FF;`UZ)D)[t[B2cA%p3f/u:hWfh,o2J1Uf(o+\n*dj:T.6-<B?sWX]MT)CK7t-G.h7e
+=DV#"-'legZs%<I]4JG,Dn'%i=$*80m<?3LDcaR4pAKKV?uT41-5R,H`+!^g]Oj)CO2tjP=ZiQ_/XO[H
++7LZu&dnnr_BCV3>V[6.LVtAk.%F0c(5p0W0rWlJ4!'I(,VgegP"R-casAgB>d@QdQcpd4.@eh%2Ohu>
+1TB1#HTn(K-o<Co&rT5SdO@#Q>r%mEVpm1R.\0J<<iae%26,JQ]3_\n/2f"!P07IDg+>4`?*`4&\(iSp
+/"P,SG.ZTa2lkd*qgQ<<0K:U)'+9Q4i\<Eo?8EO\a5f!9/=ocjQHSD5&,6hK#mGrIi=MAU/f>+R6fJ[p
+PYNYBMacY<R+-"6*KN_O&fDCD8L9QljV!t\Y$!?C9BHm*Pg3u#Rn`&ZRFLYM4eGO6'H.\rM++1:knKRd
+/t#G3;sG)9Ptn;YX&\I#Ral;d?*@>r()n!Ka^qe]m1u0kY1[[$>OE:HQ-SW:]3XkAS(6s&ID9.Y(`X;%
+$&-9*nJIcs0,]biA+CKWQ;8rpb@U8V#Q+o6"G4I_n;'af(CZ&9U%&DI8gb=1`M2mYb\B'VNlRpc#n2\]
+,a-9Fnqg&?="KZ\V=P"Pb%EQ"c)1)hbj'C7T$O>,$4R>t7&&)-oSQ?mQV=:*WV$UX8uGXgeZ/;"c"a^m
+Y1K`J$Or!6A?smip5;YFf5.nMXnN3_b3*lXh6-L1c0G%N^>H-h$k<XMKYl]Ppl%ru(Q?AoZ2"fg9.,tH
+jg+]<"9&H+JjEekGXNkn$\h#Wd.i8`,nl/)@aTG=Ai1Nf7q9sB"GT>iP"B34GsnN0/!`h>deSR9AM]cL
+B%)%Dk&ibW:M8/Q"U9ZJU/>URH:90G9;YX%eG=kgV,OBoC=RXLB!kjG=)6@`"bt!+Z<;"pHUXg^CURGa
+f)(0@j`A"=DV'6Sk4O)8?Z4Qo"pY<a_I7E9Hq#IuMoK7Hf_gIo-'QJ_EnPiY!WN4P_'#sq4<bFGKu5(<
+k^5]A&rFROZ"UdZ1E)7n,I-J1JjU`EaX"0+4JGb(Q-1JZl$U?X17?B6ZY@)3F#ol<-aW(9!eWh5d3uA:
+4X-(^V:-m#l?u!o;Q81r[;*BaZWaK_/%+[@K#;'&fdsRI4egD?[G*:Al[?Y1Ek1!Y[qi\:o6S+-0=U9H
+!s=.ki@qcX4sL_u`T&\_m!_;HP0)f@\SSuh!<7U8i/h%t*YA^46K+$YF?Ui[M+$?c=L;Bh)3%,GOkB;T
+5p;@]jH<Y&Sl$r%9')5hFM;0<R7ub,=g[%*3Lrq.PM,U-JO,u+k`f7.*g'$j;X'G"FZuKrWDr/J>.%\A
+=fk`jQ.kn[_-sTNm$:j5T$_8[>4%X1FhZgS\QnQh>IE>XH+dPQQeV35!J/'pn<dH=*ta@K@e#i@G!@.4
+a^jt1>dduo!.VeWE(DMu%g[j*TlA(h3Zeoh`1h6BXBI7oN5hW4aR"4;+HX[?E_.gN:FMIMV/j[o\mI.Y
+bbfGQXP.SPSBe$RamAkR5bQK&F@n,'O%?(pWH?:"3hK6Ie>dX`X]ho1XOaFpb3aMi@'J:bG"XEUcY0]>
+X`hm)]&.J:gobioXkN5g]\]i9bO,0+JAC*IGYB_/%uA0`Z$=K14!0R*jKa&)Y$3QHJ3Vsg3$]7K#D>EP
+:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H>q_R=AlC^cenm@9:1mM9jS"!dTMT<$
+3[GQ$8#0$s<4ZX!SPQ1`C/m<k<ioH)<bk^Hj`\=EYZP^B4!g3;B=(iZ<kDqOh/Bf.DHAorf'R[o?>ioW
+jnAY&^gM+`4=1jRLW!YA=M/6)*KS9PE`kN%="Tc_5TfJD*"iV`K>JccW*D(s%YqtH0drPi.i+&_,;H.P
+E]Y>'a<WMi*0NrAPKG1,WEc`5/sjd/1F\jBCGq[--SqaWnp<QmcmU_#*>49"UXCSJWa.BL:8cSk2(G.p
+X&c:P.lF?_Ek>Y]e)2>~>
+grestore
+showpage
+grestore grestore
+%%PageTrailer
+
+%%Page: 4 4
+%%PageBoundingBox: 18 18 594 774
+%%BeginSetup
+%
+%%EndSetup
+%%BeginPageSetup
+%
+gsave
+[0.24 0 0 -0.24 18 774] concat
+gsave
+%%EndPageSetup
+/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
+/Times-Bold-iso1252 /Times-Bold ISO1252Encoding psp_definefont
+%!PS-AdobeFont-1.0-2.0
+%%Creator: SunTypeTools-TT 1.0 gelf
+%%Title: OpenSymbolHSet1
+%%CreationDate:  
+%%Pages: 0
+%%EndComments
+%%BeginResource: font OpenSymbolHSet1
+% Original font name: OpenSymbol
+30 dict begin
+/PaintType 0 def
+/FontType 3 def
+/StrokeWidth 0 def
+/FontName /OpenSymbolHSet1 def
+/XUID [103 0 0 16#8D049593 3 16#ABC23EE2 16#6072D5A5] def
+/FontMatrix [.001 0 0 .001 0 0] def
+/FontBBox [-179 -313 1083 917] def
+/Encoding 256 array def
+    0 1 255 {Encoding exch /.notdef put} for
+    Encoding 32 /glyph0 put
+    Encoding 150 /glyph1 put
+    Encoding 149 /glyph2 put
+/CharProcs 4 dict def
+  CharProcs begin
+    /.notdef {} def
+    /glyph0 {
+       500 0 0 0 0 0 setcachedevice
+    } bind def
+    /glyph1 {
+       556 0 -2 224 554 296 setcachedevice
+       -2 224 moveto
+       554 224 lineto
+       554 296 lineto
+       -2 296 lineto
+       -2 224 lineto
+       closepath
+       fill
+    } bind def
+    /glyph2 {
+       356 0 36 223 297 483 setcachedevice
+       169 223 moveto
+       134 223 103 236 76 261 curveto
+       50 286 36 317 36 353 curveto
+       36 389 49 420 76 445 curveto
+       102 470 133 483 169 483 curveto
+       204 483 235 471 260 445 curveto
+       285 420 297 389 297 353 curveto
+       297 318 285 287 260 261 curveto
+       236 236 206 223 169 223 curveto
+       closepath
+       fill
+    } bind def
+  end
+/BuildGlyph {
+  exch /CharProcs get exch
+  2 copy known not
+    {pop /.notdef} if
+  get exec
+} bind def
+/BuildChar {
+  1 index /Encoding get exch get
+  1 index /BuildGlyph get exec
+} bind def
+currentdict end
+/OpenSymbolHSet1 exch definefont pop
+%%EndResource
+/Times-Italic-iso1252 /Times-Italic ISO1252Encoding psp_definefont
+grestore
+gsave
+220 258 moveto
+0 0 0 setrgbcolor
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<496C>
+show
+265 258 moveto
+<657374>
+show
+330 258 moveto
+<6175737369>
+show
+432 258 moveto
+<706F737369626C65>
+show
+590 258 moveto
+<6465>
+show
+648 258 moveto
+<72E9616C69736572>
+show
+790 258 moveto
+<756E65>
+show
+870 258 moveto
+<70726F63E964757265>
+show
+1056 258 moveto
+<6427696E7374616C6C6174696F6E>
+show
+1290 258 moveto
+<636F6D706CE87465>
+show
+1464 258 moveto
+<6427756E65>
+show
+1571 258 moveto
+<706172746965>
+show
+1685 258 moveto
+<646573>
+show
+1761 258 moveto
+<6D6F64756C6573>
+show
+1922 258 moveto
+<6F75>
+show
+1982 258 moveto
+<6465>
+show
+2041 258 moveto
+<746F7573>
+show
+2130 258 moveto
+<6C6573>
+show
+220 305 moveto
+<6D6F64756C65732C>
+show
+389 305 moveto
+<717569>
+show
+459 305 moveto
+<7065726D65747465>
+show
+622 305 moveto
+<6427696E7374616C6C6572>
+show
+803 305 moveto
+<706172>
+show
+873 305 moveto
+<6C6573>
+show
+936 305 moveto
+<74726F6973>
+show
+1028 305 moveto
+<6DEA6D6573>
+show
+1164 305 moveto
+<636F6D6D616E646573>
+show
+1381 305 moveto
+<717565>
+show
+1458 305 moveto
+<63692D646573737573>
+show
+1629 305 moveto
+<6C27656E73656D626C65>
+show
+1823 305 moveto
+<646573>
+show
+1895 305 moveto
+<6D6F64756C6573>
+show
+2054 305 moveto
+<64616E73>
+show
+2148 305 moveto
+<6C65>
+show
+220 353 moveto
+<6DEA6D652072E9706572746F69726520286C657320736F7572636573207365726F6E742064616E
+7320636520636173207072E963697320726567726F7570E965732064616E7320756E2072E9706572
+746F69726520>
+show
+1646 353 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<53414C4F4D455F5352432F>
+show
+1944 353 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2E>
+show
+220 448 moveto
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<96>
+show
+220 448 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2020>
+[10 0]
+xshow
+220 452 20 2 rectfill
+241 448 moveto
+1 1 1 setrgbcolor
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<2020>
+[21 0]
+xshow
+241 448 moveto
+0 0 0 setrgbcolor
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2020>
+[29 0]
+xshow
+241 452 39 2 rectfill
+279 448 moveto
+<436F6E73E97175656E63657320706F7572206C65732064E976656C6F70706575727320646520>
+show
+279 448 moveto
+<2020>
+[669 0]
+xshow
+279 452 679 2 rectfill
+959 448 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<53616C6F6D65>
+show
+959 448 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2020>
+[112 0]
+xshow
+959 452 122 2 rectfill
+1082 448 moveto
+<203A>
+show
+1082 448 moveto
+<2020>
+[11 0]
+xshow
+1082 452 21 2 rectfill
+220 545 moveto
+<506F7572>
+show
+314 545 moveto
+<6C6573>
+show
+376 545 moveto
+<64E976656C6F7070657572732C>
+show
+624 545 moveto
+<6C6573>
+show
+687 545 moveto
+<63686F736573>
+show
+813 545 moveto
+<736F6E74>
+show
+899 545 moveto
+<64696666E972656E7465732E>
+show
+1103 545 moveto
+<556E>
+show
+1169 545 moveto
+<64E976656C6F7070657572>
+show
+1392 545 moveto
+<696E74657276656E616E74>
+show
+1596 545 moveto
+<737572>
+show
+1661 545 moveto
+<756E>
+show
+1719 545 moveto
+<736F75732D656E73656D626C65>
+show
+1981 545 moveto
+<6465>
+show
+2035 545 moveto
+<6D6F64756C6573>
+show
+220 592 moveto
+<646F6E6EE9>
+show
+334 592 moveto
+<72E9637570E87265>
+show
+491 592 moveto
+<6C6573>
+show
+549 592 moveto
+<736F7572636573>
+show
+686 592 moveto
+<6465>
+show
+738 592 moveto
+<636573>
+show
+804 592 moveto
+<6D6F64756C6573>
+show
+957 592 moveto
+<64616E73>
+show
+1046 592 moveto
+<6C65757273>
+show
+1139 592 moveto
+<6261736573>
+show
+1243 592 moveto
+<435653>
+show
+1336 592 moveto
+<72657370656374697665732C>
+show
+1544 592 moveto
+<6C6573>
+show
+1604 592 moveto
+<636F6D70696C65>
+show
+1750 592 moveto
+<6574>
+show
+1792 592 moveto
+<6C6573>
+show
+1850 592 moveto
+<6D6F6469666965>
+show
+1993 592 moveto
+<6C6F63616C656D656E74>
+show
+220 639 moveto
+<E976656E7475656C6C656D656E742C>
+show
+499 639 moveto
+<6465>
+show
+550 639 moveto
+<6661E76F6E>
+show
+656 639 moveto
+<6974E97261746976652E>
+show
+816 639 moveto
+<43686163756E>
+show
+955 639 moveto
+<646573>
+show
+1024 639 moveto
+<617574726573>
+show
+1136 639 moveto
+<6D6F64756C6573>
+show
+1291 639 moveto
+<6465>
+show
+1342 639 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<53616C6F6D65>
+show
+1477 639 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<657874E9726965757273>
+show
+1654 639 moveto
+<E0>
+show
+1685 639 moveto
+<6365>
+show
+1734 639 moveto
+<736F75732D656E73656D626C65>
+show
+1994 639 moveto
+<72656E747265>
+show
+2103 639 moveto
+<64616E73>
+show
+220 686 moveto
+<6C27756E652064657320636174E9676F726965732073756976616E746573203A>
+show
+378 733 moveto
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<95>
+show
+437 733 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<536F6974>
+show
+517 733 moveto
+<696C>
+show
+553 733 moveto
+<6E27657374>
+show
+641 733 moveto
+<706173>
+show
+710 733 moveto
+<696E64697370656E7361626C65>
+show
+951 733 moveto
+<E0>
+show
+983 733 moveto
+<6C277574696C69736174696F6E>
+show
+1183 733 moveto
+<646573>
+show
+1251 733 moveto
+<6D6F64756C6573>
+show
+1406 733 moveto
+<737572>
+show
+1471 733 moveto
+<6C65737175656C73>
+show
+1619 733 moveto
+<696E7465727669656E74>
+show
+1792 733 moveto
+<6C65>
+show
+1835 733 moveto
+<64E976656C6F70706575722C>
+show
+2067 733 moveto
+<61757175656C>
+show
+437 783 moveto
+<636173>
+show
+501 783 moveto
+<696C>
+show
+534 783 moveto
+<6E27657374>
+show
+620 783 moveto
+<706173>
+show
+688 783 moveto
+<666F7263E96D656E74>
+show
+868 783 moveto
+<636F6D70696CE9>
+show
+1014 783 moveto
+<6574>
+show
+1055 783 moveto
+<696E7374616C6CE92E>
+show
+1197 783 moveto
+<4C6573>
+show
+1270 783 moveto
+<64E970656E64616E636573>
+show
+1495 783 moveto
+<656E747265>
+show
+1589 783 moveto
+<6D6F64756C6573>
+show
+1742 783 moveto
+<736F6E74>
+show
+1822 783 moveto
+<646F6E6EE96573>
+show
+1972 783 moveto
+<706172>
+show
+2036 783 moveto
+<6C61>
+show
+2077 783 moveto
+<666967757265>
+show
+437 830 moveto
+<63692D6465737375732E>
+show
+378 877 moveto
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<95>
+show
+437 877 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<536F697420696C2065737420696E64697370656E7361626C6520657420646F697420EA74726520
+696E7374616C6CE92E20436574746520696E7374616C6C6174696F6E207065757420736520666169
+726520706172206365732064657578206D616E69E8726573203A>
+show
+594 927 moveto
+<2D>
+show
+621 927 moveto
+<736F6974>
+show
+694 927 moveto
+<6C65>
+show
+738 927 moveto
+<6D6F64756C65>
+show
+877 927 moveto
+<657374>
+show
+937 927 moveto
+<7675>
+show
+991 927 moveto
+<636F6D6D65>
+show
+1128 927 moveto
+<756E>
+show
+1183 927 moveto
+<7072E92D7265717569732C>
+show
+1377 927 moveto
+<6574>
+show
+1420 927 moveto
+<657374>
+show
+1480 927 moveto
+<696E7374616C6CE9>
+show
+1614 927 moveto
+<E0>
+show
+1646 927 moveto
+<6C61>
+show
+1689 927 moveto
+<6D616E69E87265>
+show
+1838 927 moveto
+<937574696C6973617465757294>
+show
+2055 927 moveto
+<E0>
+show
+2088 927 moveto
+<706172746972>
+show
+594 974 moveto
+<6465206C276172636869766520>
+show
+797 974 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<7461722E677A>
+show
+893 974 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<20636F6D6D652064E9637269742063692D6465737375732E>
+show
+594 1021 moveto
+<2D20736F6974206C65206D6F64756C652065737420657874726169742064652073612062617365
+204356532C20636F6D70696CE920657420696E7374616C6CE92E>
+show
+220 1068 moveto
+<496C>
+show
+259 1068 moveto
+<657374>
+show
+318 1068 moveto
+<706F737369626C65>
+show
+468 1068 moveto
+<6465>
+show
+520 1068 moveto
+<6372E96572>
+show
+618 1068 moveto
+<646573>
+show
+686 1068 moveto
+<73637269707473>
+show
+808 1068 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6275696C645F636F6E666967757265>
+show
+1076 1068 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2C>
+show
+1100 1068 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<636F6E666967757265>
+show
+1272 1068 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6574>
+show
+1315 1068 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<4D616B6566696C65>
+show
+1474 1068 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<64616E73>
+show
+1563 1068 moveto
+<6C65>
+show
+1606 1068 moveto
+<6D6F64756C65>
+show
+1745 1068 moveto
+<53414C4F4D45>
+show
+1931 1068 moveto
+<717569>
+show
+1997 1068 moveto
+<7065726D657474656E74>
+show
+220 1115 moveto
+<64276175746F6D617469736572>
+show
+458 1115 moveto
+<6C61>
+show
+501 1115 moveto
+<70726F63E964757265>
+show
+684 1115 moveto
+<7369>
+show
+725 1115 moveto
+<6C65>
+show
+769 1115 moveto
+<64E976656C6F7070657572>
+show
+990 1115 moveto
+<736F756861697465>
+show
+1144 1115 moveto
+<636F6D70696C6572>
+show
+1307 1115 moveto
+<65742F6F75>
+show
+1404 1115 moveto
+<696E7374616C6C6572>
+show
+1554 1115 moveto
+<706C75736965757273>
+show
+1719 1115 moveto
+<6D6F64756C6573>
+show
+1875 1115 moveto
+<656E>
+show
+1928 1115 moveto
+<6DEA6D65>
+show
+2044 1115 moveto
+<74656D7073>
+show
+2158 1115 moveto
+<E0>
+show
+220 1163 moveto
+<7061727469722064657320736F7572636573206578747261697465732064657320626173657320
+4356532E>
+show
+220 1258 moveto
+<43686163756E20646573206D6F64756C657320706F7373E8646520756E2072E9706572746F6972
+6520>
+show
+947 1258 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<3C4D4F44554C453E5F5352432F>
+show
+1300 1258 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<20617263686976E92064616E732073612062617365204356532E205369206C652064E976656C6F
+70706575722064E963696465>
+show
+220 1306 moveto
+<6465>
+show
+271 1306 moveto
+<72E9637570E9726572>
+show
+440 1306 moveto
+<6C6573>
+show
+498 1306 moveto
+<736F7572636573>
+show
+635 1306 moveto
+<6427756E>
+show
+716 1306 moveto
+<6D6F64756C652C>
+show
+864 1306 moveto
+<63656C6C65732D6369>
+show
+1016 1306 moveto
+<736F6E74>
+show
+1096 1306 moveto
+<72616E67E96573>
+show
+1236 1306 moveto
+<64616E73>
+show
+1324 1306 moveto
+<756E>
+show
+1377 1306 moveto
+<72E9706572746F697265>
+show
+1552 1306 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<3C4D4F44554C453E5F5352432F>
+show
+1916 1306 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6C6F63616C2E>
+show
+2019 1306 moveto
+<496C>
+show
+2055 1306 moveto
+<617070656C6C65>
+show
+220 1353 moveto
+<656E7375697465>
+show
+355 1353 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6275696C645F636F6E666967757265>
+show
+623 1353 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2C>
+show
+650 1353 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<636F6E666967757265>
+show
+826 1353 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<28646570756973>
+show
+965 1353 moveto
+<6C65>
+show
+1012 1353 moveto
+<72E9706572746F697265>
+show
+1192 1353 moveto
+<6465>
+show
+1248 1353 moveto
+<636F6D70696C6174696F6E29>
+show
+1479 1353 moveto
+<6574>
+show
+1526 1353 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6D616B65>
+show
+1629 1353 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<706F7572>
+show
+1722 1353 moveto
+<636F6D70696C6572>
+show
+1888 1353 moveto
+<636573>
+show
+1958 1353 moveto
+<736F7572636573>
+show
+2101 1353 moveto
+<64616E73>
+show
+220 1401 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2F6D6F6E2F7265706572746F6972652F64652F636F6D70696C6174696F6E2F706F75722F4D4F4E
+5F6D6F64756C652F>
+show
+1160 1401 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2E>
+show
+1189 1401 moveto
+<496C>
+show
+1232 1401 moveto
+<617070656C6C65>
+show
+1370 1401 moveto
+<656E66696E>
+show
+1474 1401 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6D616B65>
+show
+1581 1401 moveto
+<696E7374616C6C>
+show
+1703 1401 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<28666163756C746174696629>
+show
+1900 1401 moveto
+<706F7572>
+show
+1995 1401 moveto
+<696E7374616C6C6572>
+show
+2148 1401 moveto
+<6C65>
+show
+220 1449 moveto
+<6D6F64756C65>
+show
+365 1449 moveto
+<64616E73>
+show
+460 1449 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2F6D6F6E2F7265706572746F6972652F642F696E7374616C6C6174696F6E2F706F75722F4D4F4E
+5F6D6F64756C652F>
+show
+1370 1449 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2E>
+show
+1399 1449 moveto
+<54726F6973>
+show
+1506 1449 moveto
+<72E9706572746F69726573>
+show
+1705 1449 moveto
+<736F6E74>
+show
+1793 1449 moveto
+<646F6E63>
+show
+1894 1449 moveto
+<6EE9636573736169726573>
+show
+2102 1449 moveto
+<706F7572>
+show
+220 1497 moveto
+<636861717565>
+show
+399 1497 moveto
+<6D6F64756C65>
+show
+584 1497 moveto
+<696E7374616C6CE9>
+show
+766 1497 moveto
+<73E9706172E96D656E74>
+show
+1018 1497 moveto
+<28706172>
+show
+1145 1497 moveto
+<6578656D706C65>
+show
+1348 1497 moveto
+<706F7572>
+show
+1484 1497 moveto
+<4B45524E454C>
+show
+1711 1497 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<24484F4D452F4B45524E454C5F5352432F>
+show
+2170 1497 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2C>
+show
+220 1545 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2F2E2E2E2F4B45524E454C5F4255494C442F>
+show
+642 1545 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6574>
+show
+697 1545 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2F2E2E2E2F50726F64756374732F696E7374616C6C2F53616C6F6D652D6B65726E656C2D312E30
+2F>
+show
+1383 1545 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<292E>
+show
+1431 1545 moveto
+<4C6573>
+show
+1518 1545 moveto
+<64696666E972656E7473>
+show
+1703 1545 moveto
+<72E9706572746F69726573>
+show
+1908 1545 moveto
+<736F6E74>
+show
+2003 1545 moveto
+<64E96372697473>
+show
+2139 1545 moveto
+<6465>
+show
+220 1593 moveto
+<6D616E69E8726520706C75732064E97461696C6CE9652063692D617072E8732E>
+show
+220 1687 moveto
+<436861717565>
+show
+360 1687 moveto
+<6D6F64756C65>
+show
+499 1687 moveto
+<7574696C697365>
+show
+613 1687 moveto
+<6C6573>
+show
+672 1687 moveto
+<6F7574696C73>
+show
+778 1687 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6175746F636F6E66>
+show
+936 1687 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6574>
+show
+979 1687 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6C6962746F6F6C>
+show
+1088 1687 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2C>
+show
+1111 1687 moveto
+<636F6D6D65>
+show
+1246 1687 moveto
+<6327657374>
+show
+1331 1687 moveto
+<64E96AE0>
+show
+1413 1687 moveto
+<6C65>
+show
+1455 1687 moveto
+<636173>
+show
+1521 1687 moveto
+<64616E73>
+show
+1611 1687 moveto
+<6C276F7267616E69736174696F6E>
+show
+1849 1687 moveto
+<61637475656C6C65>
+show
+1992 1687 moveto
+<6465>
+show
+2045 1687 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<53616C6F6D65>
+show
+2168 1687 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2E>
+show
+220 1734 moveto
+<4C65206368616E67656D656E742064276F7267616E69736174696F6E207065757420E976656E74
+75656C6C656D656E7420EA747265206C276F63636173696F6E206427696E74726F64756972652065
+6E206F75747265206C276F7574696C20>
+show
+1793 1734 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6175746F6D616B65>
+show
+1956 1734 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2E>
+show
+1188 2982 moveto
+/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
+<35>
+show
+221 2845 1959 1 rectfill
+221 2933 1959 1 rectfill
+showpage
+grestore grestore
+%%PageTrailer
+
+%%Page: 5 5
+%%PageBoundingBox: 18 18 594 774
+%%BeginSetup
+%
+%%EndSetup
+%%BeginPageSetup
+%
+gsave
+[0.24 0 0 -0.24 18 774] concat
+gsave
+%%EndPageSetup
+%!PS-AdobeFont-1.0-2.0
+%%Creator: SunTypeTools-TT 1.0 gelf
+%%Title: OpenSymbolHSet1
+%%CreationDate:  
+%%Pages: 0
+%%EndComments
+%%BeginResource: font OpenSymbolHSet1
+% Original font name: OpenSymbol
+30 dict begin
+/PaintType 0 def
+/FontType 3 def
+/StrokeWidth 0 def
+/FontName /OpenSymbolHSet1 def
+/XUID [103 0 0 16#8D049593 3 16#ABC23EE2 16#6072D5A5] def
+/FontMatrix [.001 0 0 .001 0 0] def
+/FontBBox [-179 -313 1083 917] def
+/Encoding 256 array def
+    0 1 255 {Encoding exch /.notdef put} for
+    Encoding 32 /glyph0 put
+    Encoding 150 /glyph1 put
+    Encoding 149 /glyph2 put
+/CharProcs 4 dict def
+  CharProcs begin
+    /.notdef {} def
+    /glyph0 {
+       500 0 0 0 0 0 setcachedevice
+    } bind def
+    /glyph1 {
+       556 0 -2 224 554 296 setcachedevice
+       -2 224 moveto
+       554 224 lineto
+       554 296 lineto
+       -2 296 lineto
+       -2 224 lineto
+       closepath
+       fill
+    } bind def
+    /glyph2 {
+       356 0 36 223 297 483 setcachedevice
+       169 223 moveto
+       134 223 103 236 76 261 curveto
+       50 286 36 317 36 353 curveto
+       36 389 49 420 76 445 curveto
+       102 470 133 483 169 483 curveto
+       204 483 235 471 260 445 curveto
+       285 420 297 389 297 353 curveto
+       297 318 285 287 260 261 curveto
+       236 236 206 223 169 223 curveto
+       closepath
+       fill
+    } bind def
+  end
+/BuildGlyph {
+  exch /CharProcs get exch
+  2 copy known not
+    {pop /.notdef} if
+  get exec
+} bind def
+/BuildChar {
+  1 index /Encoding get exch get
+  1 index /BuildGlyph get exec
+} bind def
+currentdict end
+/OpenSymbolHSet1 exch definefont pop
+%%EndResource
+/Helvetica-BoldOblique-iso1252 /Helvetica-BoldOblique ISO1252Encoding psp_definefont
+/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
+/Times-Bold-iso1252 /Times-Bold ISO1252Encoding psp_definefont
+279 318 moveto
+0 0 0 setrgbcolor
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<95>
+show
+338 318 moveto
+/Helvetica-BoldOblique-iso1252  findfont 50 -50 matrix scale makefont setfont
+<4F7267616E69736174696F6E2064657320736F7572636573>
+show
+220 428 moveto
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<96>
+show
+220 428 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2020>
+[10 0]
+xshow
+220 432 20 2 rectfill
+241 428 moveto
+1 1 1 setrgbcolor
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<2020>
+[21 0]
+xshow
+241 428 moveto
+0 0 0 setrgbcolor
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2020>
+[29 0]
+xshow
+241 432 39 2 rectfill
+279 428 moveto
+<4F7267616E69736174696F6E2064657320626173657320435653203A>
+show
+279 432 499 2 rectfill
+220 525 moveto
+<43686163756E>
+show
+366 525 moveto
+<646573>
+show
+441 525 moveto
+<6D6F64756C6573>
+show
+602 525 moveto
+<6465>
+show
+660 525 moveto
+<6C61>
+show
+709 525 moveto
+<706C6174652D666F726D65>
+show
+923 525 moveto
+<50414C>
+show
+1021 525 moveto
+<706F7373E86465>
+show
+1171 525 moveto
+<7361>
+show
+1225 525 moveto
+<70726F707265>
+show
+1353 525 moveto
+<62617365>
+show
+1446 525 moveto
+<4356532E>
+show
+1557 525 moveto
+<4C65>
+show
+1620 525 moveto
+<6D6F64756C65>
+show
+1764 525 moveto
+<435653524F4F54>
+show
+1979 525 moveto
+<286D6F64756C65>
+show
+2137 525 moveto
+<6465>
+show
+220 572 moveto
+<636F6E66696775726174696F6E>
+show
+463 572 moveto
+<6465>
+show
+520 572 moveto
+<43565329>
+show
+634 572 moveto
+<E974616E74>
+show
+733 572 moveto
+<7370E963696669717565>
+show
+923 572 moveto
+<E0>
+show
+959 572 moveto
+<636861717565>
+show
+1094 572 moveto
+<626173652C>
+show
+1197 572 moveto
+<63656C61>
+show
+1282 572 moveto
+<7065726D6574>
+show
+1416 572 moveto
+<6465>
+show
+1474 572 moveto
+<67E9726572>
+show
+1577 572 moveto
+<6465>
+show
+1634 572 moveto
+<6D616E69E87265>
+show
+1786 572 moveto
+<64696666E972656E7465>
+show
+1967 572 moveto
+<6C6573>
+show
+2031 572 moveto
+<616363E873>
+show
+2140 572 moveto
+<656E>
+show
+220 619 moveto
+<6C65637475726520657420656E20E963726974757265206175782064696666E972656E7473206D
+6F64756C65732050414C2E>
+show
+220 713 moveto
+<4C276172626F72657363656E63652064652063686163756E65206465732062617365732028686F
+726D69732053414C4F4D45206574204B45524E454C292073756974206C65206D6F64E86C65207375
+6976616E74203A>
+show
+220 808 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<3C4D4F44554C453E5F5352432F>
+show
+368 856 moveto
+<61646D5F6C6F63616C2F>
+show
+515 904 moveto
+<756E69782F>
+show
+368 952 moveto
+<62696E2F>
+show
+368 1000 moveto
+<646F632F>
+show
+368 1048 moveto
+<6578616D706C65732F>
+show
+368 1096 moveto
+<69646C2F>
+show
+368 1144 moveto
+<7265736F75726365732F>
+show
+368 1192 moveto
+<7372632F>
+show
+368 1240 moveto
+<74657374732F>
+show
+368 1288 moveto
+<524541444D45>
+show
+368 1335 moveto
+<6275696C645F636F6E666967757265>
+show
+368 1383 moveto
+<636F6E6669677572652E696E2E62617365>
+show
+368 1431 moveto
+<4D616B6566696C652E696E>
+show
+220 1575 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<496C>
+show
+257 1575 moveto
+<6E2779>
+show
+318 1575 moveto
+<61>
+show
+348 1575 moveto
+<706173>
+show
+415 1575 moveto
+<6465>
+show
+466 1575 moveto
+<72E9706572746F697265>
+show
+640 1575 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<61646D2F>
+show
+742 1575 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2872E9706572746F697265>
+show
+931 1575 moveto
+<636F6E74656E616E74>
+show
+1106 1575 moveto
+<6C6573>
+show
+1164 1575 moveto
+<6669636869657273>
+show
+1300 1575 moveto
+<642761646D696E697374726174696F6E29>
+show
+1597 1575 moveto
+<64616E73>
+show
+1685 1575 moveto
+<63686163756E>
+show
+1816 1575 moveto
+<646573>
+show
+1883 1575 moveto
+<6D6F64756C65732C>
+show
+2048 1575 moveto
+<6D616973>
+show
+2138 1575 moveto
+<756E>
+show
+220 1623 moveto
+<756E69717565>
+show
+348 1623 moveto
+<72E9706572746F697265>
+show
+525 1623 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<73616C6F6D655F>
+show
+669 1623 moveto
+<61646D2F>
+show
+774 1623 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<64616E73>
+show
+864 1623 moveto
+<6C65>
+show
+909 1623 moveto
+<72E9706572746F697265>
+show
+1086 1623 moveto
+<6427696E7374616C6C6174696F6E>
+show
+1316 1623 moveto
+<6465>
+show
+1369 1623 moveto
+<4B45524E454C2C>
+show
+1560 1623 moveto
+<717569>
+show
+1628 1623 moveto
+<657374>
+show
+1688 1623 moveto
+<636F6D6D756E>
+show
+1849 1623 moveto
+<E0>
+show
+1882 1623 moveto
+<746F7573>
+show
+1966 1623 moveto
+<6C6573>
+show
+2026 1623 moveto
+<6D6F64756C65732E>
+show
+220 1671 moveto
+<4C65>
+show
+340 1671 moveto
+<72E9706572746F697265>
+show
+580 1671 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<73616C6F6D655F61646D2F>
+show
+891 1671 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<657374>
+show
+1014 1671 moveto
+<636F6E74656E75>
+show
+1223 1671 moveto
+<64616E73>
+show
+1376 1671 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<4B45524E454C5F5352432F>
+show
+1670 1671 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2C>
+show
+1757 1671 moveto
+<70756973>
+show
+1903 1671 moveto
+<7265636F7069E9>
+show
+2103 1671 moveto
+<64616E73>
+show
+220 1719 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2F6D6F6E2F7265706572746F6972652F642F696E7374616C6C6174696F6E2F706F75722F4B4552
+4E454C2F>
+show
+1082 1719 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6C6F7273>
+show
+1177 1719 moveto
+<6465>
+show
+1249 1719 moveto
+<6C27696E7374616C6C6174696F6E>
+show
+1486 1719 moveto
+<6475>
+show
+1560 1719 moveto
+<6D6F64756C65>
+show
+1718 1719 moveto
+<4B45524E454C2E>
+show
+1926 1719 moveto
+<43656369>
+show
+2035 1719 moveto
+<E976697465>
+show
+2148 1719 moveto
+<6C61>
+show
+220 1766 moveto
+<6475706C69636174696F6E2064616E73206C657320626173657320435653206574206C65732063
+6F70696573206465207472617661696C206427756E206365727461696E206E6F6D62726520646520
+666963686965727320636F6D6D756E7320E020746F7573206C6573206D6F64756C65732E>
+show
+220 1815 moveto
+<4C65>
+show
+280 1815 moveto
+<72E9706572746F697265>
+show
+461 1815 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<61646D5F6C6F63616C2F>
+show
+673 1815 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<73657274>
+show
+750 1815 moveto
+<617578>
+show
+828 1815 moveto
+<6669636869657273>
+show
+971 1815 moveto
+<642761646D696E697374726174696F6E>
+show
+1258 1815 moveto
+<7370E96369666971756573>
+show
+1464 1815 moveto
+<E0>
+show
+1499 1815 moveto
+<756E>
+show
+1559 1815 moveto
+<6D6F64756C65>
+show
+1701 1815 moveto
+<706172746963756C6965722E>
+show
+1901 1815 moveto
+<5369>
+show
+1953 1815 moveto
+<756E>
+show
+2012 1815 moveto
+<66696368696572>
+show
+2138 1815 moveto
+<6475>
+show
+220 1863 moveto
+<72E9706572746F697265>
+show
+396 1863 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<61646D5F6C6F63616C2F>
+show
+604 1863 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<657374>
+show
+664 1863 moveto
+<7574696C6973E9>
+show
+779 1863 moveto
+<706172>
+show
+846 1863 moveto
+<706C75736965757273>
+show
+1011 1863 moveto
+<6D6F64756C65732C>
+show
+1177 1863 moveto
+<616C6F7273>
+show
+1271 1863 moveto
+<696C>
+show
+1308 1863 moveto
+<73657261>
+show
+1388 1863 moveto
+<72656D6F6E74E9>
+show
+1539 1863 moveto
+<64616E73>
+show
+1629 1863 moveto
+<6C65>
+show
+1673 1863 moveto
+<72E9706572746F697265>
+show
+1848 1863 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<73616C6F6D655F61646D2F>
+show
+2096 1863 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6465>
+show
+2148 1863 moveto
+<6C61>
+show
+220 1910 moveto
+<626173652053414C4F4D452E>
+show
+220 1957 moveto
+<4C61>
+show
+277 1957 moveto
+<636F6E66696775726174696F6E>
+show
+518 1957 moveto
+<6427756E>
+show
+602 1957 moveto
+<6D6F64756C65>
+show
+742 1957 moveto
+<6175747265>
+show
+839 1957 moveto
+<717565>
+show
+913 1957 moveto
+<4B45524E454C>
+show
+1092 1957 moveto
+<61>
+show
+1125 1957 moveto
+<646F6E63>
+show
+1220 1957 moveto
+<6265736F696E>
+show
+1344 1957 moveto
+<6465>
+show
+1397 1957 moveto
+<7361766F6972>
+show
+1513 1957 moveto
+<6FF9>
+show
+1569 1957 moveto
+<7365>
+show
+1617 1957 moveto
+<74726F757665>
+show
+1738 1957 moveto
+<6C65>
+show
+1782 1957 moveto
+<6D6F64756C65>
+show
+1921 1957 moveto
+<4B45524E454C>
+show
+2100 1957 moveto
+<706F7572>
+show
+220 2005 moveto
+<616363E9646572>
+show
+383 2005 moveto
+<6175>
+show
+457 2005 moveto
+<72E9706572746F697265>
+show
+655 2005 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<73616C6F6D655F61646D2F>
+show
+890 2005 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2E>
+show
+936 2005 moveto
+<496C>
+show
+996 2005 moveto
+<657374>
+show
+1078 2005 moveto
+<646F6E63>
+show
+1194 2005 moveto
+<6F626C696761746F697265>
+show
+1410 2005 moveto
+<6465>
+show
+1486 2005 moveto
+<64E966696E6972>
+show
+1632 2005 moveto
+<756E65>
+show
+1728 2005 moveto
+<7661726961626C65>
+show
+1898 2005 moveto
+<6427656E7669726F6E6E656D656E74>
+show
+220 2052 moveto
+<4B45524E454C5F494E5354414C4C2E>
+show
+1188 2982 moveto
+/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
+<36>
+show
+221 2845 1959 1 rectfill
+221 2933 1959 1 rectfill
+showpage
+grestore grestore
+%%PageTrailer
+
+%%Page: 6 6
+%%PageBoundingBox: 18 18 594 774
+%%BeginSetup
+%
+%%EndSetup
+%%BeginPageSetup
+%
+gsave
+[0.24 0 0 -0.24 18 774] concat
+gsave
+%%EndPageSetup
+/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
+/Times-Bold-iso1252 /Times-Bold ISO1252Encoding psp_definefont
+220 258 moveto
+0 0 0 setrgbcolor
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<4C276172626F72657363656E6365206465206C612062617365206475206D6F64756C65204B4552
+4E454C20657374206C612073756976616E7465203A>
+show
+220 353 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<4B45524E454C5F5352432F>
+show
+368 401 moveto
+<61646D5F6C6F63616C2F>
+show
+515 449 moveto
+<756E69782F>
+show
+368 497 moveto
+<62696E2F>
+show
+368 545 moveto
+<646F632F>
+show
+368 593 moveto
+<6578616D706C65732F>
+show
+368 641 moveto
+<69646C2F>
+show
+368 689 moveto
+<7265736F75726365732F>
+show
+368 737 moveto
+<73616C6F6D655F61646D2F>
+show
+515 785 moveto
+<756E69782F>
+show
+663 833 moveto
+<6D616B655F626567696E2E696E>
+show
+663 880 moveto
+<6D616B655F636F6E636C7564652E696E>
+show
+663 928 moveto
+<3C6F746865725F66696C65733E2E696E>
+show
+663 976 moveto
+<636F6E6669675F66696C65732F>
+show
+810 1024 moveto
+<636865636B2A2E6D34>
+show
+810 1072 moveto
+<3C6F746865725F66696C65733E2E6D34>
+show
+368 1168 moveto
+<7372632F>
+show
+368 1216 moveto
+<74657374732F>
+show
+368 1264 moveto
+<524541444D45>
+show
+368 1312 moveto
+<6275696C645F636F6E666967757265>
+show
+368 1360 moveto
+<636F6E6669677572652E696E2E62617365>
+show
+368 1408 moveto
+<4D616B6566696C652E696E>
+show
+220 1549 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<4C276172626F72657363656E6365>
+show
+483 1549 moveto
+<6465>
+show
+535 1549 moveto
+<6C61>
+show
+576 1549 moveto
+<62617365>
+show
+663 1549 moveto
+<6475>
+show
+715 1549 moveto
+<6D6F64756C65>
+show
+853 1549 moveto
+<53414C4F4D45>
+show
+1037 1549 moveto
+<657374>
+show
+1095 1549 moveto
+<6C61>
+show
+1137 1549 moveto
+<73756976616E7465>
+show
+1288 1549 moveto
+<286C65>
+show
+1343 1549 moveto
+<6D6F64756C65>
+show
+1480 1549 moveto
+<53414C4F4D45>
+show
+1665 1549 moveto
+<6E65>
+show
+1716 1549 moveto
+<636F6E7469656E74>
+show
+1863 1549 moveto
+<717565>
+show
+1935 1549 moveto
+<646573>
+show
+2001 1549 moveto
+<6669636869657273>
+show
+2139 1549 moveto
+<6465>
+show
+220 1596 moveto
+<636F6E66696775726174696F6E2C20636F6D70696C6174696F6E20657420696E7374616C6C6174
+696F6E20676C6F62616C657329203A>
+show
+220 1692 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<53414C4F4D455F5352432F>
+show
+368 1740 moveto
+<6275696C645F636F6E666967757265>
+show
+368 1788 moveto
+<636F6E6669677572652E696E>
+show
+368 1835 moveto
+<4D616B6566696C652E696E>
+show
+1188 2982 moveto
+/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
+<37>
+show
+221 2845 1959 1 rectfill
+221 2933 1959 1 rectfill
+showpage
+grestore grestore
+%%PageTrailer
+
+%%Page: 7 7
+%%PageBoundingBox: 18 18 594 774
+%%BeginSetup
+%
+%%EndSetup
+%%BeginPageSetup
+%
+gsave
+[0.24 0 0 -0.24 18 774] concat
+gsave
+%%EndPageSetup
+%!PS-AdobeFont-1.0-2.0
+%%Creator: SunTypeTools-TT 1.0 gelf
+%%Title: OpenSymbolHSet1
+%%CreationDate:  
+%%Pages: 0
+%%EndComments
+%%BeginResource: font OpenSymbolHSet1
+% Original font name: OpenSymbol
+30 dict begin
+/PaintType 0 def
+/FontType 3 def
+/StrokeWidth 0 def
+/FontName /OpenSymbolHSet1 def
+/XUID [103 0 0 16#8D049593 2 16#0AC01B5C 16#CD31002C] def
+/FontMatrix [.001 0 0 .001 0 0] def
+/FontBBox [-179 -313 1083 917] def
+/Encoding 256 array def
+    0 1 255 {Encoding exch /.notdef put} for
+    Encoding 32 /glyph0 put
+    Encoding 150 /glyph1 put
+/CharProcs 3 dict def
+  CharProcs begin
+    /.notdef {} def
+    /glyph0 {
+       500 0 0 0 0 0 setcachedevice
+    } bind def
+    /glyph1 {
+       556 0 -2 224 554 296 setcachedevice
+       -2 224 moveto
+       554 224 lineto
+       554 296 lineto
+       -2 296 lineto
+       -2 224 lineto
+       closepath
+       fill
+    } bind def
+  end
+/BuildGlyph {
+  exch /CharProcs get exch
+  2 copy known not
+    {pop /.notdef} if
+  get exec
+} bind def
+/BuildChar {
+  1 index /Encoding get exch get
+  1 index /BuildGlyph get exec
+} bind def
+currentdict end
+/OpenSymbolHSet1 exch definefont pop
+%%EndResource
+/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
+/Times-Bold-iso1252 /Times-Bold ISO1252Encoding psp_definefont
+/Times-Italic-iso1252 /Times-Italic ISO1252Encoding psp_definefont
+220 258 moveto
+0 0 0 setrgbcolor
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<96>
+show
+220 258 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2020>
+[10 0]
+xshow
+220 262 20 2 rectfill
+241 258 moveto
+1 1 1 setrgbcolor
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<2020>
+[21 0]
+xshow
+241 258 moveto
+0 0 0 setrgbcolor
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2020>
+[29 0]
+xshow
+241 262 39 2 rectfill
+279 258 moveto
+<4F7267616E69736174696F6E2064657320636F70696573206465207472617661696C203A>
+show
+279 262 591 2 rectfill
+220 355 moveto
+<5369>
+show
+282 355 moveto
+<6C65>
+show
+340 355 moveto
+<64E976656C6F7070657572>
+show
+575 355 moveto
+<72E9637570E87265>
+show
+748 355 moveto
+<756E>
+show
+818 355 moveto
+<756E69717565>
+show
+959 355 moveto
+<6D6F64756C65>
+show
+1113 355 moveto
+<64616E73>
+show
+1217 355 moveto
+<6C61>
+show
+1275 355 moveto
+<62617365>
+show
+1377 355 moveto
+<4356532C>
+show
+1497 355 moveto
+<696C>
+show
+1548 355 moveto
+<6F627469656E647261>
+show
+1734 355 moveto
+<6C6F63616C656D656E74>
+show
+1946 355 moveto
+<756E>
+show
+2015 355 moveto
+<72E9706572746F697265>
+show
+220 403 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<3C4D4F44554C453E5F5352432F>
+show
+591 403 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<636F6E74656E616E74>
+show
+773 403 moveto
+<6C6573>
+show
+838 403 moveto
+<736F7572636573>
+show
+982 403 moveto
+<6964656E7469717565>
+show
+1157 403 moveto
+<E0>
+show
+1194 403 moveto
+<63656C7569>
+show
+1295 403 moveto
+<6465>
+show
+1353 403 moveto
+<6C61>
+show
+1401 403 moveto
+<62617365>
+show
+1494 403 moveto
+<4356532E>
+show
+1604 403 moveto
+<496C>
+show
+1648 403 moveto
+<6E2761>
+show
+1714 403 moveto
+<64616E73>
+show
+1810 403 moveto
+<6365>
+show
+1865 403 moveto
+<636173>
+show
+1938 403 moveto
+<706173>
+show
+2012 403 moveto
+<6265736F696E>
+show
+2140 403 moveto
+<6465>
+show
+220 450 moveto
+<72E9637570E9726572206C65206D6F64756C652053414C4F4D452E>
+show
+220 545 moveto
+<5369>
+show
+267 545 moveto
+<6C65>
+show
+309 545 moveto
+<64E976656C6F7070657572>
+show
+529 545 moveto
+<736F756861697465>
+show
+680 545 moveto
+<72E9637570E9726572>
+show
+850 545 moveto
+<706C75736965757273>
+show
+1015 545 moveto
+<6D6F64756C6573>
+show
+1168 545 moveto
+<64697374696E637473>
+show
+1321 545 moveto
+<737572>
+show
+1384 545 moveto
+<6C65737175656C73>
+show
+1532 545 moveto
+<696C>
+show
+1567 545 moveto
+<696E7465727669656E647261>
+show
+1782 545 moveto
+<73696D756C74616EE96D656E742C>
+show
+2051 545 moveto
+<696C>
+show
+2087 545 moveto
+<6465767261>
+show
+220 593 moveto
+<642761626F7264>
+show
+358 593 moveto
+<72E9637570E9726572>
+show
+531 593 moveto
+<6C6573>
+show
+593 593 moveto
+<736F7572636573>
+show
+734 593 moveto
+<6475>
+show
+790 593 moveto
+<6D6F64756C65>
+show
+931 593 moveto
+<53414C4F4D45>
+show
+1118 593 moveto
+<64616E73>
+show
+1211 593 moveto
+<736F6E>
+show
+1283 593 moveto
+<72E9706572746F697265>
+show
+1461 593 moveto
+<6465>
+show
+1515 593 moveto
+<64E976656C6F7070656D656E74>
+show
+1786 593 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<53414C4F4D455F5352432F>
+show
+2084 593 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2C>
+show
+2109 593 moveto
+<70756973>
+show
+220 640 moveto
+<656E73756974652072E9637570E9726572206C657320736F757263657320646573206D6F64756C
+657320717527696C20766F756472612064E976656C6F707065722064616E73206365206DEA6D6520
+72E9706572746F6972652064652064E976656C6F7070656D656E742E>
+show
+220 687 moveto
+<4C276172626F72657363656E63652064652064E976656C6F7070656D656E7420657374206C6120
+73756976616E7465203A>
+show
+220 782 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<53414C4F4D455F5352432F>
+show
+368 830 moveto
+<6275696C645F636F6E666967757265>
+show
+368 878 moveto
+<636F6E6669677572652E696E>
+show
+368 926 moveto
+<4D616B6566696C652E696E>
+show
+368 974 moveto
+<3C4D4F44554C453E5F5352432F>
+show
+515 1022 moveto
+<61646D5F6C6F63616C2F>
+show
+663 1070 moveto
+<756E69782F>
+show
+515 1118 moveto
+<62696E2F>
+show
+515 1165 moveto
+<646F632F>
+show
+515 1213 moveto
+<6578616D706C65732F>
+show
+515 1261 moveto
+<69646C2F>
+show
+515 1309 moveto
+<7265736F75726365732F>
+show
+515 1357 moveto
+0.50196 0.50196 0.50196 setrgbcolor
+<73616C6F6D655F61646D2F>
+show
+1105 1357 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<28756E697175656D656E7420706F7572206C65206D6F64756C65204B45524E454C202129>
+show
+663 1405 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<756E69782F>
+show
+515 1453 moveto
+0 0 0 setrgbcolor
+<7372632F>
+show
+515 1501 moveto
+<74657374732F>
+show
+515 1549 moveto
+<524541444D45>
+show
+515 1597 moveto
+<6275696C645F636F6E666967757265>
+show
+515 1645 moveto
+<636F6E6669677572652E696E2E62617365>
+show
+515 1693 moveto
+<4D616B6566696C652E696E>
+show
+220 1834 moveto
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<96>
+show
+220 1834 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2020>
+[10 0]
+xshow
+220 1838 20 2 rectfill
+241 1834 moveto
+1 1 1 setrgbcolor
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<2020>
+[21 0]
+xshow
+241 1834 moveto
+0 0 0 setrgbcolor
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2020>
+[29 0]
+xshow
+241 1838 39 2 rectfill
+279 1834 moveto
+<4F7267616E69736174696F6E2064657320617263686976657320>
+show
+279 1834 moveto
+<2020>
+[433 0]
+xshow
+279 1838 443 2 rectfill
+723 1834 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<7372632E7461722E677A>
+show
+723 1834 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2020>
+[147 0]
+xshow
+723 1838 157 2 rectfill
+881 1834 moveto
+<203A>
+show
+881 1834 moveto
+<2020>
+[11 0]
+xshow
+881 1838 21 2 rectfill
+220 1931 moveto
+<4C65>
+show
+275 1931 moveto
+<63686F6978>
+show
+379 1931 moveto
+<726574656E75>
+show
+496 1931 moveto
+<706F7572>
+show
+584 1931 moveto
+<6C276F7267616E69736174696F6E>
+show
+821 1931 moveto
+<646573>
+show
+889 1931 moveto
+<636F70696573>
+show
+1008 1931 moveto
+<6465>
+show
+1058 1931 moveto
+<7472617661696C>
+show
+1177 1931 moveto
+<697373756573>
+show
+1289 1931 moveto
+<646573>
+show
+1355 1931 moveto
+<6261736573>
+show
+1458 1931 moveto
+<435653>
+show
+1550 1931 moveto
+<696D706C69717565>
+show
+1711 1931 moveto
+<756E65>
+show
+1783 1931 moveto
+<6172626F72657363656E6365>
+show
+2012 1931 moveto
+<6964656E74697175652C>
+show
+220 1979 moveto
+<706F7572>
+show
+313 1979 moveto
+<636861717565>
+show
+448 1979 moveto
+<6D6F64756C652C>
+show
+600 1979 moveto
+<E0>
+show
+636 1979 moveto
+<736F6E>
+show
+709 1979 moveto
+<61726368697665>
+show
+850 1979 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<7372632E7461722E677A>
+show
+1008 1979 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2E>
+show
+1035 1979 moveto
+<4C6573>
+show
+1111 1979 moveto
+<6172636869766573>
+show
+1267 1979 moveto
+<6E65>
+show
+1323 1979 moveto
+<636F6E7469656E6E656E74>
+show
+1535 1979 moveto
+<706173>
+show
+1607 1979 moveto
+<6465>
+show
+1662 1979 moveto
+<72E9706572746F697265>
+show
+1842 1979 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<73616C6F6D655F61646D2F>
+show
+2077 1979 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2C>
+show
+2104 1979 moveto
+<706F7572>
+show
+220 2026 moveto
+<6C657175656C>
+show
+333 2026 moveto
+<656C6C6573>
+show
+421 2026 moveto
+<64E970656E64656E74>
+show
+604 2026 moveto
+<6475>
+show
+657 2026 moveto
+<6D6F64756C65>
+show
+793 2026 moveto
+<4B45524E454C2E>
+show
+980 2026 moveto
+<456C6C6573>
+show
+1075 2026 moveto
+<736F6E74>
+show
+1156 2026 moveto
+<656E>
+show
+1206 2026 moveto
+<6F75747265>
+show
+1303 2026 moveto
+<6175746F6E6F6D65732C>
+show
+1506 2026 moveto
+<69652E>
+show
+1558 2026 moveto
+<756E65>
+show
+1629 2026 moveto
+<61726368697665>
+show
+1763 2026 moveto
+<646F6E6EE965>
+show
+1895 2026 moveto
+<636F6E7469656E74>
+show
+2041 2026 moveto
+<756E>
+show
+2095 2026 moveto
+<6574>
+show
+2135 2026 moveto
+<756E>
+show
+220 2073 moveto
+<756E69717565206D6F64756C652E>
+show
+220 2120 moveto
+<4C652073637269707420>
+show
+378 2120 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6275696C645F636F6E666967757265>
+show
+646 2120 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<207365726120666F75726E692061766563206C65732061726368697665732020>
+show
+1153 2120 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<7372632E7461722E677A>
+show
+1311 2120 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2E>
+show
+220 2167 moveto
+<4C6573>
+show
+294 2167 moveto
+<64657578>
+show
+389 2167 moveto
+<6D6F646573>
+show
+513 2167 moveto
+<64276163717569736974696F6E>
+show
+739 2167 moveto
+<646573>
+show
+809 2167 moveto
+<736F7572636573>
+show
+948 2167 moveto
+<736F6E74>
+show
+1032 2167 moveto
+<646F6E63>
+show
+1127 2167 moveto
+<E971756976616C656E74732C>
+show
+1342 2167 moveto
+<6D616973>
+show
+1435 2167 moveto
+<696C>
+show
+1473 2167 moveto
+<657374>
+show
+1533 2167 moveto
+<6269656E>
+show
+1619 2167 moveto
+<73FB72>
+show
+1684 2167 moveto
+<7072E966E97261626C65>
+show
+1867 2167 moveto
+<64277574696C69736572>
+show
+2026 2167 moveto
+<6C6573>
+show
+2086 2167 moveto
+<6261736573>
+show
+220 2214 moveto
+<43565320706F7572206C6573206D6F64756C657320737572206C65737175656C73206C652064E9
+76656C6F707065757220646F697420696E74657276656E69722E>
+show
+1188 2982 moveto
+/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
+<38>
+show
+221 2845 1959 1 rectfill
+221 2933 1959 1 rectfill
+showpage
+grestore grestore
+%%PageTrailer
+
+%%Page: 8 8
+%%PageBoundingBox: 18 18 594 774
+%%BeginSetup
+%
+%%EndSetup
+%%BeginPageSetup
+%
+gsave
+[0.24 0 0 -0.24 18 774] concat
+gsave
+%%EndPageSetup
+%!PS-AdobeFont-1.0-2.0
+%%Creator: SunTypeTools-TT 1.0 gelf
+%%Title: OpenSymbolHSet1
+%%CreationDate:  
+%%Pages: 0
+%%EndComments
+%%BeginResource: font OpenSymbolHSet1
+% Original font name: OpenSymbol
+30 dict begin
+/PaintType 0 def
+/FontType 3 def
+/StrokeWidth 0 def
+/FontName /OpenSymbolHSet1 def
+/XUID [103 0 0 16#8D049593 3 16#ABC23EE2 16#6072D5A5] def
+/FontMatrix [.001 0 0 .001 0 0] def
+/FontBBox [-179 -313 1083 917] def
+/Encoding 256 array def
+    0 1 255 {Encoding exch /.notdef put} for
+    Encoding 32 /glyph0 put
+    Encoding 150 /glyph1 put
+    Encoding 149 /glyph2 put
+/CharProcs 4 dict def
+  CharProcs begin
+    /.notdef {} def
+    /glyph0 {
+       500 0 0 0 0 0 setcachedevice
+    } bind def
+    /glyph1 {
+       556 0 -2 224 554 296 setcachedevice
+       -2 224 moveto
+       554 224 lineto
+       554 296 lineto
+       -2 296 lineto
+       -2 224 lineto
+       closepath
+       fill
+    } bind def
+    /glyph2 {
+       356 0 36 223 297 483 setcachedevice
+       169 223 moveto
+       134 223 103 236 76 261 curveto
+       50 286 36 317 36 353 curveto
+       36 389 49 420 76 445 curveto
+       102 470 133 483 169 483 curveto
+       204 483 235 471 260 445 curveto
+       285 420 297 389 297 353 curveto
+       297 318 285 287 260 261 curveto
+       236 236 206 223 169 223 curveto
+       closepath
+       fill
+    } bind def
+  end
+/BuildGlyph {
+  exch /CharProcs get exch
+  2 copy known not
+    {pop /.notdef} if
+  get exec
+} bind def
+/BuildChar {
+  1 index /Encoding get exch get
+  1 index /BuildGlyph get exec
+} bind def
+currentdict end
+/OpenSymbolHSet1 exch definefont pop
+%%EndResource
+/Helvetica-BoldOblique-iso1252 /Helvetica-BoldOblique ISO1252Encoding psp_definefont
+/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
+/Times-Italic-iso1252 /Times-Italic ISO1252Encoding psp_definefont
+/Times-Bold-iso1252 /Times-Bold ISO1252Encoding psp_definefont
+220 318 moveto
+0 0 0 setrgbcolor
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<95>
+show
+279 318 moveto
+/Helvetica-BoldOblique-iso1252  findfont 50 -50 matrix scale makefont setfont
+<4F7267616E69736174696F6E2064657320736F757263657320636F6D70696CE96573>
+show
+220 428 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<556E6520666F6973206C657320736F75726365732072E9637570E972E965732028E02070617274
+6972206427756E65206261736520435653206F75207061722065787472616374696F6E206427756E
+65206172636869766520>
+show
+1708 428 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<7372632E7461722E677A>
+show
+1866 428 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<292C20756E652072E8676C6520646520626F6E>
+show
+220 475 moveto
+<7573616765>
+show
+328 475 moveto
+<706F7572>
+show
+416 475 moveto
+<756E>
+show
+471 475 moveto
+<64E976656C6F7070657572>
+show
+691 475 moveto
+<636F6E7369737465>
+show
+839 475 moveto
+<E0>
+show
+869 475 moveto
+<636F6D70696C6572>
+show
+1031 475 moveto
+<636573>
+show
+1096 475 moveto
+<736F7572636573>
+show
+1234 475 moveto
+<64616E73>
+show
+1324 475 moveto
+<756E>
+show
+1378 475 moveto
+<72E9706572746F697265>
+show
+1553 475 moveto
+<64697374696E6374>
+show
+1689 475 moveto
+<286E6F6E>
+show
+1779 475 moveto
+<666F7263E96D656E74>
+show
+1960 475 moveto
+<7574696C65>
+show
+2047 475 moveto
+<706F7572>
+show
+2136 475 moveto
+<756E>
+show
+220 522 moveto
+<73696D706C65207574696C69736174657572292E>
+show
+220 569 moveto
+<4E6F7573>
+show
+321 569 moveto
+<616C6C6F6E73>
+show
+433 569 moveto
+<64697374696E67756572>
+show
+613 569 moveto
+<6C65>
+show
+655 569 moveto
+<636173>
+show
+720 569 moveto
+<6465>
+show
+772 569 moveto
+<6C61>
+show
+814 569 moveto
+<636F6D70696C6174696F6E>
+show
+1027 569 moveto
+<6427756E>
+show
+1109 569 moveto
+<6D6F64756C65>
+show
+1248 569 moveto
+<7365756C>
+show
+1327 569 moveto
+<6574>
+show
+1370 569 moveto
+<63656C7569>
+show
+1463 569 moveto
+<6465>
+show
+1515 569 moveto
+<6C61>
+show
+1557 569 moveto
+<636F6D70696C6174696F6E>
+show
+1770 569 moveto
+<6465>
+show
+1821 569 moveto
+<706C75736965757273>
+show
+1984 569 moveto
+<6D6F64756C6573>
+show
+2139 569 moveto
+<656E>
+show
+220 616 moveto
+<6DEA6D65>
+show
+335 616 moveto
+<74656D70732E>
+show
+457 616 moveto
+<44616E73>
+show
+556 616 moveto
+<6C6573>
+show
+614 616 moveto
+<64657578>
+show
+708 616 moveto
+<6361732C>
+show
+784 616 moveto
+<6C276172626F72657363656E6365>
+show
+1034 616 moveto
+<6475>
+show
+1088 616 moveto
+<72E9706572746F697265>
+show
+1263 616 moveto
+<6465>
+show
+1315 616 moveto
+<636F6D70696C6174696F6E>
+show
+1527 616 moveto
+<657374>
+show
+1586 616 moveto
+<73656E7369626C656D656E74>
+show
+1817 616 moveto
+<64696666E972656E7465>
+show
+1993 616 moveto
+<6465>
+show
+2044 616 moveto
+<63656C6C65>
+show
+2136 616 moveto
+<6475>
+show
+220 663 moveto
+<72E9706572746F6972652064657320736F75726365732E>
+show
+220 757 moveto
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<96>
+show
+220 757 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2020>
+[10 0]
+xshow
+220 761 20 2 rectfill
+241 757 moveto
+1 1 1 setrgbcolor
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<2020>
+[21 0]
+xshow
+241 757 moveto
+0 0 0 setrgbcolor
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2020>
+[29 0]
+xshow
+241 761 39 2 rectfill
+279 757 moveto
+<436173206427756E20756E69717565206D6F64756C65203A>
+show
+279 761 427 2 rectfill
+220 855 moveto
+<4C276172626F72657363656E63652064752072E9706572746F69726520646520636F6D70696C61
+74696F6E20646520>
+show
+1020 855 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<3C4D4F44554C453E5F5352432F>
+show
+1373 855 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<20657374206C612073756976616E7465203A>
+show
+220 951 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2F6D6F6E2F7265706572746F6972652F64652F636F6D70696C6174696F6E2F706F75722F4D4F4E
+5F6D6F64756C652F>
+show
+368 999 moveto
+<61646D5F6C6F63616C2F>
+show
+515 1046 moveto
+<756E69782F>
+show
+368 1094 moveto
+<62696E2F>
+show
+515 1142 moveto
+<73616C6F6D652F>
+show
+368 1190 moveto
+<69646C2F>
+show
+515 1238 moveto
+<73616C6F6D652F>
+show
+368 1286 moveto
+<696E636C7564652F>
+show
+515 1334 moveto
+<73616C6F6D652F>
+show
+368 1382 moveto
+<6C69622F>
+show
+515 1430 moveto
+<73616C6F6D652F>
+show
+368 1478 moveto
+<73616C6F6D655F61646D2F>
+show
+515 1526 moveto
+<756E69782F>
+show
+368 1574 moveto
+<73686172652F>
+show
+515 1621 moveto
+<73616C6F6D652F>
+show
+663 1669 moveto
+<646F632F>
+show
+663 1717 moveto
+<7265736F75726365732F>
+show
+368 1765 moveto
+<7372632F>
+show
+368 1813 moveto
+<4D616B6566696C65>
+show
+220 1909 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<4365747465>
+show
+319 1909 moveto
+<6172626F72657363656E6365>
+show
+549 1909 moveto
+<657374>
+show
+607 1909 moveto
+<67E96EE972E965>
+show
+748 1909 moveto
+<706172>
+show
+812 1909 moveto
+<6C65>
+show
+854 1909 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<636F6E666967757265>
+show
+1024 1909 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6475>
+show
+1077 1909 moveto
+<6D6F64756C65>
+show
+1213 1909 moveto
+<636F6E736964E972E92E>
+show
+1395 1909 moveto
+<4C65>
+show
+1450 1909 moveto
+<72E9706572746F697265>
+show
+1624 1909 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<73616C6F6D655F61646D2F>
+show
+1869 1909 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<657374>
+show
+1926 1909 moveto
+<6372E9E9>
+show
+2007 1909 moveto
+<E0>
+show
+2037 1909 moveto
+<706172746972>
+show
+2138 1909 moveto
+<6475>
+show
+220 1957 moveto
+<72E9706572746F697265>
+show
+398 1957 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2F6D6F6E2F7265706572746F6972652F642F696E7374616C6C6174696F6E2F706F75722F4B4552
+4E454C2F>
+show
+1228 1957 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2C>
+show
+1253 1957 moveto
+<656E>
+show
+1307 1957 moveto
+<72657370656374616E74>
+show
+1492 1957 moveto
+<6C61>
+show
+1537 1957 moveto
+<6DEA6D65>
+show
+1654 1957 moveto
+<736F75732D6172626F72657363656E6365>
+show
+1978 1957 moveto
+<286C6573>
+show
+2053 1957 moveto
+<6669636869657273>
+show
+220 2004 moveto
+<2A2E696E2067617264656E74206C65206DEA6D65206E6F6D206D6169732073616E73206C276578
+74656E73696F6E20272E696E2720617072E873207472616974656D656E7420706172206C6520>
+show
+1487 2004 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<636F6E666967757265>
+show
+1647 2004 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<292E>
+show
+220 2051 moveto
+<456E>
+show
+282 2051 moveto
+<6F757472652C>
+show
+394 2051 moveto
+<6C65>
+show
+440 2051 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<636F6E666967757265>
+show
+614 2051 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<7465737465>
+show
+706 2051 moveto
+<6C61>
+show
+752 2051 moveto
+<7072E973656E6365>
+show
+915 2051 moveto
+<646573>
+show
+986 2051 moveto
+<7072E9726571756973>
+show
+1157 2051 moveto
+<61696E7369>
+show
+1252 2051 moveto
+<717565>
+show
+1328 2051 moveto
+<6C27696E7374616C6C6174696F6E>
+show
+1549 2051 moveto
+<646573>
+show
+1620 2051 moveto
+<6D6F64756C6573>
+show
+1778 2051 moveto
+<646F6E74>
+show
+1868 2051 moveto
+<64E970656E64>
+show
+2005 2051 moveto
+<6C65>
+show
+2051 2051 moveto
+<6D6F64756C65>
+show
+220 2098 moveto
+<636F6E736964E972E92E>
+show
+1188 2982 moveto
+/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
+<39>
+show
+221 2845 1959 1 rectfill
+221 2933 1959 1 rectfill
+showpage
+grestore grestore
+%%PageTrailer
+
+%%Page: 9 9
+%%PageBoundingBox: 18 18 594 774
+%%BeginSetup
+%
+%%EndSetup
+%%BeginPageSetup
+%
+gsave
+[0.24 0 0 -0.24 18 774] concat
+gsave
+%%EndPageSetup
+/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
+/Times-Italic-iso1252 /Times-Italic ISO1252Encoding psp_definefont
+/Times-Bold-iso1252 /Times-Bold ISO1252Encoding psp_definefont
+%!PS-AdobeFont-1.0-2.0
+%%Creator: SunTypeTools-TT 1.0 gelf
+%%Title: OpenSymbolHSet1
+%%CreationDate:  
+%%Pages: 0
+%%EndComments
+%%BeginResource: font OpenSymbolHSet1
+% Original font name: OpenSymbol
+30 dict begin
+/PaintType 0 def
+/FontType 3 def
+/StrokeWidth 0 def
+/FontName /OpenSymbolHSet1 def
+/XUID [103 0 0 16#8D049593 2 16#0AC01B5C 16#CD31002C] def
+/FontMatrix [.001 0 0 .001 0 0] def
+/FontBBox [-179 -313 1083 917] def
+/Encoding 256 array def
+    0 1 255 {Encoding exch /.notdef put} for
+    Encoding 32 /glyph0 put
+    Encoding 150 /glyph1 put
+/CharProcs 3 dict def
+  CharProcs begin
+    /.notdef {} def
+    /glyph0 {
+       500 0 0 0 0 0 setcachedevice
+    } bind def
+    /glyph1 {
+       556 0 -2 224 554 296 setcachedevice
+       -2 224 moveto
+       554 224 lineto
+       554 296 lineto
+       -2 296 lineto
+       -2 224 lineto
+       closepath
+       fill
+    } bind def
+  end
+/BuildGlyph {
+  exch /CharProcs get exch
+  2 copy known not
+    {pop /.notdef} if
+  get exec
+} bind def
+/BuildChar {
+  1 index /Encoding get exch get
+  1 index /BuildGlyph get exec
+} bind def
+currentdict end
+/OpenSymbolHSet1 exch definefont pop
+%%EndResource
+220 258 moveto
+0 0 0 setrgbcolor
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<4F7267616E69736174696F6E20647520636174616C6F677565206465206D6F64756C6573203A>
+show
+220 262 666 2 rectfill
+220 305 moveto
+<4C276F7267616E69736174696F6E>
+show
+472 305 moveto
+<6475>
+show
+524 305 moveto
+<636174616C6F677565>
+show
+696 305 moveto
+<6465>
+show
+747 305 moveto
+<6D6F64756C6573>
+show
+900 305 moveto
+<706F757272616974>
+show
+1044 305 moveto
+<7672616973656D626C61626C656D656E74>
+show
+1374 305 moveto
+<7072656E647265>
+show
+1514 305 moveto
+<6578656D706C65>
+show
+1667 305 moveto
+<737572>
+show
+1729 305 moveto
+<63656C6C65>
+show
+1820 305 moveto
+<6D697365>
+show
+1909 305 moveto
+<656E>
+show
+1961 305 moveto
+<706C616365>
+show
+2060 305 moveto
+<706F7572>
+show
+2148 305 moveto
+<6C65>
+show
+220 352 moveto
+<70726F6A6574>
+show
+329 352 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<416C6C69616E636573>
+show
+495 352 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<706172>
+show
+560 352 moveto
+<6C61>
+show
+602 352 moveto
+<736F6369E974E9>
+show
+729 352 moveto
+<4F70656E43617363616465>
+show
+972 352 moveto
+<28416374696F6E>
+show
+1111 352 moveto
+<592E>
+show
+1163 352 moveto
+<46726963617564>
+show
+1302 352 moveto
+<4F70656E43617363616465>
+show
+1544 352 moveto
+<E0>
+show
+1574 352 moveto
+<6D656E6572292E>
+show
+1715 352 moveto
+<4E6F7573>
+show
+1814 352 moveto
+<70726F706F736F6E73>
+show
+1998 352 moveto
+<6EE9616E6D6F696E73>
+show
+220 399 moveto
+<756E6520736F6C7574696F6E2070726F7072652061752050414C20706F7572206C27696E737461
+6E74203A>
+show
+220 495 moveto
+<6C65>
+show
+295 495 moveto
+<736F75732D72E9706572746F697265>
+show
+593 495 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<73686172652F73616C6F6D652F7265736F75726365732F>
+show
+1064 495 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<636F6E7469656E74>
+show
+1244 495 moveto
+<756E>
+show
+1331 495 moveto
+<66696368696572>
+show
+1486 495 moveto
+<AB>
+show
+1507 495 moveto
+<20>
+show
+1517 495 moveto
+<53414C4F4D455F3C4D4F44554C453E5F434154412E786D6C>
+show
+2148 495 moveto
+<20>
+show
+2158 495 moveto
+<BB>
+show
+220 542 moveto
+<636F72726573706F6E64616E74>
+show
+471 542 moveto
+<E0>
+show
+504 542 moveto
+<6C61>
+show
+548 542 moveto
+<706172746965>
+show
+657 542 moveto
+<6475>
+show
+713 542 moveto
+<636174616C6F677565>
+show
+887 542 moveto
+<6465>
+show
+940 542 moveto
+<6D6F64756C6573>
+show
+1096 542 moveto
+<72656C6174697665>
+show
+1235 542 moveto
+<E0>
+show
+1269 542 moveto
+<3C4D4F44554C453E2E>
+show
+1520 542 moveto
+<436573>
+show
+1596 542 moveto
+<64696666E972656E7473>
+show
+1771 542 moveto
+<6669636869657273>
+show
+1910 542 moveto
+<736F6E74>
+show
+1993 542 moveto
+<636F6E636174E96EE973>
+show
+220 589 moveto
+<706172>
+show
+288 589 moveto
+<6C65>
+show
+331 589 moveto
+<736372697074>
+show
+438 589 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<72756E53616C6F6D65>
+show
+619 589 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2C>
+show
+644 589 moveto
+<6166696E>
+show
+722 589 moveto
+<6465>
+show
+775 589 moveto
+<666F726D6572>
+show
+904 589 moveto
+<6C65>
+show
+948 589 moveto
+<636174616C6F677565>
+show
+1123 589 moveto
+<646573>
+show
+1193 589 moveto
+<6D6F64756C6573>
+show
+1349 589 moveto
+<64616E73>
+show
+1439 589 moveto
+<736F6E>
+show
+1511 589 moveto
+<696E74E96772616C6974E92E>
+show
+1706 589 moveto
+<4C276F72647265>
+show
+1842 589 moveto
+<6465>
+show
+1895 589 moveto
+<726563686572636865>
+show
+2073 589 moveto
+<6465>
+show
+2126 589 moveto
+<636573>
+show
+220 636 moveto
+<636174616C6F67756573207061727469656C7320657374206C652073756976616E74203A>
+show
+368 683 moveto
+<312F>
+show
+416 683 moveto
+<6C65>
+show
+462 683 moveto
+<736372697074>
+show
+570 683 moveto
+<7365>
+show
+621 683 moveto
+<72E966E87265>
+show
+735 683 moveto
+<746F7574>
+show
+816 683 moveto
+<642761626F7264>
+show
+956 683 moveto
+<E0>
+show
+990 683 moveto
+<756E>
+show
+1048 683 moveto
+<4D4F44554C45535F50415448>
+show
+1398 683 moveto
+<64E966696E69>
+show
+1511 683 moveto
+<706172>
+show
+1580 683 moveto
+<6C277574696C69736174657572>
+show
+1783 683 moveto
+<636F6E74656E616E74>
+show
+1963 683 moveto
+<756E65>
+show
+2039 683 moveto
+<6C69737465>
+show
+2124 683 moveto
+<646573>
+show
+220 730 moveto
+<72E9706572746F69726573>
+show
+427 730 moveto
+<6427696E7374616C6C6174696F6E>
+show
+668 730 moveto
+<646573>
+show
+752 730 moveto
+<646976657273>
+show
+881 730 moveto
+<6D6F64756C65732E>
+show
+1060 730 moveto
+<4C61>
+show
+1132 730 moveto
+<6C69737465>
+show
+1229 730 moveto
+<646573>
+show
+1312 730 moveto
+<6D6F64756C6573>
+show
+1481 730 moveto
+<7072E973656E7473>
+show
+1646 730 moveto
+<64616E73>
+show
+1750 730 moveto
+<756E65>
+show
+1838 730 moveto
+<61647265737365>
+show
+1988 730 moveto
+<646F6E6EE965>
+show
+2137 730 moveto
+<6475>
+show
+220 777 moveto
+<4D4F44554C45535F50415448>
+show
+587 777 moveto
+<657374>
+show
+667 777 moveto
+<64E96475697465>
+show
+824 777 moveto
+<6175746F6D6174697175656D656E742C>
+show
+1160 777 moveto
+<706172>
+show
+1247 777 moveto
+<726563686572636865>
+show
+1443 777 moveto
+<6427756E65>
+show
+1566 777 moveto
+<6F75>
+show
+1641 777 moveto
+<706C75736965757273>
+show
+1826 777 moveto
+<736F75732D6172626F72657363656E6365287329>
+show
+220 825 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<73686172652F73616C6F6D652F7265736F75726365732F>
+show
+671 825 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6E6F6E>
+show
+759 825 moveto
+<766964652873292E>
+show
+911 825 moveto
+<4C61>
+show
+981 825 moveto
+<726563686572636865>
+show
+1169 825 moveto
+<7061726D69>
+show
+1292 825 moveto
+<6C6573>
+show
+1363 825 moveto
+<6164726573736573>
+show
+1529 825 moveto
+<6475>
+show
+1595 825 moveto
+<4D4F44554C45535F50415448>
+show
+1954 825 moveto
+<73756974>
+show
+2041 825 moveto
+<6C61>
+show
+2095 825 moveto
+<72E8676C65>
+show
+220 872 moveto
+<686162697475656C6C65>
+show
+399 872 moveto
+<646573>
+show
+467 872 moveto
+<504154482C>
+show
+600 872 moveto
+<69652E>
+show
+653 872 moveto
+<64E962757465>
+show
+779 872 moveto
+<E0>
+show
+810 872 moveto
+<676175636865>
+show
+941 872 moveto
+<6465>
+show
+994 872 moveto
+<6C61>
+show
+1037 872 moveto
+<6C697374652C>
+show
+1130 872 moveto
+<6574>
+show
+1173 872 moveto
+<7327617272EA7465>
+show
+1306 872 moveto
+<64E873>
+show
+1374 872 moveto
+<717565>
+show
+1448 872 moveto
+<6C27E96CE96D656E74>
+show
+1613 872 moveto
+<7265636865726368E9>
+show
+1789 872 moveto
+<657374>
+show
+1848 872 moveto
+<74726F7576E92E>
+show
+1979 872 moveto
+<5369>
+show
+2027 872 moveto
+<706C75736965757273>
+show
+220 919 moveto
+<76657273696F6E73>
+show
+373 919 moveto
+<6427696E7374616C6C6174696F6E>
+show
+602 919 moveto
+<6427756E>
+show
+686 919 moveto
+<6DEA6D65>
+show
+802 919 moveto
+<6D6F64756C65>
+show
+941 919 moveto
+<736F6E74>
+show
+1025 919 moveto
+<74726F7576E96573>
+show
+1181 919 moveto
+<706F7572>
+show
+1271 919 moveto
+<756E65>
+show
+1344 919 moveto
+<6DEA6D65>
+show
+1461 919 moveto
+<61647265737365>
+show
+1598 919 moveto
+<6475>
+show
+1653 919 moveto
+<4D4F44554C45535F504154482C>
+show
+2011 919 moveto
+<6327657374>
+show
+2097 919 moveto
+<616C6F7273>
+show
+220 966 moveto
+<6C276F7264726520616C70686162E974697175652071756920646F6E6E65206C276F7264726520
+6465207072696F726974E92E>
+show
+368 1014 moveto
+<322F>
+show
+415 1014 moveto
+<656E>
+show
+470 1014 moveto
+<7365636F6E64>
+show
+601 1014 moveto
+<6C6965752C>
+show
+690 1014 moveto
+<6327657374>
+show
+778 1014 moveto
+<6C61>
+show
+823 1014 moveto
+<7661726961626C65>
+show
+974 1014 moveto
+<3C4D4F44554C453E5F4150504C495F494E5354414C4C>
+show
+1549 1014 moveto
+<696E64697175616E74>
+show
+1723 1014 moveto
+<6C65>
+show
+1769 1014 moveto
+<6368656D696E>
+show
+1907 1014 moveto
+<6427696E7374616C6C6174696F6E>
+show
+2138 1014 moveto
+<6465>
+show
+220 1061 moveto
+<3C4D4F44554C453E2028706F757220756E65206170706C69636174696F6E20626173E965207375
+7220>
+show
+992 1061 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<53616C6F6D65>
+show
+1115 1061 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<29207175692065737420707269736520656E20636F6D70746520736920656C6C65206120E974E9
+2064E966696E696520706172206C277574696C697361746575722E>
+show
+368 1108 moveto
+<332F>
+show
+416 1108 moveto
+<656E>
+show
+472 1108 moveto
+<6465726E696572>
+show
+607 1108 moveto
+<6C6965752C>
+show
+697 1108 moveto
+<6C65>
+show
+744 1108 moveto
+<6368656D696E>
+show
+884 1108 moveto
+<6427696E7374616C6C6174696F6E>
+show
+1116 1108 moveto
+<636F6E74656E75>
+show
+1264 1108 moveto
+<64616E73>
+show
+1358 1108 moveto
+<6C61>
+show
+1405 1108 moveto
+<7661726961626C65>
+show
+1557 1108 moveto
+<3C4D4F44554C453E5F494E5354414C4C>
+show
+1996 1108 moveto
+<657374>
+show
+2059 1108 moveto
+<70726973>
+show
+2138 1108 moveto
+<656E>
+show
+220 1155 moveto
+<636F6D70746520706F75722074726F75766572206C65206669636869657220AB>
+show
+755 1155 moveto
+<20>
+show
+765 1155 moveto
+<53414C4F4D455F3C4D4F44554C453E5F434154412E786D6C>
+show
+1396 1155 moveto
+<20>
+show
+1406 1155 moveto
+<BB2E>
+show
+220 1296 moveto
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<96>
+show
+220 1296 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2020>
+[10 0]
+xshow
+220 1300 20 2 rectfill
+241 1296 moveto
+1 1 1 setrgbcolor
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<2020>
+[21 0]
+xshow
+241 1296 moveto
+0 0 0 setrgbcolor
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2020>
+[29 0]
+xshow
+241 1300 39 2 rectfill
+279 1296 moveto
+<43617320646520706C75736965757273206D6F64756C6573203A>
+show
+279 1300 450 2 rectfill
+220 1393 moveto
+<5369>
+show
+267 1393 moveto
+<6E6F7573>
+show
+359 1393 moveto
+<636F6D70696C6F6E73>
+show
+545 1393 moveto
+<706C75736965757273>
+show
+710 1393 moveto
+<6D6F64756C6573>
+show
+864 1393 moveto
+<656E>
+show
+916 1393 moveto
+<6DEA6D65>
+show
+1031 1393 moveto
+<74656D70732C>
+show
+1154 1393 moveto
+<6C6573>
+show
+1212 1393 moveto
+<72E9706572746F69726573>
+show
+1404 1393 moveto
+<6465>
+show
+1456 1393 moveto
+<636F6D70696C6174696F6E>
+show
+1669 1393 moveto
+<72657370656374696673>
+show
+1842 1393 moveto
+<6465>
+show
+1894 1393 moveto
+<746F7573>
+show
+1976 1393 moveto
+<6C6573>
+show
+2035 1393 moveto
+<6D6F64756C6573>
+show
+220 1440 moveto
+<61707061727469656E6E656E74206175206DEA6D652072E9706572746F697265203A>
+show
+220 1535 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2F6D6F6E2F7265706572746F6972652F64652F636F6D70696C6174696F6E2F706F75722F4D4553
+5F6D6F64756C65732F>
+show
+368 1583 moveto
+<4D616B6566696C65>
+show
+368 1631 moveto
+<3C4D4F44554C453E5F4255494C442F>
+show
+515 1679 moveto
+<61646D5F6C6F63616C2F>
+show
+663 1727 moveto
+<756E69782F>
+show
+515 1775 moveto
+<62696E2F>
+show
+663 1823 moveto
+<73616C6F6D652F>
+show
+515 1871 moveto
+<69646C2F>
+show
+663 1919 moveto
+<73616C6F6D652F>
+show
+515 1967 moveto
+<696E636C7564652F>
+show
+663 2015 moveto
+<73616C6F6D652F>
+show
+515 2063 moveto
+<6C69622F>
+show
+663 2110 moveto
+<73616C6F6D652F>
+show
+515 2158 moveto
+<73616C6F6D655F61646D2F>
+show
+663 2206 moveto
+<756E69782F>
+show
+515 2254 moveto
+<73686172652F>
+show
+663 2302 moveto
+<73616C6F6D652F>
+show
+810 2350 moveto
+<646F632F>
+show
+810 2398 moveto
+<7265736F75726365732F>
+show
+515 2446 moveto
+<7372632F>
+show
+515 2494 moveto
+<4D616B6566696C65>
+show
+220 2589 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<4365747465206172626F72657363656E636520657374206372E9E96520706172206C6520>
+show
+810 2589 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<636F6E666967757265>
+show
+970 2589 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<20676C6F62616C2064752072E9706572746F69726520>
+show
+1322 2589 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<53414C4F4D455F5352432F>
+show
+1620 2589 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2C2071756920617070656C6C6520737563636573736976656D656E7420746F7573>
+show
+220 2637 moveto
+<6C657320>
+show
+277 2637 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<636F6E666967757265>
+show
+437 2637 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<206465732064696666E972656E7473206D6F64756C65732C2071756920657578206372E9656E74
+206C657320736F75732D72E9706572746F6972657320646520>
+show
+1483 2637 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<3C4D4F44554C453E5F4255494C442F>
+show
+1885 2637 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2E>
+show
+1175 2982 moveto
+/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
+<3130>
+show
+221 2845 1959 1 rectfill
+221 2933 1959 1 rectfill
+showpage
+grestore grestore
+%%PageTrailer
+
+%%Page: 10 10
+%%PageBoundingBox: 18 18 594 774
+%%BeginSetup
+%
+%%EndSetup
+%%BeginPageSetup
+%
+gsave
+[0.24 0 0 -0.24 18 774] concat
+gsave
+%%EndPageSetup
+/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
+/Times-Italic-iso1252 /Times-Italic ISO1252Encoding psp_definefont
+/Times-Bold-iso1252 /Times-Bold ISO1252Encoding psp_definefont
+220 258 moveto
+0 0 0 setrgbcolor
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<456C6C65>
+show
+305 258 moveto
+<72657072656E64>
+show
+450 258 moveto
+<63656C6C65>
+show
+547 258 moveto
+<6475>
+show
+607 258 moveto
+<72E9706572746F697265>
+show
+787 258 moveto
+<6427696E7374616C6C6174696F6E>
+show
+1019 258 moveto
+<717569>
+show
+1090 258 moveto
+<657374>
+show
+1155 258 moveto
+<64E96372697465>
+show
+1286 258 moveto
+<706C7573>
+show
+1374 258 moveto
+<6C6F696E2C>
+show
+1467 258 moveto
+<6365>
+show
+1522 258 moveto
+<717569>
+show
+1593 258 moveto
+<7065726D6574>
+show
+1726 258 moveto
+<6175>
+show
+1783 258 moveto
+<64E976656C6F7070657572>
+show
+2009 258 moveto
+<6465>
+show
+2066 258 moveto
+<6E65>
+show
+2123 258 moveto
+<706173>
+show
+220 305 moveto
+<666F7263E96D656E74>
+show
+403 305 moveto
+<6C616E636572>
+show
+519 305 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6D616B65>
+show
+620 305 moveto
+<696E7374616C6C>
+show
+738 305 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<617072E873>
+show
+840 305 moveto
+<6C61>
+show
+883 305 moveto
+<636F6D70696C6174696F6E>
+show
+1097 305 moveto
+<2863656369>
+show
+1192 305 moveto
+<657374>
+show
+1251 305 moveto
+<E967616C656D656E74>
+show
+1438 305 moveto
+<76726169>
+show
+1516 305 moveto
+<64616E73>
+show
+1607 305 moveto
+<6C65>
+show
+1650 305 moveto
+<636173>
+show
+1717 305 moveto
+<6465>
+show
+1770 305 moveto
+<6C61>
+show
+1813 305 moveto
+<636F6D70696C6174696F6E>
+show
+2027 305 moveto
+<6427756E>
+show
+2111 305 moveto
+<7365756C>
+show
+220 352 moveto
+<6D6F64756C65292E>
+show
+220 399 moveto
+<43686163756E>
+show
+363 399 moveto
+<646573>
+show
+435 399 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<636F6E666967757265>
+show
+610 399 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<7465737465>
+show
+701 399 moveto
+<6C61>
+show
+747 399 moveto
+<7072E973656E6365>
+show
+910 399 moveto
+<646573>
+show
+981 399 moveto
+<6D6F64756C6573>
+show
+1139 399 moveto
+<726571756973>
+show
+1256 399 moveto
+<706172>
+show
+1325 399 moveto
+<6C6573>
+show
+1387 399 moveto
+<72656C6174696F6E73>
+show
+1548 399 moveto
+<6465>
+show
+1603 399 moveto
+<64E970656E64616E6365732C>
+show
+1842 399 moveto
+<686F726D6973>
+show
+1975 399 moveto
+<6C6573>
+show
+2037 399 moveto
+<6D6F64756C6573>
+show
+220 448 moveto
+<7072E973656E7473>
+show
+380 448 moveto
+<64616E73>
+show
+479 448 moveto
+<6C65>
+show
+532 448 moveto
+<72E9706572746F697265>
+show
+718 448 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2F6D6F6E2F7265706572746F6972652F64652F636F6D70696C6174696F6E2F706F75722F4D4553
+5F6D6F64756C65732F>
+show
+1663 448 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2E>
+show
+1696 448 moveto
+<456E>
+show
+1764 448 moveto
+<65666665742C>
+show
+1874 448 moveto
+<6C65>
+show
+1926 448 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<636F6E666967757265>
+show
+2108 448 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6427756E>
+show
+220 495 moveto
+<6D6F64756C65>
+show
+358 495 moveto
+<646F6E6EE9>
+show
+472 495 moveto
+<6E65>
+show
+523 495 moveto
+<646F6974>
+show
+600 495 moveto
+<706173>
+show
+669 495 moveto
+<746573746572>
+show
+771 495 moveto
+<7369>
+show
+811 495 moveto
+<756E>
+show
+864 495 moveto
+<6175747265>
+show
+960 495 moveto
+<6D6F64756C65>
+show
+1098 495 moveto
+<646F6E74>
+show
+1184 495 moveto
+<696C>
+show
+1219 495 moveto
+<64E970656E64>
+show
+1353 495 moveto
+<657374>
+show
+1411 495 moveto
+<696E7374616C6CE9>
+show
+1544 495 moveto
+<7369>
+show
+1583 495 moveto
+<6E6F7573>
+show
+1674 495 moveto
+<736F6D6D6573>
+show
+1824 495 moveto
+<6A757374656D656E74>
+show
+1999 495 moveto
+<656E>
+show
+2050 495 moveto
+<747261696E>
+show
+2139 495 moveto
+<6465>
+show
+220 542 moveto
+<6C6520636F6E666967757265722061757373692C20717527696C20736F6974206F75206E6F6E20
+64E96AE020636F6D70696CE92E>
+show
+1175 2982 moveto
+/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
+<3131>
+show
+221 2845 1959 1 rectfill
+221 2933 1959 1 rectfill
+showpage
+grestore grestore
+%%PageTrailer
+
+%%Page: 11 11
+%%PageBoundingBox: 18 18 594 774
+%%BeginSetup
+%
+%%EndSetup
+%%BeginPageSetup
+%
+gsave
+[0.24 0 0 -0.24 18 774] concat
+gsave
+%%EndPageSetup
+%!PS-AdobeFont-1.0-2.0
+%%Creator: SunTypeTools-TT 1.0 gelf
+%%Title: OpenSymbolHSet1
+%%CreationDate:  
+%%Pages: 0
+%%EndComments
+%%BeginResource: font OpenSymbolHSet1
+% Original font name: OpenSymbol
+30 dict begin
+/PaintType 0 def
+/FontType 3 def
+/StrokeWidth 0 def
+/FontName /OpenSymbolHSet1 def
+/XUID [103 0 0 16#8D049593 3 16#ABC23EE2 16#6072D5A5] def
+/FontMatrix [.001 0 0 .001 0 0] def
+/FontBBox [-179 -313 1083 917] def
+/Encoding 256 array def
+    0 1 255 {Encoding exch /.notdef put} for
+    Encoding 32 /glyph0 put
+    Encoding 150 /glyph1 put
+    Encoding 149 /glyph2 put
+/CharProcs 4 dict def
+  CharProcs begin
+    /.notdef {} def
+    /glyph0 {
+       500 0 0 0 0 0 setcachedevice
+    } bind def
+    /glyph1 {
+       556 0 -2 224 554 296 setcachedevice
+       -2 224 moveto
+       554 224 lineto
+       554 296 lineto
+       -2 296 lineto
+       -2 224 lineto
+       closepath
+       fill
+    } bind def
+    /glyph2 {
+       356 0 36 223 297 483 setcachedevice
+       169 223 moveto
+       134 223 103 236 76 261 curveto
+       50 286 36 317 36 353 curveto
+       36 389 49 420 76 445 curveto
+       102 470 133 483 169 483 curveto
+       204 483 235 471 260 445 curveto
+       285 420 297 389 297 353 curveto
+       297 318 285 287 260 261 curveto
+       236 236 206 223 169 223 curveto
+       closepath
+       fill
+    } bind def
+  end
+/BuildGlyph {
+  exch /CharProcs get exch
+  2 copy known not
+    {pop /.notdef} if
+  get exec
+} bind def
+/BuildChar {
+  1 index /Encoding get exch get
+  1 index /BuildGlyph get exec
+} bind def
+currentdict end
+/OpenSymbolHSet1 exch definefont pop
+%%EndResource
+/Helvetica-BoldOblique-iso1252 /Helvetica-BoldOblique ISO1252Encoding psp_definefont
+/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
+/Times-Italic-iso1252 /Times-Italic ISO1252Encoding psp_definefont
+/Times-Bold-iso1252 /Times-Bold ISO1252Encoding psp_definefont
+220 318 moveto
+0 0 0 setrgbcolor
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<95>
+show
+279 318 moveto
+/Helvetica-BoldOblique-iso1252  findfont 50 -50 matrix scale makefont setfont
+<4F7267616E69736174696F6E20646573206669636869657273206427696E7374616C6C6174696F
+6E>
+show
+220 428 moveto
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<96>
+show
+279 428 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<50617220>
+show
+279 428 moveto
+<2020>
+[55 0]
+xshow
+279 432 65 2 rectfill
+345 428 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6D616B6520696E7374616C6C>
+show
+345 428 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2020>
+[193 0]
+xshow
+345 432 203 2 rectfill
+549 428 moveto
+<203A>
+show
+549 428 moveto
+<2020>
+[11 0]
+xshow
+549 432 21 2 rectfill
+220 526 moveto
+<506172>
+show
+292 526 moveto
+<64E9666175742C>
+show
+424 526 moveto
+<6C27696E7374616C6C6174696F6E>
+show
+646 526 moveto
+<657374>
+show
+710 526 moveto
+<6661697465>
+show
+800 526 moveto
+<64616E73>
+show
+893 526 moveto
+<6C65>
+show
+940 526 moveto
+<72E9706572746F697265>
+show
+1120 526 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2F7573722F6C6F63616C2F>
+show
+1297 526 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2E>
+show
+1324 526 moveto
+<4C277574696C69736174657572>
+show
+1541 526 moveto
+<6574>
+show
+1587 526 moveto
+<6C65>
+show
+1634 526 moveto
+<64E976656C6F7070657572>
+show
+1858 526 moveto
+<70657576656E74>
+show
+2007 526 moveto
+<63686F69736972>
+show
+2138 526 moveto
+<756E>
+show
+220 573 moveto
+<6175747265>
+show
+321 573 moveto
+<72E9706572746F697265>
+show
+501 573 moveto
+<706172>
+show
+572 573 moveto
+<6C27696E7465726DE9646961697265>
+show
+832 573 moveto
+<6465>
+show
+889 573 moveto
+<6C276F7074696F6E>
+show
+1032 573 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2D2D707265666978>
+show
+1173 573 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6475>
+show
+1233 573 moveto
+<736372697074>
+show
+1342 573 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<636F6E666967757265>
+show
+1519 573 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<28>
+show
+1533 573 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<636F6E666967757265>
+show
+1709 573 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<7370E963696669717565>
+show
+1899 573 moveto
+<E0>
+show
+1934 573 moveto
+<756E>
+show
+1994 573 moveto
+<6D6F64756C65>
+show
+2136 573 moveto
+<6F75>
+show
+220 620 moveto
+<676C6F62616C29>
+show
+338 620 moveto
+<2E>
+show
+220 667 moveto
+<4C27696E7374616C6C6174696F6E2073696D756C74616EE96520646520706C7573696575727320
+6D6F64756C6573206574206C27696E7374616C6C6174696F6E206427756E20756E69717565206D6F
+64756C6520736F6E742073696D696C61697265732E>
+show
+220 761 moveto
+<4C276172626F72657363656E636520657374206C612073756976616E7465203A>
+show
+220 856 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2F6D6F6E2F7265706572746F6972652F642F696E7374616C6C6174696F6E2F706F75722F4D4F4E
+5F4F555F4D45535F6D6F64756C652873292F>
+show
+368 904 moveto
+<62696E2F>
+show
+515 952 moveto
+<73616C6F6D652F>
+show
+368 1000 moveto
+<69646C2F>
+show
+515 1048 moveto
+<73616C6F6D652F>
+show
+368 1096 moveto
+<696E636C7564652F>
+show
+515 1144 moveto
+<73616C6F6D652F>
+show
+368 1192 moveto
+<6C69622F>
+show
+515 1240 moveto
+<73616C6F6D652F>
+show
+368 1288 moveto
+<73686172652F>
+show
+515 1336 moveto
+<73616C6F6D652F>
+show
+663 1384 moveto
+<646F632F>
+show
+663 1431 moveto
+<7265736F75726365732F>
+show
+220 1526 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<4CE0206FF9204B45524E454C2065737420696E7374616C6CE92C206E6F75732061766F6E732065
+6E206F7574726520756E20736F75732D72E9706572746F69726520>
+show
+1363 1526 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<73616C6F6D655F61646D2F>
+show
+1598 1526 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2E>
+show
+220 1668 moveto
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<96>
+show
+220 1668 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2020>
+[10 0]
+xshow
+220 1672 20 2 rectfill
+241 1668 moveto
+1 1 1 setrgbcolor
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<2020>
+[21 0]
+xshow
+241 1668 moveto
+0 0 0 setrgbcolor
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2020>
+[29 0]
+xshow
+241 1672 39 2 rectfill
+279 1668 moveto
+<4120706172746972206427756E65206172636869766520>
+show
+279 1668 moveto
+<2020>
+[365 0]
+xshow
+279 1672 375 2 rectfill
+655 1668 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<62696E2E7461722E677A>
+show
+655 1668 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2020>
+[150 0]
+xshow
+655 1672 160 2 rectfill
+816 1668 moveto
+<203A>
+show
+816 1668 moveto
+<2020>
+[11 0]
+xshow
+816 1672 21 2 rectfill
+220 1765 moveto
+<496C>
+show
+265 1765 moveto
+<6573>
+show
+300 1765 moveto
+<74>
+show
+330 1765 moveto
+<706F737369626C65>
+show
+487 1765 moveto
+<6427696E7374616C6C6572>
+show
+669 1765 moveto
+<756E>
+show
+731 1765 moveto
+<6F75>
+show
+791 1765 moveto
+<706C75736965757273>
+show
+962 1765 moveto
+<6D6F64756C6573>
+show
+1124 1765 moveto
+<73616E73>
+show
+1215 1765 moveto
+<61766F6972>
+show
+1321 1765 moveto
+<E0>
+show
+1358 1765 moveto
+<6C6573>
+show
+1424 1765 moveto
+<636F6D70696C65722C>
+show
+1602 1765 moveto
+<6365>
+show
+1659 1765 moveto
+<717569>
+show
+1731 1765 moveto
+<7065726D6574>
+show
+1868 1765 moveto
+<756E>
+show
+1929 1765 moveto
+<6761696E>
+show
+2020 1765 moveto
+<6465>
+show
+2079 1765 moveto
+<74656D7073>
+show
+220 1812 moveto
+<7375627374656E7469656C2E20496C2073756666697420706F75722063656C612064652072E963
+7570E972657220756E6520617263686976652062696E6169726520>
+show
+1273 1812 moveto
+<20>
+show
+1283 1812 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<62696E2E7461722E677A>
+show
+1444 1812 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<20636F6E74656E616E74206C65732072E9706572746F697265732073756976616E7473203A>
+show
+220 1907 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<62696E2F>
+show
+368 1955 moveto
+<73616C6F6D652F>
+show
+220 2003 moveto
+<69646C2F>
+show
+368 2051 moveto
+<73616C6F6D652F>
+show
+220 2099 moveto
+<696E636C7564652F>
+show
+368 2147 moveto
+<73616C6F6D652F>
+show
+220 2195 moveto
+<6C69622F>
+show
+368 2243 moveto
+<73616C6F6D652F>
+show
+220 2290 moveto
+0.50196 0.50196 0.50196 setrgbcolor
+<73616C6F6D655F61646D2F>
+show
+810 2290 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<287369206C276172636869766520>
+show
+1015 2290 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<62696E2E7461722E677A>
+show
+1176 2290 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<20636F6E7469656E74206C65206D6F64756C65204B45524E454C29>
+show
+368 2339 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<756E69782F>
+show
+220 2386 moveto
+0 0 0 setrgbcolor
+<73686172652F>
+show
+368 2434 moveto
+<73616C6F6D652F>
+show
+515 2482 moveto
+<646F632F>
+show
+515 2530 moveto
+<7265736F75726365732F>
+show
+220 2624 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<556E65>
+show
+303 2624 moveto
+<74656C6C65>
+show
+389 2624 moveto
+<61726368697665>
+show
+526 2624 moveto
+<636F6E7469656E74>
+show
+675 2624 moveto
+<6C6573>
+show
+735 2624 moveto
+<6669636869657273>
+show
+874 2624 moveto
+<62696E6169726573>
+show
+1021 2624 moveto
+<6427756E>
+show
+1105 2624 moveto
+<6F75>
+show
+1159 2624 moveto
+<706C75736965757273>
+show
+1325 2624 moveto
+<6D6F64756C65732E>
+show
+1491 2624 moveto
+<4C277574696C69736174657572>
+show
+1706 2624 moveto
+<65787472616974>
+show
+1826 2624 moveto
+<6365747465>
+show
+1919 2624 moveto
+<61726368697665>
+show
+2056 2624 moveto
+<64616E73>
+show
+2147 2624 moveto
+<6C65>
+show
+220 2671 moveto
+<72E9706572746F69726520646520736F6E2063686F69782E>
+show
+1175 2982 moveto
+/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
+<3132>
+show
+221 2845 1959 1 rectfill
+221 2933 1959 1 rectfill
+showpage
+grestore grestore
+%%PageTrailer
+
+%%Page: 12 12
+%%PageBoundingBox: 18 18 594 774
+%%BeginSetup
+%
+%%EndSetup
+%%BeginPageSetup
+%
+gsave
+[0.24 0 0 -0.24 18 774] concat
+gsave
+%%EndPageSetup
+/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
+/Times-Italic-iso1252 /Times-Italic ISO1252Encoding psp_definefont
+%!PS-AdobeFont-1.0-2.0
+%%Creator: SunTypeTools-TT 1.0 gelf
+%%Title: OpenSymbolHSet1
+%%CreationDate:  
+%%Pages: 0
+%%EndComments
+%%BeginResource: font OpenSymbolHSet1
+% Original font name: OpenSymbol
+30 dict begin
+/PaintType 0 def
+/FontType 3 def
+/StrokeWidth 0 def
+/FontName /OpenSymbolHSet1 def
+/XUID [103 0 0 16#8D049593 1 16#37A9EF96 16#52678846] def
+/FontMatrix [.001 0 0 .001 0 0] def
+/FontBBox [-179 -313 1083 917] def
+/Encoding 256 array def
+    0 1 255 {Encoding exch /.notdef put} for
+    Encoding 149 /glyph0 put
+/CharProcs 2 dict def
+  CharProcs begin
+    /.notdef {} def
+    /glyph0 {
+       356 0 36 223 297 483 setcachedevice
+       169 223 moveto
+       134 223 103 236 76 261 curveto
+       50 286 36 317 36 353 curveto
+       36 389 49 420 76 445 curveto
+       102 470 133 483 169 483 curveto
+       204 483 235 471 260 445 curveto
+       285 420 297 389 297 353 curveto
+       297 318 285 287 260 261 curveto
+       236 236 206 223 169 223 curveto
+       closepath
+       fill
+    } bind def
+  end
+/BuildGlyph {
+  exch /CharProcs get exch
+  2 copy known not
+    {pop /.notdef} if
+  get exec
+} bind def
+/BuildChar {
+  1 index /Encoding get exch get
+  1 index /BuildGlyph get exec
+} bind def
+currentdict end
+/OpenSymbolHSet1 exch definefont pop
+%%EndResource
+/Times-Bold-iso1252 /Times-Bold ISO1252Encoding psp_definefont
+220 258 moveto
+0 0 0 setrgbcolor
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<41766563>
+show
+319 258 moveto
+<6365>
+show
+367 258 moveto
+<74797065>
+show
+450 258 moveto
+<6427696E7374616C6C6174696F6E2C>
+show
+686 258 moveto
+<617563756E>
+show
+797 258 moveto
+<736372697074>
+show
+901 258 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<636F6E666967757265>
+show
+1072 258 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6E>
+show
+1093 258 moveto
+<27657374>
+show
+1157 258 moveto
+<657865637574E92C>
+show
+1306 258 moveto
+<646F6E63>
+show
+1399 258 moveto
+<617563756E>
+show
+1510 258 moveto
+<636F6E7472F46C65>
+show
+1659 258 moveto
+<6465>
+show
+1709 258 moveto
+<64E970656E64616E6365>
+show
+1917 258 moveto
+<737572>
+show
+1979 258 moveto
+<6C6573>
+show
+2037 258 moveto
+<6D6F64756C6573>
+show
+220 305 moveto
+<6F75206C6573207072E9726571756973206E276573742065666665637475E92E20432765737420
+E0206C277574696C6973617465757220646520732761737375726572206465206C61207072E97365
+6E636520646520746F7573206C657320E96CE96D656E7473207265717569732E>
+show
+220 446 moveto
+<52656D6172717565732067E96EE972616C657320737572206C27696E7374616C6C6174696F6E>
+show
+220 446 moveto
+<2020>
+[625 0]
+xshow
+220 450 635 2 rectfill
+856 446 moveto
+<203A>
+show
+856 446 moveto
+<2020>
+[11 0]
+xshow
+856 450 21 2 rectfill
+220 541 moveto
+<4C65>
+show
+276 541 moveto
+<736372697074>
+show
+382 541 moveto
+<6465>
+show
+434 541 moveto
+<636F6E66696775726174696F6E>
+show
+673 541 moveto
+<6427756E>
+show
+756 541 moveto
+<6D6F64756C65>
+show
+894 541 moveto
+<726563686572636865>
+show
+1069 541 moveto
+<64616E73>
+show
+1159 541 moveto
+<6C6573>
+show
+1218 541 moveto
+<72E9706572746F69726573>
+show
+1410 541 moveto
+<7374616E6461726473>
+show
+1581 541 moveto
+<6475>
+show
+1636 541 moveto
+<73797374E86D65>
+show
+1784 541 moveto
+<7369>
+show
+1824 541 moveto
+<6C6573>
+show
+1882 541 moveto
+<6D6F64756C6573>
+show
+2037 541 moveto
+<646F6E74>
+show
+2124 541 moveto
+<696C>
+show
+2160 541 moveto
+<61>
+show
+220 588 moveto
+<6265736F696E20736F6E7420696E7374616C6CE9732E>
+show
+220 635 moveto
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<95>
+show
+279 635 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<5369>
+show
+331 635 moveto
+<756E>
+show
+392 635 moveto
+<6D6F64756C65>
+show
+535 635 moveto
+<657374>
+show
+599 635 moveto
+<696E7374616C6CE9>
+show
+739 635 moveto
+<64616E73>
+show
+834 635 moveto
+<756E>
+show
+893 635 moveto
+<72E9706572746F697265>
+show
+1075 635 moveto
+<6E6F6E>
+show
+1155 635 moveto
+<7374616E646172642C>
+show
+1326 635 moveto
+<6F75>
+show
+1385 635 moveto
+<7327696C>
+show
+1451 635 moveto
+<6E27657374>
+show
+1544 635 moveto
+<706173>
+show
+1617 635 moveto
+<696E7374616C6CE9>
+show
+1756 635 moveto
+<6D616973>
+show
+1854 635 moveto
+<7365756C656D656E74>
+show
+2042 635 moveto
+<636F6D70696CE9>
+show
+279 685 moveto
+<636F6D6D65>
+show
+419 685 moveto
+<6327657374>
+show
+508 685 moveto
+<736F7576656E74>
+show
+655 685 moveto
+<6C65>
+show
+702 685 moveto
+<636173>
+show
+772 685 moveto
+<656E>
+show
+828 685 moveto
+<7068617365>
+show
+940 685 moveto
+<6465>
+show
+998 685 moveto
+<64E976656C6F7070656D656E742C>
+show
+1281 685 moveto
+<616C6F7273>
+show
+1379 685 moveto
+<6C65>
+show
+1426 685 moveto
+<64E976656C6F7070657572>
+show
+1650 685 moveto
+<6465767261>
+show
+1760 685 moveto
+<706F736974696F6E6E6572>
+show
+1966 685 moveto
+<756E65>
+show
+2043 685 moveto
+<7661726961626C65>
+show
+279 732 moveto
+<6427656E7669726F6E6E656D656E74>
+show
+589 732 moveto
+<AB>
+show
+610 732 moveto
+<20>
+show
+620 732 moveto
+<3C4D4F44554C453E5F494E5354414C4C>
+show
+1042 732 moveto
+<20>
+show
+1052 732 moveto
+<BB>
+show
+1101 732 moveto
+<696E64697175616E74>
+show
+1289 732 moveto
+<726573706563746976656D656E74>
+show
+1573 732 moveto
+<6C65>
+show
+1632 732 moveto
+<72E9706572746F697265>
+show
+1825 732 moveto
+<6427696E7374616C6C6174696F6E>
+show
+2068 732 moveto
+<6F75>
+show
+2140 732 moveto
+<6465>
+show
+279 779 moveto
+<636F6D70696C6174696F6E2E>
+show
+507 779 moveto
+<4365747465>
+show
+613 779 moveto
+<7661726961626C65>
+show
+766 779 moveto
+<657374>
+show
+830 779 moveto
+<7072696F72697461697265>
+show
+1016 779 moveto
+<737572>
+show
+1084 779 moveto
+<6C6573>
+show
+1148 779 moveto
+<72E9706572746F69726573>
+show
+1345 779 moveto
+<7374616E6461726473>
+show
+1521 779 moveto
+<64616E73>
+show
+1615 779 moveto
+<6C276F72647265>
+show
+1741 779 moveto
+<6465>
+show
+1798 779 moveto
+<726563686572636865>
+show
+1979 779 moveto
+<646573>
+show
+2051 779 moveto
+<6669636869657273>
+show
+279 826 moveto
+<62696E6169726573206475206D6F64756C652E>
+show
+279 873 moveto
+<4E6F7573>
+show
+382 873 moveto
+<64E966696E6973736F6E73>
+show
+585 873 moveto
+<656E>
+show
+639 873 moveto
+<66616974>
+show
+710 873 moveto
+<74726F6973>
+show
+799 873 moveto
+<7661726961626C6573>
+show
+965 873 moveto
+<706172>
+show
+1033 873 moveto
+<6D6F64756C65>
+show
+1174 873 moveto
+<696E64697175616E74>
+show
+1347 873 moveto
+<6C6573>
+show
+1408 873 moveto
+<72E9706572746F69726573>
+show
+1602 873 moveto
+<636F6E74656E616E74>
+show
+1780 873 moveto
+<6C6573>
+show
+1841 873 moveto
+<736F75726365732C>
+show
+1992 873 moveto
+<6C6573>
+show
+2053 873 moveto
+<736F7572636573>
+show
+279 920 moveto
+<636F6D70696CE96573>
+show
+476 920 moveto
+<6574>
+show
+533 920 moveto
+<6C6573>
+show
+606 920 moveto
+<6669636869657273>
+show
+760 920 moveto
+<6427696E7374616C6C6174696F6E2E>
+show
+1013 920 moveto
+<44616E73>
+show
+1126 920 moveto
+<756E>
+show
+1194 920 moveto
+<736F75636973>
+show
+1327 920 moveto
+<6465>
+show
+1393 920 moveto
+<6E6F726D616C69736174696F6E2C>
+show
+1662 920 moveto
+<636573>
+show
+1742 920 moveto
+<7661726961626C6573>
+show
+1921 920 moveto
+<736F6E74>
+show
+2018 920 moveto
+<6E6F6D6DE96573>
+show
+279 967 moveto
+<726573706563746976656D656E74>
+show
+549 967 moveto
+<3A>
+show
+576 967 moveto
+<3C4D4F44554C453E5F5352432C>
+show
+930 967 moveto
+<3C4D4F44554C453E5F4255494C44>
+show
+1323 967 moveto
+<6574>
+show
+1368 967 moveto
+<3C4D4F44554C453E5F494E5354414C4C2E>
+show
+1818 967 moveto
+<506F7572>
+show
+1913 967 moveto
+<6C6573>
+show
+1975 967 moveto
+<6170706C69636174696F6E73>
+show
+279 1014 moveto
+<626173E96573>
+show
+413 1014 moveto
+<737572>
+show
+489 1014 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<53616C6F6D65>
+show
+611 1014 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2C>
+show
+647 1014 moveto
+<636573>
+show
+725 1014 moveto
+<7661726961626C6573>
+show
+901 1014 moveto
+<64657669656E6E656E74>
+show
+1110 1014 moveto
+<3C4D4F44554C453E5F4150504C495F5352432C>
+show
+1610 1014 moveto
+<3C4D4F44554C453E5F4150504C495F4255494C44>
+show
+2149 1014 moveto
+<6574>
+show
+279 1061 moveto
+<3C4D4F44554C453E5F4150504C495F494E5354414C4C2E>
+show
+220 1110 moveto
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<95>
+show
+279 1110 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<5369>
+show
+329 1110 moveto
+<756E>
+show
+388 1110 moveto
+<6D6F64756C65>
+show
+529 1110 moveto
+<657374>
+show
+591 1110 moveto
+<696E7374616C6CE9>
+show
+728 1110 moveto
+<64616E73>
+show
+821 1110 moveto
+<756E>
+show
+879 1110 moveto
+<72E9706572746F697265>
+show
+1058 1110 moveto
+<7374616E646172642C>
+show
+1226 1110 moveto
+<6C276578697374656E6365>
+show
+1417 1110 moveto
+<6427756E>
+show
+1504 1110 moveto
+<736F75732D72E9706572746F697265>
+show
+1772 1110 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<73616C6F6D652F>
+show
+1922 1110 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<617578>
+show
+1998 1110 moveto
+<72E9706572746F69726573>
+show
+279 1161 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<62696E2F>
+show
+349 1161 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2C>
+show
+370 1161 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<696E636C7564652F>
+show
+513 1161 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2C>
+show
+534 1161 moveto
+/Times-Bold-iso1252  findfont 42 -42 matrix scale makefont setfont
+<6C69622F>
+show
+602 1161 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<696D706C69717565>
+show
+762 1161 moveto
+<6465>
+show
+812 1161 moveto
+<72616A6F75746572>
+show
+954 1161 moveto
+<756E65>
+show
+1025 1161 moveto
+<61647265737365>
+show
+1159 1161 moveto
+<64616E73>
+show
+1247 1161 moveto
+<6C6573>
+show
+1304 1161 moveto
+<7661726961626C6573>
+show
+1466 1161 moveto
+<50415448>
+show
+1587 1161 moveto
+<6173736F6369E965732E>
+show
+1765 1161 moveto
+<43656369>
+show
+1852 1161 moveto
+<6E65>
+show
+1902 1161 moveto
+<6E6F7573>
+show
+1993 1161 moveto
+<73656D626C65>
+show
+2123 1161 moveto
+<706173>
+show
+279 1208 moveto
+<74726F70>
+show
+360 1208 moveto
+<67EA6E616E74>
+show
+485 1208 moveto
+<6475>
+show
+541 1208 moveto
+<66616974>
+show
+611 1208 moveto
+<6475>
+show
+667 1208 moveto
+<6E6F6D627265>
+show
+808 1208 moveto
+<6C696D6974E9>
+show
+920 1208 moveto
+<6465>
+show
+973 1208 moveto
+<6D6F64756C6573>
+show
+1129 1208 moveto
+<283C7E3130292E>
+show
+1269 1208 moveto
+<4365>
+show
+1330 1208 moveto
+<73797374E86D65>
+show
+1479 1208 moveto
+<7072E973656E7465>
+show
+1633 1208 moveto
+<656E>
+show
+1686 1208 moveto
+<636F6E747265706172746965>
+show
+1900 1208 moveto
+<6C6573>
+show
+1960 1208 moveto
+<6176616E7461676573>
+show
+2139 1208 moveto
+<6465>
+show
+279 1255 moveto
+<706F75766F697220696E7374616C6C65722065742064E973696E7374616C6C657220666163696C
+656D656E7420756E206D6F64756C65206574206427E9766974657220746F757420636F6E666C6974
+206465206E6F6D2E>
+show
+1175 2982 moveto
+/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
+<3133>
+show
+221 2845 1959 1 rectfill
+221 2933 1959 1 rectfill
+showpage
+grestore grestore
+%%PageTrailer
+
+%%Page: 13 13
+%%PageBoundingBox: 18 18 594 774
+%%BeginSetup
+%
+%%EndSetup
+%%BeginPageSetup
+%
+gsave
+[0.24 0 0 -0.24 18 774] concat
+gsave
+%%EndPageSetup
+%!PS-AdobeFont-1.0-2.0
+%%Creator: SunTypeTools-TT 1.0 gelf
+%%Title: OpenSymbolHSet1
+%%CreationDate:  
+%%Pages: 0
+%%EndComments
+%%BeginResource: font OpenSymbolHSet1
+% Original font name: OpenSymbol
+30 dict begin
+/PaintType 0 def
+/FontType 3 def
+/StrokeWidth 0 def
+/FontName /OpenSymbolHSet1 def
+/XUID [103 0 0 16#8D049593 1 16#37A9EF96 16#52678846] def
+/FontMatrix [.001 0 0 .001 0 0] def
+/FontBBox [-179 -313 1083 917] def
+/Encoding 256 array def
+    0 1 255 {Encoding exch /.notdef put} for
+    Encoding 149 /glyph0 put
+/CharProcs 2 dict def
+  CharProcs begin
+    /.notdef {} def
+    /glyph0 {
+       356 0 36 223 297 483 setcachedevice
+       169 223 moveto
+       134 223 103 236 76 261 curveto
+       50 286 36 317 36 353 curveto
+       36 389 49 420 76 445 curveto
+       102 470 133 483 169 483 curveto
+       204 483 235 471 260 445 curveto
+       285 420 297 389 297 353 curveto
+       297 318 285 287 260 261 curveto
+       236 236 206 223 169 223 curveto
+       closepath
+       fill
+    } bind def
+  end
+/BuildGlyph {
+  exch /CharProcs get exch
+  2 copy known not
+    {pop /.notdef} if
+  get exec
+} bind def
+/BuildChar {
+  1 index /Encoding get exch get
+  1 index /BuildGlyph get exec
+} bind def
+currentdict end
+/OpenSymbolHSet1 exch definefont pop
+%%EndResource
+/Helvetica-BoldOblique-iso1252 /Helvetica-BoldOblique ISO1252Encoding psp_definefont
+/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
+/Times-Italic-iso1252 /Times-Italic ISO1252Encoding psp_definefont
+220 318 moveto
+0 0 0 setrgbcolor
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<95>
+show
+279 318 moveto
+/Helvetica-BoldOblique-iso1252  findfont 50 -50 matrix scale makefont setfont
+<436F6E636C7573696F6E>
+show
+220 428 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<4E6F7573>
+show
+323 428 moveto
+<736F6D6D6573>
+show
+474 428 moveto
+<61637475656C6C656D656E74>
+show
+703 428 moveto
+<656E>
+show
+756 428 moveto
+<747261696E>
+show
+848 428 moveto
+<6465>
+show
+901 428 moveto
+<72E9616C69736572>
+show
+1039 428 moveto
+<756E65>
+show
+1114 428 moveto
+<E974756465>
+show
+1218 428 moveto
+<6465>
+show
+1273 428 moveto
+<666169736162696C6974E9>
+show
+1452 428 moveto
+<72656C6174697665>
+show
+1592 428 moveto
+<E0>
+show
+1624 428 moveto
+<6365747465>
+show
+1718 428 moveto
+<6F7267616E69736174696F6E>
+show
+1939 428 moveto
+<737572>
+show
+2005 428 moveto
+<6C61>
+show
+2049 428 moveto
+<62617365>
+show
+2138 428 moveto
+<6465>
+show
+220 475 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<53616C6F6D655F50726F312E30>
+show
+480 475 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2E>
+show
+502 475 moveto
+<4E6F7573>
+show
+601 475 moveto
+<61766F6E73>
+show
+710 475 moveto
+<72E975737369>
+show
+820 475 moveto
+<E0>
+show
+849 475 moveto
+<69736F6C6572>
+show
+954 475 moveto
+<6C65>
+show
+995 475 moveto
+<6D6F64756C65>
+show
+1132 475 moveto
+<4B45524E454C2C>
+show
+1320 475 moveto
+<63276573742DE02D64697265>
+show
+1515 475 moveto
+<E0>
+show
+1545 475 moveto
+<636F6E666967757265722C>
+show
+1742 475 moveto
+<636F6D70696C65722C>
+show
+1912 475 moveto
+<696E7374616C6C6572>
+show
+2059 475 moveto
+<6574>
+show
+2101 475 moveto
+<6661697265>
+show
+220 522 moveto
+<666F6E6374696F6E6E6572>
+show
+426 522 moveto
+<636F7272656374656D656E74>
+show
+656 522 moveto
+<6C65>
+show
+699 522 moveto
+<6D6F64756C65>
+show
+837 522 moveto
+<4B45524E454C>
+show
+1015 522 moveto
+<7365756C2E>
+show
+1104 522 moveto
+<4E6F7573>
+show
+1205 522 moveto
+<736F6D6D65>
+show
+1338 522 moveto
+<61637475656C6C656D656E74>
+show
+1565 522 moveto
+<64616E73>
+show
+1654 522 moveto
+<6C61>
+show
+1696 522 moveto
+<7365636F6E6465>
+show
+1844 522 moveto
+<7068617365>
+show
+1951 522 moveto
+<6465>
+show
+2003 522 moveto
+<6C27E974756465>
+show
+2125 522 moveto
+<717569>
+show
+220 569 moveto
+<636F6E7369737465>
+show
+368 569 moveto
+<E0>
+show
+399 569 moveto
+<6661697265>
+show
+489 569 moveto
+<6C65>
+show
+532 569 moveto
+<6DEA6D65>
+show
+648 569 moveto
+<7472617661696C>
+show
+768 569 moveto
+<706F7572>
+show
+857 569 moveto
+<6C65>
+show
+901 569 moveto
+<6D6F64756C65>
+show
+1040 569 moveto
+<4D45442C>
+show
+1156 569 moveto
+<6166696E>
+show
+1234 569 moveto
+<6465>
+show
+1287 569 moveto
+<6661697265>
+show
+1376 569 moveto
+<666F6E6374696F6E6E6572>
+show
+1582 569 moveto
+<656E73656D626C65>
+show
+1754 569 moveto
+<6C6573>
+show
+1814 569 moveto
+<6D6F64756C6573>
+show
+1968 569 moveto
+<4B45524E454C>
+show
+2148 569 moveto
+<6574>
+show
+220 616 moveto
+<4D45442E20556E652070726F636861696E65206D69736520E0206A6F757220646520636520646F
+63756D656E74207072E973656E74657261206C65732072E973756C74617473206F6274656E75732E>
+show
+220 663 moveto
+<556E65>
+show
+305 663 moveto
+<666F6973>
+show
+383 663 moveto
+<6C61>
+show
+429 663 moveto
+<67657374696F6E>
+show
+566 663 moveto
+<6465>
+show
+621 663 moveto
+<636F6E66696775726174696F6E>
+show
+863 663 moveto
+<6D697365>
+show
+958 663 moveto
+<656E>
+show
+1013 663 moveto
+<706C6163652C>
+show
+1128 663 moveto
+<6C6573>
+show
+1190 663 moveto
+<64696666E972656E746573>
+show
+1385 663 moveto
+<6261736573>
+show
+1491 663 moveto
+<435653>
+show
+1589 663 moveto
+<7365726F6E74>
+show
+1707 663 moveto
+<616C696D656E74E96573>
+show
+1902 663 moveto
+<61766563>
+show
+1994 663 moveto
+<6C61>
+show
+2040 663 moveto
+<6465726E69E87265>
+show
+220 710 moveto
+<76657273696F6E20646520>
+show
+404 710 moveto
+/Times-Italic-iso1252  findfont 42 -42 matrix scale makefont setfont
+<53616C6F6D655F50726F>
+show
+611 710 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<2E>
+show
+1175 2982 moveto
+/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
+<3134>
+show
+221 2845 1959 1 rectfill
+221 2933 1959 1 rectfill
+showpage
+grestore grestore
+%%PageTrailer
+
+%%Page: 14 14
+%%PageBoundingBox: 18 18 594 774
+%%BeginSetup
+%
+%%EndSetup
+%%BeginPageSetup
+%
+gsave
+[0.24 0 0 -0.24 18 774] concat
+gsave
+%%EndPageSetup
+%!PS-AdobeFont-1.0-2.0
+%%Creator: SunTypeTools-TT 1.0 gelf
+%%Title: OpenSymbolHSet1
+%%CreationDate:  
+%%Pages: 0
+%%EndComments
+%%BeginResource: font OpenSymbolHSet1
+% Original font name: OpenSymbol
+30 dict begin
+/PaintType 0 def
+/FontType 3 def
+/StrokeWidth 0 def
+/FontName /OpenSymbolHSet1 def
+/XUID [103 0 0 16#8D049593 1 16#37A9EF96 16#52678846] def
+/FontMatrix [.001 0 0 .001 0 0] def
+/FontBBox [-179 -313 1083 917] def
+/Encoding 256 array def
+    0 1 255 {Encoding exch /.notdef put} for
+    Encoding 149 /glyph0 put
+/CharProcs 2 dict def
+  CharProcs begin
+    /.notdef {} def
+    /glyph0 {
+       356 0 36 223 297 483 setcachedevice
+       169 223 moveto
+       134 223 103 236 76 261 curveto
+       50 286 36 317 36 353 curveto
+       36 389 49 420 76 445 curveto
+       102 470 133 483 169 483 curveto
+       204 483 235 471 260 445 curveto
+       285 420 297 389 297 353 curveto
+       297 318 285 287 260 261 curveto
+       236 236 206 223 169 223 curveto
+       closepath
+       fill
+    } bind def
+  end
+/BuildGlyph {
+  exch /CharProcs get exch
+  2 copy known not
+    {pop /.notdef} if
+  get exec
+} bind def
+/BuildChar {
+  1 index /Encoding get exch get
+  1 index /BuildGlyph get exec
+} bind def
+currentdict end
+/OpenSymbolHSet1 exch definefont pop
+%%EndResource
+/Helvetica-BoldOblique-iso1252 /Helvetica-BoldOblique ISO1252Encoding psp_definefont
+/Times-Roman-iso1252 /Times-Roman ISO1252Encoding psp_definefont
+220 318 moveto
+0 0 0 setrgbcolor
+/OpenSymbolHSet1 findfont 38 -38 matrix scale makefont setfont
+<95>
+show
+279 318 moveto
+/Helvetica-BoldOblique-iso1252  findfont 50 -50 matrix scale makefont setfont
+<52E966E972656E636573>
+show
+220 475 moveto
+/Times-Roman-iso1252  findfont 42 -42 matrix scale makefont setfont
+<5B315D2053414C4F4D45204F7267616E69736174696F6E2065742072E8676C6573206465207072
+6F64756374696F6E202C20502E20476F6C6462726F6E6E2C20502E20526173636C65732C20592E20
+46726963617564206475203133206A75696E20323030312E>
+show
+1175 2982 moveto
+/Times-Roman-iso1252  findfont 50 -50 matrix scale makefont setfont
+<3135>
+show
+221 2845 1959 1 rectfill
+221 2933 1959 1 rectfill
+showpage
+grestore grestore
+%%PageTrailer
+
+%%Trailer
+%%Pages: 15
+%%EOF
diff --git a/doc/OrganisationProduction_PAL.sxw b/doc/OrganisationProduction_PAL.sxw
new file mode 100644 (file)
index 0000000..5f2d813
Binary files /dev/null and b/doc/OrganisationProduction_PAL.sxw differ
diff --git a/doc/Utilitaires_SALOME.doc b/doc/Utilitaires_SALOME.doc
new file mode 100644 (file)
index 0000000..164487a
Binary files /dev/null and b/doc/Utilitaires_SALOME.doc differ
diff --git a/doc/Utilitaires_SALOME.pdf b/doc/Utilitaires_SALOME.pdf
new file mode 100644 (file)
index 0000000..4234593
Binary files /dev/null and b/doc/Utilitaires_SALOME.pdf differ
diff --git a/doc/Utilitaires_SALOME.ps b/doc/Utilitaires_SALOME.ps
new file mode 100644 (file)
index 0000000..24d0aa5
--- /dev/null
@@ -0,0 +1,765 @@
+%!PS-Adobe-3.0
+%%Title: Microsoft Word - Utilitaires_SALOME.doc
+%%Creator: Windows NT 4.0
+%%CreationDate: 9:3 9/19/2001
+%%Pages: (atend)
+%%BoundingBox: 13 13 582 829
+%%LanguageLevel: 2
+%%DocumentNeededFonts: (atend)
+%%DocumentSuppliedFonts: (atend)
+%%EndComments
+%%BeginProlog
+
+%%BeginResource: procset NTPSOct95
+/NTPSOct95 100 dict dup begin/bd{bind def}bind def/ld{load def}bd/ed{exch def}
+bd/a{currentpoint}bd/c/curveto ld/d/dup ld/e/eofill ld/f/fill ld/tr/translate
+ld/gr/grestore ld/gs/gsave ld/j/setlinejoin ld/L/lineto ld/M/moveto ld/n
+/newpath ld/cp/closepath ld/rm/rmoveto ld/sl/setlinewidth ld/sd/setdash ld/g
+/setgray ld/r/setrgbcolor ld/s/stroke ld/t/show ld/aw/awidthshow ld/im
+/imagemask ld/MS{moveto show}bd/SF{findfont exch scalefont setfont}bd/SM{cmtx
+setmatrix}bd/MF{findfont exch makefont setfont}bd/CM{/cmtx matrix currentmatrix
+def}bd/B{M exch dup 0 rlt exch 0 exch rlt neg 0 rlt}bd/CB{B cp eoclip}bd/EA{1
+index 0/G0 put 4 string 1 1 4 -1 roll{3 copy neg exch cvs dup 0 71 put cvn 3 -1
+roll exch put}for pop}bd/rlt/rlineto ld/L2?/languagelevel where{pop
+languagelevel 2 ge}{false}ifelse def end def 
+%%EndResource
+%%EndProlog
+%%BeginSetup
+[{0
+/languagelevel where{pop languagelevel 2 ge}{false}ifelse
+{1 dict dup/JobTimeout 4 -1 roll put setuserparams}
+{statusdict/setjobtimeout get exec}ifelse
+}stopped cleartomark
+[{120
+/languagelevel where{pop languagelevel 2 ge}{false}ifelse
+{1 dict dup/WaitTimeout 4 -1 roll put setuserparams}
+{statusdict/waittimeout 3 -1 roll put}ifelse
+}stopped cleartomark
+/#copies 1 def
+[{
+%%BeginFeature: *HPPaperPolicy PromptUser
+
+   <</DeferredMediaSelection true>> setpagedevice
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *HPHalftone PrinterDefault
+
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *HPCollate False
+<</Collate false>> setpagedevice
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *Smoothing True
+
+  << /PostRenderingEnhance true /PostRenderingEnhanceDetails << /REValue 2 /Type 8 >>
+  >> setpagedevice
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *PageSize A4
+
+  <</PageSize [595 842] /ImagingBBox null>> setpagedevice
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *Duplex None
+
+  <</Duplex false>> setpagedevice
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *HPwmTextAngle Deg45
+userdict /HPwmAngle 45 put
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *HPwmText None
+
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *HPwmFont HelveticaB
+
+  /Helvetica-Bold findfont dup length dict begin
+    {1 index /FID ne {def} {pop pop} ifelse} forall
+    /Encoding ISOLatin1Encoding def currentdict 
+  end
+  /HPwmFont exch definefont pop
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *HPwmLocation True
+userdict /HPwmLocation true put
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *HPwmTextStyle Medium
+userdict /HPwmStyle .48 put
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *HPwmFontSize pt48
+userdict /HPwmSize 48 put
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *HPNup OneUp
+
+% Copyright (c) Hewlett-Packard Co 1997
+  userdict begin
+  true setglobal /HPwm 5 dict dup begin /HPwmOn true def /HPwmOdd true def end def false setglobal
+
+  userdict /HPwmAngle known not {/HPwmAngle 45 def} if
+  userdict /HPwmSize known not {/HPwmSize 48 def} if
+  userdict /HPwmLocation known not {/HPwmLocation true def} if
+  userdict /HPwmStyle known not {/HPwmStyle .48 def} if
+  userdict /HPwmDuplex known not {/HPwmDuplex 0 def} if
+
+  /HPwmEOP {HPwmDuplex 0 eq {true}{HPwmDuplex 1 eq HPwmOdd eq dup not {erasepage}if
+    true setglobal /HPwmOdd HPwmOdd not def false setglobal}ifelse} bind def
+  end
+
+  <<
+  /EndPage {userdict begin
+  userdict /HPwmText known HPwm /HPwmOn get and
+    {initmatrix
+     0 setgray 1 setlinewidth true setstrokeadjust 0 setlinejoin 0 setlinecap [] 0 setdash
+     currentpagedevice /PageSize get aload pop 2 div exch 2 div exch translate
+     HPwmAngle rotate /HPwmFont userdict /HPppScale known {HPwmSize HPppScale mul}{HPwmSize}ifelse selectfont
+     HPwmText stringwidth 2 div neg exch 2 div neg exch
+       userdict /HPppScale known {HPwmSize HPppScale mul}{HPwmSize}ifelse .25 mul sub moveto
+     HPwmText false charpath userdict /HPwmStyle1 known
+       {gsave 1 setgray HPwmStyle1 HPwmStyle add setlinewidth stroke grestore} if
+     0 setgray HPwmStyle setlinewidth stroke
+     HPwmLocation not {true setglobal HPwm /HPwmOn false put false setglobal} if
+    } if
+    2 eq {pop false}{pop HPwm begin HPwmEOP end} ifelse
+    end } bind
+  >> setpagedevice
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *HPScalePatterns Scale
+/GDIBWPatternDict 18 dict def
+/dtransform {GDIBWPatternDict /Width known {currentpagedevice /HWResolution get 0 get
+150 div mul exch currentpagedevice /HWResolution get 0 get 150 div mul exch dtransform}{dtransform}ifelse} bind def
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *OptionTrays 3Trays
+
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *Option3 True
+
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *Option4 False
+
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *Option5 False
+
+%%EndFeature
+} stopped cleartomark
+[{
+%%BeginFeature: *VMOption 36MB
+
+%%EndFeature
+} stopped cleartomark
+%%EndSetup
+NTPSOct95 begin
+%%Page: 1 1
+NTPSOct95 /PageSV save put
+13 829.441 translate 72 600 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+%%IncludeFont: Times-Roman
+[183 0 0 -183 0 0]/Times-Roman MF
+(U)1606 656 MS (t)1738 656 MS (i)1789 656 MS (l)1840 656 MS (i)1891 656 MS (t)1942 656 MS (a)1993 656 MS (i)2074 656 MS (r)2125 656 MS (e)2186 656 MS (s)2267 656 MS ( )2338 656 MS (S)2384 656 MS (A)2486 656 MS (L)2618 656 MS (O)2730 656 MS
+(M)2862 656 MS (E)3025 656 MS
+n
+1530 8 1606 676 B
+f
+( )3137 656 MS
+[100 0 0 -100 0 0]/Times-Roman MF
+( )482 788 MS
+( )482 903 MS
+NTPSOct95 /FontSV save put
+%%BeginFont: Wingdings0133113
+%!FontType1-1.0: Wingdings0133113
+% Copyright (c) 1993 Microsoft Corporation.
+11 dict begin
+/FontInfo 8 dict dup begin
+/FullName (Wingdings_Regular:_MS:_1995) def
+/FamilyName (Wingdings) def
+/Weight (Light) def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -200 def
+/UnderlineThickness 100 def
+end def
+/FontName /Wingdings0133113 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [1 2048 div 0 0 1 2048 div 0 0] def
+/FontBBox{0 -432 2773 1832}def
+/Encoding 256 array 254 EA
+255 1 255 {1 index exch /.notdef put} for
+def currentdict end
+currentfile eexec
+9E67EDC6F3DDB54288D663369F8878B525F6C387D4C0BF9F428EB9407E51E952128195F343ED526D7EF485FEA7E5D287ED91A53373FD7FB6F77C800240920C3915217EB1FFBBD9A01126C5DE89A01A5A5A7C3B1B8F84C73E205DDD6B095B6E885FECC5DB82DAC5C2A208C547C904809D986B5CFD61018D13F762FB208AC07A7BE8BBA5C8937B7CCEDCDDEE63FE4F0C5A38F8CE79BCFF22B0238E63ACB3E274F3440F3DB6B2A2962829B7C24596C94F8A15FCE5891A8CBFEF0193FA37E805DF15716B43A04388ABBFC43F716528867D8C479524DE1E58EC93444E1A51EA17DFD8E5A06387CA763141BB50D6291576AC5892A1EC26065096EA78EC35265C417091C3A03958937014E2051CD1392E12342DEE8D9F57999F32260CBE079B422AFCACB402AFACACD2F43E692EFF6AEC6CCE413993882EC9F1B80384B90D254B60D82AA5C539835DED9FBB13FAEE330523C298EF700AFB8C003613F685F869F6C6F78415B2B0ECAA347BB358558C811171701A64FED28456AD947D4AA1D5CCDA72
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+[133 0 0 -133 0 0]/Wingdings0133113 MF
+(\275)632 1151 MS
+%%BeginFont: Wingdings0133113
+currentfile eexec
+9E67EDC6B8425AFF36BF4514D54B43BD3052C5864D8FE9488C0032ACA58315791A848ACA4E893C7524EFCAFAF1043561D52C1E47FEA5D8E71ED82F7390F4D46E5C54C6C0
+BBE982CB5E67D60CB8E221B3F095AFF56343FE0F765112B93D94BB94A994E894EB6472724960F9E0BEAB21A47E2C6BE1CFDC07749909D0795F86F6DA4D983D69B00D1D47D48DA037
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+( )738 1151 MS
+%%IncludeFont: Helvetica-Bold
+[133 0 0 -133 0 0]/Helvetica-Bold MF
+(s)782 1151 MS (h)856 1151 MS (o)937 1151 MS (w)1018 1151 MS (N)1125 1151 MS (S)1221 1151 MS
+( )1310 1151 MS
+[100 0 0 -100 0 0]/Times-Roman MF
+( )482 1297 MS
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+LATENC /_Times-Roman /Times-Roman reencode
+[100 0 0 -100 0 0]/_Times-Roman MF
+(C)482 1412 MS (e)549 1412 MS (t)593 1412 MS ( )621 1412 MS (u)646 1412 MS (t)696 1412 MS (i)724 1412 MS (l)752 1412 MS (i)780 1412 MS (t)808 1412 MS (a)836 1412 MS (i)880 1412 MS (r)908 1412 MS (e)941 1412 MS ( )985 1412 MS (p)1010 1412 MS
+(e)1060 1412 MS (r)1104 1412 MS (m)1137 1412 MS (e)1215 1412 MS (t)1259 1412 MS ( )1287 1412 MS (d)1312 1412 MS (\222)1362 1412 MS (e)1395 1412 MS (x)1439 1412 MS (a)1490 1412 MS (m)1534 1412 MS (i)1612 1412 MS (n)1640 1412 MS (e)1690 1412 MS (r)1734 1412 MS
+( )1767 1412 MS (l)1792 1412 MS (e)1820 1412 MS ( )1864 1412 MS (c)1889 1412 MS (o)1933 1412 MS (n)1983 1412 MS (t)2033 1412 MS (e)2061 1412 MS (n)2105 1412 MS (u)2155 1412 MS ( )2205 1412 MS (d)2230 1412 MS (u)2280 1412 MS ( )2330 1412 MS (N)2355 1412 MS
+(a)2427 1412 MS (m)2471 1412 MS (i)2549 1412 MS (n)2577 1412 MS (g)2627 1412 MS ( )2676 1412 MS (S)2701 1412 MS (e)2757 1412 MS (r)2801 1412 MS (v)2834 1412 MS (i)2884 1412 MS (c)2912 1412 MS (e)2956 1412 MS (.)3000 1412 MS
+( )3025 1412 MS
+(L)482 1527 MS (a)541 1527 MS (n)585 1527 MS (c)635 1527 MS (e)679 1527 MS (r)723 1527 MS ( )756 1527 MS (l)781 1527 MS (\222)809 1527 MS (u)842 1527 MS (t)892 1527 MS (i)920 1527 MS (l)948 1527 MS (i)976 1527 MS (t)1004 1527 MS (a)1032 1527 MS
+(i)1076 1527 MS (r)1104 1527 MS (e)1137 1527 MS
+( )1181 1527 MS
+(.)1206 1527 MS
+( )1231 1527 MS
+(L)482 1642 MS (\222)541 1642 MS (e)574 1642 MS (x)618 1642 MS (e)669 1642 MS (m)713 1642 MS (p)791 1642 MS (l)841 1642 MS (e)869 1642 MS ( )913 1642 MS (s)948 1642 MS (u)987 1642 MS (i)1037 1642 MS (v)1065 1642 MS (a)1115 1642 MS (n)1159 1642 MS
+(t)1209 1642 MS ( )1237 1642 MS (d)1271 1642 MS (o)1321 1642 MS (n)1371 1642 MS (n)1421 1642 MS (e)1471 1642 MS ( )1515 1642 MS (l)1549 1642 MS (e)1577 1642 MS ( )1621 1642 MS (r)1655 1642 MS (\351)1688 1642 MS (s)1732 1642 MS (u)1771 1642 MS (l)1821 1642 MS
+(t)1849 1642 MS (a)1877 1642 MS (t)1921 1642 MS ( )1949 1642 MS (d)1983 1642 MS (e)2033 1642 MS ( )2077 1642 MS (l)2111 1642 MS (a)2139 1642 MS ( )2183 1642 MS (c)2217 1642 MS (o)2261 1642 MS (m)2311 1642 MS (m)2389 1642 MS (a)2467 1642 MS (n)2511 1642 MS
+(d)2561 1642 MS (e)2611 1642 MS ( )2655 1642 MS (s)2689 1642 MS (h)2728 1642 MS (o)2778 1642 MS (w)2828 1642 MS (N)2900 1642 MS (S)2972 1642 MS ( )3028 1642 MS (u)3062 1642 MS (n)3112 1642 MS (e)3162 1642 MS ( )3206 1642 MS (f)3240 1642 MS (o)3273 1642 MS
+(i)3323 1642 MS (s)3351 1642 MS ( )3390 1642 MS (l)3424 1642 MS (a)3452 1642 MS ( )3496 1642 MS (s)3530 1642 MS (e)3569 1642 MS (s)3613 1642 MS (s)3652 1642 MS (i)3691 1642 MS (o)3719 1642 MS (n)3769 1642 MS ( )3819 1642 MS (S)3853 1642 MS (A)3909 1642 MS
+(L)3981 1642 MS (O)4040 1642 MS (M)4112 1642 MS (E)4201 1642 MS ( )4262 1642 MS
+(l)482 1756 MS (a)510 1756 MS (n)554 1756 MS (c)604 1756 MS (\351)648 1756 MS (e)692 1756 MS ( )736 1756 MS (\()761 1756 MS (r)794 1756 MS (u)827 1756 MS (n)877 1756 MS (S)927 1756 MS (e)983 1756 MS (s)1027 1756 MS (s)1066 1756 MS (i)1105 1756 MS
+(o)1133 1756 MS (n)1183 1756 MS (,)1233 1756 MS ( )1258 1756 MS (r)1283 1756 MS (u)1316 1756 MS (n)1366 1756 MS (L)1416 1756 MS (o)1475 1756 MS (a)1525 1756 MS (d)1569 1756 MS (e)1619 1756 MS (r)1663 1756 MS (\))1696 1756 MS ( )1729 1756 MS (e)1754 1756 MS
+(t)1798 1756 MS ( )1826 1756 MS (l)1851 1756 MS (\222)1879 1756 MS (\351)1912 1756 MS (t)1956 1756 MS (u)1984 1756 MS (d)2034 1756 MS (e)2084 1756 MS ( )2128 1756 MS (S)2153 1756 MS (t)2209 1756 MS (u)2237 1756 MS (d)2287 1756 MS (y)2337 1756 MS (1)2384 1756 MS
+( )2434 1756 MS (c)2459 1756 MS (r)2503 1756 MS (\351)2536 1756 MS (\351)2580 1756 MS (e)2624 1756 MS ( )2668 1756 MS (:)2693 1756 MS
+( )2721 1756 MS
+%%IncludeFont: Helvetica
+[83 0 0 -83 0 0]/Helvetica MF
+(s)482 1858 MS (h)524 1858 MS (>)570 1858 MS ( )618 1858 MS (c)641 1858 MS (d)683 1858 MS ( )729 1858 MS (S)752 1858 MS (A)807 1858 MS (L)862 1858 MS (O)908 1858 MS (M)973 1858 MS (E)1042 1858 MS (_)1097 1858 MS (B)1143 1858 MS (U)1198 1858 MS
+(I)1258 1858 MS (L)1281 1858 MS (D)1327 1858 MS (/)1387 1858 MS (b)1410 1858 MS (i)1456 1858 MS (n)1474 1858 MS
+( )1520 1858 MS
+( )482 1954 MS
+(s)482 2050 MS (h)524 2050 MS (>)570 2050 MS ( )618 2050 MS (s)641 2050 MS (h)683 2050 MS (o)729 2050 MS (w)775 2050 MS (N)834 2050 MS (S)894 2050 MS
+( )949 2050 MS
+(s)482 2146 MS (h)524 2146 MS (>)570 2146 MS ( )618 2146 MS
+( )641 2146 MS
+(C)777 2146 MS (o)837 2146 MS (n)883 2146 MS (t)929 2146 MS (a)952 2146 MS (i)998 2146 MS (n)1016 2146 MS (e)1062 2146 MS (r)1108 2146 MS (s)1136 2146 MS ( )1178 2146 MS (\()1201 2146 MS (d)1229 2146 MS (i)1275 2146 MS (r)1293 2146 MS (\))1321 2146 MS
+( )1349 2146 MS
+(s)482 2242 MS (h)524 2242 MS (>)570 2242 MS ( )618 2242 MS ( )641 2242 MS
+( )664 2242 MS
+( )777 2242 MS
+(F)1072 2242 MS (a)1123 2242 MS (c)1169 2242 MS (t)1211 2242 MS (o)1234 2242 MS (r)1280 2242 MS (y)1308 2242 MS (S)1347 2242 MS (e)1402 2242 MS (r)1448 2242 MS (v)1476 2242 MS (e)1517 2242 MS (r)1563 2242 MS (.)1591 2242 MS (o)1614 2242 MS (b)1660 2242 MS
+(j)1706 2242 MS (e)1725 2242 MS (c)1771 2242 MS (t)1813 2242 MS
+( )1836 2242 MS
+(s)482 2338 MS (h)524 2338 MS (>)570 2338 MS
+( )618 2338 MS
+(K)777 2338 MS (e)832 2338 MS (r)878 2338 MS (n)906 2338 MS (e)952 2338 MS (l)998 2338 MS ( )1016 2338 MS (\()1039 2338 MS (d)1067 2338 MS (i)1113 2338 MS (r)1131 2338 MS (\))1159 2338 MS
+( )1187 2338 MS
+(s)482 2433 MS (h)524 2433 MS (>)570 2433 MS
+( )618 2433 MS
+( )777 2433 MS ( )800 2433 MS ( )823 2433 MS
+( )846 2433 MS
+(M)1072 2433 MS (o)1141 2433 MS (d)1187 2433 MS (u)1233 2433 MS (l)1279 2433 MS (C)1297 2433 MS (a)1357 2433 MS (t)1403 2433 MS (a)1426 2433 MS (l)1472 2433 MS (o)1490 2433 MS (g)1536 2433 MS (.)1582 2433 MS (o)1605 2433 MS (b)1651 2433 MS (j)1697 2433 MS
+(e)1716 2433 MS (c)1762 2433 MS (t)1804 2433 MS
+( )1827 2433 MS
+(s)482 2529 MS (h)524 2529 MS (>)570 2529 MS ( )618 2529 MS ( )641 2529 MS ( )664 2529 MS
+( )687 2529 MS
+( )777 2529 MS
+(S)1072 2529 MS (e)1127 2529 MS (s)1173 2529 MS (s)1215 2529 MS (i)1257 2529 MS (o)1275 2529 MS (n)1321 2529 MS (.)1367 2529 MS (o)1390 2529 MS (b)1436 2529 MS (j)1482 2529 MS (e)1501 2529 MS (c)1547 2529 MS (t)1589 2529 MS
+( )1612 2529 MS
+(s)482 2625 MS (h)524 2625 MS (>)570 2625 MS
+( )618 2625 MS
+(S)777 2625 MS (t)832 2625 MS (u)855 2625 MS (d)901 2625 MS (y)947 2625 MS ( )986 2625 MS (\()1009 2625 MS (d)1037 2625 MS (i)1083 2625 MS (r)1101 2625 MS (\))1129 2625 MS
+( )1157 2625 MS
+(s)482 2721 MS (h)524 2721 MS (>)570 2721 MS
+( )618 2721 MS
+( )777 2721 MS ( )800 2721 MS ( )823 2721 MS
+( )846 2721 MS
+(S)1072 2721 MS (t)1127 2721 MS (u)1150 2721 MS (d)1196 2721 MS (y)1242 2721 MS (1)1281 2721 MS (.)1327 2721 MS (o)1350 2721 MS (b)1396 2721 MS (j)1442 2721 MS (e)1461 2721 MS (c)1507 2721 MS (t)1549 2721 MS
+( )1572 2721 MS
+(s)482 2817 MS (h)524 2817 MS (>)570 2817 MS ( )618 2817 MS ( )641 2817 MS ( )664 2817 MS
+( )687 2817 MS
+(m)777 2817 MS (y)848 2817 MS (S)887 2817 MS (t)942 2817 MS (u)965 2817 MS (d)1011 2817 MS (y)1057 2817 MS (M)1096 2817 MS (a)1165 2817 MS (n)1211 2817 MS (a)1257 2817 MS (g)1303 2817 MS (e)1349 2817 MS (r)1395 2817 MS (.)1423 2817 MS (o)1446 2817 MS
+(b)1492 2817 MS (j)1538 2817 MS (e)1557 2817 MS (c)1603 2817 MS (t)1645 2817 MS
+( )1668 2817 MS
+( )482 2913 MS
+( )482 3008 MS
+[100 0 0 -100 0 0]/_Times-Roman MF
+(L)482 3117 MS (\222)541 3117 MS (i)574 3117 MS (n)602 3117 MS (f)652 3117 MS (o)685 3117 MS (r)735 3117 MS (m)768 3117 MS (a)846 3117 MS (t)890 3117 MS (i)918 3117 MS (o)946 3117 MS (n)996 3117 MS ( )1046 3117 MS (\253)1071 3117 MS
+( )1117 3117 MS
+(\()1142 3117 MS (d)1175 3117 MS (i)1225 3117 MS (r)1253 3117 MS (\))1286 3117 MS
+( )1319 3117 MS
+(\273)1344 3117 MS ( )1390 3117 MS (i)1415 3117 MS (n)1443 3117 MS (d)1493 3117 MS (i)1543 3117 MS (q)1571 3117 MS (u)1621 3117 MS (e)1671 3117 MS ( )1715 3117 MS (q)1740 3117 MS
+(u)1790 3117 MS (\222)1840 3117 MS (i)1873 3117 MS (l)1901 3117 MS ( )1929 3117 MS (s)1954 3117 MS (\222)1993 3117 MS (a)2026 3117 MS (g)2070 3117 MS (i)2119 3117 MS (t)2147 3117 MS ( )2175 3117 MS (d)2200 3117 MS (\222)2250 3117 MS (u)2283 3117 MS (n)2333 3117 MS
+( )2383 3117 MS (r)2408 3117 MS (\351)2441 3117 MS (p)2485 3117 MS (e)2535 3117 MS (r)2579 3117 MS (t)2612 3117 MS (o)2640 3117 MS (i)2690 3117 MS (r)2718 3117 MS (e)2751 3117 MS ( )2795 3117 MS (d)2820 3117 MS (u)2870 3117 MS ( )2920 3117 MS (n)2945 3117 MS
+(a)2995 3117 MS (m)3039 3117 MS (i)3117 3117 MS (n)3145 3117 MS (g)3195 3117 MS ( )3244 3117 MS (s)3269 3117 MS (e)3308 3117 MS (r)3352 3117 MS (v)3385 3117 MS (i)3435 3117 MS (c)3463 3117 MS (e)3507 3117 MS (.)3551 3117 MS
+( )3576 3117 MS
+(L)482 3232 MS (\222)541 3232 MS (i)574 3232 MS (n)602 3232 MS (f)652 3232 MS (o)685 3232 MS (r)735 3232 MS (m)768 3232 MS (a)846 3232 MS (t)890 3232 MS (i)918 3232 MS (o)946 3232 MS (n)996 3232 MS ( )1046 3232 MS (\253)1071 3232 MS
+( )1117 3232 MS
+(.)1142 3232 MS (o)1167 3232 MS (b)1217 3232 MS (j)1267 3232 MS (e)1295 3232 MS (c)1339 3232 MS (t)1383 3232 MS
+( )1411 3232 MS
+(\273)1436 3232 MS ( )1482 3232 MS (i)1507 3232 MS (n)1535 3232 MS (d)1585 3232 MS (i)1635 3232 MS (q)1663 3232 MS (u)1713 3232 MS (e)1763 3232 MS ( )1807 3232 MS (q)1832 3232 MS (u)1882 3232 MS (\222)1932 3232 MS (i)1965 3232 MS (l)1993 3232 MS ( )2021 3232 MS
+(s)2046 3232 MS (\222)2085 3232 MS (a)2118 3232 MS (g)2162 3232 MS (i)2211 3232 MS (t)2239 3232 MS ( )2267 3232 MS (d)2292 3232 MS (\222)2342 3232 MS (u)2375 3232 MS (n)2425 3232 MS ( )2475 3232 MS (o)2500 3232 MS (b)2550 3232 MS (j)2600 3232 MS (e)2628 3232 MS
+(t)2672 3232 MS ( )2700 3232 MS (e)2725 3232 MS (n)2769 3232 MS (r)2819 3232 MS (e)2852 3232 MS (g)2896 3232 MS (i)2945 3232 MS (s)2973 3232 MS (t)3012 3232 MS (r)3040 3232 MS (\351)3073 3232 MS ( )3117 3232 MS (d)3142 3232 MS (a)3192 3232 MS (n)3236 3232 MS
+(s)3286 3232 MS ( )3325 3232 MS (l)3350 3232 MS (e)3378 3232 MS ( )3422 3232 MS (n)3447 3232 MS (a)3497 3232 MS (m)3541 3232 MS (i)3619 3232 MS (n)3647 3232 MS (g)3697 3232 MS ( )3746 3232 MS (s)3771 3232 MS (e)3810 3232 MS (r)3854 3232 MS (v)3887 3232 MS
+(i)3937 3232 MS (c)3965 3232 MS (e)4009 3232 MS (.)4053 3232 MS
+( )4078 3232 MS
+(L)482 3347 MS (\222)541 3347 MS (i)574 3347 MS (n)602 3347 MS (d)652 3347 MS (e)702 3347 MS (n)746 3347 MS (t)796 3347 MS (a)824 3347 MS (t)868 3347 MS (i)896 3347 MS (o)924 3347 MS (n)974 3347 MS ( )1024 3347 MS (p)1049 3347 MS (e)1099 3347 MS
+(r)1143 3347 MS (m)1176 3347 MS (e)1254 3347 MS (t)1298 3347 MS ( )1326 3347 MS (d)1351 3347 MS (e)1401 3347 MS ( )1445 3347 MS (d)1470 3347 MS (\351)1520 3347 MS (t)1564 3347 MS (e)1592 3347 MS (r)1636 3347 MS (m)1669 3347 MS (i)1747 3347 MS (n)1775 3347 MS
+(e)1825 3347 MS (r)1869 3347 MS ( )1902 3347 MS (l)1927 3347 MS (\222)1955 3347 MS (a)1988 3347 MS (p)2032 3347 MS (p)2082 3347 MS (a)2132 3347 MS (r)2176 3347 MS (t)2209 3347 MS (e)2237 3347 MS (n)2281 3347 MS (a)2331 3347 MS (n)2375 3347 MS (c)2425 3347 MS
+(e)2469 3347 MS ( )2513 3347 MS (d)2538 3347 MS (e)2588 3347 MS (s)2632 3347 MS ( )2671 3347 MS (o)2696 3347 MS (b)2746 3347 MS (j)2796 3347 MS (e)2824 3347 MS (t)2868 3347 MS (s)2896 3347 MS ( )2935 3347 MS (a)2960 3347 MS (u)3004 3347 MS (x)3054 3347 MS
+( )3105 3347 MS (r)3130 3347 MS (\351)3163 3347 MS (p)3207 3347 MS (e)3257 3347 MS (r)3301 3347 MS (t)3334 3347 MS (o)3362 3347 MS (i)3412 3347 MS (r)3440 3347 MS (e)3473 3347 MS (s)3517 3347 MS (.)3556 3347 MS
+( )3581 3347 MS
+(P)482 3462 MS (a)538 3462 MS (r)582 3462 MS ( )615 3462 MS (e)640 3462 MS (x)684 3462 MS (e)735 3462 MS (m)779 3462 MS (p)857 3462 MS (l)907 3462 MS (e)935 3462 MS (,)979 3462 MS ( )1004 3462 MS (l)1029 3462 MS (\222)1057 3462 MS (o)1090 3462 MS
+(b)1140 3462 MS (j)1190 3462 MS (e)1218 3462 MS (t)1262 3462 MS ( )1290 3462 MS (F)1315 3462 MS (a)1370 3462 MS (c)1414 3462 MS (t)1458 3462 MS (o)1486 3462 MS (r)1536 3462 MS (y)1569 3462 MS (S)1616 3462 MS (e)1672 3462 MS (r)1716 3462 MS (v)1749 3462 MS
+(e)1799 3462 MS (r)1843 3462 MS ( )1876 3462 MS (a)1901 3462 MS (p)1945 3462 MS (p)1995 3462 MS
+(a)2045 3462 MS (r)2089 3462 MS (t)2122 3462 MS (i)2150 3462 MS (e)2178 3462 MS (n)2222 3462 MS (t)2272 3462 MS ( )2300 3462 MS (a)2325 3462 MS (u)2369 3462 MS ( )2419 3462 MS (r)2444 3462 MS (\351)2477 3462 MS (p)2521 3462 MS (e)2571 3462 MS (r)2615 3462 MS
+(t)2648 3462 MS (o)2676 3462 MS (i)2726 3462 MS (r)2754 3462 MS (e)2787 3462 MS ( )2831 3462 MS (/)2856 3462 MS (C)2884 3462 MS (o)2951 3462 MS (n)3001 3462 MS (t)3051 3462 MS (a)3079 3462 MS (i)3123 3462 MS (n)3151 3462 MS (e)3201 3462 MS (r)3245 3462 MS
+(.)3278 3462 MS
+( )3303 3462 MS
+(L)482 3577 MS (\222)541 3577 MS (o)574 3577 MS (b)624 3577 MS (j)674 3577 MS (e)702 3577 MS (t)746 3577 MS ( )774 3577 MS (m)799 3577 MS (y)877 3577 MS (S)924 3577 MS (t)980 3577 MS (u)1008 3577 MS (d)1058 3577 MS (y)1108 3577 MS (M)1155 3577 MS
+(a)1244 3577 MS (n)1288 3577 MS (a)1338 3577 MS (g)1382 3577 MS (e)1431 3577 MS (r)1475 3577 MS ( )1508 3577 MS (a)1533 3577 MS (p)1577 3577 MS (p)1627 3577 MS (a)1677 3577 MS (r)1721 3577 MS (t)1754 3577 MS (i)1782 3577 MS (e)1810 3577 MS (n)1854 3577 MS
+(t)1904 3577 MS ( )1932 3577 MS (a)1957 3577 MS (u)2001 3577 MS ( )2051 3577 MS (r)2076 3577 MS (\351)2109 3577 MS (p)2153 3577 MS (e)2203 3577 MS (r)2247 3577 MS (t)2280 3577 MS (o)2308 3577 MS (i)2358 3577 MS (r)2386 3577 MS (e)2419 3577 MS ( )2463 3577 MS
+(/)2488 3577 MS (.)2516 3577 MS ( )2541 3577 MS ( )2566 3577 MS
+( )2591 3577 MS
+( )482 3692 MS
+[133 0 0 -133 0 0]/Wingdings0133113 MF
+(\275)632 3940 MS
+( )738 3940 MS
+[133 0 0 -133 0 0]/Helvetica-Bold MF
+(i)782 3940 MS (n)819 3940 MS (s)900 3940 MS (e)974 3940 MS (r)1048 3940 MS (t)1100 3940 MS (C)1144 3940 MS (o)1240 3940 MS (m)1321 3940 MS (p)1439 3940 MS (u)1520 3940 MS (t)1601 3940 MS (e)1645 3940 MS (r)1719 3940 MS (R)1771 3940 MS (e)1867 3940 MS
+(s)1941 3940 MS (s)2015 3940 MS (o)2089 3940 MS (u)2170 3940 MS (r)2251 3940 MS (c)2303 3940 MS (e)2377 3940 MS (s)2451 3940 MS (.)2525 3940 MS (s)2562 3940 MS (h)2636 3940 MS
+( )2717 3940 MS
+[100 0 0 -100 0 0]/_Times-Roman MF
+( )482 4085 MS
+(C)482 4200 MS (e)549 4200 MS (t)593 4200 MS ( )621 4200 MS (u)684 4200 MS (t)734 4200 MS (i)762 4200 MS (l)790 4200 MS (i)818 4200 MS (t)846 4200 MS (a)874 4200 MS (i)918 4200 MS (r)946 4200 MS (e)979 4200 MS ( )1023 4200 MS (p)1086 4200 MS
+(e)1136 4200 MS (r)1180 4200 MS (m)1213 4200 MS (e)1291 4200 MS (t)1335 4200 MS ( )1363 4200 MS (d)1426 4200 MS (\222)1476 4200 MS (a)1509 4200 MS (j)1553 4200 MS (o)1581 4200 MS (u)1631 4200 MS (t)1681 4200 MS (e)1709 4200 MS (r)1753 4200 MS ( )1786 4200 MS
+(u)1849 4200 MS (n)1899 4200 MS (e)1949 4200 MS ( )1993 4200 MS (r)2056 4200 MS (e)2089 4200 MS (s)2133 4200 MS (s)2172 4200 MS (o)2211 4200 MS (u)2261 4200 MS (r)2311 4200 MS (c)2344 4200 MS (e)2388 4200 MS ( )2432 4200 MS (m)2495 4200 MS (a)2573 4200 MS
+(c)2617 4200 MS (h)2661 4200 MS (i)2711 4200 MS (n)2739 4200 MS (e)2789 4200 MS ( )2833 4200 MS (a)2896 4200 MS (u)2940 4200 MS ( )2990 4200 MS (c)3053 4200 MS (a)3097 4200 MS (t)3141 4200 MS (a)3169 4200 MS (l)3213 4200 MS (o)3241 4200 MS (g)3291 4200 MS
+(u)3340 4200 MS (e)3390 4200 MS ( )3434 4200 MS (d)3496 4200 MS (e)3546 4200 MS (s)3590 4200 MS ( )3629 4200 MS (r)3691 4200 MS (e)3724 4200 MS (s)3768 4200 MS (s)3807 4200 MS (o)3846 4200 MS (u)3896 4200 MS (r)3946 4200 MS (c)3979 4200 MS (e)4023 4200 MS
+(s)4067 4200 MS ( )4106 4200 MS (d)4168 4200 MS (e)4218 4200 MS ( )4262 4200 MS
+(S)482 4315 MS (A)538 4315 MS (L)610 4315 MS (O)669 4315 MS (M)741 4315 MS (E)830 4315 MS (.)891 4315 MS
+( )916 4315 MS
+(L)482 4430 MS (e)541 4430 MS (s)585 4430 MS ( )624 4430 MS (p)649 4430 MS (r)699 4430 MS (\351)732 4430 MS (a)776 4430 MS (l)820 4430 MS (a)848 4430 MS (b)892 4430 MS (l)942 4430 MS (e)970 4430 MS (s)1014 4430 MS ( )1053 4430 MS (\340)1078 4430 MS
+( )1122 4430 MS (l)1147 4430 MS (\222)1175 4430 MS (u)1208 4430 MS (t)1258 4430 MS (i)1286 4430 MS (l)1314 4430 MS (i)1342 4430 MS (s)1370 4430 MS (a)1409 4430 MS (t)1453 4430 MS (i)1481 4430 MS (o)1509 4430 MS (n)1559 4430 MS ( )1609 4430 MS (d)1634 4430 MS
+(e)1684 4430 MS ( )1728 4430 MS (c)1753 4430 MS (e)1797 4430 MS (t)1841 4430 MS ( )1869 4430 MS (u)1894 4430 MS (t)1944 4430 MS (i)1972 4430 MS (l)2000 4430 MS (i)2028 4430 MS (t)2056 4430 MS (a)2084 4430 MS (i)2128 4430 MS
+(r)2156 4430 MS (e)2189 4430 MS ( )2233 4430 MS (s)2258 4430 MS (o)2297 4430 MS (n)2347 4430 MS (t)2397 4430 MS
+( )2425 4430 MS
+(:)2450 4430 MS
+( )2478 4430 MS
+(-)632 4545 MS
+( )665 4545 MS
+(\352)782 4545 MS (t)826 4545 MS (r)854 4545 MS (e)887 4545 MS ( )931 4545 MS (a)973 4545 MS (u)1017 4545 MS (t)1067 4545 MS (o)1095 4545 MS (r)1145 4545 MS (i)1178 4545 MS (s)1206 4545 MS (\351)1245 4545 MS ( )1289 4545 MS (\340)1331 4545 MS ( )1375 4545 MS
+(\351)1417 4545 MS (c)1461 4545 MS (r)1505 4545 MS (i)1538 4545 MS (r)1566 4545 MS (e)1599 4545 MS ( )1643 4545 MS (d)1685 4545 MS (a)1735 4545 MS (n)1779 4545 MS (s)1829 4545 MS ( )1868 4545 MS (l)1909 4545 MS (e)1937 4545 MS ( )1981 4545 MS (c)2022 4545 MS
+(a)2066 4545 MS (t)2110 4545 MS (a)2138 4545 MS (l)2182 4545 MS (o)2210 4545 MS (g)2260 4545 MS (u)2309 4545 MS (e)2359 4545 MS ( )2403 4545 MS (d)2444 4545 MS (e)2494 4545 MS (s)2538 4545 MS ( )2577 4545 MS (r)2618 4545 MS (e)2651 4545 MS (s)2695 4545 MS
+(s)2734 4545 MS (o)2773 4545 MS (u)2823 4545 MS (r)2873 4545 MS (c)2906 4545 MS (e)2950 4545 MS (s)2994 4545 MS ( )3033 4545 MS (\()3074 4545 MS (d)3107 4545 MS (r)3157 4545 MS (o)3190 4545 MS (i)3240 4545 MS (t)3268 4545 MS ( )3296 4545 MS (r)3337 4545 MS
+(\351)3370 4545 MS (s)3414 4545 MS (e)3453 4545 MS (r)3497 4545 MS (v)3530 4545 MS (\351)3580 4545 MS (,)3624 4545 MS ( )3649 4545 MS (e)3690 4545 MS (n)3734 4545 MS ( )3784 4545 MS (p)3825 4545 MS (r)3875 4545 MS (i)3908 4545 MS (n)3936 4545 MS (c)3986 4545 MS
+(i)4030 4545 MS (p)4058 4545 MS (e)4108 4545 MS (,)4152 4545 MS ( )4177 4545 MS (\340)4218 4545 MS ( )4262 4545 MS
+(l)782 4660 MS (\222)810 4660 MS (a)843 4660 MS (d)887 4660 MS (m)937 4660 MS (i)1015 4660 MS (n)1043 4660 MS (i)1093 4660 MS (s)1121 4660 MS (t)1160 4660 MS (r)1188 4660 MS (a)1221 4660 MS (t)1265 4660 MS (e)1293 4660 MS (u)1337 4660 MS (r)1387 4660 MS
+( )1420 4660 MS (S)1445 4660 MS (a)1501 4660 MS (l)1545 4660 MS (o)1573 4660 MS (m)1623 4660 MS (\351)1701 4660 MS (\))1745 4660 MS
+( )1778 4660 MS
+(-)632 4775 MS
+( )665 4775 MS
+(s)782 4775 MS (e)821 4775 MS ( )865 4775 MS (c)898 4775 MS (o)942 4775 MS (n)992 4775 MS (n)1042 4775 MS (e)1092 4775 MS (c)1136 4775 MS (t)1180 4775 MS (e)1208 4775 MS (r)1252 4775 MS ( )1285 4775 MS (s)1318 4775 MS (u)1357 4775 MS (r)1407 4775 MS
+( )1440 4775 MS (l)1473 4775 MS (a)1501 4775 MS ( )1545 4775 MS (m)1578 4775 MS (a)1656 4775 MS (c)1700 4775 MS (h)1744 4775 MS (i)1794 4775 MS (n)1822 4775 MS (e)1872 4775 MS ( )1916 4775 MS (\340)1949 4775 MS ( )1993 4775 MS (a)2025 4775 MS (j)2069 4775 MS
+(o)2097 4775 MS (u)2147 4775 MS (t)2197 4775 MS (e)2225 4775 MS (r)2269 4775 MS ( )2302 4775 MS (a)2334 4775 MS (u)2378 4775 MS ( )2428 4775 MS (c)2460 4775 MS (a)2504 4775 MS (t)2548 4775 MS (a)2576 4775 MS (l)2620 4775 MS (o)2648 4775 MS (g)2698 4775 MS
+(u)2747 4775 MS (e)2797 4775 MS ( )2841 4775 MS (\()2873 4775 MS (c)2906 4775 MS (e)2950 4775 MS (t)2994 4775 MS (t)3022 4775 MS (e)3050 4775 MS ( )3094 4775 MS (m)3126 4775 MS (a)3204 4775 MS (c)3248 4775 MS (h)3292 4775 MS (i)3342 4775 MS (n)3370 4775 MS
+(e)3420 4775 MS ( )3464 4775 MS (d)3496 4775 MS (o)3546 4775 MS (i)3596 4775 MS (t)3624 4775 MS ( )3652 4775 MS (a)3684 4775 MS (v)3728 4775 MS (o)3778 4775 MS (i)3828 4775 MS (r)3856 4775 MS ( )3889 4775 MS (a)3921 4775 MS (c)3965 4775 MS (c)4009 4775 MS
+(\350)4053 4775 MS (s)4097 4775 MS ( )4136 4775 MS (a)4168 4775 MS (u)4212 4775 MS ( )4262 4775 MS
+(r)782 4890 MS (\351)815 4890 MS (p)859 4890 MS (e)909 4890 MS (r)953 4890 MS (t)986 4890 MS (o)1014 4890 MS (i)1064 4890 MS (r)1092 4890 MS (e)1125 4890 MS ( )1169 4890 MS (S)1194 4890 MS (A)1250 4890 MS (L)1322 4890 MS (O)1381 4890 MS (M)1453 4890 MS
+(E)1542 4890 MS (_)1603 4890 MS (B)1653 4890 MS (U)1719 4890 MS (I)1791 4890 MS (L)1822 4890 MS (D)1881 4890 MS (/)1953 4890 MS (b)1981 4890 MS (i)2031 4890 MS (n)2059 4890 MS (\))2109 4890 MS (.)2142 4890 MS
+( )2167 4890 MS
+( )482 5005 MS
+(L)482 5120 MS (a)541 5120 MS (n)585 5120 MS (c)635 5120 MS (e)679 5120 MS (r)723 5120 MS ( )756 5120 MS (l)781 5120 MS (\222)809 5120 MS (u)842 5120 MS (t)892 5120 MS (i)920 5120 MS (l)948 5120 MS (i)976 5120 MS (t)1004 5120 MS (a)1032 5120 MS
+(i)1076 5120 MS
+(r)1104 5120 MS (e)1137 5120 MS
+( )1181 5120 MS
+(:)1206 5120 MS
+( )1234 5120 MS
+[83 0 0 -83 0 0]/Helvetica MF
+(s)482 5222 MS (h)524 5222 MS (>)570 5222 MS ( )618 5222 MS (c)641 5222 MS (d)683 5222 MS ( )729 5222 MS (S)752 5222 MS (A)807 5222 MS (L)862 5222 MS (O)908 5222 MS (M)973 5222 MS (E)1042 5222 MS (_)1097 5222 MS (B)1143 5222 MS (U)1198 5222 MS
+(I)1258 5222 MS (L)1281 5222 MS (D)1327 5222 MS (/)1387 5222 MS (b)1410 5222 MS (i)1456 5222 MS (n)1474 5222 MS
+( )1520 5222 MS
+(s)482 5318 MS (h)524 5318 MS (>)570 5318 MS ( )618 5318 MS (i)641 5318 MS (n)659 5318 MS (s)705 5318 MS (e)747 5318 MS (r)793 5318 MS (t)821 5318 MS (C)844 5318 MS (o)904 5318 MS (m)950 5318 MS (p)1021 5318 MS (u)1067 5318 MS (t)1113 5318 MS
+(e)1136 5318 MS (r)1182 5318 MS (R)1210 5318 MS (e)1270 5318 MS (s)1316 5318 MS (s)1358 5318 MS (o)1400 5318 MS (u)1446 5318 MS (r)1492 5318 MS (c)1520 5318 MS (e)1562 5318 MS (s)1608 5318 MS (.)1650 5318 MS (s)1673 5318 MS (h)1715 5318 MS
+( )1761 5318 MS
+[100 0 0 -100 0 0]/_Times-Roman MF
+( )482 5427 MS
+(L)482 5542 MS (e)541 5542 MS (s)585 5542 MS ( )624 5542 MS (i)649 5542 MS (n)677 5542 MS (f)727 5542 MS (o)760 5542 MS (r)810 5542 MS (m)843 5542 MS (a)921 5542 MS (t)965 5542 MS (i)993 5542 MS (o)1021 5542 MS (n)1071 5542 MS (s)1121 5542 MS
+( )1160 5542 MS (d)1185 5542 MS (e)1235 5542 MS (m)1279 5542 MS (a)1357 5542 MS (n)1401 5542 MS (d)1451 5542 MS (\351)1501 5542 MS (e)1545 5542 MS (s)1589 5542 MS ( )1628 5542 MS (s)1653 5542 MS (o)1692 5542 MS (n)1742 5542 MS (t)1792 5542 MS ( )1820 5542 MS
+(l)1845 5542 MS (e)1873 5542 MS (s)1917 5542 MS ( )1956 5542 MS (s)1981 5542 MS (u)2020 5542 MS (i)2070 5542 MS (v)2098 5542 MS (a)2148 5542 MS (n)2192 5542 MS (t)2242 5542 MS (e)2270 5542 MS (s)2314 5542 MS
+( )2353 5542 MS
+(\()2378 5542 MS (l)2411 5542 MS (e)2439 5542 MS (s)2483 5542 MS ( )2522 5542 MS (r)2547 5542 MS (\351)2580 5542 MS (p)2624 5542 MS (o)2674 5542 MS (n)2724 5542 MS (s)2774 5542 MS (e)2813 5542 MS (s)2857 5542 MS ( )2896 5542 MS (d)2921 5542 MS (o)2971 5542 MS
+(n)3021 5542 MS (n)3071 5542 MS (\351)3121 5542 MS (e)3165 5542 MS (s)3209 5542 MS ( )3248 5542 MS (s)3273 5542 MS (o)3312 5542 MS (n)3362 5542 MS (t)3412 5542 MS ( )3440 5542 MS (d)3465 5542 MS (e)3515 5542 MS (s)3559 5542 MS ( )3598 5542 MS (e)3623 5542 MS
+(x)3667 5542 MS (e)3718 5542 MS (m)3762 5542 MS (p)3840 5542 MS (l)3890 5542 MS (e)3918 5542 MS (s)3962 5542 MS (\))4001 5542 MS (:)4034 5542 MS
+( )4062 5542 MS
+[83 0 0 -83 0 0]/Helvetica MF
+(s)482 5644 MS (h)524 5644 MS (>)570 5644 MS ( )618 5644 MS (W)641 5644 MS (h)724 5644 MS (a)770 5644 MS (t)816 5644 MS ( )839 5644 MS (i)862 5644 MS (s)880 5644 MS ( )922 5644 MS (t)945 5644 MS (h)968 5644 MS (e)1014 5644 MS ( )1060 5644 MS
+(R)1083 5644 MS (e)1143 5644 MS (s)1189 5644 MS (s)1231 5644 MS (o)1273 5644 MS (u)1319 5644 MS (r)1365 5644 MS (c)1393 5644 MS (e)1435 5644 MS ( )1481 5644 MS (C)1504 5644 MS (a)1564 5644 MS (t)1610 5644 MS (a)1633 5644 MS (l)1679 5644 MS (o)1697 5644 MS
+(g)1743 5644 MS ( )1789 5644 MS (n)1812 5644 MS (a)1858 5644 MS (m)1904 5644 MS (e)1975 5644 MS ( )2021 5644 MS (\()2044 5644 MS (a)2072 5644 MS (b)2118 5644 MS (s)2164 5644 MS (o)2206 5644 MS (l)2252 5644 MS (u)2270 5644 MS (t)2316 5644 MS (e)2339 5644 MS
+( )2385 5644 MS (p)2408 5644 MS (a)2454 5644 MS (t)2500 5644 MS (h)2523 5644 MS (\))2569 5644 MS (?)2597 5644 MS ( )2643 5644 MS
+( )2666 5644 MS
+%%BeginFont: Wingdings0133113
+currentfile eexec
+9E67EDC6B8425AFF36BF4514D54B43BD3052C5864D8FE9488C0032ACA58315791A848ACA4E893C7524EFCAFAF1043561D52C1E47FEA5D8E71ED82F7390F4D46E5C54C6C0
+BBE982CB5E67D60CB8E221B11FCE2B1CD194D5E8EB462262B68241D86FEEAB8906AD997E7A21B17EC2F8DABBE47E46C41FA7AAC75441BB2486FDC0F722E25BFAF73EDF6FAD737FB5FC3697B76CEA6A193C350D5B19F9E7654EC88E8F9567BF1383D78936A0E739D02B2B24B0D4FC384839924ECAD3E853905AB6FDFC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+[83 0 0 -83 0 0]/Wingdings0133113 MF
+(\305)777 5740 MS
+[83 0 0 -83 0 0]/Helvetica MF
+( )858 5740 MS (/)881 5740 MS (e)904 5740 MS (x)950 5740 MS (p)992 5740 MS (o)1038 5740 MS (r)1084 5740 MS (t)1112 5740 MS (/)1135 5740 MS (h)1158 5740 MS (o)1204 5740 MS (m)1250 5740 MS (e)1321 5740 MS (/)1367 5740 MS (S)1390 5740 MS (A)1445 5740 MS
+(L)1500 5740 MS (O)1546 5740 MS (M)1611 5740 MS (E)1680 5740 MS (_)1735 5740 MS (R)1781 5740 MS (O)1841 5740 MS (O)1906 5740 MS (T)1971 5740 MS (/)2023 5740 MS (S)2046 5740 MS (A)2101 5740 MS (L)2156 5740 MS (O)2202 5740 MS (M)2267 5740 MS (E)2336 5740 MS
+(/)2391 5740 MS (r)2414 5740 MS (e)2442 5740 MS (s)2488 5740 MS (o)2530 5740 MS (u)2576 5740 MS (r)2622 5740 MS (c)2650 5740 MS (e)2692 5740 MS (s)2738 5740 MS (/)2780 5740 MS (C)2803 5740 MS (a)2863 5740 MS (t)2909 5740 MS (a)2932 5740 MS (l)2978 5740 MS
+(o)2996 5740 MS (g)3042 5740 MS (R)3088 5740 MS (e)3148 5740 MS (s)3194 5740 MS (s)3236 5740 MS (o)3278 5740 MS (u)3324 5740 MS (r)3370 5740 MS (c)3398 5740 MS (e)3440 5740 MS (s)3486 5740 MS (.)3528 5740 MS (x)3551 5740 MS (m)3593 5740 MS (l)3664 5740 MS
+( )3682 5740 MS
+(s)482 5836 MS (h)524 5836 MS (>)570 5836 MS ( )618 5836 MS (W)641 5836 MS (h)724 5836 MS (a)770 5836 MS (t)816 5836 MS ( )839 5836 MS (i)862 5836 MS (s)880 5836 MS ( )922 5836 MS (t)945 5836 MS (h)968 5836 MS (e)1014 5836 MS ( )1060 5836 MS
+(c)1083 5836 MS (o)1125 5836 MS (m)1171 5836 MS (p)1242 5836 MS (u)1288 5836 MS (t)1334 5836 MS (e)1357 5836 MS (r)1403 5836 MS ( )1431 5836 MS (n)1454 5836 MS (a)1500 5836 MS (m)1546 5836 MS (e)1617 5836 MS (?)1663 5836 MS
+( )1709 5836 MS
+( )482 5931 MS
+[83 0 0 -83 0 0]/Wingdings0133113 MF
+(\305)777 5931 MS
+[83 0 0 -83 0 0]/Helvetica MF
+( )858 5931 MS (e)881 5931 MS (r)927 5931 MS (i)955 5931 MS
+( )973 5931 MS
+(s)482 6027 MS (h)524 6027 MS (>)570 6027 MS ( )618 6027 MS (W)641 6027 MS (i)724 6027 MS (l)742 6027 MS (l)760 6027 MS ( )778 6027 MS (C)801 6027 MS (+)861 6027 MS (+)909 6027 MS ( )957 6027 MS (C)980 6027 MS (o)1040 6027 MS (n)1086 6027 MS
+(t)1132 6027 MS (a)1155 6027 MS (i)1201 6027 MS (n)1219 6027 MS (e)1265 6027 MS (r)1311 6027 MS ( )1339 6027 MS (T)1362 6027 MS (y)1414 6027 MS (p)1453 6027 MS (e)1499 6027 MS ( )1545 6027 MS (b)1568 6027 MS (e)1614 6027 MS ( )1660 6027 MS (a)1683 6027 MS
+(b)1729 6027 MS (l)1775 6027 MS (e)1793 6027 MS ( )1839 6027 MS (o)1862 6027 MS (n)1908 6027 MS ( )1954 6027 MS (m)1977 6027 MS (u)2048 6027 MS (n)2094 6027 MS (a)2140 6027 MS ( )2186 6027 MS ([)2209 6027 MS (y)2232 6027 MS (/)2271 6027 MS (n)2294 6027 MS
+(])2340 6027 MS (?)2363 6027 MS
+( )2409 6027 MS
+( )482 6123 MS
+[83 0 0 -83 0 0]/Wingdings0133113 MF
+(\305)777 6123 MS
+[83 0 0 -83 0 0]/Helvetica MF
+( )858 6123 MS (y)881 6123 MS
+( )920 6123 MS
+(s)482 6219 MS (h)524 6219 MS (>)570 6219 MS ( )618 6219 MS (W)641 6219 MS (i)724 6219 MS (l)742 6219 MS (l)760 6219 MS ( )778 6219 MS (p)801 6219 MS (y)847 6219 MS (t)886 6219 MS (h)909 6219 MS (o)955 6219 MS (n)1001 6219 MS ( )1047 6219 MS
+(C)1070 6219 MS (o)1130 6219 MS (n)1176 6219 MS (t)1222 6219 MS (a)1245 6219 MS (i)1291 6219 MS (n)1309 6219 MS (e)1355 6219 MS (r)1401 6219 MS ( )1429 6219 MS (T)1452 6219 MS (y)1504 6219 MS (p)1543 6219 MS (e)1589 6219 MS ( )1635 6219 MS (b)1658 6219 MS
+(e)1704 6219 MS ( )1750 6219 MS (a)1773 6219 MS (b)1819 6219 MS (l)1865 6219 MS (e)1883 6219 MS ( )1929 6219 MS (o)1952 6219 MS (n)1998 6219 MS ( )2044 6219 MS (m)2067 6219 MS (u)2138 6219 MS (n)2184 6219 MS (a)2230 6219 MS ( )2276 6219 MS ([)2299 6219 MS
+(y)2322 6219 MS (/)2361 6219 MS (n)2384 6219 MS (])2430 6219 MS (?)2453 6219 MS
+( )2499 6219 MS
+showpage
+%%Page: 2 2
+13 829.441 translate 72 600 div dup neg scale
+0 0 transform .25 add round .25 sub exch .25 add round .25 sub exch itransform translate
+[83 0 0 -83 0 0]/Helvetica MF
+( )482 564 MS
+[83 0 0 -83 0 0]/Wingdings0133113 MF
+(\305)777 564 MS
+[83 0 0 -83 0 0]/Helvetica MF
+( )858 564 MS (y)881 564 MS
+( )920 564 MS
+(s)482 660 MS (h)524 660 MS (>)570 660 MS ( )618 660 MS (W)641 660 MS (i)724 660 MS (l)742 660 MS (l)760 660 MS ( )778 660 MS (N)801 660 MS (P)861 660 MS ( )916 660 MS (C)939 660 MS (o)999 660 MS (n)1045 660 MS (t)1091 660 MS
+(a)1114 660 MS (i)1160 660 MS (n)1178 660 MS (e)1224 660 MS (r)1270 660 MS ( )1298 660 MS (T)1321 660 MS (y)1373 660 MS (p)1412 660 MS (e)1458 660 MS ( )1504 660 MS (b)1527 660 MS (e)1573 660 MS ( )1619 660 MS (a)1642 660 MS (b)1688 660 MS
+(l)1734 660 MS (e)1752 660 MS ( )1798 660 MS (o)1821 660 MS (n)1867 660 MS ( )1913 660 MS (m)1936 660 MS (u)2007 660 MS (n)2053 660 MS (a)2099 660 MS ( )2145 660 MS ([)2168 660 MS (y)2191 660 MS (/)2230 660 MS (n)2253 660 MS (])2299 660 MS
+(?)2322 660 MS
+( )2368 660 MS
+( )482 756 MS
+[83 0 0 -83 0 0]/Wingdings0133113 MF
+(\305)777 756 MS
+[83 0 0 -83 0 0]/Helvetica MF
+( )858 756 MS (n)881 756 MS
+( )927 756 MS
+(s)482 852 MS (h)524 852 MS (>)570 852 MS
+( )618 852 MS
+( )482 948 MS
+( )482 1044 MS
+[100 0 0 -100 0 0]/Times-Roman MF
+(U)482 1152 MS (n)554 1152 MS (e)604 1152 MS ( )648 1152 MS (f)704 1152 MS (o)737 1152 MS (i)787 1152 MS (s)815 1152 MS ( )854 1152 MS (l)910 1152 MS (e)938 1152 MS ( )982 1152 MS (t)1038 1152 MS (r)1066 1152 MS (a)1099 1152 MS (i)1143 1152 MS
+(t)1171 1152 MS (e)1199 1152 MS (m)1243 1152 MS (e)1321 1152 MS (n)1365 1152 MS (t)1415 1152 MS ( )1443 1152 MS (t)1499 1152 MS (e)1527 1152 MS
+/IsChar{exch/CharStrings get exch known}bd/MapCh{3 -1 roll/Encoding get 3 1
+roll put}bd/MapDegree{dup 16#b0 exch/degree IsChar{/degree}{/ring}ifelse MapCh}
+bd/MapBB{dup 16#a6 exch/brokenbar IsChar{/brokenbar}{/bar}ifelse MapCh}bd
+/reencode{findfont begin currentdict dup length dict begin{1 index/FID ne{def}
+{pop pop}ifelse}forall/FontName exch def dup length 0 ne{/Encoding Encoding 256
+array copy def 0 exch{dup type/nametype eq{Encoding 2 index 2 index put pop 1
+add}{exch pop}ifelse}forall}if pop currentdict dup end end/FontName get exch
+definefont dup MapDegree MapBB}bd/LATENC[0/grave/acute/circumflex/tilde/macron
+/breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi/fi/fl
+/Lslash/lslash/Zcaron/zcaron/minus/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space/exclam/quotedbl
+/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk
+/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight
+/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M
+/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum
+/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft
+/bar/braceright/asciitilde/.notdef/.notdef/.notdef/quotesinglbase/florin
+/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron
+/guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef/quoteleft/quoteright
+/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron
+/guilsinglright/oe/.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent/sterling
+/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft
+/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior
+/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine
+/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute
+/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex
+/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute
+/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex
+/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
+/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute
+/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis
+/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+LATENC /_Times-Roman /Times-Roman reencode
+[100 0 0 -100 0 0]/_Times-Roman MF
+(r)1571 1152 MS (m)1604 1152 MS (i)1682 1152 MS (n)1710 1152 MS (\351)1760 1152 MS (,)1804 1152 MS ( )1829 1152 MS (l)1885 1152 MS (e)1913 1152 MS ( )1957 1152 MS (c)2013 1152 MS (a)2057 1152 MS (t)2101 1152 MS (a)2129 1152 MS (l)2173 1152 MS (o)2201 1152 MS
+(g)2251 1152 MS (u)2300 1152 MS (e)2350 1152 MS ( )2394 1152 MS (d)2450 1152 MS (e)2500 1152 MS (s)2544 1152 MS ( )2583 1152 MS (r)2639 1152 MS (e)2672 1152 MS (s)2716 1152 MS (s)2755 1152 MS (o)2794 1152 MS (u)2844 1152 MS (r)2894 1152 MS (c)2927 1152 MS
+(e)2971 1152 MS (s)3015 1152 MS ( )3054 1152 MS (c)3109 1152 MS (o)3153 1152 MS (n)3203 1152 MS (t)3253 1152 MS (i)3281 1152 MS (e)3309 1152 MS (n)3353 1152 MS (d)3403 1152 MS (r)3453 1152 MS (a)3486 1152 MS ( )3530 1152 MS (l)3585 1152 MS (e)3613 1152 MS
+(s)3657 1152 MS ( )3696 1152 MS (i)3751 1152 MS (n)3779 1152 MS (f)3829 1152 MS (o)3862 1152 MS (r)3912 1152 MS (m)3945 1152 MS (a)4023 1152 MS (t)4067 1152 MS (i)4095 1152 MS (o)4123 1152 MS (n)4173 1152 MS (s)4223 1152 MS ( )4262 1152 MS
+(c)482 1267 MS (o)526 1267 MS (n)576 1267 MS (c)626 1267 MS (e)670 1267 MS (r)714 1267 MS (n)747 1267 MS (a)797 1267 MS (n)841 1267 MS (t)891 1267 MS ( )919 1267 MS (l)944 1267 MS (a)972 1267 MS ( )1016 1267 MS (m)1041 1267 MS (a)1119 1267 MS
+(c)1163 1267 MS (h)1207 1267 MS (i)1257 1267 MS (n)1285 1267 MS (e)1335 1267 MS ( )1379 1267 MS (e)1404 1267 MS (r)1448 1267 MS (i)1481 1267 MS (.)1509 1267 MS ( )1534 1267 MS (L)1559 1267 MS (e)1618 1267 MS (s)1662 1267 MS ( )1701 1267 MS (l)1726 1267 MS
+(i)1754 1267 MS (g)1782 1267 MS (n)1831 1267 MS (e)1881 1267 MS (s)1925 1267 MS ( )1964 1267 MS (s)1989 1267 MS (u)2028 1267 MS (i)2078 1267 MS (v)2106 1267 MS (a)2156 1267 MS (n)2200 1267 MS (t)2250 1267 MS (e)2278 1267 MS (s)2322 1267 MS ( )2361 1267 MS
+(a)2386 1267 MS (u)2430 1267 MS (r)2480 1267 MS (o)2513 1267 MS (n)2563 1267 MS (t)2613 1267 MS ( )2641 1267 MS (\351)2666 1267 MS (t)2710 1267 MS (\351)2738 1267 MS ( )2782 1267 MS (r)2807 1267 MS (a)2840 1267 MS (j)2884 1267 MS (o)2912 1267 MS (u)2962 1267 MS
+(t)3012 1267 MS (\351)3040 1267 MS (e)3084 1267 MS (s)3128 1267 MS ( )3167 1267 MS (d)3192 1267 MS (a)3242 1267 MS (n)3286 1267 MS (s)3336 1267 MS ( )3375 1267 MS (l)3400 1267 MS (e)3428 1267 MS ( )3472 1267 MS (c)3497 1267 MS (a)3541 1267 MS (t)3585 1267 MS
+(a)3613 1267 MS (l)3657 1267 MS (o)3685 1267 MS (g)3735 1267 MS (u)3784 1267 MS (e)3834 1267 MS
+( )3878 1267 MS
+(:)3903 1267 MS
+( )3931 1267 MS
+%%IncludeFont: Courier
+[83 0 0 -83 0 0]/Courier MF
+( )482 1363 MS
+(<)777 1363 MS (c)827 1363 MS (o)877 1363 MS (m)927 1363 MS (p)977 1363 MS (u)1027 1363 MS (t)1077 1363 MS (e)1127 1363 MS (r)1177 1363 MS (>)1227 1363 MS
+( )1277 1363 MS
+( )482 1458 MS
+( )777 1458 MS
+(<)1072 1458 MS (n)1122 1458 MS (a)1172 1458 MS (m)1222 1458 MS (e)1272 1458 MS (>)1322 1458 MS (e)1372 1458 MS (r)1422 1458 MS (i)1472 1458 MS (<)1522 1458 MS (/)1572 1458 MS (n)1622 1458 MS (a)1672 1458 MS (m)1722 1458 MS (e)1772 1458 MS (>)1822 1458 MS
+( )1872 1458 MS
+( )482 1552 MS
+( )777 1552 MS
+(<)1072 1552 MS (O)1122 1552 MS (S)1172 1552 MS (>)1222 1552 MS (L)1272 1552 MS (i)1322 1552 MS (n)1372 1552 MS (u)1422 1552 MS (x)1472 1552 MS (<)1522 1552 MS (/)1572 1552 MS (O)1622 1552 MS (S)1672 1552 MS (>)1722 1552 MS
+( )1772 1552 MS
+( )482 1647 MS
+( )777 1647 MS
+(<)1072 1647 MS (O)1122 1647 MS (S)1172 1647 MS
+(-)1222 1647 MS
+(v)1272 1647 MS (e)1322 1647 MS (r)1372 1647 MS (s)1422 1647 MS (i)1472 1647 MS (o)1522 1647 MS (n)1572 1647 MS (>)1622 1647 MS (2)1672 1647 MS (.)1722 1647 MS (2)1772 1647 MS (.)1822 1647 MS (1)1872 1647 MS (4)1922 1647 MS
+(-)1972 1647 MS
+(6)2022 1647 MS (.)2072 1647 MS (1)2122 1647 MS (.)2172 1647 MS (1)2222 1647 MS (s)2272 1647 MS (m)2322 1647 MS (p)2372 1647 MS (<)2422 1647 MS (/)2472 1647 MS (O)2522 1647 MS (S)2572 1647 MS
+(-)2622 1647 MS
+(v)2672 1647 MS (e)2722 1647 MS (r)2772 1647 MS (s)2822 1647 MS (i)2872 1647 MS (o)2922 1647 MS (n)2972 1647 MS (>)3022 1647 MS
+( )3072 1647 MS
+( )482 1741 MS
+( )777 1741 MS
+(<)1072 1741 MS (p)1122 1741 MS (r)1172 1741 MS (o)1222 1741 MS (c)1272 1741 MS
+(-)1322 1741 MS
+(l)1372 1741 MS (i)1422 1741 MS (s)1472 1741 MS (t)1522 1741 MS (>)1572 1741 MS
+( )1622 1741 MS
+( )482 1835 MS
+( )777 1835 MS
+( )1072 1835 MS
+(<)1367 1835 MS (p)1417 1835 MS (r)1467 1835 MS (o)1517 1835 MS (c)1567 1835 MS (>)1617 1835 MS
+( )1667 1835 MS
+( )482 1930 MS
+( )777 1930 MS
+( )1072 1930 MS
+( )1367 1930 MS
+(<)1662 1930 MS (n)1712 1930 MS (u)1762 1930 MS (m)1812 1930 MS (b)1862 1930 MS (e)1912 1930 MS (r)1962 1930 MS (>)2012 1930 MS (0)2062 1930 MS (<)2112 1930 MS (/)2162 1930 MS (n)2212 1930 MS (u)2262 1930 MS (m)2312 1930 MS (b)2362 1930 MS (e)2412 1930 MS
+(r)2462 1930 MS (>)2512 1930 MS
+( )2562 1930 MS
+( )482 2024 MS
+( )777 2024 MS
+( )1072 2024 MS
+( )1367 2024 MS
+(<)1662 2024 MS (m)1712 2024 MS (o)1762 2024 MS (d)1812 2024 MS (e)1862 2024 MS (l)1912 2024 MS (>)1962 2024 MS (P)2012 2024 MS (e)2062 2024 MS (n)2112 2024 MS (t)2162 2024 MS (i)2212 2024 MS (u)2262 2024 MS (m)2312 2024 MS ( )2362 2024 MS (I)2412 2024 MS
+(I)2462 2024 MS (I)2512 2024 MS ( )2562 2024 MS (\()2612 2024 MS (C)2662 2024 MS (o)2712 2024 MS (p)2762 2024 MS (p)2812 2024 MS (e)2862 2024 MS (r)2912 2024 MS (m)2962 2024 MS (i)3012 2024 MS (n)3062 2024 MS (e)3112 2024 MS (\))3162 2024 MS (<)3212 2024 MS
+(/)3262 2024 MS (m)3312 2024 MS (o)3362 2024 MS (d)3412 2024 MS (e)3462 2024 MS (l)3512 2024 MS (>)3562 2024 MS
+( )3612 2024 MS
+( )482 2119 MS
+( )777 2119 MS
+( )1072 2119 MS
+( )1367 2119 MS
+(<)1662 2119 MS (C)1712 2119 MS (P)1762 2119 MS (U)1812 2119 MS
+(-)1862 2119 MS
+(M)1912 2119 MS (H)1962 2119 MS (z)2012 2119 MS (>)2062 2119 MS (8)2112 2119 MS (6)2162 2119 MS (0)2212 2119 MS (.)2262 2119 MS (9)2312 2119 MS (4)2362 2119 MS (6)2412 2119 MS (7)2462 2119 MS (7)2512 2119 MS (5)2562 2119 MS (<)2612 2119 MS (/)2662 2119 MS
+(C)2712 2119 MS (P)2762 2119 MS (U)2812 2119 MS
+(-)2862 2119 MS
+(M)2912 2119 MS (H)2962 2119 MS (z)3012 2119 MS (>)3062 2119 MS
+( )3112 2119 MS
+( )482 2213 MS
+( )777 2213 MS
+( )1072 2213 MS
+( )1367 2213 MS
+(<)1662 2213 MS (c)1712 2213 MS (a)1762 2213 MS (c)1812 2213 MS (h)1862 2213 MS (e)1912 2213 MS (>)1962 2213 MS (2)2012 2213 MS (5)2062 2213 MS (6)2112 2213 MS (<)2162 2213 MS (/)2212 2213 MS (c)2262 2213 MS (a)2312 2213 MS (c)2362 2213 MS (h)2412 2213 MS
+(e)2462 2213 MS (>)2512 2213 MS
+( )2562 2213 MS
+( )482 2307 MS
+( )777 2307 MS
+( )1072 2307 MS
+(<)1367 2307 MS (/)1417 2307 MS (p)1467 2307 MS (r)1517 2307 MS (o)1567 2307 MS (c)1617 2307 MS (>)1667 2307 MS
+( )1717 2307 MS
+( )482 2402 MS
+( )777 2402 MS
+( )1072 2402 MS
+(<)1367 2402 MS (p)1417 2402 MS (r)1467 2402 MS (o)1517 2402 MS (c)1567 2402 MS (>)1617 2402 MS
+( )1667 2402 MS
+( )482 2496 MS
+( )777 2496 MS
+( )1072 2496 MS
+( )1367 2496 MS
+(<)1662 2496 MS (n)1712 2496 MS (u)1762 2496 MS (m)1812 2496 MS (b)1862 2496 MS (e)1912 2496 MS (r)1962 2496 MS (>)2012 2496 MS (1)2062 2496 MS (<)2112 2496 MS (/)2162 2496 MS (n)2212 2496 MS (u)2262 2496 MS (m)2312 2496 MS (b)2362 2496 MS (e)2412 2496 MS
+(r)2462 2496 MS (>)2512 2496 MS
+( )2562 2496 MS
+( )482 2591 MS
+( )777 2591 MS
+( )1072 2591 MS
+( )1367 2591 MS
+(<)1662 2591 MS (m)1712 2591 MS (o)1762 2591 MS (d)1812 2591 MS (e)1862 2591 MS (l)1912 2591 MS (>)1962 2591 MS (P)2012 2591 MS (e)2062 2591 MS (n)2112 2591 MS (t)2162 2591 MS (i)2212 2591 MS (u)2262 2591 MS (m)2312 2591 MS ( )2362 2591 MS (I)2412 2591 MS
+(I)2462 2591 MS (I)2512 2591 MS ( )2562 2591 MS (\()2612 2591 MS (C)2662 2591 MS (o)2712 2591 MS (p)2762 2591 MS (p)2812 2591 MS (e)2862 2591 MS (r)2912 2591 MS (m)2962 2591 MS (i)3012 2591 MS (n)3062 2591 MS (e)3112 2591 MS (\))3162 2591 MS (<)3212 2591 MS
+(/)3262 2591 MS (m)3312 2591 MS (o)3362 2591 MS (d)3412 2591 MS (e)3462 2591 MS (l)3512 2591 MS (>)3562 2591 MS
+( )3612 2591 MS
+( )482 2685 MS
+( )777 2685 MS
+( )1072 2685 MS
+( )1367 2685 MS
+(<)1662 2685 MS (C)1712 2685 MS (P)1762 2685 MS (U)1812 2685 MS
+(-)1862 2685 MS
+(M)1912 2685 MS (H)1962 2685 MS (z)2012 2685 MS (>)2062 2685 MS (8)2112 2685 MS (6)2162 2685 MS (0)2212 2685 MS (.)2262 2685 MS (9)2312 2685 MS (4)2362 2685 MS (6)2412 2685 MS (7)2462 2685 MS (7)2512 2685 MS (5)2562 2685 MS (<)2612 2685 MS (/)2662 2685 MS
+(C)2712 2685 MS (P)2762 2685 MS (U)2812 2685 MS
+(-)2862 2685 MS
+(M)2912 2685 MS (H)2962 2685 MS (z)3012 2685 MS (>)3062 2685 MS
+( )3112 2685 MS
+( )482 2779 MS
+( )777 2779 MS
+( )1072 2779 MS
+( )1367 2779 MS
+(<)1662 2779 MS (c)1712 2779 MS (a)1762 2779 MS (c)1812 2779 MS (h)1862 2779 MS (e)1912 2779 MS (>)1962 2779 MS (2)2012 2779 MS (5)2062 2779 MS (6)2112 2779 MS (<)2162 2779 MS (/)2212 2779 MS (c)2262 2779 MS (a)2312 2779 MS (c)2362 2779 MS (h)2412 2779 MS
+(e)2462 2779 MS (>)2512 2779 MS
+( )2562 2779 MS
+( )482 2874 MS
+( )777 2874 MS
+( )1072 2874 MS
+(<)1367 2874 MS (/)1417 2874 MS (p)1467 2874 MS (r)1517 2874 MS (o)1567 2874 MS (c)1617 2874 MS (>)1667 2874 MS
+( )1717 2874 MS
+( )482 2968 MS
+( )777 2968 MS
+(<)1072 2968 MS (/)1122 2968 MS (p)1172 2968 MS (r)1222 2968 MS (o)1272 2968 MS (c)1322 2968 MS
+(-)1372 2968 MS
+(l)1422 2968 MS (i)1472 2968 MS (s)1522 2968 MS (t)1572 2968 MS (>)1622 2968 MS
+( )1672 2968 MS
+( )482 3063 MS
+( )777 3063 MS
+(<)1072 3063 MS (c)1122 3063 MS (o)1172 3063 MS (n)1222 3063 MS (t)1272 3063 MS (a)1322 3063 MS (i)1372 3063 MS (n)1422 3063 MS (e)1472 3063 MS (r)1522 3063 MS (t)1572 3063 MS (y)1622 3063 MS (p)1672 3063 MS (e)1722 3063 MS
+(-)1772 3063 MS
+(l)1822 3063 MS (i)1872 3063 MS (s)1922 3063 MS (t)1972 3063 MS (>)2022 3063 MS
+( )2072 3063 MS
+( )482 3157 MS
+( )777 3157 MS
+( )1072 3157 MS
+( )1367 3157 MS
+(<)1662 3157 MS (c)1712 3157 MS (o)1762 3157 MS (n)1812 3157 MS (t)1862 3157 MS (a)1912 3157 MS (i)1962 3157 MS (n)2012 3157 MS (e)2062 3157 MS (r)2112 3157 MS (t)2162 3157 MS (y)2212 3157 MS (p)2262 3157 MS (e)2312 3157 MS (>)2362 3157 MS (C)2412 3157 MS
+(+)2462 3157 MS (+)2512 3157 MS (<)2562 3157 MS (/)2612 3157 MS (c)2662 3157 MS (o)2712 3157 MS (n)2762 3157 MS (t)2812 3157 MS (a)2862 3157 MS (i)2912 3157 MS (n)2962 3157 MS (e)3012 3157 MS (r)3062 3157 MS (t)3112 3157 MS (y)3162 3157 MS (p)3212 3157 MS
+(e)3262 3157 MS (>)3312 3157 MS
+( )3362 3157 MS
+( )482 3251 MS
+( )777 3251 MS
+( )1072 3251 MS
+( )1367 3251 MS
+(<)1662 3251 MS (c)1712 3251 MS (o)1762 3251 MS (n)1812 3251 MS (t)1862 3251 MS (a)1912 3251 MS (i)1962 3251 MS (n)2012 3251 MS (e)2062 3251 MS (r)2112 3251 MS (t)2162 3251 MS (y)2212 3251 MS (p)2262 3251 MS (e)2312 3251 MS (>)2362 3251 MS (p)2412 3251 MS
+(y)2462 3251 MS (t)2512 3251 MS (h)2562 3251 MS (o)2612 3251 MS (n)2662 3251 MS (<)2712 3251 MS (/)2762 3251 MS (c)2812 3251 MS (o)2862 3251 MS (n)2912 3251 MS (t)2962 3251 MS (a)3012 3251 MS (i)3062 3251 MS (n)3112 3251 MS (e)3162 3251 MS (r)3212 3251 MS
+(t)3262 3251 MS (y)3312 3251 MS (p)3362 3251 MS (e)3412 3251 MS (>)3462 3251 MS
+( )3512 3251 MS
+( )482 3346 MS
+( )777 3346 MS
+(<)1072 3346 MS (/)1122 3346 MS (c)1172 3346 MS (o)1222 3346 MS (n)1272 3346 MS (t)1322 3346 MS (a)1372 3346 MS (i)1422 3346 MS (n)1472 3346 MS (e)1522 3346 MS (r)1572 3346 MS (t)1622 3346 MS (y)1672 3346 MS (p)1722 3346 MS (e)1772 3346 MS
+(-)1822 3346 MS
+(l)1872 3346 MS (i)1922 3346 MS (s)1972 3346 MS (t)2022 3346 MS (>)2072 3346 MS
+( )2122 3346 MS
+( )482 3440 MS
+(<)777 3440 MS (/)827 3440 MS (c)877 3440 MS (o)927 3440 MS (m)977 3440 MS (p)1027 3440 MS (u)1077 3440 MS (t)1127 3440 MS (e)1177 3440 MS (r)1227 3440 MS (>)1277 3440 MS
+( )1327 3440 MS
+[100 0 0 -100 0 0]/_Times-Roman MF
+( )482 3554 MS
+( )482 3669 MS
+( )482 3784 MS
+( )482 3899 MS
+showpage
+FontSV restore
+PageSV restore
+%%Trailer
+%%DocumentNeededFonts:
+%%+ Courier
+%%+ Helvetica
+%%+ Helvetica-Bold
+%%+ Times-Roman
+%%DocumentSuppliedFonts:
+%%+ Wingdings0133113
+end
+%%Pages: 2
+%%EOF
diff --git a/doc/html/INPUT/HTML/Logger.html b/doc/html/INPUT/HTML/Logger.html
new file mode 100644 (file)
index 0000000..1a73901
--- /dev/null
@@ -0,0 +1,18 @@
+<HTML><b>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface Logger</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void putMessage ( in string message )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>putMessage ( message )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void ping (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>ping (  )</b></div></td>
+</tr>
+</table><br>
+</b></HTML>
diff --git a/doc/html/INPUT/HTML/SALOMEDS.html b/doc/html/INPUT/HTML/SALOMEDS.html
new file mode 100644 (file)
index 0000000..52291fa
--- /dev/null
@@ -0,0 +1,602 @@
+<HTML><b>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface Study</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>PersistentReference  GetPersistentReference (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetPersistentReference (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SalomeReference  GetTransientReference (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetTransientReference (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsEmpty (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsEmpty (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SComponent  FindComponent ( in string aComponentName )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = FindComponent ( aComponentName )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SComponent  FindComponentID ( in ID aComponentID )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = FindComponentID ( aComponentID )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SObject  FindObject ( in string anObjectName )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = FindObject ( anObjectName )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SObject  FindObjectID ( in ID aObjectID )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = FindObjectID ( aObjectID )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SObject  FindObjectIOR ( in ID aObjectIOR )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = FindObjectIOR ( aObjectIOR )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfSObject  FindObjectByName ( in string anObjectName, in string aComponentName )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = FindObjectByName ( anObjectName, aComponentName )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SObject  FindObjectByPath ( in string thePath )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = FindObjectByPath ( thePath )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  GetObjectPath ( in Object theObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetObjectPath ( theObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetContext ( in string thePath )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetContext ( thePath )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  GetContext (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetContext (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfStrings  GetObjectNames ( in string theContext )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetObjectNames ( theContext )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfStrings  GetDirectoryNames ( in string theContext )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetDirectoryNames ( theContext )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfStrings  GetFileNames ( in string theContext )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetFileNames ( theContext )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfStrings  GetComponentNames ( in string theContext )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetComponentNames ( theContext )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ChildIterator  NewChildIterator ( in SObject aSO )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = NewChildIterator ( aSO )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SComponentIterator  NewComponentIterator (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = NewComponentIterator (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StudyBuilder  NewBuilder (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = NewBuilder (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void UpdateIORLabelMap ( in string anIOR, in string anEntry )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>UpdateIORLabelMap ( anIOR, anEntry )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>AttributeStudyProperties  GetProperties (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetProperties (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsModified (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsModified (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfSObject  FindDependances ( in SObject anObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = FindDependances ( anObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  GetLastModificationDate (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetLastModificationDate (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfDates  GetModificationsDate (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetModificationsDate (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  ConvertObjectToIOR ( in Object theObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = ConvertObjectToIOR ( theObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Object  ConvertIORToObject ( in string theIOR )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = ConvertIORToObject ( theIOR )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>UseCaseBuilder  GetUseCaseBuilder (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetUseCaseBuilder (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Close (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Close (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void EnableUseCaseAutoFilling ( in boolean isEnabled )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>EnableUseCaseAutoFilling ( isEnabled )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface StudyBuilder</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SComponent  NewComponent ( in string ComponentDataType )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = NewComponent ( ComponentDataType )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void DefineComponentInstance ( in SComponent aComponent, in Object ComponentIOR )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>DefineComponentInstance ( aComponent, ComponentIOR )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void RemoveComponent ( in SComponent aComponent )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>RemoveComponent ( aComponent )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SObject  NewObject ( in SObject theFatherObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = NewObject ( theFatherObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SObject  NewObjectToTag ( in SObject theFatherObject, in long atag )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = NewObjectToTag ( theFatherObject, atag )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void RemoveObject ( in SObject anObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>RemoveObject ( anObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void RemoveObjectWithChildren ( in SObject anObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>RemoveObjectWithChildren ( anObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void LoadWith ( in SComponent sco, in Driver Engine )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>LoadWith ( sco, Engine )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Load ( in SObject sco )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Load ( sco )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>GenericAttribute  FindOrCreateAttribute ( in SObject anObject, in string aTypeOfAttribute )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = FindOrCreateAttribute ( anObject, aTypeOfAttribute )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  FindAttribute ( in SObject anObject, out GenericAttribute anAttribute, in string aTypeOfAttribute )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>[ return_value,  anAttribute ] = FindAttribute ( anObject, aTypeOfAttribute )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void RemoveAttribute ( in SObject anObject, in string aTypeOfAttribute )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>RemoveAttribute ( anObject, aTypeOfAttribute )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Addreference ( in SObject anObject, in SObject theReferencedObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Addreference ( anObject, theReferencedObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void AddDirectory ( in string theName )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>AddDirectory ( theName )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetGUID ( in SObject anObject, in string theGUID )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetGUID ( anObject, theGUID )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsGUID ( in SObject anObject, in string theGUID )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsGUID ( anObject, theGUID )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void NewCommand (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>NewCommand (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void CommitCommand (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>CommitCommand (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  HasOpenCommand (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = HasOpenCommand (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void AbortCommand (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>AbortCommand (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Undo (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Undo (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Redo (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Redo (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  GetAvailableUndos (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetAvailableUndos (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  GetAvailableRedos (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetAvailableRedos (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Callback  SetOnAddSObject ( in Callback theCallback )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = SetOnAddSObject ( theCallback )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Callback  SetOnRemoveSObject ( in Callback theCallback )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = SetOnRemoveSObject ( theCallback )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface StudyManager</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void ping (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>ping (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Study  NewStudy ( in string study_name )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = NewStudy ( study_name )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Study  Open ( in URL aStudyUrl )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Open ( aStudyUrl )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Close ( in Study aStudy )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Close ( aStudy )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Save ( in Study aStudy, in boolean theMultiFile )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Save ( aStudy, theMultiFile )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SaveASCII ( in Study aStudy, in boolean theMultiFile )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SaveASCII ( aStudy, theMultiFile )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SaveAs ( in URL aUrl, in Study aStudy, in boolean theMultiFile )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SaveAs ( aUrl, aStudy, theMultiFile )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SaveAsASCII ( in URL aUrl, in Study aStudy, in boolean theMultiFile )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SaveAsASCII ( aUrl, aStudy, theMultiFile )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfOpenStudies  GetOpenStudies (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetOpenStudies (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Study  GetStudyByName ( in string aStudyName )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetStudyByName ( aStudyName )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Study  GetStudyByID ( in short aStudyID )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetStudyByID ( aStudyID )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  CanCopy ( in SObject theObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = CanCopy ( theObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  Copy ( in SObject theObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Copy ( theObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  CanPaste ( in SObject theObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = CanPaste ( theObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SObject  Paste ( in SObject theObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Paste ( theObject )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface SObject</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ID  GetID (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetID (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SComponent  GetFatherComponent (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetFatherComponent (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SObject  GetFather (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetFather (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>short  Tag (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Tag (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  FindSubObject ( in long atag, out SObject obj )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>[ return_value,  obj ] = FindSubObject ( atag )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  FindAttribute ( out GenericAttribute anAttribute, in string aTypeOfAttribute )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>[ return_value,  anAttribute ] = FindAttribute ( aTypeOfAttribute )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  ReferencedObject ( out SObject obj )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>[ return_value,  obj ] = ReferencedObject (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfAttributes  GetAllAttributes (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetAllAttributes (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Study  GetStudy (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetStudy (  )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface GenericAttribute</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void CheckLocked (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>CheckLocked (  )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface SComponent</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  ComponentDataType (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = ComponentDataType (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  ComponentIOR ( out ID theID )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>[ return_value,  theID ] = ComponentIOR (  )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface SComponentIterator</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Init (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Init (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  More (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = More (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Next (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Next (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SComponent  Value (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Value (  )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface ChildIterator</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Init (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Init (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void InitEx ( in boolean allLevels )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>InitEx ( allLevels )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  More (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = More (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Next (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Next (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SObject  Value (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Value (  )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface UseCaseIterator</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Init ( in boolean allLevels )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Init ( allLevels )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  More (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = More (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Next (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Next (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SObject  Value (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Value (  )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface UseCaseBuilder</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  Append ( in SObject theObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Append ( theObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  Remove ( in SObject theObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Remove ( theObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  AppendTo ( in SObject theFather, in SObject theObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = AppendTo ( theFather, theObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  InsertBefore ( in SObject theFirst, in SObject theNext )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = InsertBefore ( theFirst, theNext )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  SetCurrentObject ( in SObject theObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = SetCurrentObject ( theObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  SetRootCurrent (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = SetRootCurrent (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  HasChildren ( in SObject theObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = HasChildren ( theObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  SetName ( in string theName )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = SetName ( theName )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  GetName (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetName (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsUseCase ( in SObject theObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsUseCase ( theObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SObject  GetCurrentObject (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetCurrentObject (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SObject  AddUseCase ( in string theName )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = AddUseCase ( theName )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>UseCaseIterator  GetUseCaseIterator ( in SObject theObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetUseCaseIterator ( theObject )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface Callback</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void OnAddSObject ( in SObject theObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>OnAddSObject ( theObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void OnRemoveSObject ( in SObject theObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>OnRemoveSObject ( theObject )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface Driver</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>TMPFile  Save ( in SComponent theComponent, in string theURL, in boolean isMultiFile )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Save ( theComponent, theURL, isMultiFile )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>TMPFile  SaveASCII ( in SComponent theComponent, in string theURL, in boolean isMultiFile )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = SaveASCII ( theComponent, theURL, isMultiFile )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  Load ( in SComponent theComponent, in TMPFile theStream, in string theURL, in boolean isMultiFile )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Load ( theComponent, theStream, theURL, isMultiFile )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  LoadASCII ( in SComponent theComponent, in TMPFile theStream, in string theURL, in boolean isMultiFile )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = LoadASCII ( theComponent, theStream, theURL, isMultiFile )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Close ( in SComponent aSComponent )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Close ( aSComponent )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  ComponentDataType (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = ComponentDataType (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  IORToLocalPersistentID ( in SObject theSObject, in string IORString, in boolean isMultiFile, in boolean isASCII )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IORToLocalPersistentID ( theSObject, IORString, isMultiFile, isASCII )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  LocalPersistentIDToIOR ( in SObject theSObject, in string aLocalPersistentID, in boolean isMultiFile, in boolean isASCII )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = LocalPersistentIDToIOR ( theSObject, aLocalPersistentID, isMultiFile, isASCII )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  CanPublishInStudy ( in Object theIOR )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = CanPublishInStudy ( theIOR )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SObject  PublishInStudy ( in Study theStudy, in SObject theSObject, in Object theObject, in string theName )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = PublishInStudy ( theStudy, theSObject, theObject, theName )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  CanCopy ( in SObject theObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = CanCopy ( theObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>TMPFile  CopyFrom ( in SObject theObject, out long theObjectID )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>[ return_value,  theObjectID ] = CopyFrom ( theObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  CanPaste ( in string theComponentName, in long theObjectID )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = CanPaste ( theComponentName, theObjectID )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>SObject  PasteInto ( in TMPFile theStream, in long theObjectID, in SObject theObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = PasteInto ( theStream, theObjectID, theObject )</b></div></td>
+</tr>
+</table><br>
+</b></HTML>
diff --git a/doc/html/INPUT/HTML/SALOMEDS_Attributes.html b/doc/html/INPUT/HTML/SALOMEDS_Attributes.html
new file mode 100644 (file)
index 0000000..7dbf29d
--- /dev/null
@@ -0,0 +1,862 @@
+<HTML><b>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeReal</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>double  Value (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Value (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetValue ( in double value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetValue ( value )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeInteger</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  Value (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Value (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetValue ( in long value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetValue ( value )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeSequenceOfReal</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Assign ( in DoubleSeq other )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Assign ( other )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>DoubleSeq  CorbaSequence (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = CorbaSequence (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Add ( in double value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Add ( value )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Remove ( in long index )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Remove ( index )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void ChangeValue ( in long index, in double value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>ChangeValue ( index, value )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>double  Value ( in short index )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Value ( index )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  Length (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Length (  )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeSequenceOfInteger</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Assign ( in LongSeq other )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Assign ( other )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>LongSeq  CorbaSequence (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = CorbaSequence (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Add ( in long value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Add ( value )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Remove ( in long index )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Remove ( index )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void ChangeValue ( in long index, in long value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>ChangeValue ( index, value )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  Value ( in short index )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Value ( index )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  Length (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Length (  )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeName</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  Value (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Value (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetValue ( in string value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetValue ( value )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeComment</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  Value (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Value (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetValue ( in string value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetValue ( value )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeIOR</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  Value (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Value (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetValue ( in string value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetValue ( value )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributePersistentRef</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  Value (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Value (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetValue ( in string value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetValue ( value )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeDrawable</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsDrawable (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsDrawable (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetDrawable ( in boolean value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetDrawable ( value )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeSelectable</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsSelectable (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsSelectable (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetSelectable ( in boolean value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetSelectable ( value )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeExpandable</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsExpandable (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsExpandable (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetExpandable ( in boolean value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetExpandable ( value )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeOpened</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsOpened (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsOpened (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetOpened ( in boolean value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetOpened ( value )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeTextColor</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Color  TextColor (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = TextColor (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetTextColor ( in Color value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetTextColor ( value )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeTextHighlightColor</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Color  TextHighlightColor (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = TextHighlightColor (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetTextHighlightColor ( in Color value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetTextHighlightColor ( value )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributePixMap</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  HasPixMap (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = HasPixMap (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  GetPixMap (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetPixMap (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetPixMap ( in string value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetPixMap ( value )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeTreeNode</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetFather ( in AttributeTreeNode value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetFather ( value )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  HasFather (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = HasFather (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>AttributeTreeNode  GetFather (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetFather (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetPrevious ( in AttributeTreeNode value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetPrevious ( value )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  HasPrevious (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = HasPrevious (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>AttributeTreeNode  GetPrevious (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetPrevious (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetNext ( in AttributeTreeNode value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetNext ( value )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  HasNext (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = HasNext (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>AttributeTreeNode  GetNext (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetNext (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetFirst ( in AttributeTreeNode value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetFirst ( value )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  HasFirst (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = HasFirst (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>AttributeTreeNode  GetFirst (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetFirst (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetTreeID ( in string value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetTreeID ( value )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  GetTreeID (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetTreeID (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Append ( in AttributeTreeNode value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Append ( value )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Prepend ( in AttributeTreeNode value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Prepend ( value )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void InsertBefore ( in AttributeTreeNode value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>InsertBefore ( value )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void InsertAfter ( in AttributeTreeNode value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>InsertAfter ( value )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Remove (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Remove (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  Depth (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Depth (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsRoot (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsRoot (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsDescendant ( in AttributeTreeNode value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsDescendant ( value )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsFather ( in AttributeTreeNode value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsFather ( value )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsChild ( in AttributeTreeNode value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsChild ( value )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  Label (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Label (  )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeLocalID</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  Value (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Value (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetValue ( in long value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetValue ( value )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeUserID</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  Value (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Value (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetValue ( in string value )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetValue ( value )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeTarget</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Add ( in SObject anObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Add ( anObject )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfSObject  Get (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Get (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Remove ( in SObject anObject )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Remove ( anObject )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeTableOfInteger</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetTitle ( in string theTitle )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetTitle ( theTitle )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  GetTitle (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetTitle (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetRowTitle ( in long theIndex, in string theTitle )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetRowTitle ( theIndex, theTitle )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetRowTitles ( in StringSeq theTitles )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetRowTitles ( theTitles )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StringSeq  GetRowTitles (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetRowTitles (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetColumnTitle ( in long theIndex, in string theTitle )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetColumnTitle ( theIndex, theTitle )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetColumnTitles ( in StringSeq theTitles )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetColumnTitles ( theTitles )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StringSeq  GetColumnTitles (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetColumnTitles (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetRowUnit ( in long theIndex, in string theUnit )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetRowUnit ( theIndex, theUnit )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetRowUnits ( in StringSeq theUnits )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetRowUnits ( theUnits )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StringSeq  GetRowUnits (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetRowUnits (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  GetNbRows (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetNbRows (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  GetNbColumns (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetNbColumns (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void AddRow ( in LongSeq theData )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>AddRow ( theData )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetRow ( in long theRow, in LongSeq theData )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetRow ( theRow, theData )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>LongSeq  GetRow ( in long theRow )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetRow ( theRow )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void AddColumn ( in LongSeq theData )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>AddColumn ( theData )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetColumn ( in long theColumn, in LongSeq theData )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetColumn ( theColumn, theData )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>LongSeq  GetColumn ( in long theColumn )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetColumn ( theColumn )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void PutValue ( in long theValue, in long theRow, in long theColumn )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>PutValue ( theValue, theRow, theColumn )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  HasValue ( in long theRow, in long theColumn )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = HasValue ( theRow, theColumn )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  GetValue ( in long theRow, in long theColumn )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetValue ( theRow, theColumn )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetNbColumns ( in long theNbColumns )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetNbColumns ( theNbColumns )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>LongSeq  GetRowSetIndices ( in long theRow )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetRowSetIndices ( theRow )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  ReadFromFile ( in TMPFile theStream )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = ReadFromFile ( theStream )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>TMPFile  SaveToFile (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = SaveToFile (  )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeTableOfReal</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetTitle ( in string theTitle )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetTitle ( theTitle )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  GetTitle (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetTitle (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetRowTitle ( in long theIndex, in string theTitle )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetRowTitle ( theIndex, theTitle )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetRowTitles ( in StringSeq theTitles )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetRowTitles ( theTitles )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StringSeq  GetRowTitles (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetRowTitles (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetColumnTitle ( in long theIndex, in string theTitle )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetColumnTitle ( theIndex, theTitle )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetColumnTitles ( in StringSeq theTitles )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetColumnTitles ( theTitles )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StringSeq  GetColumnTitles (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetColumnTitles (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetRowUnit ( in long theIndex, in string theUnit )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetRowUnit ( theIndex, theUnit )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetRowUnits ( in StringSeq theUnits )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetRowUnits ( theUnits )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StringSeq  GetRowUnits (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetRowUnits (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  GetNbRows (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetNbRows (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  GetNbColumns (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetNbColumns (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void AddRow ( in DoubleSeq theData )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>AddRow ( theData )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetRow ( in long theRow, in DoubleSeq theData )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetRow ( theRow, theData )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>DoubleSeq  GetRow ( in long theRow )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetRow ( theRow )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void AddColumn ( in DoubleSeq theData )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>AddColumn ( theData )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetColumn ( in long theColumn, in DoubleSeq theData )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetColumn ( theColumn, theData )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>DoubleSeq  GetColumn ( in long theColumn )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetColumn ( theColumn )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void PutValue ( in double theValue, in long theRow, in long theColumn )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>PutValue ( theValue, theRow, theColumn )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  HasValue ( in long theRow, in long theColumn )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = HasValue ( theRow, theColumn )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>double  GetValue ( in long theRow, in long theColumn )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetValue ( theRow, theColumn )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetNbColumns ( in long theNbColumns )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetNbColumns ( theNbColumns )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>LongSeq  GetRowSetIndices ( in long theRow )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetRowSetIndices ( theRow )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  ReadFromFile ( in TMPFile theStream )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = ReadFromFile ( theStream )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>TMPFile  SaveToFile (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = SaveToFile (  )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeTableOfString</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetTitle ( in string theTitle )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetTitle ( theTitle )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  GetTitle (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetTitle (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetRowTitle ( in long theIndex, in string theTitle )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetRowTitle ( theIndex, theTitle )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetRowTitles ( in StringSeq theTitles )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetRowTitles ( theTitles )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StringSeq  GetRowTitles (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetRowTitles (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetColumnTitle ( in long theIndex, in string theTitle )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetColumnTitle ( theIndex, theTitle )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetColumnTitles ( in StringSeq theTitles )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetColumnTitles ( theTitles )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StringSeq  GetColumnTitles (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetColumnTitles (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetRowUnit ( in long theIndex, in string theUnit )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetRowUnit ( theIndex, theUnit )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetRowUnits ( in StringSeq theUnits )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetRowUnits ( theUnits )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StringSeq  GetRowUnits (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetRowUnits (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  GetNbRows (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetNbRows (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  GetNbColumns (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetNbColumns (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void AddRow ( in StringSeq theData )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>AddRow ( theData )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetRow ( in long theRow, in StringSeq theData )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetRow ( theRow, theData )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StringSeq  GetRow ( in long theRow )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetRow ( theRow )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void AddColumn ( in StringSeq theData )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>AddColumn ( theData )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetColumn ( in long theColumn, in StringSeq theData )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetColumn ( theColumn, theData )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StringSeq  GetColumn ( in long theColumn )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetColumn ( theColumn )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void PutValue ( in string theValue, in long theRow, in long theColumn )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>PutValue ( theValue, theRow, theColumn )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  HasValue ( in long theRow, in long theColumn )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = HasValue ( theRow, theColumn )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  GetValue ( in long theRow, in long theColumn )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetValue ( theRow, theColumn )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetNbColumns ( in long theNbColumns )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetNbColumns ( theNbColumns )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>LongSeq  GetRowSetIndices ( in long theRow )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetRowSetIndices ( theRow )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  ReadFromFile ( in TMPFile theStream )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = ReadFromFile ( theStream )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>TMPFile  SaveToFile (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = SaveToFile (  )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributeStudyProperties</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetUserName ( in string theName )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetUserName ( theName )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  GetUserName (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetUserName (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetCreationDate ( in long theMinute, in long theHour, in long theDay, in long theMonth, in long theYear )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetCreationDate ( theMinute, theHour, theDay, theMonth, theYear )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  GetCreationDate ( out long theMinute, out long theHour, out long theDay, out long theMonth, out long theYear )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>[ return_value,  theMinute, theHour, theDay, theMonth, theYear ] = GetCreationDate (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetCreationMode ( in string theMode )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetCreationMode ( theMode )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  GetCreationMode (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetCreationMode (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetModified ( in long theModified )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetModified ( theModified )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsModified (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsModified (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  GetModified (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetModified (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetLocked ( in boolean theLocked )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetLocked ( theLocked )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsLocked (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsLocked (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetModification ( in string theName, in long theMinute, in long theHour, in long theDay, in long theMonth, in long theYear )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetModification ( theName, theMinute, theHour, theDay, theMonth, theYear )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void GetModificationsList ( out StringSeq theNames, out LongSeq theMinutes, out LongSeq theHours, out LongSeq theDays, out LongSeq theMonths, out LongSeq theYears, in boolean theWithCreator )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>[ theNames, theMinutes, theHours, theDays, theMonths, theYears ] = GetModificationsList ( theWithCreator )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface AttributePythonObject</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void SetObject ( in string theSequence, in boolean IsScript )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>SetObject ( theSequence, IsScript )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  GetObject (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetObject (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  IsScript (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = IsScript (  )</b></div></td>
+</tr>
+</table><br>
+</b></HTML>
diff --git a/doc/html/INPUT/HTML/SALOME_Component.html b/doc/html/INPUT/HTML/SALOME_Component.html
new file mode 100644 (file)
index 0000000..0457751
--- /dev/null
@@ -0,0 +1,78 @@
+<HTML><b>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface Container</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Container  start_impl ( in string ContainerName )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = start_impl ( ContainerName )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Component  load_impl ( in string nameToRegister, in string componentName )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = load_impl ( nameToRegister, componentName )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void remove_impl ( in Component component_i )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>remove_impl ( component_i )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void finalize_removal (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>finalize_removal (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void ping (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>ping (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  Kill_impl (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Kill_impl (  )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface Component</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void ping (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>ping (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void destroy (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>destroy (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Container  GetContainerRef (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetContainerRef (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Names ( in string aGraphName, in string aNodeName )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Names ( aGraphName, aNodeName )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  Kill_impl (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Kill_impl (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  Stop_impl (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Stop_impl (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  Suspend_impl (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Suspend_impl (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  Resume_impl (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Resume_impl (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>long  CpuUsed_impl (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = CpuUsed_impl (  )</b></div></td>
+</tr>
+</table><br>
+</b></HTML>
diff --git a/doc/html/INPUT/HTML/SALOME_DataTypeCatalog.html b/doc/html/INPUT/HTML/SALOME_DataTypeCatalog.html
new file mode 100644 (file)
index 0000000..c73173f
--- /dev/null
@@ -0,0 +1,30 @@
+<HTML><b>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface DataCatalog</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfDataTypeName  GetDataTypeList (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetDataTypeList (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  isDerivedFrom ( in string type_in, in string type_out )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = isDerivedFrom ( type_in, type_out )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  GetDataInterfaceRead ( in string type )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetDataInterfaceRead ( type )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  GetDataInterfaceWrite ( in string type )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetDataInterfaceWrite ( type )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfDataTypeName  GetDataTypeParents ( in string type )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetDataTypeParents ( type )</b></div></td>
+</tr>
+</table><br>
+</b></HTML>
diff --git a/doc/html/INPUT/HTML/SALOME_Exception.html b/doc/html/INPUT/HTML/SALOME_Exception.html
new file mode 100644 (file)
index 0000000..37c3107
--- /dev/null
@@ -0,0 +1,2 @@
+<HTML><b>
+</b></HTML>
diff --git a/doc/html/INPUT/HTML/SALOME_ModuleCatalog.html b/doc/html/INPUT/HTML/SALOME_ModuleCatalog.html
new file mode 100644 (file)
index 0000000..009c630
--- /dev/null
@@ -0,0 +1,70 @@
+<HTML><b>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface Acomponent</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfInterfaces  GetInterfaceList (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetInterfaceList (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>DefinitionInterface  GetInterface ( in string interfacename )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetInterface ( interfacename )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfServices  GetServiceList ( in string interfacename )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetServiceList ( interfacename )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Service  GetService ( in string interfacename, in string servicename )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetService ( interfacename, servicename )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Service  GetDefaultService ( in string interfacename )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetDefaultService ( interfacename )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  GetPathPrefix ( in string machinename )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetPathPrefix ( machinename )</b></div></td>
+</tr>
+</table><br>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface ModuleCatalog</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void ping (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>ping (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfComputers  GetComputerList (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetComputerList (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  GetPathPrefix ( in string machinename )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetPathPrefix ( machinename )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfComponents  GetComponentList (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetComponentList (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfIAPP_Affich  GetComponentIconeList (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetComponentIconeList (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfComponents  GetTypedComponentList ( in ComponentType component_type )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetTypedComponentList ( component_type )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Acomponent  GetComponent ( in string componentname )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetComponent ( componentname )</b></div></td>
+</tr>
+</table><br>
+</b></HTML>
diff --git a/doc/html/INPUT/HTML/SALOME_Registry.html b/doc/html/INPUT/HTML/SALOME_Registry.html
new file mode 100644 (file)
index 0000000..fd319e1
--- /dev/null
@@ -0,0 +1,42 @@
+<HTML><b>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface Components</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void ping (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>ping (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>unsigned long  add ( in Infos lesInfos )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = add ( lesInfos )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void remove ( in unsigned long id )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>remove ( id )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>unsigned long  size (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = size (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>AllInfos  getall (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = getall (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>AllInfos  history (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = history (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void end (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>end (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void hello ( in unsigned long id )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>hello ( id )</b></div></td>
+</tr>
+</table><br>
+</b></HTML>
diff --git a/doc/html/INPUT/HTML/SALOME_RessourcesCatalog.html b/doc/html/INPUT/HTML/SALOME_RessourcesCatalog.html
new file mode 100644 (file)
index 0000000..787a628
--- /dev/null
@@ -0,0 +1,22 @@
+<HTML><b>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface RessourcesCatalog</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfComputer  GetComputerList (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetComputerList (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>ListOfContainerType  GetContainerTypeList ( in string computer )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetContainerTypeList ( computer )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>computer_info  GetComputerInfo ( in string computer )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetComputerInfo ( computer )</b></div></td>
+</tr>
+</table><br>
+</b></HTML>
diff --git a/doc/html/INPUT/HTML/SALOME_Session.html b/doc/html/INPUT/HTML/SALOME_Session.html
new file mode 100644 (file)
index 0000000..804a067
--- /dev/null
@@ -0,0 +1,30 @@
+<HTML><b>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface Session</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void GetInterface (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>GetInterface (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>Component  GetVisuGen (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetVisuGen (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void StopSession (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>StopSession (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>StatSession  GetStatSession (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = GetStatSession (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void ping (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>ping (  )</b></div></td>
+</tr>
+</table><br>
+</b></HTML>
diff --git a/doc/html/INPUT/HTML/SALOME_TestComponent.html b/doc/html/INPUT/HTML/SALOME_TestComponent.html
new file mode 100644 (file)
index 0000000..44a507f
--- /dev/null
@@ -0,0 +1,14 @@
+<HTML><b>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface TestComponent</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>string  Coucou ( in long L )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Coucou ( L )</b></div></td>
+</tr>
+</table><br>
+</b></HTML>
diff --git a/doc/html/INPUT/HTML/TestNotif.html b/doc/html/INPUT/HTML/TestNotif.html
new file mode 100644 (file)
index 0000000..a181974
--- /dev/null
@@ -0,0 +1,22 @@
+<HTML><b>
+<table width="100%" BORDER>
+<tr bgcolor="#FFFFCC">
+<td colspan="11"><font size="+3"><b><div align="center"><i>interface Solver</i></div></b></font></td>
+</tr>
+<td width="50%" bgcolor= "lightgreen" ><font size="+2"><div align="center"><b><i>IDL file</i></b></div></font></td>
+<td width="50%" bgcolor= "lightgreen"><font size="+2"><div align="center"><b><i>Python</i></b></div></font></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>boolean  Connect (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>return_value = Connect (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void Start (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>Start (  )</b></div></td>
+</tr>
+<tr>
+<td bgcolor= "lightgreen"><div align="center"><b>void ReStart (  )</b></div></td>
+<td bgcolor= "lightgreen"><div align="center"><b>ReStart (  )</b></div></td>
+</tr>
+</table><br>
+</b></HTML>
diff --git a/doc/html/INPUT/HTML/TypeData.html b/doc/html/INPUT/HTML/TypeData.html
new file mode 100644 (file)
index 0000000..37c3107
--- /dev/null
@@ -0,0 +1,2 @@
+<HTML><b>
+</b></HTML>
diff --git a/doc/html/INPUT/doxyfile b/doc/html/INPUT/doxyfile
new file mode 100755 (executable)
index 0000000..61c8e7e
--- /dev/null
@@ -0,0 +1,209 @@
+# Doxyfile 1.3-rc1
+
+#---------------------------------------------------------------------------
+# General configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME           = "SALOME v.1.4.0"
+PROJECT_NUMBER         = id#1.1
+OUTPUT_DIRECTORY       = ../
+OUTPUT_LANGUAGE        = English
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = YES
+EXTRACT_STATIC         = YES
+EXTRACT_LOCAL_CLASSES  = YES
+HIDE_UNDOC_MEMBERS     = NO
+HIDE_UNDOC_CLASSES     = NO
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = NO
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = NO
+ALWAYS_DETAILED_SEC    = YES
+INLINE_INHERITED_MEMB  = YES
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = 
+INTERNAL_DOCS          = YES
+CASE_SENSE_NAMES       = YES
+SHORT_NAMES            = NO
+HIDE_SCOPE_NAMES       = NO
+VERBATIM_HEADERS       = YES
+SHOW_INCLUDE_FILES     = YES
+JAVADOC_AUTOBRIEF      = YES
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = NO
+INHERIT_DOCS           = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = NO
+DISTRIBUTE_GROUP_DOC   = NO
+TAB_SIZE               = 5
+GENERATE_TODOLIST      = YES
+GENERATE_TESTLIST      = YES
+GENERATE_BUGLIST       = YES
+GENERATE_DEPRECATEDLIST= YES
+ALIASES                = 
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 25
+OPTIMIZE_OUTPUT_FOR_C  = YES
+OPTIMIZE_OUTPUT_JAVA   = YES
+SHOW_USED_FILES        = NO
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = NO
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           = log.txt
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT                  = ../../../share/salome/idl/SALOME_ModuleCatalog.idl \
+                         ../../../share/salome/idl/SALOMEDS.idl \
+                         ../../../share/salome/idl/SALOME_Exception.idl \
+                         ../../../share/salome/idl/SALOMEDS_Attributes.idl \
+                         ../../../share/salome/idl/SALOME_Session.idl \
+                         ../../../share/salome/idl/SALOME_Component.idl \
+                         ../../../share/salome/src/LifeCycleCORBA/SALOME_LifeCycleCORBA.hxx \
+                         ../../../share/salome/src/NamingService/SALOME_NamingService.hxx \
+                         ../../../share/salome/src/NamingService/SALOME_NamingService.cxx \
+                         ../../../share/salome/src/LifeCycleCORBA/SALOME_LifeCycleCORBA.cxx
+FILE_PATTERNS          = 
+RECURSIVE              = NO
+EXCLUDE                = 
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = 
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = sources/
+INPUT_FILTER           = 
+FILTER_SOURCE_FILES    = YES
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = NO
+INLINE_SOURCES         = NO
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = NO
+REFERENCES_RELATION    = YES
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX     = NO
+COLS_IN_ALPHA_INDEX    = 5
+IGNORE_PREFIX          = 
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML          = YES
+HTML_OUTPUT            = html
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            = sources/myheader.html
+HTML_FOOTER            = 
+HTML_STYLESHEET        = 
+HTML_ALIGN_MEMBERS     = YES
+GENERATE_HTMLHELP      = NO
+CHM_FILE               = 
+HHC_LOCATION           = 
+GENERATE_CHI           = NO
+BINARY_TOC             = YES
+TOC_EXPAND             = YES
+DISABLE_INDEX          = YES
+ENUM_VALUES_PER_LINE   = 4
+GENERATE_TREEVIEW      = YES
+TREEVIEW_WIDTH         = 250
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX         = NO
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = a4wide
+EXTRA_PACKAGES         = 
+LATEX_HEADER           = 
+PDF_HYPERLINKS         = NO
+USE_PDFLATEX           = NO
+LATEX_BATCHMODE        = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF           = NO
+RTF_OUTPUT             = rtf
+COMPACT_RTF            = NO
+RTF_HYPERLINKS         = NO
+RTF_STYLESHEET_FILE    = 
+RTF_EXTENSIONS_FILE    = 
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN           = NO
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML           = NO
+XML_SCHEMA             = 
+XML_DTD                = 
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF   = NO
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD       = NO
+PERLMOD_LATEX          = NO
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX = 
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = YES
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = YES
+INCLUDE_PATH           = 
+INCLUDE_FILE_PATTERNS  = 
+PREDEFINED             = 
+EXPAND_AS_DEFINED      = 
+SKIP_FUNCTION_MACROS   = NO
+#---------------------------------------------------------------------------
+# Configuration::addtions related to external references   
+#---------------------------------------------------------------------------
+TAGFILES               = 
+GENERATE_TAGFILE       = 
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+PERL_PATH              = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = YES
+HIDE_UNDOC_RELATIONS   = NO
+HAVE_DOT               = YES
+CLASS_GRAPH            = YES
+COLLABORATION_GRAPH    = NO
+TEMPLATE_RELATIONS     = YES
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = NO
+GRAPHICAL_HIERARCHY    = YES
+DOT_IMAGE_FORMAT       = jpg
+DOT_PATH               = 
+DOTFILE_DIRS           = 
+MAX_DOT_GRAPH_WIDTH    = 1024
+MAX_DOT_GRAPH_HEIGHT   = 1200
+GENERATE_LEGEND        = NO
+DOT_CLEANUP            = YES
+#---------------------------------------------------------------------------
+# Configuration::addtions related to the search engine   
+#---------------------------------------------------------------------------
+SEARCHENGINE           = NO
+CGI_NAME               = search.cgi
+CGI_URL                = 
+DOC_URL                = 
+DOC_ABSPATH            = 
+BIN_ABSPATH            = /usr/local/bin/
+EXT_DOC_PATHS          = 
diff --git a/doc/html/INPUT/exemple/Example1.html b/doc/html/INPUT/exemple/Example1.html
new file mode 100755 (executable)
index 0000000..1ec12ba
--- /dev/null
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Exemple</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>#%AttributeReal interface (creations/saving/restoring)%\r
+#%Methods : FindOrCreateAttribute, Value, SaveAs, SetValue, FindComponent, FindAttribute, Open%\r
+\r
+\r
+# &nbsp; &nbsp; &nbsp; create AttributeReal &nbsp; &nbsp; &nbsp;\r
+#=================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributeReal&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeReal attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeReal)\r
+A.SetValue(0.0001)\r
+if A.Value() != 0.0001:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error : wrong value of &nbsp;AttributeReal&quot;\r
+\r
+# &nbsp; &nbsp; &nbsp;save / restore study &nbsp; &nbsp; &nbsp;\r
+#=================================\r
+\r
+str= os.getenv(&quot;TmpDir&quot;)\r
+if str == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;/tmp&quot;\r
+file = str+&quot;/test.hdf&quot;\r
+\r
+#file = &quot;/tmp/ggg.hdf&quot;\r
+\r
+print &quot; ------- &nbsp;We will save to&quot;, file, &quot;-----------&quot;\r
+\r
+batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)\r
+openedStudy=batchmode_geompy.myStudyManager.Open(file)\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+# &nbsp; &nbsp; find AttributeReal\r
+#=================================\r
+\r
+res,A=father.FindAttribute(&quot;AttributeReal&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeReal&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeReal)\r
+if A.Value() != 0.0001:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error : wrong value of &nbsp;AttributeReal&quot;\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example10.html b/doc/html/INPUT/exemple/Example10.html
new file mode 100755 (executable)
index 0000000..fde0125
--- /dev/null
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Example</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>#%AttributeExpandable interface(creations/saving/restoring)%\r
+#%SALOMEDS methods : SaveAs FindComponent &nbsp;FindAttribute Open%\r
+#%Attribute methods : SetExpandable IsExpandable%\r
+\r
+# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;create &nbsp; &nbsp;AttributeExpandable\r
+#===========================================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute( batchmode_geompy.father, &quot;AttributeExpandable&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeExpandable attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeExpandable)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeExpandable attribute&quot;\r
+\r
+A.SetExpandable(1)\r
+\r
+if A.IsExpandable() == 0:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;&quot;Error: wrong value of AttributeExpandable&quot;\r
+\r
+\r
+# &nbsp; &nbsp; &nbsp;save / restore study &nbsp; &nbsp; &nbsp;\r
+#============================================================\r
+str= os.getenv(&quot;TmpDir&quot;)\r
+if str == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;/tmp&quot;\r
+file = str+&quot;/test.hdf&quot;\r
+\r
+batchmode_geompy.myStudyManager.SaveAs(file, &nbsp;batchmode_geompy.myStudy)\r
+openedStudy = batchmode_geompy.myStudyManager.Open(file);\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+# &nbsp; &nbsp; find &nbsp; AttributeExpandable\r
+#============================================================\r
+\r
+res,A=father.FindAttribute(&quot;AttributeExpandable&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeExpandable&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeExpandable)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeExpandable attribute&quot;\r
+\r
+if A.IsExpandable() == 0:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;&quot;Error: wrong value of AttributeExpandable&quot;\r
+\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example11.html b/doc/html/INPUT/exemple/Example11.html
new file mode 100755 (executable)
index 0000000..38218bd
--- /dev/null
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Example</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>#%Test AttributeOpened (creations/saving/restoring)%\r
+#%SALOMEDS methods : FindOrCreateAttribute SaveAs, FindComponent, FindAttribute, Open%\r
+#%Attribute methods : SetOpened, IsOpened%\r
+\r
+# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;create &nbsp; &nbsp;AttributeOpened\r
+#===========================================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributeOpened&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeOpened attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeOpened)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeOpened attribute&quot;\r
+\r
+A.SetOpened(1)\r
+\r
+if A.IsOpened() == 0:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;&quot;Error: wrong value of AttributeOpened&quot;\r
+\r
+\r
+# &nbsp; &nbsp; &nbsp;save / restore study &nbsp; &nbsp; &nbsp;\r
+#============================================================\r
+str= os.getenv(&quot;TmpDir&quot;)\r
+if str == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;/tmp&quot;\r
+file = str+&quot;/test.hdf&quot;\r
+\r
+batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)\r
+openedStudy=batchmode_geompy.myStudyManager.Open(file);\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+# &nbsp; &nbsp; find &nbsp; AttributeOpened\r
+#============================================================\r
+\r
+res,A=father.FindAttribute(&quot;AttributeOpened&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeOpened&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeOpened)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeOpened attribute&quot;\r
+\r
+if A.IsOpened() == 0:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;&quot;Error: wrong value of AttributeOpened&quot;\r
+\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example12.html b/doc/html/INPUT/exemple/Example12.html
new file mode 100755 (executable)
index 0000000..57c5d45
--- /dev/null
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Example</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>#%AttributeTextColor interface (creations/saving/restoring)%\r
+#%SALOMEDS methods : FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, Open%\r
+#%Attribute methods : SetTextColor &nbsp;TextColor%\r
+\r
+\r
+#--------------------------------------------------------------------------\r
+# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;create &nbsp; &nbsp;AttributeTextColor\r
+#===========================================================\r
+import SALOMEDS_Attributes_idl\r
+color = SALOMEDS_Attributes_idl._0_SALOMEDS.Color(234,345,231)\r
+\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributeTextColor&quot;)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeTextColor attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeTextColor)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeTextColor attribute&quot;\r
+\r
+A.SetTextColor(color)\r
+\r
+c = A.TextColor();\r
+\r
+if c.R != 234 or c.G != 345 or c.B != 231:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Error: wrong value of AttributeTextColor&quot;\r
+\r
+# &nbsp; &nbsp; &nbsp;save / restore study &nbsp; &nbsp; &nbsp;\r
+#============================================================\r
+str= os.getenv(&quot;TmpDir&quot;)\r
+if str == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;/tmp&quot;\r
+file = str+&quot;/test.hdf&quot;\r
+\r
+batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)\r
+openedStudy = batchmode_geompy.myStudyManager.Open(file);\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+# &nbsp; &nbsp; &nbsp; find &nbsp; AttributeTextColor\r
+#============================================================\r
+\r
+res,A=father.FindAttribute(&quot;AttributeTextColor&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeTextColor&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeTextColor)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeTextColor attribute&quot;\r
+\r
+c = A.TextColor();\r
+if c.R != 234 or c.G != 345 or c.B != 231:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Error: wrong value of AttributeTextColor&quot;\r
+\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example13.html b/doc/html/INPUT/exemple/Example13.html
new file mode 100755 (executable)
index 0000000..9ecf996
--- /dev/null
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Example</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>#%Test AttributeTextHighlightColor interface(creations/saving/restoring)%\r
+#%SALOMEDS methods : FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, Open%\r
+#%Attribute methods : &nbsp;SetTextHighlightColor TextHighlightColor%\r
+\r
+#--------------------------------------------------------------------------\r
+# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;create &nbsp; &nbsp;AttributeTextHighlightColor\r
+#===========================================================\r
+\r
+import SALOMEDS_Attributes_idl\r
+highlightcolor=SALOMEDS_Attributes_idl._0_SALOMEDS.Color(256,256,256)\r
+\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributeTextHighlightColor&quot;)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeTextHighlightColor attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeTextHighlightColor)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeTextHighlightColor attribute&quot;\r
+\r
+A.SetTextHighlightColor(highlightcolor)\r
+\r
+c = A.TextHighlightColor();\r
+if c.R != 256 or c.G != 256 or c.B != 256:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Error: wrong value of AttributeTextHighlightColor&quot;\r
+\r
+\r
+# &nbsp; &nbsp; &nbsp;save / restore study &nbsp; &nbsp; &nbsp;\r
+#============================================================\r
+str= os.getenv(&quot;TmpDir&quot;)\r
+if str == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;/tmp&quot;\r
+file = str+&quot;/test.hdf&quot;\r
+\r
+batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)\r
+openedStudy=batchmode_geompy.myStudyManager.Open(file);\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+# &nbsp; &nbsp; &nbsp; find &nbsp; AttributeTextHighlightColor\r
+#============================================================\r
+\r
+res, A = father.FindAttribute(&quot;AttributeTextHighlightColor&quot;)\r
+print res, A\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeTextHighlightColor&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeTextHighlightColor)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeTextHighlightColor attribute&quot;\r
+\r
+c = A.TextHighlightColor();\r
+\r
+if c.R != 256 or c.G != 256 or c.B != 256:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Error: wrong value of AttributeTextTextHighlightColor&quot;\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example14.html b/doc/html/INPUT/exemple/Example14.html
new file mode 100755 (executable)
index 0000000..a4e0ada
--- /dev/null
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Example</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>#%AttributePixMap interface (creations/saving/restoring)%\r
+#%SALOMEDS methods &nbsp;: FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, Open%\r
+#%Attribute methods : SetPixMap, GetPixMap%\r
+\r
+#--------------------------------------------------------------------------\r
+\r
+#--------------------------------------------------------------------------\r
+# &nbsp; create &nbsp;AttributePixMap\r
+#===============================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributePixMap&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributePixMap attribute&quot;\r
+aPixmap = A._narrow(SALOMEDS.AttributePixMap);\r
+aPixmap.SetPixMap( &quot;ICON_OBJBROWSER_Geometry&quot; );\r
+\r
+if aPixmap.GetPixMap() != &quot;ICON_OBJBROWSER_Geometry&quot;:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Error: wrong value of AttributePixMap&quot;\r
+\r
+\r
+# &nbsp; &nbsp; &nbsp;save / restore study &nbsp; &nbsp; &nbsp;\r
+#============================================================\r
+str= os.getenv(&quot;TmpDir&quot;)\r
+if str == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;/tmp&quot;\r
+file = str+&quot;/test.hdf&quot;\r
+\r
+batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)\r
+openedStudy = batchmode_geompy.myStudyManager.Open(file);\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+# &nbsp; &nbsp; &nbsp; find &nbsp; AttributePixMap\r
+#============================================================\r
+\r
+res,A=father.FindAttribute(&quot;AttributePixMap&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: AttributePixMap not found &quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributePixMap)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributePixMap attribute&quot;\r
+\r
+if A.GetPixMap() != &quot;ICON_OBJBROWSER_Geometry&quot;:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Error: wrong value of AttributePixMap&quot;\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example15.html b/doc/html/INPUT/exemple/Example15.html
new file mode 100755 (executable)
index 0000000..f6cddac
--- /dev/null
@@ -0,0 +1,51 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Example</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>#%AttributeLocalID interface(creations/saving/restoring)%\r
+#%SALOMEDS methods : FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, Open% &nbsp; &nbsp;\r
+#%Attribute methods : Value, &nbsp;SetValue%\r
+\r
+# &nbsp; &nbsp; &nbsp; create AttributeLocalID\r
+#=================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributeLocalID&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeLocalID attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeLocalID)\r
+\r
+A.SetValue(763242882)\r
+\r
+if A.Value() != 763242882:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Error: wrong value of AttributeLocalID&quot;\r
+\r
+# &nbsp; &nbsp; &nbsp;save / restore study &nbsp; &nbsp; &nbsp;\r
+#=================================\r
+str= os.getenv(&quot;TmpDir&quot;)\r
+if str == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;/tmp&quot;\r
+file = str+&quot;/test.hdf&quot;\r
+\r
+batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)\r
+openedStudy = batchmode_geompy.myStudyManager.Open(file);\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+# &nbsp; &nbsp; find &nbsp;AttributeLocalID\r
+#=================================\r
+\r
+res,A=father.FindAttribute(&quot;AttributeLocalID&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeLocalID&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeLocalID)\r
+\r
+if A.Value() != 763242882:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Error: wrong value of AttributeLocalID&quot;\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example16.html b/doc/html/INPUT/exemple/Example16.html
new file mode 100755 (executable)
index 0000000..ec8bfd5
--- /dev/null
@@ -0,0 +1,158 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Example</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>Methods : GetAvailableUndos, ChangeValue, FindOrCreateAttribute, SaveAs, GetAvailableRedos, Undo, FindComponent, Redo, FindAttribute, Open, CommitCommand, NewCommand\r
+\r
+\r
+dir= os.getenv(&quot;TmpDir&quot;)\r
+if dir == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;dir = &quot;/tmp&quot;\r
+\r
+batchmode_geompy.myBuilder._set_UndoLimit(20)\r
+\r
+# 1st transaction -----------------------------------------\r
+batchmode_geompy.myBuilder.NewCommand()\r
+# &nbsp; &nbsp; &nbsp; create AttributeSequenceOfInteger &nbsp; &nbsp; &nbsp;\r
+#=========================================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributeSequenceOfInteger&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeSequenceOfInteger attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeSequenceOfInteger)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeSequenceOfInteger attribute&quot;\r
+\r
+A.Add(100)\r
+A.Add(300)\r
+A.Add(500)\r
+A.Add(400)\r
+A.Add(700)\r
+print &quot;First transaction goes on : &nbsp;HasOpenCommand() = &quot;, batchmode_geompy.myBuilder.HasOpenCommand()\r
+batchmode_geompy.myBuilder.CommitCommand() #--------------\r
+\r
+# 2nd transaction ------------------------------------------\r
+batchmode_geompy.myBuilder.NewCommand() \r
+A.Remove(3)\r
+A.ChangeValue(4,500)\r
+batchmode_geompy.myBuilder.CommitCommand() #--------------\r
+\r
+if batchmode_geompy.myBuilder.GetAvailableUndos() == 0:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise RuntimeError, &quot;GetAvailableUndos() = 0 but must not !&quot;\r
+\r
+if A.Length() != 4:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Wrong length of SequenceOfInteger&quot;\r
+if A.Value(1) != 100 or A.Value(2) != 300 or A.Value(3) != 400 or A.Value(4) != 500:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Wrong &nbsp;value of &nbsp;AttributeSequenceOfInteger&quot;\r
+\r
+file1 = dir + &quot;/test1.hdf&quot;\r
+batchmode_geompy.myStudyManager.SaveAs(file1, batchmode_geompy.myStudy)\r
+\r
+# 1st Undo ---------------------------------------\r
+batchmode_geompy.myBuilder.Undo()\r
+res, A = batchmode_geompy.myBuilder.FindAttribute(batchmode_geompy.father, &quot;AttributeSequenceOfInteger&quot;)\r
+if A is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;After first 'undo' can't find AttributeSequenceOfInteger&quot;\r
+if A.Length() != 5:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Wrong length of SequenceOfInteger&quot;\r
+if A.Value(1) != 100 or A.Value(2) != 300 or A.Value(3) != 500 or A.Value(4) != 400 or &nbsp;A.Value(5) != 700:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &nbsp;A.Value(1), A.Value(2), A.Value(3), A.Value(4), A.Value(5)\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Wrong &nbsp;value of &nbsp;AttributeSequenceOfInteger after the first 'undo'!&quot;\r
+# save \r
+file2 = dir + &quot;/test2.hdf&quot;\r
+batchmode_geompy.myStudyManager.SaveAs(file2, batchmode_geompy.myStudy)\r
+#-------------------------------------------------\r
+# 2nd Undo ---------------------------------------\r
+batchmode_geompy.myBuilder.Undo()\r
+res, attr = batchmode_geompy.myBuilder.FindAttribute(batchmode_geompy.father, &quot;AttributeSequenceOfInteger&quot;)\r
+if res !=0 or attr != None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;After the second 'undo' AttributeSequenceOfInteger exists but must not!&quot;\r
+file3 = dir + &quot;/test3.hdf&quot;\r
+batchmode_geompy.myStudyManager.SaveAs(file3, batchmode_geompy.myStudy)\r
+#-------------------------------------------------\r
+\r
+#make redo twice ---------------------------------\r
+if batchmode_geompy.myBuilder.GetAvailableRedos() == 0:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise RuntimeError, &quot;GetAvailableRedos() = 0 but must not !&quot;\r
+batchmode_geompy.myBuilder.Redo()\r
+batchmode_geompy.myBuilder.Redo()\r
+res, A = batchmode_geompy.myBuilder.FindAttribute(batchmode_geompy.father, &quot;AttributeSequenceOfInteger&quot;)\r
+if res ==0 or A== None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;AttributeSequenceOfInteger is not found but must be!&quot;\r
+if A.Length() != 4:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Wrong length of SequenceOfInteger&quot;\r
+if A.Value(1) != 100 or A.Value(2) != 300 or A.Value(3) != 400 or A.Value(4) != 500:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Wrong &nbsp;value of &nbsp;AttributeSequenceOfInteger&quot;\r
+\r
+\r
+#----------------------------------------------------------------------\r
+openedStudy=batchmode_geompy.myStudyManager.Open(file1);\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+# &nbsp; &nbsp; find AttributeSequenceOfInteger\r
+#======================================\r
+\r
+res,A=father.FindAttribute(&quot;AttributeSequenceOfInteger&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeSequenceOfInteger&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeSequenceOfInteger)\r
+\r
+if A.Length() != 4:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Wrong length of SequenceOfInteger&quot;\r
+if A.Value(1) != 100 or A.Value(2) != 300 or A.Value(3) != 400 or A.Value(4) != 500:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Wrong &nbsp;value of &nbsp;AttributeSequenceOfInteger&quot;\r
+#----------------------------------------------------------------------\r
+openedStudy=batchmode_geompy.myStudyManager.Open(file2);\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+# &nbsp; &nbsp; find AttributeSequenceOfInteger\r
+#======================================\r
+\r
+res,A=father.FindAttribute(&quot;AttributeSequenceOfInteger&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeSequenceOfInteger&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeSequenceOfInteger)\r
+\r
+if A.Length() != 5:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Wrong length of SequenceOfInteger&quot;\r
+if A.Value(1) != 100 or A.Value(2) != 300 or A.Value(3) != 500 or A.Value(4) != 400 or &nbsp;A.Value(5) != 700:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Wrong &nbsp;value of &nbsp;AttributeSequenceOfInteger after the first 'undo'!&quot;\r
+\r
+#----------------------------------------------------------------------\r
+openedStudy=batchmode_geompy.myStudyManager.Open(file3);\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+# &nbsp; &nbsp; find AttributeSequenceOfInteger\r
+#======================================\r
+\r
+res,A=father.FindAttribute(&quot;AttributeSequenceOfInteger&quot;)\r
+\r
+if res!=0 or A != None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise RuntimeError, &quot; AttributeSequenceOfInteger is found but must not!&quot;\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example17.html b/doc/html/INPUT/exemple/Example17.html
new file mode 100755 (executable)
index 0000000..458ba1e
--- /dev/null
@@ -0,0 +1,162 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Example</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>#% Check &nbsp;methods : %\r
+SALOMEDS methods : RemoveAttribute, FindOrCreateAttribute, NewStudy, GetAllAttributes, NewCommand, CommitCommand, AbortCommand, NewComponent%\r
+\r
+batchmode_geompy.myBuilder._set_UndoLimit(20)\r
+\r
+batchmode_geompy.myBuilder.NewCommand() \r
+child = batchmode_geompy.myBuilder.NewObject(batchmode_geompy.father)\r
+batchmode_geompy.myBuilder.CommitCommand()\r
+\r
+batchmode_geompy.myBuilder.NewCommand() \r
+#==========================================================\r
+# &nbsp; &nbsp; &nbsp; create AttributeSequenceOfReal &nbsp; &nbsp; &nbsp;\r
+#==========================================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child, &quot;AttributeSequenceOfReal&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeSequenceOfReal attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeSequenceOfReal)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;_narrow returns None instead of AttributeSequenceOfReal pointer&quot;\r
+\r
+A.Add(0.0293)\r
+A.Add(522)\r
+A.Add(98234)\r
+A.Add(83.287)\r
+batchmode_geompy.myBuilder.CommitCommand()\r
+\r
+\r
+batchmode_geompy.myBuilder.NewCommand() \r
+#==========================================================\r
+# &nbsp; &nbsp; &nbsp;create &nbsp;AttributeInteger &nbsp; &nbsp; &nbsp;\r
+#==========================================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child, &quot;AttributeInteger&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeInteger attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeInteger)\r
+A.SetValue(1000000)\r
+\r
+if A.Value() != 1000000:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error : wrong value of &nbsp;AttributeInteger&quot;\r
+\r
+batchmode_geompy.myBuilder.CommitCommand()\r
+\r
+batchmode_geompy.myBuilder.NewCommand() #===================\r
+# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;create AttributeName &nbsp; &nbsp; \r
+#===========================================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child, &quot;AttributeName&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeName attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeName)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeName attribute&quot;\r
+A.SetValue(&quot;AttributesTesting&quot;)\r
+\r
+if A.Value() != &quot;AttributesTesting&quot;:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Wrong &nbsp;value of AttributeName&quot; &nbsp; &nbsp; &nbsp; &nbsp;\r
+\r
+batchmode_geompy.myBuilder.CommitCommand()\r
+\r
+batchmode_geompy.myBuilder.NewCommand() #===================\r
+# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;create &nbsp; &nbsp; AttributeComment \r
+#===========================================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child, &quot;AttributeComment&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeComment attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeComment)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeComment attribute&quot;\r
+\r
+A.SetValue(&quot;GEOM&quot;)\r
+\r
+batchmode_geompy.myBuilder.AbortCommand()\r
+\r
+batchmode_geompy.myBuilder.NewCommand() #===================\r
+# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; create &nbsp; AttributePersistentRef &nbsp; \r
+#===========================================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child, &quot;AttributePersistentRef&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributePersistentRef attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributePersistentRef)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributePersistentRef attribute&quot;\r
+\r
+A.SetValue(&quot;/tmp/test;1&quot;)\r
+batchmode_geompy.myBuilder.CommitCommand()\r
+\r
+batchmode_geompy.myBuilder.NewCommand() &nbsp;#===================================\r
+# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;create &nbsp; &nbsp;AttributeDrawable &nbsp;\r
+#===========================================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child, &quot;AttributeDrawable&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeDrawable attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeDrawable)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeDrawable attribute&quot;\r
+\r
+A.SetDrawable(1)\r
+\r
+if A.IsDrawable() == 0:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;&quot;Error: wrong value of AttributeDrawable&quot;\r
+batchmode_geompy.myBuilder.CommitCommand()\r
+\r
+\r
+\r
+batchmode_geompy.myBuilder.NewCommand() #===================\r
+# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;create &nbsp; &nbsp;AttributeSelectable &nbsp;\r
+#===========================================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child, &quot;AttributeSelectable&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeSelectable attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeSelectable)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeSelectable attribute&quot;\r
+\r
+A.SetSelectable(1)\r
+\r
+if A.IsSelectable() == 0:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;&quot;Error: wrong value of AttributeSelectable&quot;\r
+batchmode_geompy.myBuilder.CommitCommand()\r
+\r
+\r
+batchmode_geompy.myBuilder.NewCommand() #===================\r
+#===========================================================\r
+batchmode_geompy.myBuilder.RemoveAttribute(child,&quot;AttributeSelectable&quot;)\r
+batchmode_geompy.myBuilder.CommitCommand()\r
+\r
+# Control the attributes \r
+#===========================================================\r
+\r
+res, A = batchmode_geompy.myBuilder.FindAttribute(child, &quot;AttributeComment&quot;)\r
+print &quot;res = &quot;, res\r
+if A != None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot; AttributeComment was found&quot;\r
+else:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot; AttributeComment is not found. It's correct&quot;\r
+\r
+attributes=[]\r
\r
+attributes = child.GetAllAttributes()\r
+\r
+length = len(attributes)\r
+\r
+print &quot;Attributes number = &quot;, length\r
+print attributes\r
+for i in range(0, length) :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;attr = attributes[i]\r
+ &nbsp; &nbsp; &nbsp; &nbsp;if attr is None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;print i,&quot;None item of object attributes list&quot;\r
+\r
+if length != 5 :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise RuntimeError, &quot;Wrong number of attributes&quot;\r
+\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example18.html b/doc/html/INPUT/exemple/Example18.html
new file mode 100755 (executable)
index 0000000..a6c00d6
--- /dev/null
@@ -0,0 +1,171 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Example</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>#%AttributeTreeNode interface(creations/saving/restoring)%\r
+#%SALOMEDS methods : FindOrCreateAttribute, NewObject%\r
+#%Attribute methods : HasFirst, HasFather, SetPrevious, Next, InsertAfter, GetFather, HasNext, SetValue, Append, NewStudy, Label, IsRoot, Prepend, SetFather, Depth, HasPrevious%\r
+\r
+child1 = batchmode_geompy.myBuilder.NewObject(batchmode_geompy.father)\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child1,&quot;AttributeName&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeName attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeName)\r
+A.SetValue(&quot;N1&quot;)\r
+N1 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child1, &quot;AttributeTreeNode&quot;)\r
+if N1 == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeTreeNode attribute&quot;\r
+\r
+child2 = batchmode_geompy.myBuilder.NewObject(batchmode_geompy.father)\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child2,&quot;AttributeName&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeName attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeName)\r
+A.SetValue(&quot;N2&quot;)\r
+N2 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child2, &quot;AttributeTreeNode&quot;)\r
+if N2 == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeTreeNode attribute&quot;\r
+\r
+child3 = batchmode_geompy.myBuilder.NewObject(batchmode_geompy.father)\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child3,&quot;AttributeName&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeName attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeName)\r
+A.SetValue(&quot;N3&quot;)\r
+N3 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child3, &quot;AttributeTreeNode&quot;)\r
+if N3 == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeTreeNode attribute&quot;\r
+\r
+\r
+child11 = batchmode_geompy.myBuilder.NewObject(child1)\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child11,&quot;AttributeName&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeName attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeName)\r
+A.SetValue(&quot;N11&quot;)\r
+\r
+N11 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child11, &quot;AttributeTreeNode&quot;)\r
+\r
+if N11 == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeTreeNode attribute&quot;\r
+\r
+child111 = batchmode_geompy.myBuilder.NewObject(child11)\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child111, &quot;AttributeName&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeName attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeName)\r
+A.SetValue(&quot;N111&quot;)\r
+\r
+N111 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child111, &quot;AttributeTreeNode&quot;)\r
+\r
+if N111 == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeTreeNode attribute&quot;\r
\r
+\r
+child31 = batchmode_geompy.myBuilder.NewObject(child3)\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child31,&quot;AttributeName&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeName attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeName)\r
+A.SetValue(&quot;N31&quot;)\r
+\r
+N31 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child31, &quot;AttributeTreeNode&quot;)\r
+if N31 == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeTreeNode attribute&quot;\r
+\r
+child32 = batchmode_geompy.myBuilder.NewObject(child3)\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child32,&quot;AttributeName&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeName attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeName)\r
+A.SetValue(&quot;N32&quot;)\r
+\r
+N32 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child32, &quot;AttributeTreeNode&quot;)\r
+if N32 == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeTreeNode attribute&quot;\r
+\r
+child321 = batchmode_geompy.myBuilder.NewObject(child32)\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child321,&quot;AttributeName&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeName attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeName)\r
+A.SetValue(&quot;N321&quot;)\r
+\r
+N321 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child321, &quot;AttributeTreeNode&quot;)\r
+if N321 == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeTreeNode attribute&quot;\r
+\r
+child33 = batchmode_geompy.myBuilder.NewObject(child3)\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child33,&quot;AttributeName&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeName attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeName)\r
+A.SetValue(&quot;N33&quot;)\r
+\r
+N33 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child33, &quot;AttributeTreeNode&quot;)\r
+if N33 == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeTreeNode attribute&quot;\r
+\r
+child34 = batchmode_geompy.myBuilder.NewObject(child3)\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(child34,&quot;AttributeName&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeName attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeName)\r
+A.SetValue(&quot;N34&quot;)\r
+\r
+N34 = batchmode_geompy.myBuilder.FindOrCreateAttribute(child34, &quot;AttributeTreeNode&quot;)\r
+if N34 == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeTreeNode attribute&quot;\r
+\r
+\r
+\r
+#Create links between tree nodes.\r
+# &nbsp;-| root\r
+# &nbsp; --N1 __\r
+# &nbsp; | &nbsp; &nbsp; N11__\r
+# &nbsp; | &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; N111\r
+# &nbsp; --N2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \r
+# &nbsp; | &nbsp; \r
+# &nbsp; --N3__\r
+# &nbsp; &nbsp; &nbsp; &nbsp; N31\r
+# &nbsp; &nbsp; &nbsp; &nbsp; N32__\r
+# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;N321\r
+# &nbsp; &nbsp; &nbsp; &nbsp; N33\r
+# &nbsp; &nbsp; &nbsp; &nbsp; N34\r
+ &nbsp; &nbsp; &nbsp; &nbsp;\r
+N11.SetFather(N1)\r
+N11.Append(N111)\r
+N3.SetPrevious(N1)\r
+N3.Prepend(N2)\r
+\r
+N32.SetFather(N3)\r
+N32.Prepend(N31)\r
+N33.InsertAfter(N32)\r
+N33.Append(N34)\r
+print &quot;------------- &nbsp;&quot;, N1, &quot; &nbsp;------------- &nbsp;&quot;\r
+print &quot;N1.Label() = &quot;, N1.Label() , &quot;IsRoot() = &quot;, N1.IsRoot(), &quot;Depth() = &quot;, N1.Depth()\r
+print &quot;N11.Label() = &quot;, N11.Label() , &quot;IsRoot() = &quot;, N11.IsRoot(), &quot;Depth() = &quot;, N11.Depth()\r
+print &quot;N111.Label() = &quot;, N111.Label() , &quot;IsRoot() = &quot;, N111.IsRoot(), &quot;Depth() = &quot;, N111.Depth()\r
+print &quot;N2.Label() = &quot;, N2.Label() , &quot;IsRoot() = &quot;, &nbsp;N2.IsRoot(), &quot;Depth() = &quot;, N2.Depth()\r
+print &quot;N3.Label() = &quot;, N3.Label() , &quot;IsRoot() = &quot;, N3.IsRoot(), &quot;Depth() = &quot;, N3.Depth()\r
+print &quot;N31.Label() = &quot;, N31.Label() , &quot;IsRoot() = &quot;, N31.IsRoot(), &quot;Depth() = &quot;, N31.Depth()\r
+print &quot;N32.Label() = &quot;, N32.Label() , &quot;IsRoot() = &quot;, N32.IsRoot(), &quot;Depth() = &quot;, N32.Depth()\r
+print &quot;N321.Label() = &quot;, N321.Label() , &quot;IsRoot() = &quot;, N321.IsRoot(), &quot;Depth() = &quot;, N321.Depth()\r
+print &quot;N33.Label() = &quot;, N33.Label() , &quot;IsRoot() = &quot;, N33.IsRoot(), &quot;Depth() = &quot;, N33.Depth()\r
+print &quot;N34.Label() = &quot;, N34.Label() , &quot;IsRoot() = &quot;, N34.IsRoot(), &quot;Depth() = &quot;, N34.Depth()\r
+print &quot;N1.IsRoot()=&quot;, N1.IsRoot()\r
+\r
+print &quot;N1.HasNext() = &quot;,N1.HasNext()\r
+if &nbsp;N1.HasNext():\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print N1.Next().Label()\r
+\r
+print &quot;N32.HasPrevious() = &quot;,N32.HasPrevious()\r
+if &nbsp;N32.HasPrevious():\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print N32.GetPrevious().Label()\r
+\r
+print &quot;N111.HasFirst()=&quot;,N111.HasFirst()\r
+print &quot;N111.HasFather()=&quot;,N111.HasFather()\r
+if N111.HasFather() :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;N111.GetFather().Label()=&quot;,N111.GetFather().Label()\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example19.html b/doc/html/INPUT/exemple/Example19.html
new file mode 100755 (executable)
index 0000000..4d567ff
--- /dev/null
@@ -0,0 +1,547 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Exemple</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>\r
+#^ SALOMEDS methods : &nbsp;FindOrCreateAttribute, Save, SaveAs, Close, Open, FindComponent, FindAttribute, FindObject, LoadWith^\r
+#^ Attribute methods : Value, SetValue^\r
+#======================================================================\r
+#1. Create Study and add some components to it\r
+#======================================================================\r
+\r
+#=================================\r
+# &nbsp; &nbsp; &nbsp; create AttributeReal &nbsp; &nbsp; &nbsp;\r
+#=================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributeReal&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeReal attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeReal)\r
+A.SetValue(0.0001)\r
+if A.Value() != 0.0001:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error : wrong value of &nbsp;AttributeReal&quot;\r
+\r
+# === &nbsp;Geometry &nbsp;==================================================\r
+\r
+import batchmode_geompy\r
\r
+#===================================\r
+# &nbsp; &nbsp; define a box\r
+#===================================\r
+\r
+box = batchmode_geompy.MakeBox(0., 0., 0., 100., 200., 300.)\r
+idbox = batchmode_geompy.addToStudy(box,&quot;box&quot;)\r
+\r
+\r
+geom = batchmode_geompy.geom\r
+import SMESH\r
+import batchmode_smesh\r
+ShapeType = batchmode_smesh.ShapeType\r
+\r
+# ---- add first face of box in study\r
+\r
+subShapeList = batchmode_geompy.SubShapeAll(box,ShapeType[&quot;Face&quot;])\r
+face=subShapeList[0]\r
+name = &quot;box_face&quot;\r
+print name\r
+idface= batchmode_geompy.addToStudyInFather(box,face,name)\r
+\r
+# ---- add shell from box &nbsp;in study\r
+\r
+subShellList= batchmode_geompy.SubShapeAll(box,ShapeType[&quot;Shell&quot;])\r
+shell = subShellList[0]\r
+name = &quot;box_shell&quot;\r
+print name\r
+idshell= batchmode_geompy.addToStudyInFather(box,shell,name)\r
+\r
+# ---- add first edge of face in study\r
+\r
+edgeList = &nbsp;batchmode_geompy.SubShapeAll(face,ShapeType[&quot;Edge&quot;])\r
+edge=edgeList[0];\r
+name = &quot;face_edge&quot;\r
+print name\r
+idedge= batchmode_geompy.addToStudyInFather(face,edge,name)\r
+\r
+# ---- launch SMESH, init a Mesh with the box\r
+\r
+smesh = &nbsp;batchmode_smesh.smesh\r
+# &nbsp;-- &nbsp;Init &nbsp;--\r
+shape = batchmode_geompy.IDToObject(idbox)\r
+mesh=smesh.Init(geom, batchmode_geompy.myStudyId, shape)\r
+\r
+orb = batchmode_geompy.orb\r
+\r
+idmesh = batchmode_smesh.AddNewMesh( orb.object_to_string(mesh) )\r
+batchmode_smesh.SetName(idmesh, &quot;Meshbox&quot;);\r
+batchmode_smesh.SetShape(idbox, idmesh);\r
+\r
+# ---- create Hypothesis\r
+\r
+print &quot;-------------------------- create Hypothesis ----------------------&quot;\r
+print &quot;-------------------------- LocalLength&quot;\r
+hyp1 = smesh.CreateHypothesis(&quot;LocalLength&quot;, batchmode_geompy.myStudyId )\r
+hypLen1 = hyp1._narrow(SMESH.SMESH_LocalLength)\r
+hypLen1.SetLength(100)\r
+print hypLen1.GetName()\r
+print hypLen1.GetId()\r
+print hypLen1.GetLength()\r
+\r
+idlength = batchmode_smesh.AddNewHypothesis( orb.object_to_string(hypLen1) );\r
+batchmode_smesh.SetName(idlength, &quot;Local_Length_100&quot;);\r
+\r
+print &quot;-------------------------- NumberOfSegments&quot;\r
+hyp2 = &nbsp;smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, batchmode_geompy.myStudyId )\r
+hypNbSeg1=hyp2._narrow(SMESH.SMESH_NumberOfSegments)\r
+hypNbSeg1.SetNumberOfSegments(7)\r
+print hypNbSeg1.GetName()\r
+print hypNbSeg1.GetId()\r
+print hypNbSeg1.GetNumberOfSegments()\r
+\r
+idseg = &nbsp;batchmode_smesh.AddNewHypothesis( orb.object_to_string(hypNbSeg1) );\r
+batchmode_smesh.SetName(idseg, &quot;NumberOfSegments_7&quot;);\r
+\r
+print &quot;-------------------------- MaxElementArea&quot;\r
+hyp3 = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, &nbsp;batchmode_geompy.myStudyId)\r
+hypArea1=hyp3._narrow(SMESH.SMESH_MaxElementArea)\r
+hypArea1.SetMaxElementArea(2500)\r
+print hypArea1.GetName()\r
+print hypArea1.GetId()\r
+print hypArea1.GetMaxElementArea()\r
+\r
+idarea1 = batchmode_smesh.AddNewHypothesis( orb.object_to_string(hypArea1) );\r
+batchmode_smesh.SetName(idarea1, &quot;MaxElementArea_2500&quot;);\r
+\r
+print &quot;-------------------------- MaxElementArea&quot;\r
+hyp3 = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, &nbsp;batchmode_geompy.myStudyId)\r
+hypArea2 = hyp3._narrow(SMESH.SMESH_MaxElementArea)\r
+hypArea2.SetMaxElementArea(500)\r
+print hypArea2.GetName()\r
+print hypArea2.GetId()\r
+print hypArea2.GetMaxElementArea()\r
+\r
+idarea2 = batchmode_smesh.AddNewHypothesis( orb.object_to_string(hypArea2) );\r
+batchmode_smesh.SetName(idarea2, &quot;MaxElementArea_500&quot;);\r
+\r
+print &quot;-------------------------- Regular_1D&quot;\r
+alg1 = smesh.CreateHypothesis(&quot;Regular_1D&quot;, &nbsp;batchmode_geompy.myStudyId)\r
+algo1 = alg1._narrow(SMESH.SMESH_Algo)\r
+listHyp = algo1.GetCompatibleHypothesis()\r
+for hyp in listHyp:\r
+ &nbsp; &nbsp;print hyp\r
+algoReg=alg1._narrow(SMESH.SMESH_Regular_1D)\r
+print algoReg.GetName()\r
+print algoReg.GetId()\r
+\r
+idreg = batchmode_smesh.AddNewAlgorithms( orb.object_to_string(algoReg) );\r
+batchmode_smesh.SetName(idreg, &quot;Regular_1D&quot;);\r
+\r
+print &quot;-------------------------- MEFISTO_2D&quot;\r
+alg2 = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, &nbsp;batchmode_geompy.myStudyId)\r
+algo2 = alg2._narrow(SMESH.SMESH_Algo)\r
+listHyp=algo2.GetCompatibleHypothesis()\r
+for hyp in listHyp:\r
+ &nbsp; &nbsp;print hyp\r
+algoMef=alg2._narrow(SMESH.SMESH_MEFISTO_2D)\r
+print algoMef.GetName()\r
+print algoMef.GetId()\r
+\r
+idmef = batchmode_smesh.AddNewAlgorithms( orb.object_to_string(algoMef) );\r
+batchmode_smesh.SetName(idmef, &quot;MEFISTO_2D&quot;);\r
+\r
+\r
+# ---- add hypothesis to edge\r
+\r
+print &quot;-------------------------- add hypothesis to edge&quot;\r
+edge = batchmode_geompy.IDToObject(idedge)\r
+submesh = mesh.GetElementsOnShape(edge)\r
+ret = mesh.AddHypothesis(edge,algoReg)\r
+print ret\r
+ret=mesh.AddHypothesis(edge,hypLen1)\r
+print ret\r
+\r
+idsm1 = batchmode_smesh.AddSubMeshOnShape( idmesh,\r
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; idedge,\r
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; orb.object_to_string(submesh),\r
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ShapeType[&quot;Edge&quot;] )\r
+batchmode_smesh.SetName(idsm1, &quot;SubMeshEdge&quot;)\r
+batchmode_smesh.SetAlgorithms( idsm1, idreg );\r
+batchmode_smesh.SetHypothesis( idsm1, idlength );\r
+\r
+print &quot;-------------------------- add hypothesis to face&quot;\r
+face=batchmode_geompy.IDToObject(idface)\r
+submesh=mesh.GetElementsOnShape(face)\r
+ret=mesh.AddHypothesis(face,hypArea2)\r
+print ret\r
+\r
+idsm2 = batchmode_smesh.AddSubMeshOnShape( idmesh,\r
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;idface,\r
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;orb.object_to_string(submesh),\r
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ShapeType[&quot;Face&quot;] )\r
+batchmode_smesh.SetName(idsm2, &quot;SubMeshFace&quot;)\r
+batchmode_smesh.SetHypothesis( idsm2, idarea2 );\r
+\r
+# ---- add hypothesis to box\r
+\r
+print &quot;-------------------------- add hypothesis to box&quot;\r
+box=batchmode_geompy.IDToObject(idbox)\r
+submesh=mesh.GetElementsOnShape(box)\r
+ret=mesh.AddHypothesis(box,algoReg)\r
+print ret\r
+ret=mesh.AddHypothesis(box,hypNbSeg1)\r
+print ret\r
+ret=mesh.AddHypothesis(box,algoMef)\r
+print ret\r
+ret=mesh.AddHypothesis(box,hypArea1)\r
+print ret\r
+\r
+batchmode_smesh.SetAlgorithms( idmesh, idreg );\r
+batchmode_smesh.SetHypothesis( idmesh, idseg );\r
+batchmode_smesh.SetAlgorithms( idmesh, idmef );\r
+batchmode_smesh.SetHypothesis( idmesh, idarea1 );\r
+\r
+# ---- compute box\r
+\r
+print &quot;-------------------------- compute box&quot;\r
+ret=smesh.Compute(mesh,box)\r
+print ret\r
+log=mesh.GetLog(0); # no erase trace\r
+for linelog in log:\r
+ &nbsp; &nbsp;print linelog\r
+\r
+\r
+#=======================================================\r
+# &nbsp; &nbsp;add &nbsp;SuperVision component\r
+#=======================================================\r
+\r
+from batchmode_SuperV import *\r
+import os\r
+dir= os.getenv(&quot;SALOME_ROOT_DIR&quot;)\r
+if dir == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise RuntimeError, &quot;SALOME_ROOT_DIR is not defined&quot;\r
+xmlfile = dir +&quot;/../SALOME_ROOT/SuperVisionTest/resources/GraphEssai.xml&quot;\r
+print &quot;--------------\n&quot;+xmlfile+&quot;\n--------------\n&quot;\r
+\r
+myGraph = Graph ( xmlfile )\r
+\r
+# This DataFlow is &quot;valid&quot; : no loop, correct links between Nodes etc...\r
+print myGraph.IsValid()\r
+\r
+# Get Nodes\r
+myGraph.PrintNodes()\r
+Add,Sub,Mul,Div = myGraph.Nodes()\r
+\r
+# Load Datas\r
+Addx = Add.Input(&quot;x&quot;,3.)\r
+Addy = Add.Input(&quot;y&quot;,4.5)\r
+Subx = Sub.Input(&quot;x&quot;,1.5)\r
+\r
+# Get Output Port\r
+Addz = Add.Port('z')\r
+Subz = Sub.Port('z')\r
+Mulz = Mul.Port('z')\r
+Divz = Div.Port('z')\r
+\r
+# This DataFlow is &quot;executable&quot; : all pending Ports are defined with Datas\r
+print myGraph.IsExecutable()\r
+\r
+# Starts only execution of that DataFlow and gets control immediatly\r
+print myGraph.Run()\r
+\r
+# That DataFlow is running ==&gt; 0 (false)\r
+print myGraph.IsDone()\r
+\r
+# Events of execution :\r
+aStatus,aNode,anEvent,aState = myGraph.Event()\r
+while aStatus :\r
+ &nbsp; &nbsp;print aNode.Thread(),aNode.SubGraph(),aNode.Name(),anEvent,aState\r
+ &nbsp; &nbsp;aStatus,aNode,anEvent,aState = myGraph.Event()\r
+print myGraph.IsDone()\r
+\r
+# Wait for Completion (but it is already done after event loop ...)\r
+print &quot;Done : &quot;,myGraph.DoneW()\r
+\r
+# Get result\r
+print &quot;Result : &quot;,Divz.ToString()\r
+\r
+# Intermediate results :\r
+print &quot;Intermediate Result Add\z : &quot;,Addz.ToString()\r
+print &quot;Intermediate Result Sub\z : &quot;,Subz.ToString()\r
+print &quot;Intermediate Result Mul\z : &quot;,Mulz.ToString()\r
+\r
+print &quot; &quot;\r
+#print &quot;Type : print myGraph.IsDone()&quot;\r
+#print &quot; &nbsp; &nbsp; &nbsp; If execution is finished ==&gt; 1 (true)&quot;\r
+res=myGraph.IsDone()\r
+if res != 1:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise RuntimeError, &quot;myGraph.Run() is not done&quot;\r
+\r
+print &quot; &quot;\r
+print &quot;Type : print Divz.ToString()&quot;\r
+print &quot; &nbsp; &nbsp; &nbsp; You will get the result&quot;\r
+Divz.ToString()\r
+\r
+print &quot; &quot;\r
+print &quot;Type : myGraph.PrintPorts()&quot;\r
+print &quot; &nbsp; &nbsp; &nbsp; to see input and output values of the graph&quot;\r
+myGraph.PrintPorts()\r
+\r
+print &quot; &quot;\r
+print &quot;Type : Add.PrintPorts()&quot;\r
+Add.PrintPorts()\r
+\r
+print &quot;Type : Sub.PrintPorts()&quot;\r
+Sub.PrintPorts()\r
+\r
+print &quot;Type : Mul.PrintPorts()&quot;\r
+Mul.PrintPorts()\r
+\r
+print &quot;Type : Div.PrintPorts()&quot;\r
+print &quot; &nbsp; &nbsp; &nbsp; to see input and output values of nodes&quot;\r
+Div.PrintPorts()\r
+\r
+# Export will create newsupervisionexample.xml and the corresponding .py file\r
+tmpdir=os.getenv(&quot;TmpDir&quot;)\r
+if tmpdir is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;tmpdir=&quot;/tmp&quot;\r
+file = tmpdir + &quot;/newsupervisionexample&quot;\r
+print &quot;--------------\n&quot;+file+&quot;\n--------------\n&quot;\r
+myGraph.Export(file)\r
+\r
+ior = batchmode_geompy.orb.object_to_string(myGraph.G)\r
+addStudy(ior)\r
+\r
+GraphName = myGraph.Name()\r
+print &quot;Befor save &quot;,\r
+nodes = myGraph.Nodes()\r
+length_bs = len(nodes)\r
+print &quot;ListOfNodes length = &quot;, length_bs\r
+names=[]\r
+for node in nodes:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;names.append(node.Name())\r
+print names\r
+\r
+\r
+#=================================\r
+# &nbsp; &nbsp; &nbsp;save / restore study &nbsp; &nbsp; &nbsp;\r
+#=================================\r
+str= os.getenv(&quot;TmpDir&quot;)\r
+if str == None: &nbsp;\r
+ &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;/tmp&quot;\r
+file = str+&quot;/test.hdf&quot;\r
+\r
+\r
+#==================================================\r
+#1. SaveAs\r
+#==================================================\r
+print &quot; ------- &nbsp;We will save to&quot;, file, &quot;-----------&quot;\r
+\r
+batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)\r
+batchmode_geompy.myStudyManager.Close(batchmode_geompy.myStudy)\r
+\r
+#rename the file and try to reread it again\r
+\r
+os.mkdir(str + &quot;/test_dir&quot;)\r
+\r
+#2.==================================================\r
+print &quot; ------- We rename the file as &quot; + str + &quot;/test_dir/test_new.hdf&quot;\r
+os.rename(file, str+&quot;/test_dir/test_new.hdf&quot;)\r
+\r
+#==================================================\r
+#3. Open\r
+#==================================================\r
+print &quot; ------- We try to open &quot; + str + &quot;/test_dir/test_new.hdf&quot;\r
+\r
+try:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;openedStudy=batchmode_geompy.myStudyManager.Open(str+&quot;/test_dir/test_new.hdf&quot;)\r
+except Exception:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;GEOM component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+#=================================\r
+# &nbsp; &nbsp; find AttributeReal\r
+#=================================\r
+\r
+res,A=father.FindAttribute(&quot;AttributeReal&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeReal&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeReal)\r
+if A.Value() != 0.0001:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error : wrong value of &nbsp;AttributeReal&quot;\r
+\r
+#==================================================\r
+# &nbsp; &nbsp; find &nbsp;box\r
+#==================================================\r
+box = openedStudy.FindObject(&quot;box&quot;)\r
+if box is None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;box was not found! Wrong study is opened.&quot;\r
+\r
+edge=openedStudy.FindObject(&quot;face_edge&quot;)\r
+if edge is None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;face_edge was not found! Wrong study is opened.&quot;\r
+\r
+\r
+father = openedStudy.FindComponent(&quot;MESH&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;MESH component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+hp=openedStudy.FindObject(&quot;Meshbox&quot;)\r
+if hp is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Meshbox object was not found! Wrong study is opened.&quot;\r
+\r
+hp = openedStudy.FindObject(&quot;Algorithms Definition&quot;)\r
+if hp is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Algorithms Definition object was not found! Wrong study is opened.&quot;\r
+\r
+hp = openedStudy.FindObject(&quot;MEFISTO_2D&quot;)\r
+if hp is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;MEFISTO_2D object was not found! Wrong study is opened.&quot;\r
+\r
+hp = openedStudy.FindObject(&quot;Hypothesis Definition&quot;)\r
+if hp is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Algoriths Definition was not found! Wrong study is opened.&quot;\r
+\r
+#==================================================\r
+# Find Supervisor\r
+#==================================================\r
+father = openedStudy.FindComponent(&quot;SUPERV&quot;)\r
+if father is None: \r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;SUPERV component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+SuperV = lcc.FindOrLoadComponent(&quot;SuperVisionContainer&quot;,&quot;Supervision&quot;)\r
+Builder = openedStudy.NewBuilder()\r
+Builder.LoadWith(father, SuperV)\r
+import SALOMEDS\r
+\r
+aChildIterator = openedStudy.NewChildIterator(father)\r
+\r
+#while aChildIterator.More():\r
+anSObject = aChildIterator.Value()\r
+#print &quot;iterate: &quot;, anSObject.GetID()\r
+res, anAttr=anSObject.FindAttribute(&quot;AttributeIOR&quot;)\r
+if res :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;anAttr=anAttr._narrow(SALOMEDS.AttributeIOR)\r
+ &nbsp; &nbsp; &nbsp; &nbsp;ior = anAttr.Value()\r
+ &nbsp; &nbsp; &nbsp; &nbsp;Graph=SuperV.getGraph(ior)\r
+ &nbsp; &nbsp; &nbsp; &nbsp;ListOfNodes=Graph.Nodes()\r
+ &nbsp; &nbsp; &nbsp; &nbsp;length_as= len(ListOfNodes)\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;ListOfNodes length = &quot;, length_as\r
+ &nbsp; &nbsp; &nbsp; &nbsp;if length_as != length_bs:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;raise RuntimeErrror, &quot;defferent length of nodes after study open&quot;\r
+#aChildIterator.Next()\r
+\r
+Names = []\r
+for node in ListOfNodes:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;Names.append(node.Name())\r
+names.sort()\r
+Names.sort()\r
+if names != Names :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise RuntimeError, &quot;List of dataflow nodes after save differs from one befor save operation&quot;\r
+\r
+#==================================================\r
+#4. Save\r
+#==================================================\r
+batchmode_geompy.myStudyManager.Save(openedStudy)\r
+batchmode_geompy.myStudyManager.Close(openedStudy)\r
+#==================================================\r
+#5. Open\r
+#==================================================\r
+try:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;openedStudy = batchmode_geompy.myStudyManager.Open(str+&quot;/test_dir/test_new.hdf&quot;)\r
+except Exception:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+#find AttributeReal\r
+res,A=father.FindAttribute(&quot;AttributeReal&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeReal&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeReal)\r
+if A.Value() != 0.0001:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error : wrong value of &nbsp;AttributeReal&quot;\r
+#==================================================\r
+# &nbsp; &nbsp; find &nbsp;box\r
+#==================================================\r
+box = openedStudy.FindObject(&quot;box&quot;)\r
+if box is None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;box was not found! Wrong study is opened.&quot;\r
+\r
+edge=openedStudy.FindObject(&quot;face_edge&quot;)\r
+if edge is None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;face_edge was not found! Wrong study is opened.&quot;\r
+\r
+\r
+father = openedStudy.FindComponent(&quot;MESH&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;MESH component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+hp=openedStudy.FindObject(&quot;Meshbox&quot;)\r
+if hp is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Meshbox object was not found! Wrong study is opened.&quot;\r
+\r
+hp = openedStudy.FindObject(&quot;Algorithms Definition&quot;)\r
+if hp is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Algorithms Definition object was not found! Wrong study is opened.&quot;\r
+\r
+hp = openedStudy.FindObject(&quot;MEFISTO_2D&quot;)\r
+if hp is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;MEFISTO_2D object was not found! Wrong study is opened.&quot;\r
+\r
+hp = openedStudy.FindObject(&quot;Hypothesis Definition&quot;)\r
+if hp is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Algoriths Definition was not found! Wrong study is opened.&quot;\r
+\r
+#==================================================\r
+# Find Supervisor\r
+#==================================================\r
+father = openedStudy.FindComponent(&quot;SUPERV&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;SUPERV component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+SuperV = lcc.FindOrLoadComponent(&quot;SuperVisionContainer&quot;,&quot;Supervision&quot;)\r
+Builder = openedStudy.NewBuilder()\r
+Builder.LoadWith(father, SuperV)\r
+import SALOMEDS\r
+\r
+aChildIterator = openedStudy.NewChildIterator(father)\r
+\r
+#while aChildIterator.More():\r
+anSObject = aChildIterator.Value()\r
+\r
+res, anAttr=anSObject.FindAttribute(&quot;AttributeIOR&quot;)\r
+if res :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;anAttr=anAttr._narrow(SALOMEDS.AttributeIOR)\r
+ &nbsp; &nbsp; &nbsp; &nbsp;ior = anAttr.Value()\r
+ &nbsp; &nbsp; &nbsp; &nbsp;Graph=SuperV.getGraph(ior)\r
+ &nbsp; &nbsp; &nbsp; &nbsp;ListOfNodes=Graph.Nodes()\r
+ &nbsp; &nbsp; &nbsp; &nbsp;length_as= len(ListOfNodes)\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;ListOfNodes length = &quot;, length_as\r
+ &nbsp; &nbsp; &nbsp; &nbsp;if length_as != length_bs:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;raise RuntimeErrror, &quot;defferent length of nodes after study open&quot;\r
+#aChildIterator.Next()\r
+\r
+Names = []\r
+for node in ListOfNodes:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;Names.append(node.Name())\r
+names.sort()\r
+Names.sort()\r
+if names != Names :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise RuntimeError, &quot;List of dataflow nodes after save differs from one befor save operation&quot;\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example2.html b/doc/html/INPUT/exemple/Example2.html
new file mode 100755 (executable)
index 0000000..1636136
--- /dev/null
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Example</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>#%AttributeInteger interface(creation/saving/restoring)%\r
+#%Methods : FindOrCreateAttribute , Value, SaveAs, SetValue, FindComponent, FindAttribute, Open%\r
+\r
+# &nbsp; &nbsp; &nbsp;create &nbsp;AttributeInteger &nbsp; &nbsp; &nbsp;\r
+#=================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributeInteger&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeInteger attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeInteger)\r
+A.SetValue(1000000)\r
+\r
+if A.Value() != 1000000:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error : wrong value of &nbsp;AttributeInteger&quot;\r
+\r
+# &nbsp; save and restore the study\r
+#=================================\r
+str= os.getenv(&quot;TmpDir&quot;)\r
+if str == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;/tmp&quot;\r
+# ... save ...\r
+batchmode_geompy.myStudyManager.SaveAs(str+&quot;/test.hdf&quot;, batchmode_geompy.myStudy)\r
+# ... open ...\r
+openedStudy= batchmode_geompy.myStudyManager.Open(str+&quot;/test.hdf&quot;);\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+# &nbsp; &nbsp; find AttributeInteger\r
+#================================\r
+res,A=father.FindAttribute(&quot;AttributeInteger&quot;)\r
+if res == 0 &nbsp;or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeInteger&quot;\r
+A = A._narrow(SALOMEDS.AttributeInteger)\r
+if A.Value() != 1000000:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error : wrong value of &nbsp;AttributeInteger after study restoring&quot;\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example20.html b/doc/html/INPUT/exemple/Example20.html
new file mode 100755 (executable)
index 0000000..3019ad8
--- /dev/null
@@ -0,0 +1,160 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Exemple</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>\r
+#^SALOMEDS methods : FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, NewCommand, GetProperties, Open, CommitCommand, NewBuilder^\r
+#^Attribute methods : SetLocked, IsLocked, GetCreationMode, SetCreationDate, IsModified, GetUserName, Value, SetUserName, SetValue, GetCreationDate^\r
+\r
+batchmode_geompy.myBuilder._set_UndoLimit(20)\r
+\r
+#--------------------------------------------------------------------------\r
+# &nbsp; &nbsp; &nbsp; create AttributeReal &nbsp; &nbsp; &nbsp;\r
+#===============================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributeReal&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeReal attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeReal)\r
+A.SetValue(0.0001)\r
+if A.Value() != 0.0001:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error : wrong value of &nbsp;AttributeReal&quot;\r
+\r
+# &nbsp; &nbsp; &nbsp;create AttributeStudyProperties\r
+#================================================\r
+A = batchmode_geompy.myStudy.GetProperties()\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeStudyProperties attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeStudyProperties)\r
+\r
+batchmode_geompy.myBuilder.NewCommand();\r
+print &quot;A.GetUserName()= &quot;, A.GetUserName()\r
+res,mm,hh,dd,mnth,yy=A.GetCreationDate()\r
+print &quot;A.GetCreationDate() = &quot;, mm,hh,dd,mnth,yy\r
+print &quot;A.GetCreationMode() = &quot;, A.GetCreationMode()\r
+print &quot;A.IsModified() = &quot;, A.IsModified()\r
+print &quot;A.IsLocked() = &quot;, A.IsLocked()\r
+if A.IsLocked() == 0 :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;A.SetUserName(&quot;tester&quot;); print 'A.SetUserName(&quot;tester&quot;), A.GetUserName() = ', A.GetUserName()\r
+ &nbsp; &nbsp; &nbsp; &nbsp;A.SetCreationDate(11,11,11,11,2002); print 'A.SetCreationDate(11,11,11,11,2002), A.GetCreationDate() =', A.GetCreationDate()\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;A.IsModified() = &quot;, A.IsModified()\r
+A.SetLocked(1)\r
+\r
+#check the transaction result \r
+batchmode_geompy.myBuilder.CommitCommand()\r
+if A.GetUserName() != &quot;tester&quot;:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print 'Control after transaction close : A.GetUserName() = ', A.GetUserName()\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise RuntimeError, &quot;Field 'UserName' was not modified but had to!&quot;\r
+\r
+# try to make some changes wrapped by transaction \r
+#================================================\r
+batchmode_geompy.myBuilder.NewCommand()\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributeInteger&quot;)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeInteger attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeInteger)\r
+A.SetValue(1000000)\r
+\r
+exception_was = None\r
+try : batchmode_geompy.myBuilder.CommitCommand()\r
+except Exception: exception_was = 1\r
+\r
+if exception_was is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise RuntimeError, &quot;Study was locked for changes but CommitCommand did not generate an exception !&quot;\r
+\r
+# &nbsp; &nbsp; &nbsp;save / restore study &nbsp; &nbsp; &nbsp;\r
+\r
+#================================================\r
+str= os.getenv(&quot;TmpDir&quot;)\r
+if str == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;/tmp&quot;\r
+file = str+&quot;/test.hdf&quot;\r
+\r
+print &quot; ------- &nbsp;We will save to&quot;, file, &quot;-----------&quot;\r
+\r
+batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)\r
+\r
+\r
+#--------------------------------------------------------------------------#\r
+#--------------------------- Open file ------------------------------------# \r
+#--------------------------------------------------------------------------#\r
+\r
+print&quot; -------------- Open &nbsp;&quot; + file + &quot;-------------- &quot; \r
+\r
+openedStudy = batchmode_geompy.myStudyManager.Open(file)\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+#1. &nbsp; &nbsp; find AttributeReal\r
+#================================================\r
+\r
+res,A=father.FindAttribute(&quot;AttributeReal&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeReal&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeReal)\r
+if A.Value() != 0.0001:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error : wrong value of &nbsp;AttributeReal&quot;\r
\r
+\r
+#2. &nbsp; &nbsp; find AttributeStudyProperties\r
+#=================================================\r
+A=openedStudy.GetProperties()\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeStudyProperties&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeStudyProperties)\r
+if A.IsLocked() == 0 :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error : AttributeStudyProperties must have Locked flag but have no!&quot;\r
+\r
+#get the builder\r
+myBuilder = openedStudy.NewBuilder()\r
+\r
+#3. try to make some changes wrapped by transaction \r
+#==================================================\r
+exception_was = None\r
+try : \r
+ &nbsp; &nbsp; &nbsp; &nbsp;myBuilder.NewCommand()\r
+ &nbsp; &nbsp; &nbsp; &nbsp;A = myBuilder.FindOrCreateAttribute(father, &quot;AttributeInteger&quot;)\r
+\r
+ &nbsp; &nbsp; &nbsp; &nbsp;if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeInteger attribute&quot;\r
+ &nbsp; &nbsp; &nbsp; &nbsp;A = A._narrow(SALOMEDS.AttributeInteger)\r
+ &nbsp; &nbsp; &nbsp; &nbsp;A.SetValue(1000000)\r
+ &nbsp; &nbsp; &nbsp; &nbsp;myBuilder.CommitCommand()\r
+except Exception: exception_was = 1\r
+\r
+if exception_was is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise RuntimeError, &quot;Study was locked for changes but CommitCommand did not generate an exception !&quot;\r
+\r
+\r
+myBuilder.NewCommand()\r
+A=openedStudy.GetProperties()\r
+A = A._narrow(SALOMEDS.AttributeStudyProperties)\r
+A.SetLocked(0)\r
+myBuilder.CommitCommand()\r
+\r
+#4.\r
+myBuilder.NewCommand()\r
+A.SetLocked(0);\r
+print &quot;A.GetUserName()= &quot;, A.GetUserName()\r
+print &quot;A.GetCreationDate() = &quot;, A.GetCreationDate()\r
+print &quot;A.GetCreationMode() = &quot;, A.GetCreationMode()\r
+print &quot;A.IsModified() = &quot;, A.IsModified()\r
+myBuilder.CommitCommand()\r
+\r
+#5.\r
+myBuilder.NewCommand()\r
+A.SetUserName(&quot;tester1&quot;)\r
+myBuilder.CommitCommand()\r
+print &quot;A.GetUserName()= &quot;, A.GetUserName()\r
+\r
+#remove the document file\r
+os.remove(file)\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example21.html b/doc/html/INPUT/exemple/Example21.html
new file mode 100755 (executable)
index 0000000..981e9d7
--- /dev/null
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Exemple</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>\r
+#^SALOMEDS methods : FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, Open^\r
+#^Attribute methods: GetValue, GetNbColumns, AddColumn, SetRowTitles, PutValue, GetColumn, GetColumnTitles, GetTitle, SetRow, GetRowTitles, SetColumnTitles, SetColumn, GetRow, GetNbRows, SetColumnTitle, AddRow, SetTitle, SetRowTitle^\r
+\r
+# &nbsp; &nbsp; &nbsp; create AttributeReal &nbsp; &nbsp; &nbsp;\r
+#=======================================================================================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributeTableOfInteger&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeTableOfInteger attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeTableOfInteger)\r
+a=[1,2]\r
+\r
+b=[3,4]\r
+\r
+# &nbsp; &nbsp;2x2\r
+# --- rows ---\r
+A.AddRow(a)\r
+A.AddRow(b)\r
+a=[34,14]\r
+A.SetRow(1,a)\r
+\r
+# &nbsp; &nbsp;3x3\r
+#\r
+b=[54,56]\r
+A.AddRow(b)\r
+\r
+# --- columns ---\r
+a=[76,25,12]\r
+\r
+A.AddColumn(a)\r
+a=[836,3425,342]\r
+A.SetColumn(3,a)\r
+\r
+# change attribute values\r
+print &quot;A.GetValue(2,2) = &quot;, A.GetValue(2,2)\r
+print &quot;A.PutValue(2,2,625323)&quot;\r
+A.PutValue(625323,2,2)\r
+print &quot;A.GetValue(2,2) = &quot;, A.GetValue(2,2)\r
+\r
+#set Titles\r
+\r
+A.SetTitle(&quot;TEST&quot;)\r
+\r
+A.SetRowTitle(1,&quot;FR&quot;)\r
+A.SetRowTitle(2,&quot;SR&quot;)\r
+A.SetRowTitle(3,&quot;TR&quot;)\r
+\r
+A.SetColumnTitle(1,&quot;FC&quot;)\r
+A.SetColumnTitle(2,&quot;SC&quot;)\r
+A.SetColumnTitle(3,&quot;TC&quot;)\r
+\r
+\r
+#check the table\r
+print &quot;Common title : &quot;,A.GetTitle()\r
+print &quot;Rows titles : &quot;, &nbsp;A.GetRowTitles()\r
+rnb = A.GetNbRows()\r
+for i in range(1, rnb):\r
+ &nbsp; &nbsp; &nbsp; &nbsp;b=A.GetRow(i)\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print b\r
+\r
+cnb = A.GetNbColumns()\r
+print &quot;Columns title : &quot;, A.GetColumnTitles()\r
+for i in range(1, cnb):\r
+ &nbsp; &nbsp; &nbsp; &nbsp;b=A.GetColumn(i)\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print b\r
+\r
+# set titles\r
+#titles=[&quot;11&quot;,&quot;12&quot;,&quot;13&quot;]\r
+#A.SetRowTitles(titles)\r
+#titles=[&quot;21&quot;,&quot;22&quot;,&quot;23&quot;]\r
+#A.SetRowTitles(2,titles)\r
+#titles=[&quot;31&quot;,&quot;32&quot;,&quot;33&quot;]\r
+#A.SetRowTitles(3,titles)\r
+\r
+#--------------------------------------------------------------------------#\r
+# ----------------------- save the study ----------------------------------#\r
+#--------------------------------------------------------------------------#\r
+str= os.getenv(&quot;TmpDir&quot;)\r
+if str == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;/tmp&quot;\r
+file = str+&quot;/test.hdf&quot;\r
+\r
+print &quot; ------- &nbsp;We will save to&quot;, file, &quot;-----------&quot;\r
+\r
+batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)\r
+\r
+#--------------------------------------------------------------------------#\r
+#---------------------------- Open file -----------------------------------# \r
+#--------------------------------------------------------------------------#\r
+\r
+print&quot; -------------- Open &nbsp;&quot; + file + &quot;-------------- &quot; \r
+\r
+openedStudy=batchmode_geompy.myStudyManager.Open(file)\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+# --- check attribute ---\r
+\r
+res,A=father.FindAttribute(&quot;AttributeTableOfInteger&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeTableOfInteger&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeTableOfInteger)\r
+\r
+#check the table\r
+print &quot;Common title : &quot;,A.GetTitle()\r
+print &quot;Rows titles : &quot;, &nbsp;A.GetRowTitles()\r
+rnb = A.GetNbRows()\r
+for i in range(1, rnb):\r
+ &nbsp; &nbsp; &nbsp; &nbsp;b=A.GetRow(i)\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print b\r
+\r
+cnb = A.GetNbColumns()\r
+print &quot;Columns title : &quot;, A.GetColumnTitles()\r
+for i in range(1, cnb):\r
+ &nbsp; &nbsp; &nbsp; &nbsp;b=A.GetColumn(i)\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print b\r
+\r
+titles=[&quot;ff&quot;,&quot;ss&quot;,&quot;tt&quot;]\r
+A.SetRowTitles(titles)\r
+print &quot;Rows titles : &quot;, &nbsp;A.GetRowTitles()\r
+\r
+titles=[&quot;ww&quot;,&quot;zz&quot;,&quot;cc&quot;]\r
+A.SetColumnTitles(titles)\r
+print &quot;Column titles : &quot;, &nbsp;A.GetColumnTitles()\r
+\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example22.html b/doc/html/INPUT/exemple/Example22.html
new file mode 100755 (executable)
index 0000000..f6a3f6e
--- /dev/null
@@ -0,0 +1,137 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Exemple</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>\r
+#^ SALOMEDS methods &nbsp;: FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, Open^\r
+#^ Attribute methods : GetValue, GetNbColumns, AddColumn, SetRowTitles, PutValue, &nbsp;GetColumn, &nbsp;GetColumnTitles, GetTitle, SetRow, GetRowTitles, SetColumnTitles, &nbsp;SetColumn, &nbsp;GetRow, &nbsp;GetNbRows, SetColumnTitle, AddRow, SetTitle, SetRowTitle^\r
+\r
+# &nbsp; &nbsp; &nbsp; create AttributeReal &nbsp; &nbsp; &nbsp;\r
+#===============================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributeTableOfReal&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeTableOfReal attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeTableOfReal)\r
+a=[1,2]\r
+\r
+b=[3,4]\r
+\r
+# &nbsp; &nbsp;2x2\r
+# --- rows ---\r
+A.AddRow(a)\r
+A.AddRow(b)\r
+a=[34,14]\r
+A.SetRow(1,a)\r
+\r
+# &nbsp; &nbsp;3x3\r
+#\r
+b=[54,56]\r
+A.AddRow(b)\r
+\r
+# --- columns ---\r
+a=[76,25,12]\r
+\r
+A.AddColumn(a)\r
+a=[836,3425,342]\r
+A.SetColumn(3,a)\r
+\r
+# change attribute values\r
+print &quot;A.GetValue(2,2) = &quot;, A.GetValue(2,2)\r
+print &quot;A.PutValue(2,2,625323)&quot;\r
+A.PutValue(625323,2,2)\r
+print &quot;A.GetValue(2,2) = &quot;, A.GetValue(2,2)\r
+\r
+#set Titles\r
+\r
+A.SetTitle(&quot;TEST&quot;)\r
+\r
+A.SetRowTitle(1,&quot;FR&quot;)\r
+A.SetRowTitle(2,&quot;SR&quot;)\r
+A.SetRowTitle(3,&quot;TR&quot;)\r
+\r
+A.SetColumnTitle(1,&quot;FC&quot;)\r
+A.SetColumnTitle(2,&quot;SC&quot;)\r
+A.SetColumnTitle(3,&quot;TC&quot;)\r
+\r
+\r
+#check the table\r
+print &quot;Common title : &quot;,A.GetTitle()\r
+print &quot;Rows titles : &quot;, &nbsp;A.GetRowTitles()\r
+rnb = A.GetNbRows() + 1\r
+for i in range(1, rnb):\r
+ &nbsp; &nbsp; &nbsp; &nbsp;b=A.GetRow(i)\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print b\r
+\r
+cnb = A.GetNbColumns() + 1\r
+print &quot;Columns title : &quot;, A.GetColumnTitles()\r
+for i in range(1, cnb):\r
+ &nbsp; &nbsp; &nbsp; &nbsp;b=A.GetColumn(i)\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print b\r
+\r
+# set titles\r
+#titles=[&quot;11&quot;,&quot;12&quot;,&quot;13&quot;]\r
+#A.SetRowTitles(titles)\r
+#titles=[&quot;21&quot;,&quot;22&quot;,&quot;23&quot;]\r
+#A.SetRowTitles(2,titles)\r
+#titles=[&quot;31&quot;,&quot;32&quot;,&quot;33&quot;]\r
+#A.SetRowTitles(3,titles)\r
+\r
+#--------------------------------------------------------------------------#\r
+#------------------------ save the study ----------------------------------#\r
+#--------------------------------------------------------------------------#\r
+import os\r
+str= os.getenv(&quot;TmpDir&quot;)\r
+if str == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;/tmp&quot;\r
+file = str+&quot;/test.hdf&quot;\r
+\r
+print &quot; ------- &nbsp;We will save to&quot;, file, &quot;-----------&quot;\r
+\r
+batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)\r
+\r
+#--------------------------------------------------------------------------#\r
+#---------------------------- Open file -----------------------------------# \r
+#--------------------------------------------------------------------------#\r
+\r
+print&quot; -------------- Open &nbsp;&quot; + file + &quot;-------------- &quot; \r
+\r
+openedStudy = batchmode_geompy.myStudyManager.Open(file)\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+# --- check attribute ---\r
+\r
+res,A=father.FindAttribute(&quot;AttributeTableOfReal&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeTableOfReal&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeTableOfReal)\r
+\r
+#check the table\r
+print &quot;Common title : &quot;,A.GetTitle()\r
+print &quot;Rows titles : &quot;, &nbsp;A.GetRowTitles()\r
+rnb = A.GetNbRows() + 1\r
+for i in range(1, rnb):\r
+ &nbsp; &nbsp; &nbsp; &nbsp;b=A.GetRow(i)\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print b\r
+\r
+cnb = A.GetNbColumns() + 1\r
+print &quot;Columns title : &quot;, A.GetColumnTitles()\r
+for i in range(1, cnb):\r
+ &nbsp; &nbsp; &nbsp; &nbsp;b=A.GetColumn(i)\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print b\r
+\r
+titles=[&quot;ff&quot;,&quot;ss&quot;,&quot;tt&quot;]\r
+A.SetRowTitles(titles)\r
+print &quot;Rows titles : &quot;, &nbsp;A.GetRowTitles()\r
+\r
+titles=[&quot;ww&quot;,&quot;zz&quot;,&quot;cc&quot;]\r
+A.SetColumnTitles(titles)\r
+print &quot;Column titles : &quot;, &nbsp;A.GetColumnTitles()\r
+\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example23.html b/doc/html/INPUT/exemple/Example23.html
new file mode 100755 (executable)
index 0000000..6231704
--- /dev/null
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Exemple</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>\r
+import batchmode_salome\r
+#import SALOMEDS\r
+\r
+aStudy = batchmode_salome.myStudy &nbsp; &nbsp;\r
+\r
+#Add new component 'User data'\r
+aBuilder = aStudy.NewBuilder()\r
+aComponent = aBuilder.NewComponent(&quot;User data&quot;)\r
+anAttr = aBuilder.FindOrCreateAttribute(aComponent, &quot;AttributeName&quot;)\r
+anAttrName = anAttr._narrow(SALOMEDS.AttributeName) \r
+anAttrName.SetValue(&quot;User data&quot;)\r
+\r
+\r
+#Add a new case 'Case1' to the component 'User data'\r
+aBuilder.AddDirectory(&quot;/User data/Case1&quot;)\r
+\r
+#Set a study context to '/User data/Case1'\r
+aStudy.SetContext(&quot;/User data/Case1&quot;)\r
+\r
+#Print the current study context\r
+print aStudy.GetContext()\r
+\r
+#Add a sub directory 'aSubCase' to 'Case1' (under the current context)\r
+aBuilder.AddDirectory(&quot;aSubCase&quot;)\r
+\r
+\r
+#Add a new case 'Case2' to component 'User data'\r
+aBuilder.AddDirectory(&quot;/User data/Case2&quot;)\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example3.html b/doc/html/INPUT/exemple/Example3.html
new file mode 100755 (executable)
index 0000000..477d80c
--- /dev/null
@@ -0,0 +1,68 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Example</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>#%AttributeSequenceOfReal interface(creations/saving/restoring)%\r
+#% AttributeSequenceOfReal &nbsp;: ChangeValue, Add, &nbsp;Value, &nbsp;Remove, &nbsp;Length%\r
+#% SALOMEDS methods : FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, Open%\r
+\r
+# &nbsp; &nbsp; &nbsp; create AttributeSequenceOfReal &nbsp; &nbsp; &nbsp;\r
+#=================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributeSequenceOfReal&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeSequenceOfReal attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeSequenceOfReal)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;_narrow returns None instead of AttributeSequenceOfReal pointer&quot;\r
+\r
+A.Add(0.0293)\r
+A.Add(625.1e+2)\r
+A.Add(0.928e+100)\r
+A.Add(83.287)\r
+\r
+print &quot;initial values &quot;,A.Value(1), A.Value(2), A.Value(3), A.Value(4)\r
+A.Remove(3)\r
+print &quot;after remove &quot;, A.Value(1), A.Value(2), A.Value(3)\r
+A.ChangeValue(2,76.265)\r
+print &quot;after second item change&quot;, A.Value(1), A.Value(2), A.Value(3)\r
+\r
+if A.Length() != 3:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Error : wrong length of SequenceOfReal&quot;\r
+if A.Value(1) != 0.0293 or A.Value(2) != 76.265 or A.Value(3) != 83.287:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Error : wrong value of &nbsp;AttributeSequenceOfReal&quot;\r
+\r
+# &nbsp; &nbsp; &nbsp;save / restore study &nbsp; &nbsp; &nbsp;\r
+#=================================\r
+str= os.getenv(&quot;TmpDir&quot;)\r
+if str == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;/tmp&quot;\r
+file = str+&quot;/test.hdf&quot;\r
+\r
+batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)\r
+openedStudy=batchmode_geompy.myStudyManager.Open(file);\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+# &nbsp; &nbsp; find AttributeSequenceOfReal\r
+#=================================\r
+\r
+res,A=father.FindAttribute(&quot;AttributeSequenceOfReal&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeSequenceOfReal&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeSequenceOfReal)\r
+\r
+if A.Length() != 3:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Error : wrong length of SequenceOfReal&quot;\r
+if A.Value(1) != 0.0293 or A.Value(2) != 76.265 or A.Value(3) != 83.287:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Error : wrong value of &nbsp;AttributeSequenceOfReal&quot;\r
+print &quot;after restoring &quot;, A.Value(1), A.Value(2), A.Value(3)\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example4.html b/doc/html/INPUT/exemple/Example4.html
new file mode 100755 (executable)
index 0000000..4539170
--- /dev/null
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Example</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>#%AttributeSequenceOfInteger interface(creations/saving/restoring)%\r
+#%SALOMEDS methods : FindOrCreateAttribute FindComponent FindAttribute Open Add SaveAs%\r
+#%AttributeSequenceOfInteger methods : &nbsp;Value, Remove, Length%\r
+\r
+# &nbsp; &nbsp; &nbsp; create AttributeSequenceOfInteger &nbsp; &nbsp; &nbsp;\r
+#==========================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributeSequenceOfInteger&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeSequenceOfInteger attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeSequenceOfInteger)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeSequenceOfInteger attribute&quot;\r
+\r
+A.Add(100)\r
+A.Add(300)\r
+A.Add(500)\r
+A.Add(400)\r
+A.Add(700)\r
+\r
+A.Remove(3)\r
+A.ChangeValue(4,500)\r
+\r
+\r
+if A.Length() != 4:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Wrong length of SequenceOfInteger&quot;\r
+if A.Value(1) != 100 or A.Value(2) != 300 or A.Value(3) != 400 or A.Value(4) != 700:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Wrong &nbsp;value of &nbsp;AttributeSequenceOfInteger&quot;\r
+\r
+\r
+# &nbsp; &nbsp; &nbsp;save / restore study &nbsp; &nbsp; &nbsp;\r
+#=================================\r
+str= os.getenv(&quot;TmpDir&quot;)\r
+if str == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;/tmp&quot;\r
+file = str+&quot;/test.hdf&quot;\r
+batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)\r
+openedStudy=batchmode_geompy.myStudyManager.Open(file);\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+# &nbsp; &nbsp; find AttributeSequenceOfInteger\r
+#======================================\r
+\r
+res,A=father.FindAttribute(&quot;AttributeSequenceOfInteger&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeSequenceOfInteger&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeSequenceOfInteger)\r
+\r
+if A.Length() != 4:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Wrong length of SequenceOfInteger&quot;\r
+if A.Value(1) != 100 or A.Value(2) != 300 or A.Value(3) != 400 or A.Value(4) != 700:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Wrong &nbsp;value of &nbsp;AttributeSequenceOfInteger&quot;\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example5.html b/doc/html/INPUT/exemple/Example5.html
new file mode 100755 (executable)
index 0000000..79be2e4
--- /dev/null
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Example</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>#%AttributeName interface(creations/saving/restoring)%\r
+#%SALOMEDS methods : FindOrCreateAttribute, &nbsp;SaveAs, FindComponent FindAttribute Open%\r
+#%Attribute methods : SetValue, Value%\r
+\r
+# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;create AttributeName &nbsp; &nbsp; \r
+#===========================================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributeName&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeName attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeName)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeName attribute&quot;\r
+A.SetValue(&quot;AttributesTesting&quot;)\r
+\r
+if A.Value() != &quot;AttributesTesting&quot;:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Wrong &nbsp;value of AttributeName&quot;\r
+\r
+\r
+# &nbsp; &nbsp; &nbsp;save / restore study &nbsp; &nbsp; &nbsp;\r
+#=================================\r
+str= os.getenv(&quot;TmpDir&quot;)\r
+if str == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;/tmp&quot;\r
+file = str+&quot;/test.hdf&quot;\r
+\r
+batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)\r
+openedStudy = batchmode_geompy.myStudyManager.Open(file);\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+# &nbsp; &nbsp; find AttributeName\r
+#======================================\r
+\r
+res,A=father.FindAttribute(&quot;AttributeName&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeName&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeName)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeName attribute&quot;\r
+\r
+if A.Value() != &quot;AttributesTesting&quot;:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;print &quot;Wrong &nbsp;value of AttributeName&quot;\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example6.html b/doc/html/INPUT/exemple/Example6.html
new file mode 100755 (executable)
index 0000000..197c6b3
--- /dev/null
@@ -0,0 +1,56 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Example</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>#%AttributeComment interface(creations/saving/restoring)%\r
+#%SALOMEDS methods : FindOrCreateAttribute, SaveAs FindComponent FindAttribute &nbsp;Open%\r
+#%Attribute methods : Value, SetValue%\r
+\r
+# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;create &nbsp; &nbsp; AttributeComment \r
+#===========================================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributeComment&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeComment attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeComment)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeComment attribute&quot;\r
+\r
+A.SetValue(&quot;GEOM&quot;)\r
+\r
+\r
+# &nbsp; &nbsp; &nbsp;save / restore study &nbsp; &nbsp; &nbsp;\r
+#============================================================\r
+str= os.getenv(&quot;TmpDir&quot;)\r
+if str == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;/tmp&quot;\r
+file = str+&quot;/test.hdf&quot;\r
+\r
+batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)\r
+openedStudy = batchmode_geompy.myStudyManager.Open(file);\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+# &nbsp; &nbsp; &nbsp;find &nbsp; &nbsp;AttributeComment\r
+#============================================================\r
+\r
+res,A=father.FindAttribute(&quot;AttributeComment&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeComment&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeComment)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeComment attribute&quot;\r
+\r
+if A.Value() != &quot;GEOM&quot;:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;&quot;Error: wrong value of AttributeComment&quot;\r
+\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example7.html b/doc/html/INPUT/exemple/Example7.html
new file mode 100755 (executable)
index 0000000..9bf8515
--- /dev/null
@@ -0,0 +1,55 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Example</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>#%AttributePersistentRef interface(creations/saving/restoring)%\r
+#%SALOMEDS methods : FindOrCreateAttribute, &nbsp;SaveAs, FindComponent FindAttribute Open%\r
+#%Attribute methods : SetValue, Value%\r
+\r
+# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;create &nbsp; AttributePersistentRef &nbsp; \r
+#===========================================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributePersistentRef&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributePersistentRef attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributePersistentRef)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributePersistentRef attribute&quot;\r
+\r
+A.SetValue(&quot;/tmp/test;1&quot;)\r
+\r
+# &nbsp; &nbsp; &nbsp;save / restore study &nbsp; &nbsp; &nbsp;\r
+#============================================================\r
+str= os.getenv(&quot;TmpDir&quot;)\r
+if str == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;/tmp&quot;\r
+file = str+&quot;/test.hdf&quot;\r
+\r
+batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)\r
+openedStudy = batchmode_geompy.myStudyManager.Open(file);\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+# &nbsp; &nbsp; find AttributePersistentRef\r
+#============================================================\r
+\r
+res,A=father.FindAttribute(&quot;AttributePersistentRef&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributePersistentRef&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributePersistentRef)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributePersistentRef attribute&quot;\r
+\r
+if A.Value() != &quot;/tmp/test;1&quot;:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;&quot;Error: wrong value of AttributePersistentRef&quot;\r
+\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example8.html b/doc/html/INPUT/exemple/Example8.html
new file mode 100755 (executable)
index 0000000..db96229
--- /dev/null
@@ -0,0 +1,64 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Example</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>#%AttributeDrawable interface(creations/saving/restoring)%\r
+#%SALOMEDS methods : FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, Open%\r
+#%Attribute methods : SetDrawable, IsDrawable% \r
+#--------------------------------------------------------------------------\r
+\r
+from batchmode_geompy import *\r
+import os\r
+\r
+#--------------------------------------------------------------------------\r
+# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;create &nbsp; &nbsp;AttributeDrawable &nbsp;\r
+#===========================================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributeDrawable&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeDrawable attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeDrawable)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeDrawable attribute&quot;\r
+\r
+A.SetDrawable(1)\r
+\r
+if A.IsDrawable() == 0:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;&quot;Error: wrong value of AttributeDrawable&quot;\r
+\r
+\r
+# &nbsp; &nbsp; &nbsp;save / restore study &nbsp; &nbsp; &nbsp;\r
+#============================================================\r
+str= os.getenv(&quot;TmpDir&quot;)\r
+if str == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;/tmp&quot;\r
+file = str+&quot;/test.hdf&quot;\r
+\r
+batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)\r
+openedStudy=batchmode_geompy.myStudyManager.Open(file);\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+# &nbsp; &nbsp; find &nbsp; AttributeDrawable\r
+#============================================================\r
+\r
+res,A=father.FindAttribute(&quot;AttributeDrawable&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeDrawable&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeDrawable)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeDrawable attribute&quot;\r
+\r
+if A.IsDrawable() == 0:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;&quot;Error: wrong value of AttributeDrawable&quot;\r
+\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/exemple/Example9.html b/doc/html/INPUT/exemple/Example9.html
new file mode 100755 (executable)
index 0000000..6809dab
--- /dev/null
@@ -0,0 +1,59 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>\r
+<HEAD>\r
+<!-- hennerik CVSweb $Revision$ -->\r
+<TITLE>Example</TITLE></HEAD>\r
+<BODY BGCOLOR="#eeeeee">\r
+<HR noshade><PRE>#%AttributeSelectable interface(creations/saving/restoring)%\r
+#%SALOMEDS methods: FindOrCreateAttribute, SaveAs, FindComponent, FindAttribute, Open%\r
+#%Attribute methods: SetSelectable, IsSelectable%\r
+\r
+# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;create &nbsp; &nbsp;AttributeSelectable &nbsp;\r
+#===========================================================\r
+A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, &quot;AttributeSelectable&quot;)\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeSelectable attribute&quot;\r
+A = A._narrow(SALOMEDS.AttributeSelectable)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeSelectable attribute&quot;\r
+\r
+A.SetSelectable(1)\r
+\r
+if A.IsSelectable() == 0:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;&quot;Error: wrong value of AttributeSelectable&quot;\r
+\r
+\r
+# &nbsp; &nbsp; &nbsp;save / restore study &nbsp; &nbsp; &nbsp;\r
+#============================================================\r
+str= os.getenv(&quot;TmpDir&quot;)\r
+if str == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;str = &quot;/tmp&quot;\r
+file = str+&quot;/test.hdf&quot;\r
+\r
+batchmode_geompy.myStudyManager.SaveAs(file, batchmode_geompy.myStudy)\r
+openedStudy = batchmode_geompy.myStudyManager.Open(file);\r
+\r
+if openedStudy == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't open saved study!&quot;\r
+\r
+father = openedStudy.FindComponent(&quot;GEOM&quot;)\r
+if father is None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp; raise &nbsp;RuntimeError, &quot;Geom component is not found! &nbsp;Wrong study is opened.&quot; \r
+\r
+\r
+# &nbsp; &nbsp; find &nbsp; AttributeSelectable\r
+#============================================================\r
+\r
+res,A=father.FindAttribute(&quot;AttributeSelectable&quot;)\r
+if res == 0 or A == None:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Error: &nbsp;not found AttributeSelectable&quot;\r
+\r
+A = A._narrow(SALOMEDS.AttributeSelectable)\r
+\r
+if A == None :\r
+ &nbsp; &nbsp; &nbsp; &nbsp;raise &nbsp;RuntimeError, &quot;Can't create AttributeSelectable attribute&quot;\r
+\r
+if A.IsSelectable() == 0:\r
+ &nbsp; &nbsp; &nbsp; &nbsp;&quot;Error: wrong value of AttributeSelectable&quot;\r
+\r
+</PRE>
\ No newline at end of file
diff --git a/doc/html/INPUT/sources/Application-About.png b/doc/html/INPUT/sources/Application-About.png
new file mode 100755 (executable)
index 0000000..7b58330
Binary files /dev/null and b/doc/html/INPUT/sources/Application-About.png differ
diff --git a/doc/html/INPUT/sources/Application-About1.jpg b/doc/html/INPUT/sources/Application-About1.jpg
new file mode 100755 (executable)
index 0000000..cf7ab8b
Binary files /dev/null and b/doc/html/INPUT/sources/Application-About1.jpg differ
diff --git a/doc/html/INPUT/sources/application.gif b/doc/html/INPUT/sources/application.gif
new file mode 100644 (file)
index 0000000..0b05d5c
Binary files /dev/null and b/doc/html/INPUT/sources/application.gif differ
diff --git a/doc/html/INPUT/sources/application.jpg b/doc/html/INPUT/sources/application.jpg
new file mode 100755 (executable)
index 0000000..a6979ab
Binary files /dev/null and b/doc/html/INPUT/sources/application.jpg differ
diff --git a/doc/html/INPUT/sources/bg_salome.gif b/doc/html/INPUT/sources/bg_salome.gif
new file mode 100755 (executable)
index 0000000..677b704
Binary files /dev/null and b/doc/html/INPUT/sources/bg_salome.gif differ
diff --git a/doc/html/INPUT/sources/logocorp.gif b/doc/html/INPUT/sources/logocorp.gif
new file mode 100755 (executable)
index 0000000..7697e08
Binary files /dev/null and b/doc/html/INPUT/sources/logocorp.gif differ
diff --git a/doc/html/INPUT/sources/myheader.html b/doc/html/INPUT/sources/myheader.html
new file mode 100755 (executable)
index 0000000..83ca543
--- /dev/null
@@ -0,0 +1,24 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+   <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+&nbsp;
+<center><table WIDTH="96%" >
+<tr>
+<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>
+
+
+<td>
+<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>
+</td>
+</tr>
+</table></center>
+
+
+</body>
+</html>
diff --git a/doc/html/INPUT/sources/occ.gif b/doc/html/INPUT/sources/occ.gif
new file mode 100755 (executable)
index 0000000..ce017c8
Binary files /dev/null and b/doc/html/INPUT/sources/occ.gif differ
diff --git a/doc/html/INPUT/sources/static/Link.gif b/doc/html/INPUT/sources/static/Link.gif
new file mode 100755 (executable)
index 0000000..75330d0
Binary files /dev/null and b/doc/html/INPUT/sources/static/Link.gif differ
diff --git a/doc/html/INPUT/sources/static/SObject.gif b/doc/html/INPUT/sources/static/SObject.gif
new file mode 100755 (executable)
index 0000000..1d4e9cb
Binary files /dev/null and b/doc/html/INPUT/sources/static/SObject.gif differ
diff --git a/doc/html/INPUT/sources/static/Study_Struct.gif b/doc/html/INPUT/sources/static/Study_Struct.gif
new file mode 100755 (executable)
index 0000000..bc0ce35
Binary files /dev/null and b/doc/html/INPUT/sources/static/Study_Struct.gif differ
diff --git a/doc/html/INPUT/sources/static/doxygen.css b/doc/html/INPUT/sources/static/doxygen.css
new file mode 100755 (executable)
index 0000000..0a8e93d
--- /dev/null
@@ -0,0 +1,49 @@
+H1 { text-align: center; }
+CAPTION { font-weight: bold }
+A.qindex {}
+A.qindexRef {}
+A.el { text-decoration: none; font-weight: bold }
+A.elRef { font-weight: bold }
+A.code { text-decoration: none; font-weight: normal; color: #4444ee }
+A.codeRef { font-weight: normal; color: #4444ee }
+A:hover { text-decoration: none; background-color: lightblue }
+DL.el { margin-left: -1cm }
+DIV.fragment { width: 100%; border: none; background-color: #CCCCCC }
+DIV.ah { background-color: #CCCCCC; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
+TD.md { background-color: lightblue; font-weight: bold; }
+TD.mdname1 { background-color: lightblue; font-weight: bold; color: #602020; }
+TD.mdname { background-color: lightblue; font-weight: bold; color: #602020; width: 600px; }
+DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold }
+DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }
+BODY { background: url(sources/bg_salome.gif) }
+TD.indexkey { 
+   background-color: #CCCCCC; 
+   font-weight: bold; 
+   padding-right  : 10px; 
+   padding-top    : 2px; 
+   padding-left   : 10px; 
+   padding-bottom : 2px; 
+   margin-left    : 0px; 
+   margin-right   : 0px; 
+   margin-top     : 2px; 
+   margin-bottom  : 2px  
+}
+TD.indexvalue { 
+   background-color: #CCCCCC; 
+   font-style: italic; 
+   padding-right  : 10px; 
+   padding-top    : 2px; 
+   padding-left   : 10px; 
+   padding-bottom : 2px; 
+   margin-left    : 0px; 
+   margin-right   : 0px; 
+   margin-top     : 2px; 
+   margin-bottom  : 2px  
+}
+span.keyword       { color: #008000 }
+span.keywordtype   { color: #604020 }
+span.keywordflow   { color: #e08000 }
+span.comment       { color: #800000 }
+span.preprocessor  { color: #806020 }
+span.stringliteral { color: #002080 }
+span.charliteral   { color: #008080 }
diff --git a/doc/html/INPUT/sources/static/examples_Kernel.html b/doc/html/INPUT/sources/static/examples_Kernel.html
new file mode 100755 (executable)
index 0000000..beb74ae
--- /dev/null
@@ -0,0 +1,134 @@
+<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+    
+  <meta http-equiv="Content-Type"
+ content="text/html; charset=iso-8859-1">
+    
+  <meta name="GENERATOR"
+ content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+  <title>Main Page</title>
+     
+  <link href="doxygen.css" rel="stylesheet" type="text/css">
+</head>
+  <body>
+ &nbsp; 
+<center>
+<table width="96%">
+ <tbody>
+    <tr>
+ <td><a href="http://www.opencascade.com"><img
+ src="sources/logocorp.gif" border="0" height="46" width="122">
+      </a></td>
+   <td> 
+      <div align="right"><a href="http://www.opencascade.org/SALOME/"><img
+ src="sources/application.gif" border="0" height="46" width="108">
+      </a></div>
+ </td>
+ </tr>
+  </tbody>
+</table>
+</center>
+   
+<h1><a name="page2">Examples</a> </h1>
+   <small><i><big><b>Package SALOME</b></big></i></small><b><i>_ModuleCatalog</i></b><br>
+<small><br>
+&nbsp;&nbsp;&nbsp; &nbsp; <big>interface <a href="#module_catalog">SALOME_ModuleCatalog::ModuleCatalog</a></big><br>
+<br>
+<i><big><b>Package SALOME<br>
+<br>
+&nbsp;&nbsp;&nbsp; </b></big></i></small>interface<a href="#Session"> SALOME::Session</a><br>
+<br>
+<small><i><big><b>Package Engines<br>
+&nbsp;&nbsp;&nbsp; </b></big></i><i><big><b> </b></big></i></small><br>
+&nbsp;&nbsp;&nbsp; interface <a href="#container">Engines::Container</a><small><br>
+</small><small><br>
+<i><big><b>&nbsp;&nbsp;&nbsp; <br>
+&nbsp;&nbsp;&nbsp; </b></big></i></small><br>
+<br>
+<div align="center">&nbsp;&nbsp;&nbsp; <u><font
+ face="Helvetica, Arial, sans-serif"><big><big><b><small><big><a
+ name="module_catalog"></a>SALOME_ModuleCatalog::ModuleCatalog interface</big></small></b></big></big></font></u>
+<br>
+</div>
+<br>
+<div align="center"><big><big><u><b><font
+ face="Helvetica, Arial, sans-serif"><br>
+</font></b></u></big></big>
+<div align="left"><br>
+<big><b><a class="el"
+ href="interfaceSALOME__ModuleCatalog_1_1Acomponent.html">Acomponent</a>
+GetComponent  (in string <i>componentname</i>)</b></big><br>
+<br>
+See the <a href="#load_com_ex">example</a> below<br>
+<br>
+</div>
+<big><big><u><b><font face="Helvetica, Arial, sans-serif"><br>
+</font></b><small><font face="Helvetica, Arial, sans-serif"><big><b><a
+ name="Session"></a>SALOME::Session interface</b></big></font></small></u></big></big><br>
+<div align="left"><br>
+<br>
+<big><b>GetInterface ()</b><b>, StopSession () raises (GUIActive, RunningStudies)</b></big><br>
+<br>
+<u><i>Stop session and restart GUI application: </i></u><br>
+<br>
+mySession.StopSession()<br>
+<br>
+mySession.GetInterface()<br>
+<br>
+<br>
+<div align="center"><u><big><big><font
+ face="Helvetica, Arial, sans-serif"><b><a name="container"></a>Engines::Container
+interface</b></font></big></big></u><br>
+<br>
+<br>
+<div align="left"><big><b><a class="el"
+ href="interfaceEngines_1_1Component.html">Component</a>
+load_impl  (in string <i>nameToRegister</i>, in string <i>componentName</i>)</b></big><br>
+<br>
+<i><u><a name="load_com_ex"></a>Load component with defined component name:</u></i><br>
+<br>
+compinfo = module_catalog.GetComponent(componentName)<br>
+<br>
+&nbsp;try:<br>
+&nbsp;&nbsp;&nbsp; machineName = theComputer # name of machine<br>
+&nbsp;&nbsp;&nbsp; path = compoinfo.GetPathPrefix(machineName) + "/"<br>
+&nbsp;except SALOME_ModuleCatalog.NotFound, ex:<br>
+&nbsp;&nbsp;&nbsp; MESSAGE( "machine " + machineName + " not found in Module
+Catalog" )<br>
+&nbsp;&nbsp;&nbsp; MESSAGE( "trying localhost" )<br>
+&nbsp;&nbsp;&nbsp; try:<br>
+&nbsp;&nbsp;&nbsp; path = compoinfo.GetPathPrefix("localhost") + "/"<br>
+&nbsp;&nbsp;&nbsp; except SALOME_ModuleCatalog.NotFound, ex:<br>
+&nbsp;&nbsp;&nbsp; path = ""<br>
+<br>
+implementation = path + "lib" + componentName + "Engine.so"<br>
+MESSAGE( "Trying to load " + implementation )<br>
+<br>
+&nbsp;try:<br>
+<div align="left">&nbsp;&nbsp;&nbsp; component = container.load_impl(componentName,
+implementation)<i> # Loads into the container a new component, registers
+it and starts it's CORBA servant. </i><br>
+</div>
+&nbsp;&nbsp;&nbsp; MESSAGE( "component " + component._get_instanceName()
++ " launched !" )<br>
+&nbsp;&nbsp;&nbsp; return component<br>
+except:<br>
+&nbsp;&nbsp;&nbsp; MESSAGE( "component " + componentName + " NOT launched
+!" )<br>
+<br>
+<br>
+</div>
+<br>
+</div>
+<br>
+</div>
+<br>
+</div>
+
+<br>
+<br>
+<br>
+</body>
+</html>
diff --git a/doc/html/INPUT/sources/static/examples_Life_cycle.html b/doc/html/INPUT/sources/static/examples_Life_cycle.html
new file mode 100755 (executable)
index 0000000..8d36282
--- /dev/null
@@ -0,0 +1,116 @@
+<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">\r
+<html>\r
+<head>\r
+    \r
+  <meta http-equiv="Content-Type"\r
+ content="text/html; charset=iso-8859-1">\r
+    \r
+  <meta name="GENERATOR"\r
+ content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">\r
+  <title>Main Page</title>\r
+     \r
+  <link href="doxygen.css" rel="stylesheet" type="text/css">\r
+</head>\r
+  <body>\r
+ &nbsp; \r
+<center>\r
+<table width="96%">\r
+ <tbody>\r
+    <tr>\r
+ <td><a href="http://www.opencascade.com"><img\r
+ src="sources/logocorp.gif" border="0" height="46" width="122">\r
+      </a></td>\r
+   <td> \r
+      <div align="right"><a href="http://www.opencascade.org/SALOME/"><img\r
+ src="sources/application.gif" border="0" height="46" width="108">\r
+      </a></div>\r
+ </td>\r
+ </tr>\r
\r
+  </tbody>\r
+</table>\r
+</center>\r
+   \r
+<h1><a name="page2">Examples</a> </h1>\r
+   <font color="#3333ff">//There is a CXX example of LifeCycleCORBA using<br>\r
+</font><br>\r
+#include CORBA_CLIENT_HEADER(TestComponent)<br>\r
+#include "SALOME_NamingService.hxx"<br>\r
+#include "SALOME_LifeCycleCORBA.hxx"<br>\r
+<br>\r
+int main (int argc, char * argv[]){<br>\r
+&nbsp; try {<br>\r
+<font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Initializing omniORB<br>\r
+</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORBA::ORB_var orb = CORBA::ORB_init(argc,\r
+argv);<br>\r
+&nbsp;&nbsp;&nbsp; <br>\r
+<font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Obtain a reference\r
+to the root POA<br>\r
+</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORBA::Object_var obj = orb-&gt;resolve_initial_references("RootPOA")\r
+;<br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PortableServer::POA_var poa = PortableServer::POA::_narrow(obj)\r
+;<br>\r
+&nbsp;&nbsp;&nbsp; <br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SALOME_NamingService _NS(orb) ;<br>\r
+<br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SALOME_LifeCycleCORBA _LCC(&amp;_NS) ;<br>\r
+<br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Engines::Component_var myComponent = _LCC.FindOrLoad_Component("FactoryServerPy","TestComponentPy");<br>\r
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; if(!CORBA::is_nil(myComponent)){<br>\r
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Engines::TestComponent_var\r
+myConcreateComponent = TestComponent::_narrow(myComponent);<br>\r
+<font color="#3333ff">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; //do something\r
+what you like with the interface<br>\r
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...<br>\r
+</font>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; return 0;<br>\r
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; }<br>\r
+&nbsp;&nbsp;&nbsp; }<br>\r
+&nbsp; catch(CORBA::COMM_FAILURE&amp; ex){<br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"Caught system exception COMM_FAILURE\r
+-- unable to contact the object.\n";<br>\r
+&nbsp; }catch(CORBA::SystemException&amp;){<br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"Caught a CORBA::SystemException.\n";<br>\r
+&nbsp; }catch(CORBA::Exception&amp;){<br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"Caught CORBA::Exception.\n";<br>\r
+&nbsp; }catch(...){<br>\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"Caught unknown exception.\n";<br>\r
+&nbsp; }<br>\r
+&nbsp; return 1;<br>\r
+}<br>\r
+<br>\r
+<font color="#3333ff">#The example may be rewritten on Python like this:<br>\r
+</font><br>\r
+from omniORB import CORBA<br>\r
+from SALOME_TestComponent import *<br>\r
+from SALOME_NamingServicePy import *<br>\r
+from LifeCycleCORBA import *<br>\r
+<br>\r
+try:<br>\r
+&nbsp;&nbsp;&nbsp; orb = CORBA.ORB_init(sys.argv,CORBA.ORB_ID)<br>\r
+&nbsp;&nbsp;&nbsp; _NS = SALOME_NamingService(orb)<br>\r
+&nbsp;&nbsp;&nbsp; _LCC = SALOME_LifeCycleCORBA(orb)<br>\r
+<br>\r
+&nbsp;&nbsp;&nbsp;&nbsp; myComponent = _LCC.FindOrLoadComponent("FactoryServerPy","TestComponentPy");<br>\r
+&nbsp;&nbsp;&nbsp; &nbsp;myConcreatComponent = myComponent._narrow(TestComponent)<br>\r
+&nbsp;&nbsp;&nbsp; if myConcreatComponent is not None :<font\r
+ color="#3333ff"><br>\r
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //do something what you like with the\r
+interface<br>\r
+ &nbsp; &nbsp; &nbsp; &nbsp; ...<br>\r
+ </font>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return 0<br>\r
+&nbsp;&nbsp;&nbsp; }<br>\r
+except CosNaming.NamingContext.NotFound, e :<br>\r
+&nbsp;&nbsp;&nbsp; print "Caught exception: Naming Service can't found Logger"<br>\r
+except CORBA.COMM_FAILURE, e:<br>\r
+&nbsp;&nbsp;&nbsp; print "Caught CORBA::SystemException CommFailure"<br>\r
+except CORBA.SystemException, e:<br>\r
+&nbsp;&nbsp;&nbsp; print "Caught CORBA::SystemException."<br>\r
+except CORBA.Exception, e:<br>\r
+&nbsp;&nbsp;&nbsp; print "Caught CORBA::Exception."<br>\r
+except Exception, e:<br>\r
+&nbsp;&nbsp;&nbsp; print "Caught unknown exception."<br>\r
+&nbsp;&nbsp; <br>\r
+<br>\r
+<br>\r
+</body>\r
+</html>\r
diff --git a/doc/html/INPUT/sources/static/examples_Naming.html b/doc/html/INPUT/sources/static/examples_Naming.html
new file mode 100755 (executable)
index 0000000..ac08a67
--- /dev/null
@@ -0,0 +1,66 @@
+<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+    
+  <meta http-equiv="Content-Type"
+ content="text/html; charset=iso-8859-1">
+    
+  <meta name="GENERATOR"
+ content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+  <title>Main Page</title>
+     
+  <link href="doxygen.css" rel="stylesheet" type="text/css">
+</head>
+  <body>
+ &nbsp; 
+<center>
+<table width="96%">
+ <tbody>
+    <tr>
+ <td><a href="http://www.opencascade.com"><img
+ src="sources/logocorp.gif" border="0" height="46" width="122">
+      </a></td>
+   <td> 
+      <div align="right"><a href="http://www.opencascade.org/SALOME/"><img
+ src="sources/application.gif" border="0" height="46" width="108">
+      </a></div>
+ </td>
+ </tr>
+  </tbody>
+</table>
+</center>
+   
+<h1><a name="page2">Examples</a> </h1>
+   <font color="#3333ff">#There is a python example of using  SALOME_NamingService<br>
+</font><br>
+from omniORB import CORBA<br>
+from time import sleep<br>
+from LifeCycleCORBA import *<br>
+from SALOME_NamingServicePy import *<br>
+<br>
+<font color="#3333ff"># initialise the ORB<br>
+</font>orb = CORBA.ORB_init([''], CORBA.ORB_ID)<br>
+<br>
+<font color="#3333ff"># create an LifeCycleCORBA instance<br>
+</font>myLifeCycleCORBA = LifeCycleCORBA(orb)<br>
+<br>
+<font color="#3333ff">#create a naming service instance<br>
+</font>naming_service = SALOME_NamingServicePy_i(orb)<br>
+<br>
+mySession = myNamingService.Resolve("/Kernel/Session")<br>
+mySession.GetInterface()<br>
+sleep(10)<br>
+myLocalVisu = myLifeCycleCORBA.FindOrLoadComponent("FactoryServer", "Visu")<br>
+<br>
+<br>
+<font color="#3333ff">//There is some part of a code written by C++<br>
+</font><br>
+SALOME_NamingService aNamingService(orb);<br>
+CORBA::Object_ptr anObject = aNamingService.Resolve("/Kernel/Session");<br>
+SALOME::Session_var aSession = SALOME::Session::_narrow(anObject);<br>
+Engines::Component_var aComponent = aSession-&gt;GetVisuGen();<br>
+myVisuGen = VISU::VISU_Gen::_narrow(aComponent);<br>
+<br>
+</body>
+</html>
diff --git a/doc/html/INPUT/sources/static/examples_Study.html b/doc/html/INPUT/sources/static/examples_Study.html
new file mode 100755 (executable)
index 0000000..31ccaff
--- /dev/null
@@ -0,0 +1,790 @@
+<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">\r
+<html>\r
+<head>\r
+            \r
+  <meta http-equiv="Content-Type"\r
+ content="text/html; charset=iso-8859-1">\r
+            \r
+  <meta name="GENERATOR"\r
+ content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">\r
+  <title>Main Page</title>\r
+                   \r
+  <link href="doxygen.css" rel="stylesheet" type="text/css">\r
+</head>\r
+  <body>\r
+   &nbsp;   \r
+<center>  \r
+<table width="96%">\r
+   <tbody>\r
+      <tr>\r
+   <td><a href="http://www.opencascade.com"><img src="sources/ogocorp.gif"\r
+ border="0" height="46" width="122">\r
+        </a></td>\r
+     <td>               \r
+      <div align="right"><a href="http://www.opencascade.org/SALOME/"><img\r
+ src="sources/application.gif" border="0" height="46" width="108">\r
+        </a></div>\r
+   </td>\r
+   </tr>\r
+         \r
+  </tbody>  \r
+</table>\r
+  </center>\r
+       \r
+<h1><a name="page2">Examples</a> </h1>\r
+     <br>\r
+  <br>\r
+   \r
+<div align="justify">&nbsp;&nbsp;&nbsp; &nbsp;<big><b><i> <small>Interfaces:</small></i></b></big><br>\r
+  <br>\r
+  &nbsp; &nbsp; &nbsp; <a href="#SALOMEDS::Study_impl">SALOMEDS::Study</a><br>\r
+  &nbsp;&nbsp;&nbsp; &nbsp; <a href="#SALOMEDS::StudyBuilder_impl">SALOMEDS::StudyBuilder</a><br>\r
+  &nbsp;&nbsp; &nbsp;&nbsp; <a href="#SALOMEDS::StudyManager_impl">SALOMEDS::StudyManager</a><br>\r
+  &nbsp;&nbsp;&nbsp; &nbsp; <a href="#SALOMEDS::SObject_impl">SALOMEDS::SObject</a><br>\r
+&nbsp;&nbsp;&nbsp; &nbsp; <a href="#SALOMEDS::SComponent_impl">SALOMEDS::SComponent</a><br>\r
+  &nbsp; &nbsp; &nbsp; <a href="#SALOMEDS::SComponentIterator_impl">SALOMEDS::SComponentIterator</a><br>\r
+  &nbsp; &nbsp; &nbsp; <a href="#SALOMEDS::ChildIterator_impl">SALOMEDS::ChildIterator<br>\r
+ </a> &nbsp; &nbsp; &nbsp;<a href="#SALOMEDS::AttributeComment_impl"> SALOMEDS::AttributeComment</a><br>\r
+   &nbsp;&nbsp;&nbsp; &nbsp;<br>\r
+  </div>\r
+  <br>\r
+  <br>\r
+  <br>\r
+   \r
+<div align="center">&nbsp;&nbsp;&nbsp; &nbsp; <small><small><u><big><big><a\r
+ name="SALOMEDS::Study_impl"></a><font color="#000000"\r
+ face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::Study interface</b></big></big></font></big></big></u></small></small><br>\r
+  <br>\r
+   \r
+<div align="left">                  <big><br>\r
+  </big></div>\r
+  <big><br>\r
+  </big>  \r
+<div align="left"><b><big><a class="el"\r
+ href="interfaceSALOMEDS_1_1SComponent.html">SComponent</a>  FindComponent(\r
+in string <i>aComponentName </i>)</big></b><br>\r
+  <i><br>\r
+  <u>Find GEOMETRY component in the opened study by its name:</u></i><br>\r
+  <br>\r
+  &nbsp;&nbsp;&nbsp; str= os.getenv("TmpDir")<br>\r
+  &nbsp;&nbsp;&nbsp; if str == None:<br>\r
+  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; str = "/tmp"<br>\r
+  &nbsp;&nbsp;&nbsp; file = str+"/test.hdf"<br>\r
+  <br>\r
+  &nbsp;&nbsp;&nbsp; openedStudy=batchmode_geompy.myStudyManager.Open(file)<br>\r
+  <br>\r
+  &nbsp;&nbsp;&nbsp; father = openedStudy.FindComponent("GEOM")<br>\r
+  &nbsp;&nbsp;&nbsp; if father is None:<br>\r
+  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;raise&nbsp; RuntimeError, "Geom\r
+ component is not found!&nbsp; Wrong study is opened." <br>\r
+  <br>\r
+  <br>\r
+  </div>\r
+   \r
+<div align="left"><b><big><a class="el"\r
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a>  FindObject ( in string\r
+<em>anObjectName </em>)</big></b><br>\r
+  <br>\r
+  <u><i>Find the SObject of the box by its NameAttribute "box":</i></u><br>\r
+  </div>\r
+   \r
+<div align="left"><br>\r
+  </div>\r
+   \r
+<div align="left">box = openedStudy.FindObject("box")<br>\r
+  if box is None :<br>\r
+  &nbsp;&nbsp;&nbsp; raise&nbsp; RuntimeError, "box was not found! Wrong\r
+study  is opened."<br>\r
+  <br>\r
+  <br>\r
+  <small><big><big><a class="el"\r
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a></big></big><b><big><big>&nbsp;FindObjectID\r
+ ( in</big> <big><a class="el" href="namespaceSALOMEDS.html#a1">ID</a>  </big><em><big>aObjectID\r
+)</big><br>\r
+  #result: "/User data/Case1". <br>\r
+  </em><big><em></em></big><big><em></em></big></big></b></small><u><i>Find\r
+ the SObject of the box by its ID </i>"</u><u>0:1:1:2"<i>:</i></u><br>\r
+   <br>\r
+  </div>\r
+   \r
+<div align="left">box =openedStudy.FindObjectID("0:1:1:2")<br>\r
+  </div>\r
+   \r
+<div align="left">if box is None :<br>\r
+   &nbsp;&nbsp;&nbsp; raise&nbsp; RuntimeError, "box was not found! Wrong \r
+ID is used."<br>\r
+  <br>\r
+  <br>\r
+  <small><big><big><a class="el"\r
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a></big></big></small><big><b>&nbsp;FindObjectIOR\r
+ ( in&nbsp;<a class="el" href="namespaceSALOMEDS.html#a1">ID</a>&nbsp;  <em>aObjectIOR</em>\r
+)</b></big><br>\r
+  <br>\r
+  <u><i>Find the SObject </i></u><u><i>of the result on imported MED file \r
+by it's IOR:</i></u><br>\r
+  <br>\r
+  theResult = myVisu.ImportFile(medFile)<br>\r
+  aSObj = myStudy.FindObjectIOR(theResult.GetID())<br>\r
+  <br>\r
+  <br>\r
+  <big><b><a class="el" href="interfaceSALOMEDS_1_1SObject.html">SObject</a>\r
+ FindObjectByPath ( in string <i>thePath</i> )</b></big><br>\r
+  <br>\r
+  <u><i>Find SObject by path to it:</i></u><br>\r
+  <i><br>\r
+  # create new auxiliary componen</i>t<br>\r
+  aComponent = myStudyBuilder.NewComponent("Virtual Component")<br>\r
+  <br>\r
+  # create auxiliary subtree<br>\r
+  aPath = "/Virtual Component/Case1"<br>\r
+  myStudyBuilder.AddDirectory(aPath)<br>\r
+  <br>\r
+  aSObj = myStudy.FindObjectByPath(aPath)<br>\r
+  <br>\r
+  <br>\r
+  <big><b>void SetContext ( in string <i>thePath</i>)</b> </big><b><big><big>/</big>\r
+ string GetContext ()</big></b><br>\r
+  <br>\r
+  <u><i>Set context of the study to the created case and get it for printing:</i></u><br>\r
+  <br>\r
+  aComponent = myStudyBuilder.NewComponent("User data")<br>\r
+  anAttr = aBuilder.FindOrCreateAttribute(aComponent, "AttributeName")<br>\r
+  anAttrName = anAttr._narrow(SALOMEDS.AttributeName) <br>\r
+  anAttrName.SetValue("User data")<br>\r
+  <br>\r
+  #Add a new case 'Case1' to the component 'User data'<br>\r
+  aBuilder.AddDirectory("/User data/Case1")<br>\r
+  <br>\r
+  #Set a study context to '/User data/Case1'<br>\r
+  aStudy.SetContext("/User data/Case1")<br>\r
+  <br>\r
+  #Print the current study context<br>\r
+  print aStudy.GetContext()<br>\r
+  <u><small><br>\r
+  </small><i>#result: "/User data/Case1".</i></u><br>\r
+  <br>\r
+  <br>\r
+  <big><b><a class="el" href="interfaceSALOMEDS_1_1ChildIterator.html">ChildIterator</a>\r
+ NewChildIterator ( in&nbsp;<a class="el"\r
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a>  aSO            ) </b></big><br>\r
+  <br>\r
+  <u><i>Import med file and print all mesh names that this file includes\r
+(mesh  is a child of the result of imported file):</i></u><br>\r
+  <br>\r
+  <i># define file name</i><br>\r
+  aFileName = datadir + "fra.med"<br>\r
+  <br>\r
+  <i># import file in visu module and get result</i><br>\r
+  theVisu = batchmode_visu.myVisu<br>\r
+  aResult = theVisu.ImportFile(aFileName)<br>\r
+  if aResult is None : raise RuntimeError, "Error"<br>\r
+  else : print "OK"<br>\r
+  &nbsp;<br>\r
+  <i># get current study and its' SObject&nbsp; </i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
+ <br>\r
+  myLocalStudy = theVisu.GetCurrentStudy()<br>\r
+  aSObj = myLocalStudy.FindObjectIOR(aResult.GetID())<br>\r
+  if aSObj is None : raise RuntimeError, "Error"<br>\r
+  else : print "OK"<br>\r
+  <br>\r
+  <i># create iterator by SObject of the current study</i><br>\r
+  aMeshIter = myLocalStudy.NewChildIterator(aSObj);<br>\r
+  <br>\r
+  <i># iterating in the current study (with the help of created iterator) \r
+to find all mesh names</i> &nbsp;<br>\r
+  while aMeshIter.More() :<br>\r
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshSObj = aMeshIter.Value()<br>\r
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshIter.Next()<br>\r
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anAttr = aMeshSObj.FindAttribute("AttributeName")[1]<br>\r
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if anAttr is None :<br>\r
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshSObj\r
+ = aMeshIter.Value()<br>\r
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshIter.Next()<br>\r
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anAttr\r
+ = aMeshSObj.FindAttribute("AttributeName")[1]<br>\r
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anAttr = anAttr._narrow(SALOMEDS.AttributeName);<br>\r
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshName = anAttr.Value()<br>\r
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "&nbsp; ", aMeshName<br>\r
+  <br>\r
+  <br>\r
+  <big><b><a class="el"\r
+ href="interfaceSALOMEDS_1_1SComponentIterator.html">SComponentIterator</a> \r
+NewComponentIterator ()</b></big><br>\r
+ <br>\r
+ <u><i>Find the number an names of all components in the study:</i></u><br>\r
+ <br>\r
+ aCompItr = myStudy.NewComponentIterator()<br>\r
+ <br>\r
+ compNb = 0<br>\r
+ while aCompItr.More():<br>\r
+ &nbsp;&nbsp;&nbsp; aComp = aCompItr.Value()<br>\r
+ &nbsp;&nbsp;&nbsp; aName = aComp.ComponentDataType()<br>\r
+ &nbsp;&nbsp;&nbsp; print "Component name = ", aName<br>\r
+ &nbsp;&nbsp;&nbsp; compNb += 1<br>\r
+ &nbsp;&nbsp;&nbsp; aCompItr.Next()<br>\r
+ <br>\r
+ <br>\r
+ <big><b><a class="el" href="interfaceSALOMEDS_1_1StudyBuilder.html">StudyBuilder</a> \r
+NewBuilder ()</b></big><br>\r
+  </div>\r
+  </div>\r
+ <br>\r
+ <i><u>Create a new StudyBuilder (uses to add or modify an object in the\r
+study ):</u></i><br>\r
+ <br>\r
+ myBuilder = myStudy.NewBuilder() <br>\r
+ <br>\r
+ <br>\r
+ <big><b><a class="el"\r
+ href="interfaceSALOMEDS_1_1AttributeStudyProperties.html">AttributeStudyProperties</a> \r
+GetProperties ()</b></big><br>\r
+ <br>\r
+ <i><u>Get the attribute, which contains the properties of the study, and \r
+change properties of the study </u></i><u>by changing it</u>: <br>\r
+ <br>\r
+ aProperties = myStudy.GetProperties()<br>\r
+ if aProperties == None :<br>\r
+ &nbsp;&nbsp;&nbsp; raise&nbsp; RuntimeError, "Can't create AttributeStudyProperties \r
+attribute"<br>\r
+ aProperties&nbsp;= aProperties._narrow(SALOMEDS.AttributeStudyProperties)<br>\r
+ <br>\r
+ A = aProperties<br>\r
+ <br>\r
+ <i># print stydy properties</i><br>\r
+ print "A.GetUserName()= ", A.GetUserName()<br>\r
+ res,mm,hh,dd,mnth,yy=A.GetCreationDate()<br>\r
+ print "A.GetCreationDate() = ", mm,hh,dd,mnth,yy<br>\r
+ print "A.GetCreationMode() = ", A.GetCreationMode()<br>\r
+ print "A.IsModified() = ", A.IsModified()<br>\r
+ print "A.IsLocked() = ", A.IsLocked()<br>\r
+ <br>\r
+ <i># change the properties of the study</i><br>\r
+ if A.IsLocked() == 0 :<br>\r
+ &nbsp;&nbsp;&nbsp; A.SetUserName("tester"); print 'A.SetUserName("tester"), \r
+A.GetUserName() = ', A.GetUserName()<br>\r
+ &nbsp;&nbsp;&nbsp; A.SetCreationDate(11,11,11,11,2002); print 'A.SetCreationDate(11,11,11,11,2002), \r
+A.GetCreationDate() =', A.GetCreationDate()<br>\r
+ &nbsp;&nbsp;&nbsp; print "A.IsModified() = ", A.IsModified()<br>\r
+ A.SetLocked(1)<br>\r
+ <br>\r
+ <br>\r
+ <big><b>boolean IsModified ()</b></big><br>\r
+ <br>\r
+ <u><i>Find if study is modified:</i></u><br>\r
+ <br>\r
+ IsModified = myStudy.IsModified()<br>\r
+ <br>\r
+ if IsModified == 1:<br>\r
+ &nbsp;&nbsp;&nbsp; print "The study is modified and not saved"<br>\r
+ <br>\r
+ <br>\r
+ <big><b>boolean IsEmpty ()</b></big><br>\r
+ <br>\r
+ <u><i>Find if study is empty:</i></u><br>\r
+  <br>\r
+  IsEmpty = myStudy.IsEmpty()<br>\r
+  <br>\r
+  if IsEmpty == 1:<br>\r
+  &nbsp;&nbsp;&nbsp; print "The study is empty"<br>\r
+ <br>\r
+ <br>\r
+ <br>\r
+ <br>\r
\r
+<div align="center"><small><small><u><big><big><a\r
+ name="SALOMEDS::StudyBuilder_impl"></a><font color="#000000"\r
+ face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::StudyBuilder\r
+interface</b></big></big></font></big></big></u></small></small><br>\r
+ </div>\r
+ <br>\r
+ <br>\r
+ <br>\r
+ <big><b><a class="el" href="interfaceSALOMEDS_1_1SComponent.html">SComponent</a> \r
+NewComponent ( in string <i>ComponentDataType</i> )</b></big><br>\r
+ <br>\r
+ <u><i>Create Geometry SComponent:</i></u><br>\r
+ <br>\r
+ myBuilder = myStudy.NewBuilder()<br>\r
+ father = myBuilder.NewComponent("GEOM")<br>\r
+ <br>\r
+ <big><b><br>\r
+ void DefineComponentInstance ( in <a class="el"\r
+ href="interfaceSALOMEDS_1_1SComponent.html">SComponent</a> <i>aComponent</i>,\r
+in Object <i>ComponentIOR</i> )</b></big><br>\r
+ <br>\r
+ <u><i>Define the instance to the created geometry component:</i></u><br>\r
+ <br>\r
+ <i># find geom component</i><br>\r
+ myLCC = batchmode_salome.lcc<br>\r
+ geom = myLCC.FindOrLoadComponent("FactoryServer", "Geometry")<br>\r
+ geom = geom._narrow(GEOM.GEOM_Gen)<br>\r
+ geom.GetCurrentStudy(myStudyId)<br>\r
+ <br>\r
+ myBuilder = myStudy.NewBuilder()<br>\r
+ <br>\r
+ father = myBuilder.NewComponent("GEOM")<br>\r
+ myBuilder.DefineComponentInstance(father,geom)<br>\r
+ <br>\r
+ <br>\r
+ <big><b><a class="el" href="interfaceSALOMEDS_1_1SObject.html">SObject</a> \r
+NewObject ( in&nbsp;<a class="el"\r
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a> <i>theFatherObject</i>\r
+)</b></big><br>\r
+ <br>\r
+ <u><i>Create box and add it to study:</i></u><br>\r
+ <br>\r
+ from batchmode_geompy import *<br>\r
+ <br>\r
+ <i># create a box</i><br>\r
+ box = geom.MakeBox(0,0,0,100,100,150)<br>\r
+ <br>\r
+ ior = orb.object_to_string(box)<br>\r
+ box._set_Name(ior)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>\r
+ <br>\r
+ <i># create Geometry SComponent</i><br>\r
+ father = myBuilder.NewComponent("GEOM")<br>\r
+ A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName");<br>\r
+ FName = A1._narrow(SALOMEDS.AttributeName)<br>\r
+ FName.SetValue("Geometry")<br>\r
+ myBuilder.DefineComponentInstance(father,geom)<br>\r
+ <br>\r
+ <i># add box to Study</i><br>\r
+ myBuilder.NewCommand()<br>\r
+ newObj = myBuilder.NewObject(father)<br>\r
+ A1 = myBuilder.FindOrCreateAttribute(newObj, "AttributeIOR");<br>\r
+ ObjIOR = A1._narrow(SALOMEDS.AttributeIOR)<br>\r
+ ObjIOR.SetValue(ior)<br>\r
+ A2 = myBuilder.FindOrCreateAttribute(newObj, "AttributeName");<br>\r
+ ObjName = A2._narrow(SALOMEDS.AttributeName)<br>\r
+ ObjName.SetValue("Common_operation")<br>\r
+ id = newObj.GetID()<br>\r
+ box._set_StudyShapeId(id)<br>\r
+ myBuilder.CommitCommand()<br>\r
+ <br>\r
+ <br>\r
+ <b><big>void RemoveObject ( in&nbsp;<a class="el"\r
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a> <i>anObject</i> )</big></b><br>\r
+ <br>\r
+ <u><i># Remove CutPlanes SObject from the StudyBuilder (delete cutplanes):</i></u><br>\r
+ <br>\r
+ SObj=myStudy.FindObjectIOR(cutplanes.GetID())<br>\r
+ myBuilder = newStudy.NewBuilder()<br>\r
+ myBuilder.RemoveObject(SObj)<br>\r
+ <br>\r
+ <b><big><br>\r
+ void LoadWith ( in&nbsp;<a class="el"\r
+ href="interfaceSALOMEDS_1_1SComponent.html">SComponent</a><i> sco</i>, in\r
+<a class="el" href="interfaceSALOMEDS_1_1Driver.html">Driver</a> <i>Engine</i>\r
+) raises (<a class="el" href="exceptionSALOME_1_1SALOME__Exception.html">SALOME::SALOME_Exception</a>)</big></b><br>\r
+ <br>\r
+ <i><u># Load Visu component:</u></i><br>\r
+ <br>\r
+ myBuilder = openedStudy.NewBuilder()<br>\r
+ SCom=openedStudy.FindComponent("VISU")<br>\r
+ myBuilder.LoadWith(SCom ,myVisu)<br>\r
+ <br>\r
+ <br>\r
+ <big><b><a class="el" href="interfaceSALOMEDS_1_1GenericAttribute.html">GenericAttribute</a> \r
+FindOrCreateAttribute ( in&nbsp;<a class="el"\r
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a> <i>anObject</i>,&nbsp;\r
+in string <i>aTypeOfAttribute</i>)</b></big><br>\r
+ <br>\r
+ <u><i>Create AttributeName attribute for created component an set value\r
+to it:</i></u><br>\r
+ <br>\r
+ myBuilder = myStudy.NewBuilder()<br>\r
+ aComponent = myBuilder.NewComponent("User data")<br>\r
+ <br>\r
+ anAttr = myBuilder.FindOrCreateAttribute(aComponent, "AttributeName")<br>\r
+ <br>\r
+ anAttrName = anAttr._narrow(SALOMEDS.AttributeName) <br>\r
+ anAttrName.SetValue("User data")<br>\r
+ <br>\r
+ <br>\r
+ <big><b>boolean FindAttribute ( in  <a class="el"\r
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a> <i>anObject,</i> out<i>&nbsp;</i><a\r
+ class="el" href="interfaceSALOMEDS_1_1GenericAttribute.html">GenericAttribute</a><i> \r
+anAttribute</i>, in string <i>aTypeOfAttribute</i> )</b></big><br>\r
+ <big><b><br>\r
+ </b></big><i><u>Find AttributeName attribute of the field and print the\r
+field name:</u></i><br>\r
+ <br>\r
+ aFieldSObj&nbsp; = myStudy.FindObject("Head, -")<br>\r
+ <br>\r
+ myStudyBuilder.FindAttribute( aFieldSObj, anAttr, "AttributeName")<br>\r
+ if res == 0:<br>\r
+  &nbsp;&nbsp;&nbsp; raise&nbsp; RuntimeError, "Error:&nbsp; Attribute not \r
+found"<br>\r
+ <br>\r
+ anAttr = anAttr._narrow(SALOMEDS.AttributeName);<br>\r
+ aFieldName = anAttr.Value()<br>\r
+ print "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ", aFieldName<br>\r
+ <br>\r
+ <br>\r
+ <b><big>void RemoveAttribute ( in  <a class="el"\r
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a> <i>anObject</i>, in\r
+string <i>aTypeOfAttribute</i> )</big></b><br>\r
+ <big><b><br>\r
+ </b><u><i><small>Remove AttributeSelectable attribute of the field SObject:</small></i></u><br>\r
+ <b><br>\r
+ </b></big>aFieldSObj&nbsp; = myStudy.FindObject("Head, -")<br>\r
+  <br>\r
+  myStudyBuilder.RemoveAttribute( aFieldSObj, "AttributeSelectable")<br>\r
+ <big><b><br>\r
+ <br>\r
+ </b><b>void Addreference ( in&nbsp;<big>  <small><a class="el"\r
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a></small></big><small> \r
+</small><i>anObject</i>, in&nbsp;</b><b>  <a class="el"\r
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a> <i>theReferencedObject</i>\r
+)</b></big><br>\r
+ <br>\r
+ <u><i>Create a reference between created SObject and the existing field:</i></u><br>\r
+ <br>\r
+ aFieldSObj&nbsp; = myStudy.FindObject("Head, -")<br>\r
+ aNewSObj = myBuilder.NewObject(myVisu)<br>\r
+ <br>\r
+ myBuilder.Addreference(aFieldSObj, aNewSObj)<br>\r
+ <big><b><br>\r
+ <br>\r
+ </b></big><big><small><i><u><a name="NewCommand_ex"></a></u></i></small></big><big><small><b><big>void \r
+NewCommand ()<br>\r
+ <br>\r
+ </big></b><i><u>Create new command wich containes actions for changing the \r
+properties of the study:</u></i><b><big><br>\r
+ <br>\r
+ </big></b></small></big>A&nbsp;= myStudy.GetProperties()<br>\r
+ A&nbsp;= aProperties._narrow(SALOMEDS.AttributeStudyProperties)<br>\r
+  <br>\r
+ myBuilder = myStudy.NewBuilder()<br>\r
+  <br>\r
+ myBuilder.NewCommand() <i> # creates a new command</i><br>\r
+  <br>\r
+  <i># change the properties of the study</i><br>\r
+  if A.IsLocked() == 0 :<br>\r
+  &nbsp;&nbsp;&nbsp; A.SetUserName("tester"); print 'A.SetUserName("tester"), \r
+A.GetUserName() = ', A.GetUserName()<br>\r
+  &nbsp;&nbsp;&nbsp; A.SetCreationDate(11,11,11,11,2002); print 'A.SetCreationDate(11,11,11,11,2002), \r
+A.GetCreationDate() =', A.GetCreationDate()<br>\r
+  &nbsp;&nbsp;&nbsp; print "A.IsModified() = ", A.IsModified()<br>\r
+  A.SetLocked(1)<br>\r
+ <big><small><br>\r
+ </small></big>myBuilder.CommitCommand() <i># commits all actions declared \r
+within the created command</i><big><br>\r
+ <b><br>\r
+ <br>\r
+ void CommitCommand()<br>\r
+ </b><small><br>\r
+ </small><i><small>See the end of the <a href="#NewCommand_ex">previous example</a></small></i><b><br>\r
+ <br>\r
+ <br>\r
+ void AbortCommand ()</b></big><br>\r
+ <br>\r
+ <big><small><i><u>Create new command wich containes actions for changing \r
+the properties of the study, cancel all declared actions:</u></i></small></big><br>\r
+ <br>\r
+ A&nbsp;= myStudy.GetProperties()<br>\r
+  A&nbsp;= aProperties._narrow(SALOMEDS.AttributeStudyProperties)<br>\r
+   <br>\r
+  myBuilder = myStudy.NewBuilder()<br>\r
+   <br>\r
+  myBuilder.NewCommand() <i> # creates a new command</i><br>\r
+   <br>\r
+   <i># change the properties of the study</i><br>\r
+   if A.IsLocked() == 0 :<br>\r
+   &nbsp;&nbsp;&nbsp; A.SetUserName("tester"); print 'A.SetUserName("tester"), \r
+A.GetUserName() = ', A.GetUserName()<br>\r
+   &nbsp;&nbsp;&nbsp; A.SetCreationDate(11,11,11,11,2002); print 'A.SetCreationDate(11,11,11,11,2002), \r
+A.GetCreationDate() =', A.GetCreationDate()<br>\r
+   &nbsp;&nbsp;&nbsp; print "A.IsModified() = ", A.IsModified()<br>\r
+   A.SetLocked(1)<br>\r
+  <big><small><br>\r
+  </small></big>myBuilder.AbortCommand() <i># abort all actions declared\r
+within the created command</i><br>\r
+ <br>\r
+ <br>\r
+ <big><b>void Undo () raises (<a class="el"\r
+ href="exceptionSALOMEDS_1_1StudyBuilder_1_1LockProtection.html">LockProtection</a>)</b><b> \r
+<small>, </small></b></big><br>\r
+ <big><b>void Redo ()</b></big> <big><b>raises (<a class="el"\r
+ href="exceptionSALOMEDS_1_1StudyBuilder_1_1LockProtection.html">LockProtection</a>)</b></big><br>\r
+ <br>\r
+ <big><small><i><u>Create new command wich containes actions for changing \r
+the properties of the study, <br>\r
+ cancel all declared actions and then redo it with the help of undo/redo\r
+mechanism:</u></i></small></big><br>\r
+ <br>\r
+ A&nbsp;= myStudy.GetProperties()<br>\r
+   A&nbsp;= aProperties._narrow(SALOMEDS.AttributeStudyProperties)<br>\r
+    <br>\r
+   myBuilder = myStudy.NewBuilder()<br>\r
+    <br>\r
+   myBuilder.NewCommand() <i> # creates a new command</i><br>\r
+    <br>\r
+    <i># change the properties of the study</i><br>\r
+    if A.IsLocked() == 0 :<br>\r
+    &nbsp;&nbsp;&nbsp; A.SetUserName("tester"); print 'A.SetUserName("tester"), \r
+A.GetUserName() = ', A.GetUserName()<br>\r
+    &nbsp;&nbsp;&nbsp; A.SetCreationDate(11,11,11,11,2002); print 'A.SetCreationDate(11,11,11,11,2002), \r
+A.GetCreationDate() =', A.GetCreationDate()<br>\r
+    &nbsp;&nbsp;&nbsp; print "A.IsModified() = ", A.IsModified()<br>\r
+    A.SetLocked(1)<br>\r
+   <big><small><br>\r
+ </small></big>myBuilder.CommitCommand() <i># commits all actions declared \r
+within the created command</i><br>\r
+ <big><small><br>\r
+  </small></big>myBuilder.Undo() <i># cancels all actions of the command<br>\r
+ <br>\r
+ </i>myBuilder.Redo() <i># redoes all actions of the command</i><br>\r
+ <i><br>\r
+ <br>\r
+ <br>\r
+ </i> \r
+<div align="center"><small><small><u><big><big><a\r
+ name="SALOMEDS::StudyManager_impl"></a><font color="#000000"\r
+ face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::StudyManager\r
+interface</b></big></big></font></big></big></u></small></small><br>\r
+ </div>\r
+ <i><br>\r
+ <br>\r
+ <br>\r
+ </i><big><b><a class="el" href="interfaceSALOMEDS_1_1Study.html">Study</a> \r
+NewStudy ( in string <i>study_name</i> )</b></big><br>\r
+ <i><br>\r
+ <u>Create the study with the name "Test_Study":</u></i><br>\r
+ <br>\r
+ myNewStudy = myStudyManager.NewStudy("Test_Study")<br>\r
+ <br>\r
+ <br>\r
+ <big><b><a class="el" href="interfaceSALOMEDS_1_1Study.html">Study</a> Open\r
+( in </b></big><a class="el" href="namespaceSALOMEDS.html#a0">URL</a><big><b> \r
+<i>aStudyUrl</i> ) raises </b></big>(<a class="el"\r
+ href="exceptionSALOME_1_1SALOME__Exception.html">SALOME::SALOME_Exception</a>)<br>\r
+ <br>\r
+ <i><u>Open the study saved in the HDF file:</u></i><br>\r
+ <br>\r
+ file = 'saved_study.hdf'<br>\r
+ <br>\r
+ openedStudy=myStudyManager.Open(file)<br>\r
+ <br>\r
+ if openedStudy == None:<br>\r
+ &nbsp;&nbsp;&nbsp; raise&nbsp; RuntimeError, "Can't open saved study!"<br>\r
+ <br>\r
+ <br>\r
+ <big><b>void Save (in&nbsp;<a class="el"\r
+ href="interfaceSALOMEDS_1_1Study.html">Study</a> <i>aStudy</i>, in boolean\r
+<i>theMultifile</i> )</b></big><big><b><br>\r
+ <br>\r
+ </b><small><u><i>Open study, import med file into it and save with the old \r
+path and filename:</i></u></small><b><br>\r
+ <br>\r
+ </b></big>file = "saved_study.hdf"<br>\r
+ myMedFile ="medfile.med"<br>\r
+  <br>\r
+  openedStudy=myStudyManager.Open(file)<br>\r
+  <br>\r
+ myVisu.SetCurrentStudy(openedStudy)<br>\r
+ myResult = myVisu.ImportFile(myMedFile)<br>\r
+ <br>\r
+ myStudyManager.Save(openedStudy, 0)<br>\r
+ <br>\r
+ <big><b><br>\r
+ void SaveAs ( in <small><a class="el" href="namespaceSALOMEDS.html#a0">URL</a></small> \r
+<i>aUrl</i>, in&nbsp;<small> <a class="el"\r
+ href="interfaceSALOMEDS_1_1Study.html">Study</a> </small><i>aStudy</i>,\r
+&nbsp;<small><em></em></small></b></big><big><b>in boolean <i>theMultifile\r
+</i>)</b><br>\r
+ <br>\r
+ <small><u><i>Open study from the file and resave it in several files (using \r
+Multifile option while saving)</i></u></small><br>\r
+ <br>\r
+ </big>file = "saved_study.hdf"<br>\r
+ newfile = "resaved_study.hdf"<br>\r
+ <br>\r
+ openedStudy=myStudyManager.Open(file)<br>\r
+   myStudyManager.SaveAs(newfile, openedStudy, 1)<br>\r
+ <big><br>\r
+ <br>\r
+ void Close ( in&nbsp; <a class="el"\r
+ href="interfaceSALOMEDS_1_1Study.html">Study</a> aStudy )</big><br>\r
+ <br>\r
+ <u><i>Close just opened study:</i></u><br>\r
+ <br>\r
+ file = "saved_study.hdf"<br>\r
+ <br>\r
+  openedStudy=myStudyManager.Open(file)<br>\r
+    myStudyManager.Close(openedStudy)<br>\r
+ <br>\r
+ <br>\r
+ <br>\r
\r
+<div align="center"><small><small><u><big><big><a\r
+ name="SALOMEDS::SObject_impl"></a><font color="#000000"\r
+ face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::SObject interface</b></big></big></font></big></big></u></small></small><br>\r
+ </div>\r
+ <br>\r
+ <br>\r
+ <br>\r
+ <big><b><a class="el" href="namespaceSALOMEDS.html#a1">ID</a> GetID ()</b></big><br>\r
+ <br>\r
+ <u><i>Create new SObject and get its ID:</i></u><br>\r
+ <br>\r
+ mySObj = myBuilder.NewObject(myFather)<br>\r
+ <br>\r
+ myID = &nbsp;mySObj.GetID()<br>\r
+ <br>\r
+ <br>\r
+ <big><b><a class="el" href="interfaceSALOMEDS_1_1SComponent.html">SComponent</a> \r
+GetFatherComponent ()</b></big><br>\r
+ <br>\r
+ <u><i>Get father component of the SObject:</i></u><br>\r
+ <br>\r
+ myFather = mySObj.GetFatherComponent();<br>\r
+ <br>\r
+ <br>\r
+ <big><b>boolean FindAttribute ( out&nbsp;<a class="el"\r
+ href="interfaceSALOMEDS_1_1GenericAttribute.html">GenericAttribute</a> <i>anAttribute</i>,\r
+in string <i>aTypeOfAttribute </i>)</b></big><br>\r
+ <br>\r
+ <u><i>Find the AttributeName attribute of the field:</i></u><br>\r
+ <br>\r
+ aFieldSObj&nbsp; = myStudy.FindObject("Head, -")<br>\r
+  <br>\r
+  res = aFieldSObj.FindAttribute( anAttr, "AttributeName")<br>\r
+  if res == 0:<br>\r
+   &nbsp;&nbsp;&nbsp; raise&nbsp; RuntimeError, "Error:&nbsp; Attribute not \r
+found"<br>\r
+ <br>\r
+ <br>\r
+ <big><b><a class="el" href="namespaceSALOMEDS.html#a9">ListOfAttributes</a> \r
+GetAllAttributes ()</b></big><br>\r
+ <br>\r
+ <i><u>Get list of all attributes of the SObject, find the number of attributes:</u></i><br>\r
+ <br>\r
+ attrs = mySObj.GetAllAttributes()<br>\r
+ aLen = len(attrs) <i># number of attributes</i><br>\r
+ <br>\r
+ <br>\r
+ <br>\r
+ <br>\r
\r
+<div align="center"><small><small><u><big><big><a\r
+ name="SALOMEDS::SComponent_impl"></a><font color="#000000"\r
+ face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::SComponent interface</b></big></big></font></big></big></u></small></small><br>\r
+ </div>\r
+ <br>\r
+ <br>\r
+ <br>\r
+ <big><b>string ComponentDataType ()</b></big><br>\r
+ <br>\r
+ <i><u><a name="ComponentIterator_ex"></a>Print names of all components wich \r
+the study contains:</u></i><br>\r
+ <br>\r
+ aCompItr = myStudy.NewComponentIterator() <br>\r
+ <br>\r
+ while aCompItr.More():<br>\r
+ &nbsp;&nbsp;&nbsp; aComp = aCompItr.Value()<br>\r
+ &nbsp;&nbsp;&nbsp; aName = aComp.ComponentDataType()<br>\r
+ &nbsp;&nbsp;&nbsp; print "Component name = ", aName<br>\r
+ &nbsp;&nbsp;&nbsp; aCompItr.Next()<br>\r
+ <br>\r
+ <br>\r
+ <i><b>Other methods are inherited.</b></i><br>\r
+ <br>\r
+ <br>\r
+ <br>\r
+ <br>\r
\r
+<div align="center"><small><small><u><big><big><a\r
+ name="SALOMEDS::SComponentIterator_impl"></a><font color="#000000"\r
+ face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::SComponentIterator\r
+ interface</b></big></big></font></big></big></u></small></small><br>\r
+ </div>\r
+ <br>\r
+ <br>\r
+ <br>\r
+ <big><b>boolean More (), </b><b>void Next (), </b></big><big><b><a\r
+ class="el" href="interfaceSALOMEDS_1_1SComponent.html">SComponent</a> Value\r
+()</b></big><br>\r
+ <br>\r
+ <big><i><small>See <a href="examples_Study.html#ComponentIterator_ex">another \r
+example</a></small></i></big><br>\r
+ <br>\r
+ &nbsp;&nbsp; <br>\r
+ <br>\r
\r
+<div align="center"><small><small><u><big><big><a\r
+ name="SALOMEDS::ChildIterator_impl"></a><font color="#000000"\r
+ face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::ChildIterator\r
+ interface</b></big></big></font></big></big></u></small></small><br>\r
+ </div>\r
+ <br>\r
+ <br>\r
+ <br>\r
+ <big><b>boolean More () , void Next (), <a class="el"\r
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a> Value ()</b></big><br>\r
+ <br>\r
+ <u><i>Print all mesh names of imported MED file with the help of ChildIterator:</i></u><br>\r
+ <br>\r
+ aResult = myVisu.ImportFile("MedFile.med")<br>\r
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>\r
+ myStudy = theVisu.GetCurrentStudy()<br>\r
+ aSObj = myLocalStudy.FindObjectIOR(aResult.GetID())<br>\r
+ <br>\r
+ aMeshIter = myLocalStudy.NewChildIterator(aSObj);&nbsp;<i> # creating new \r
+child iterator</i><br>\r
+ <br>\r
+ while aMeshIter.More() : &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \r
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;\r
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; <i># check if one more\r
+child level exists.     </i><br>\r
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshSObj = aMeshIter.Value() \r
+&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; \r
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;# <i>returns the SObject corresponding \r
+to the current object found by the iterator.      </i>&nbsp;<br>\r
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshIter.Next() <i>&nbsp; &nbsp; \r
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \r
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \r
+&nbsp; &nbsp;# passes the iterator to the next level.     </i><br>\r
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anAttr = aMeshSObj.FindAttribute("AttributeName")[1]<br>\r
+ &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if anAttr is None :<br>\r
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; \r
+aMeshSObj = aMeshIter.Value()<br>\r
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; \r
+&nbsp; aMeshIter.Next()<br>\r
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; \r
+anAttr = aMeshSObj.FindAttribute("AttributeName")[1]<br>\r
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anAttr = anAttr._narrow(SALOMEDS.AttributeName);<br>\r
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshName = anAttr.Value()<br>\r
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "&nbsp; ", aMeshName<br>\r
+ <br>\r
+ <br>\r
+ <br>\r
\r
+<div align="center"><small><small><u><big><big><a\r
+ name="SALOMEDS::AttributeComment_impl"\r
+ href="#SALOMEDS::AttributeComment_impl"></a><font color="#000000"\r
+ face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::AttributeComment\r
+ interface</b></big></big></font></big></big></u></small></small><br>\r
+ </div>\r
+ <br>\r
+ <br>\r
+ <big><b>string Value (), &nbsp;void SetValue ( in string <i>value </i>)</b></big><br>\r
+ <br>\r
+ <u><i>Find the AttributeComment attribute of the "Head" field in the study, \r
+print it, then change it to "My Comment" string:</i></u><br>\r
+ <br>\r
+ aFieldSObj&nbsp; = myStudy.FindObject("Head, -")<br>\r
+ anAttr = aFieldSObj.FindAttribute("AttributeComment")[1]<br>\r
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \r
+anAttr = anAttr._narrow(SALOMEDS.AttributeComment);<br>\r
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \r
+aFieldComment = anAttr.Value()<br>\r
+ <br>\r
+ print "AttributeComment", anAttr<br>\r
+ <br>\r
+ anAttr.SetValue ("My Comment")<br>\r
\r
+<pre></pre>\r
+ <br>\r
+</body>\r
+</html>\r
diff --git a/doc/html/INPUT/sources/static/mapping.html b/doc/html/INPUT/sources/static/mapping.html
new file mode 100755 (executable)
index 0000000..21ead07
--- /dev/null
@@ -0,0 +1,329 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">\r
+<html>\r
+<head>\r
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\r
+   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">\r
+   <title>Main Page</title>\r
+<link href="doxygen.css" rel="stylesheet" type="text/css">\r
+</head>\r
+<body>\r
+&nbsp;\r
+<center><table WIDTH="96%" >\r
+<tr>\r
+<td><a href="http://www.opencascade.com"><img SRC="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>\r
+\r
+<td>\r
+<div align=right><a href="http://www.opencascade.org/SALOME/"><img SRC="sources/application.gif" BORDER=0 height=46 width=108></a></div>\r
+</td>\r
+</tr>\r
+</table></center>\r
+<a NAME="page1"></a>\r
+<h2>\r
+Mapping of IDL definitions to Python language.</h2>\r
+<a NAME="Intro"></a>\r
+<h2>\r
+Introduction</h2>\r
+SALOME is a distributed client/server application using the Common\r
+Object Request Broker Architecture (CORBA). CORBA architecture uses the\r
+Interface Definition Language (IDL), which specifies interfaces between\r
+CORBA objects. So with help of IDL CORBA's language independence is ensured\r
+. Because interfaces described in IDL can be mapped to the most of currently\r
+used programming languages, CORBA applications and components are thus\r
+independent of the language(s) used to implement them. In other words,\r
+a client written in C++ can communicate with a server written in Java,\r
+which in turn can communicate with another server written in COBOL, and\r
+so forth.\r
+<p>One important thing to remember about IDL is that it is not an implementation\r
+language. That is, applications can't be written in IDL. The sole purpose\r
+of IDL is to define interfaces; providing implementations for these interfaces\r
+is performed using some other language.\r
+<p>This page contains an abridged reference manual for mapping of IDL definitions\r
+to Python language. It will be useful for Python programmers who are not\r
+familiar with IDL language. All examples are taken from SALOME source\r
+files. The complete version of Python Language Mapping Specification can\r
+be found <a href="http://www.omg.org" target="top">here.</a>\r
+<br>&nbsp;\r
+<p><a NAME="contents"></a><b>CONTENTS:</b>\r
+<ul>&nbsp;\r
+<li>\r
+<a href="#subsection1">Using Scoped Names</a></li>\r
+\r
+<li>\r
+<a href="#subsection2">Mapping for Template and Array Types</a></li>\r
+\r
+<li>\r
+<a href="#subsection3">Mapping for Objects and Operations</a></li>\r
+\r
+<li>\r
+<a href="#subsection4">Narrowing Object References</a></li>\r
+\r
+<li>\r
+<a href="#subsection5">Mapping for Exceptions</a></li>\r
+\r
+<li>\r
+<a href="#subsection6">Mapping for Enumeration Types</a></li>\r
+\r
+<li>\r
+<a href="#subsection7">Mapping for Structured Types</a></li>\r
+</ul>\r
+<br>\r
+<a NAME="subsection1"></a>\r
+<h3>\r
+Using Scoped Names</h3>\r
+Python implements a module concept that is similar to the IDL scoping mechanisms,\r
+except that it does not allow for nested modules. In addition, Python requires\r
+each object to be implemented in a module; globally visible objects are\r
+not supported.\r
+<p>Because of these constraints, scoped names are translated into Python\r
+using the following rules:\r
+<p>\95 An IDL module mapped into a Python module. Modules containing modules\r
+are mapped to packages (i.e., directories with an <b>__init__</b> module\r
+containing all definitions excluding the nested modules). An implementation\r
+can chose to map toplevel definitions (including the module CORBA) to modules\r
+in an implementationdefined package, to allow concurrent installations\r
+of different CORBA runtime libraries. In that case, the implementation\r
+must provide additional modules so that toplevel modules can be used without\r
+importing them from a package.\r
+<p>\95 For all other scopes, a Python class is introduced that contains all\r
+the definitions inside this scope.\r
+<p>\95 Other global definitions (except modules) appear in a module whose\r
+name is implementation dependent. Implementations are encouraged to use\r
+the name of the IDL file when defining the name of that module.\r
+<p>For instance,\r
+<div class="fragment">\r
+<pre>module SALOMEDS {\r
+&nbsp;interface StudyManager {\r
+&nbsp; void&nbsp; Close(in Study aStudy);\r
+&nbsp;};\r
+};</pre>\r
+</div>\r
+would introduce a module SALOMEDS.py, which contains the following definitions:\r
+<div class="fragment">\r
+<pre># module SALOMEDS.py\r
+class StudyManager:\r
+&nbsp; def _Close(self,aStudy):\r
+&nbsp;&nbsp; pass #interfaces are discussed later</pre>\r
+</div>\r
+To avoid conflicts, IDL names that are also Python identifiers are prefixed\r
+with an underscore (\91_\92).\r
+<p><b><i><a href="#contents">Back to the contents</a></i></b><b><i></i></b>\r
+<p><a NAME="subsection2"></a>\r
+<h3>\r
+Mapping for Template and Array Types</h3>\r
+Both the bounded and the unbounded string type of IDL are mapped to the\r
+Python string type. Wide strings are represented by an implementation-defined\r
+type with the following properties:\r
+<p>\95 For the wide string X and the integer n, X[n] returns the nth character,\r
+which is a wide string of length 1.\r
+<p>\95 len(X) returns the number of characters of wide string X.\r
+<p>\95 CORBA.wstr(c) returns a wide character with the code point c in an\r
+implementation-defined encoding.\r
+<p>\95 X+Y returns the concatenation of wide strings X and Y.\r
+<p>\95 CORBA.word(CORBA.wstr(c)) == c\r
+<p>The sequence template is mapped to sequence objects (e.g., tuples or\r
+lists). Applications should not assume that values of a sequence type are\r
+mutable. Sequences and arrays of octets and characters are mapped to the\r
+string type for efficiency reasons.\r
+<p>For example, given the IDL definitions\r
+<div class="fragment">\r
+<pre>module SALOMEDS {\r
+&nbsp; typedef sequence &lt;string> StringSeq;\r
+&nbsp;&nbsp;&nbsp;\r
+&nbsp;&nbsp; interface AttributeTableOfInteger : GenericAttribute {\r
+\r
+&nbsp;&nbsp;&nbsp; void SetRowTitles(in StringSeq theTitles) raises(IncorrectArgumentLength);\r
+&nbsp;};\r
+};</pre>\r
+</div>\r
+a client could invoke the operation\r
+<div class="fragment">\r
+<pre>print My_AttributeTableOfInteger.SetRowTitles(["X","F"])</pre>\r
+</div>\r
+Array types are mapped like sequence templates. The application in this\r
+example also expects an IncorrectArgumentLength exception if it passes\r
+sequences that violate the bounds constraint or arrays of wrong size.\r
+<p>Another example with arrays. The following IDL definition\r
+<div class="fragment">\r
+<pre>module SALOMEDS {\r
+&nbsp;typedef sequence&lt;GenericAttribute> ListOfAttributes;\r
+&nbsp;interface SObject {\r
+&nbsp; ListOfAttributes&nbsp;&nbsp;&nbsp;&nbsp; GetAllAttributes();\r
+&nbsp;};\r
+};</pre>\r
+</div>\r
+is equal to\r
+<div class="fragment">\r
+<pre>import SALOMEDS\r
+\r
+attributes=[]\r
+&nbsp;\r
+attributes = My_SObject.GetAllAttributes()\r
+\r
+length = len(attributes)\r
+\r
+print "Attributes number = ", length\r
+print attributes</pre>\r
+</div>\r
+<b><i><a href="#contents">Back to the contents</a></i></b>\r
+<p><a NAME="subsection3"></a>\r
+<h3>\r
+Mapping for Objects and Operations</h3>\r
+A CORBA object reference is represented as a Python object at run-time.\r
+This object provides all the operations that are available on the interface\r
+of the object. Although this specification does not mandate the use of\r
+classes for stub objects, the following discussion uses classes to indicate\r
+the interface.\r
+<p>The nil object is represented by <b>None</b>.\r
+<p>If an operation expects parameters of the IDL Object type, any Python\r
+object representing an object reference might be passed as actual argument.\r
+<p>If an operation expects a parameter of an abstract interface, either\r
+an object implementing that interface, or a value supporting this interface\r
+may be passed as actual argument. The semantics of abstract values then\r
+define whether the argument is passed by value or by reference.\r
+<p>Operations of an interface map to methods available on the object references.\r
+Parameters with a parameter attribute of <b>in</b> or <b>inout</b> are\r
+passed from left to right tothe method, skipping <b>out</b> parameters.\r
+The return value of a method depends on the number of <b>out</b> parameters\r
+and the return type. If the operation returns a value, this value forms\r
+the first <i>result value</i>. All <b>inout</b> or <b>out</b> parameters\r
+form consecutive <i>result values</i>. The method result depends then on\r
+the number of <i>result values</i>:\r
+<p>\95 If there is no <i>result value</i>, the method returns None.\r
+<p>\95 If there is exactly one <i>result value</i>, it is returned as a single\r
+value.\r
+<p>\95 If there is more than one <i>result value</i>, all of them are packed\r
+into a tuple, and this tuple is returned.\r
+<p>Assuming the IDL definition\r
+<div class="fragment">\r
+<pre>module SALOMEDS{\r
+&nbsp;interface StudyBuilder{\r
+&nbsp; boolean FindAttribute&nbsp; ( in SObject anObject,&nbsp;\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out GenericAttribute anAttribute,&nbsp;\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in string aTypeOfAttribute );\r
+&nbsp;};\r
+};</pre>\r
+</div>\r
+a client could write\r
+<div class="fragment">\r
+<pre>from SALOMEDS import StudyBuilder;\r
+my_StudyBuilder=...\r
+&nbsp;&nbsp;\r
+&nbsp; res,A=my_StudyBuilder.FindAttribute(Sobj, "AttributeSequenceOfReal")</pre>\r
+</div>\r
+In this example <b>A</b> corresponds to the return value <b>anAttribute</b>\r
+and <b>res</b> to the <b>boolean</b> return value.\r
+<p>If an interface defines an <b>attribute name</b>, for example, the attribute\r
+is mapped into an operation <b>_get_name</b>. If the attribute is not <b>readonly</b>,\r
+there is an additional operation <b>_set_name</b>.\r
+<p>The IDL definition\r
+<div class="fragment">\r
+<pre>module SALOMEDS{\r
+&nbsp;interface Study{\r
+&nbsp; attribute string Name;\r
+&nbsp;};\r
+};</pre>\r
+</div>\r
+is equal to the following\r
+<div class="fragment">\r
+<pre>from SALOMEDS import Study\r
+My_Study=...\r
+&nbsp; Name=My_Study._get_name();\r
+&nbsp; Name=My_Study._set_name();</pre>\r
+</div>\r
+<b><i><a href="#contents">Back to the contents</a></i></b><b><i><a href="#contents"></a></i></b>\r
+<p><a NAME="subsection4"></a>\r
+<h3>\r
+Narrowing Object References</h3>\r
+Python objects returned from CORBA operations or pseudo-operations (such\r
+as string_to_object) might have a dynamic type, which is more specific\r
+than the static type as defined in the operation signature.\r
+<p>Since there is no efficient and reliable way of automatically creating\r
+the most specific type, explicit narrowing is necessary. To narrow an object\r
+reference <b>A</b> to an interface class <b>AttributeSequenceOfReal</b>,\r
+the client can use the following operation\r
+<div class="fragment">\r
+<pre>A = A._narrow(SALOMEDS.AttributeSequenceOfReal)</pre>\r
+</div>\r
+<b><i><a href="#contents">Back to the contents</a></i></b><b><i><a href="#contents"></a></i></b>\r
+<p><a NAME="subsection5"></a>\r
+<h3>\r
+Mapping for Exceptions</h3>\r
+An IDL exception is translated into a Python class derived from CORBA.UserException.\r
+System exceptions are derived from CORBA.SystemException. Both base classes\r
+are derived from CORBA.Exception. The parameters of the exception are mapped\r
+in the same way as the fields of a struct definition. When raising an exception,\r
+a new instance of the class is created; the constructor expects the exception\r
+parameters. For example, the definition\r
+<div class="fragment">\r
+<pre>module SALOMEDS{\r
+&nbsp;interface StudyBuilder{\r
+&nbsp; exception LockProtection {};\r
+&nbsp; void CommitCommand() raises(LockProtection);\r
+&nbsp;};\r
+};</pre>\r
+</div>\r
+could be used caught as\r
+<div class="fragment">\r
+<pre>from SALOMEDS import StudyBuilder;\r
+my_StudyBuilder=...\r
+try:\r
+&nbsp; my_StudyBuilder.CommitCommand();\r
+except StudyBuilder.LockProtection,value:\r
+&nbsp; print "Error! Study is locked for modifications"</pre>\r
+</div>\r
+\r
+<p><br><b><i><a href="#contents">Back to the contents</a></i></b><b><i><a href="#contents"></a></i></b>\r
+<p><a NAME="subsection6"></a>\r
+<h3>\r
+Mapping for Enumeration Types</h3>\r
+An enumeration is mapped into a number of constant objects in the name\r
+space where the enumeration is defined. An application may only test for\r
+equivalence of two enumeration values, and not assume that they behave\r
+like numbers. For example, the definition\r
+<div class="fragment">\r
+<pre>module VISU {\r
+&nbsp;interface PrsObject{\r
+&nbsp;\r
+&nbsp; enum PrsObjType{ TCURVE, TTABLE, TMESH, TCONTAINER,\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TSCALARMAP, TISOSURFACE, TDEFORMEDSHAPE,\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCUTPLANES, TVECTORS };\r
+&nbsp;};\r
+};</pre>\r
+</div>\r
+introduces the objects\r
+<div class="fragment">\r
+<pre>from VISU import PrsObject\r
+VISU.PrsObjType.TCURVE,VISU.PrsObjType.TTABLE,VISU.PrsObjType.TMESH,VISU.PrsObjType.TCONTAINER,\r
+VISU.PrsObjType.TSCALARMAP,VISU.PrsObjType.TISOSURFACE,VISU.PrsObjType.TDEFORMEDSHAPE,VISU.PrsObjType.TCUTPLANES,\r
+VISU.PrsObjType.TVECTORS</pre>\r
+</div>\r
+<b><i><a href="#contents">Back to the contents</a></i></b>\r
+<p><a NAME="subsection7"></a>\r
+<h3>\r
+Mapping for Structured Types</h3>\r
+An IDL struct definition is mapped into a Python class or type. For each\r
+field in the struct, there is a corresponding attribute in the class with\r
+the same name as the field. The constructor of the class expects the field\r
+values, from left to right. For example, the IDL definition\r
+<div class="fragment">\r
+<pre>struct SDate {\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short Second;\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short Minute;\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short Hour;\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short Day;\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short Month;\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short Year;\r
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };</pre>\r
+</div>\r
+could be used in the Python statements\r
+<div class="fragment">\r
+<pre>Date=SDate(30, 12, 15, 26, 1, 79)\r
+print Date.Second,Date.Minute,Date.Hour,Date.Day,Date.Month,Date.Year</pre>\r
+</div>\r
+\r
+<address>\r
+<b><i><a href="#contents">Back to the contents</a></i></b></address>\r
+\r
+</body>\r
+<!-- Generated by Doxygen 1.2.14 -->\r
+</html>\r
diff --git a/doc/html/INPUT/sources/static/ns_f3-1.jpg b/doc/html/INPUT/sources/static/ns_f3-1.jpg
new file mode 100755 (executable)
index 0000000..fd4f456
Binary files /dev/null and b/doc/html/INPUT/sources/static/ns_f3-1.jpg differ
diff --git a/doc/html/INPUT/sources/static/overview_Kernel.html b/doc/html/INPUT/sources/static/overview_Kernel.html
new file mode 100755 (executable)
index 0000000..144d3c3
--- /dev/null
@@ -0,0 +1,191 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">\r
+<html>\r
+<head>\r
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\r
+   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">\r
+   <title>Main Page</title>\r
+<link href="doxygen.css" rel="stylesheet" type="text/css">\r
+</head>\r
+<body>\r
+&nbsp;\r
+<center><table WIDTH="96%" >\r
+<tr>\r
+<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>\r
+\r
+\r
+<td>\r
+<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>\r
+</td>\r
+</tr>\r
+</table></center>\r
+\r
+\r
+<h1><a name="page2">General overview</a>\r
+</h1>\r
+<a name="cont"></a><h2>Table of contents </h2>\r
+<b><i>\r
+<ul>\r
+  <li><a href="#1">1. Introduction</a></li>\r
+  <li><a href="#2">2. Basic principles </a></li>\r
+               \r
+  <li><a href="#3">3. Services and features of the SALOME kernel module</a></li>\r
+  <ul>\r
+               <li><a href="#3_1">3.1 Session service</a></li>\r
+               <li><a href="#3_2">3.2 Registry service  </a></li>\r
+               <li><a href="#3_3">3.3 Notification service  </a></li>\r
+               <li><a href="#3_4">3.4 Module catalog service  </a></li>\r
+               <li><a href="#3_5">3.5 Data type catalog  </a></li>\r
+               <li><a href="#3_6">3.6 Resource catalog  </a></li>\r
+               <li><a href="#3_7">3.7 Engine  </a></li>\r
+                       <ul>\r
+                       <li><a href="#3_7_1">3.7.1 Component class  </a></li>\r
+                       <li><a href="#3_7_2">3.7.2 Container class  </a></li>\r
+                       </ul>\r
+               </ul>\r
+</ul>\r
+</i> </b> <br>\r
+<a name="1"></a><h2>1. Introduction</h2>\r
+<p>The kernel corresponds to the minimal set of services required for the use of SALOME components (Supervisor, IAPP). \r
+The kernel is also used by application software components (solver) and their container. \r
+The kernel is associated to a unique user who can launch only one kernel at once. \r
+The kernel is launched and destroyed by voluntary actions of the user. These functions are realized via the\r
+use of scripts.</p>\r
+<p>The list of the kernel services related to communication issues is:</p>\r
+<ul>\r
+  <li>The Naming service</li>\r
+  <li> The Session service </li>\r
+  <li>The Life Cycle service </li>\r
+  <li>The Registry service </li>\r
+  <li>The Notification service </li>\r
+</ul>\r
+<p>This list is enlarged with CORBA independent services :</p>\r
+\r
+<ul>\r
+  <li>The module catalog service </li>\r
+  <li>The Data Type Catalog service </li>\r
+  <li>The resource catalog service </li>\r
+</ul>\r
+<p> SALOME kernel module also encapsulates the Engine\r
+<i><a href="#cont">Back to the contents</a></i>\r
+<a name="2"></a><h2>2. Basic principles </h2>\r
+<p>The SALOME user's desktop is a process on a machine. This process includes:</p>\r
+<ul>\r
+  <li>A graphic interface (based on Qt), </li>\r
+  <li>A text interface (Python interpreter), </li>\r
+  <li>A 3D visualization window shared by components.</li>\r
+</ul>\r
+<p>SALOME Modules decompose into an interface (widgets GUI, text mode TUI, 3D visualization V3D) and\r
+an engine.</p>\r
+<p>The description of a module and its components is obtained by consulting the module catalog.</p>\r
+<p>The interface is dynamically loaded in the process of the SALOME user's desktop. The engine is a CORBA\r
+server launched either on the local machine or on the distant machine.</p>\r
+<p>The engine (CORBA server) is created by a factory (or container). \r
+This factory is also a CORBA server. Several containers can be present on a machine. \r
+Some containers are specialized for types of components requiring a specific management. \r
+For example, a specific container is required for components performing parallel calculations.\r
+The engine includes at least a dynamically linked library in the container process. \r
+This library is the implementation of the CORBA server associated to the engine. \r
+If the engine is built from a pre-existent executable code, the library is simply a wrapper of the encapsulated code. \r
+It launches the code in a separate process. Wherever possible, the code is included into the dynamic library.\r
+<p>The container is one of the kernel services. If one needs to create a container on a distant machine, one creates a process resuming a part of the kernel services. The kernel can create other containers on distant machines via the trader (rsh). All the containers and the kernel share the same CORBA naming service with which they register.</p>\r
+<p>The user reaches the functions of various SALOME'S components, either in graphic interactive mode (GUI) or in command mode ( TUI), via a Python interpreter.</p>\r
+<i><a href="#cont">Back to the contents</a></i>\r
+<a name="3"></a>\r
+<h2>3. Services and features of the SALOME kernel module </h2>\r
+<p>This section gives a brief overview of the services composing the kernel module. \r
+  The <a href="overview_Life_Cycle.html">Life Cycle</a> and <a href="overview_Naming.html">Naming</a> \r
+  services are described in separate chapters of this reference manual.</p>\r
+  \r
+<a name="3_1"></a><h3>3.1 Session service </h3>\r
+<p>SALOME session describes the period starting from the kernel creation and \r
+  ending with its destruction. During this period the user can connect the session \r
+  and disconnect from it without ending this session. One connection log could \r
+  be written. A priori, no information resulting from another (past) session can \r
+  be used by the current session. </p>\r
+ <p>Implementation of this service in SALOME application is provided by the class \r
+<a href="interfaceSALOME_1_1Session.html">Session</a> encapsulated in the package \r
+<a href="namespaceSALOME.html">SALOME</a>.</p> \r
+\r
+<a name="3_2"></a><h3>3.2 Registry service </h3>\r
+<p> The active component registry should contain:</p>\r
+\r
+<ul>\r
+  <li>The list of the active components</li>\r
+  <li>The list of the active containers during a SALOME session.</li>\r
+</ul>\r
+<p>It should allow the state of a session. It also should allow to know if session can be stopped.</p>\r
+<p>The API reference for this service is not included in the current version of the reference manual.</p>\r
+\r
+<a name="3_3"></a><h3>3.3 Notification service </h3>\r
+<p>The notification service is a kernel function which allows exchanging of events between CORBA objects.</p>\r
+<p>In comparison with traditional CORBA event service, SALOME notification service allows to:</p>\r
+<ul>\r
+  <li>Filter the events, </li>\r
+  <li>Structure the events,</li>\r
+  <li>Establish quality policies of services,</li>\r
+  <li>Subscribe to various event channels.</li>\r
+</ul>\r
+<p>The API reference for this service is not included in the current version of the reference \r
+  manual. </p>\r
+  \r
+<a name="3_4"></a><h3>3.4 Module catalog service </h3>\r
+<p>There are two module catalogs in SALOME application:</p>\r
+<ul>\r
+<li>General module catalog : This first catalog is common to all SALOME users once the the platform is installed (for example for a particular company or a service). This catalog will be managed by the integrator or the administrator of the platform,\r
+<li>Personal module catalog : A specific catalog for every user (possibly empty). This catalog should notably allow the developers to test a new component before integrating it into the general catalog.\r
+</ul>\r
+<p>The objective of these two module catalogs is to:</p>\r
+<ul>\r
+<li>List the available modules;\r
+<li>Allow the addition, the modification and the deletion of a module in catalogs;\r
+<li>Look for a module and\or a service fulfilling some given criteria (in catalogs);\r
+</ul>\r
+<p><p>Implementation of this service in SALOME application is provided by two classes \r
+<a href="interfaceSALOME__ModuleCatalog_1_1ModuleCatalog.html">ModuleCatalog</a>and <a href="interfaceSALOME__ModuleCatalog_1_1AComponent.html">AComponent</a> encapsulated in the package \r
+<a href="namespaceSALOME__ModuleCatalog.html">SALOME_ModuleCatalog</a>.</p> \r
+\r
+<a name="3_5"></a><h3>3.5 Data type catalog </h3>\r
+\r
+<p>The data exchanged between components services have definite types. During description of input, output, and \r
+configuration parameters of components in the module catalog, the\r
+definition of the parameters types is taken from data type catalog. During the editing of execution of \r
+graphs, it is necessary to check that the connections output-input parameters are of compatible\r
+types.</p>\r
+<p>The data types correspond to CORBA object classes, including attributes and access methods (defined by their IDL). \r
+These types can be created by specialization of generic data types.</p>\r
+<p>The purpose of the data type catalog is to:</p>\r
+<ul>\r
+<li>List the available data types in the catalog;\r
+<li>Browse the type hierarchy to check the compatibility of types (specialized output toward generic input);\r
+<li>Allow the addition, the modification and the deletion of a data type in the catalog;\r
+</ul>\r
+<p>The API reference for this service is not included in the current version of the reference \r
+  manual. </p>\r
+ <a name="3_6"></a><h3>3.6 Resource catalog</h3>       \r
\r
+<p>This catalog describes machines, possible types of container on a machine, resources of machines... This catalog is used by the SALOME LifeCycle service.</p>\r
+<p>The API reference for this service is not included in the current version of the reference \r
+  manual. </p>\r
+  \r
+<a name="3_7"></a><h3>3.7 Engine</h3> \r
+<p>The engine represents  a shared library which can be dynamically loaded by a container. The container can load this library, \r
+given an interface name and an implementation\r
+name. The container dynamically resolves  an extern_C function in the library,\r
+which constructs the CORBA Engine servant object.</p>\r
+<p>The SALOME engine in\r
+ the current version of the application is implemented \r
+  as <b>Engines</b> package of interfaces. It encapsulates two classes: Component, Container.</p> \r
+<p>The API refernce for <b>Engines</b> package can be found <a href="namespaceEngines.html">here</a>. \r
+</p>\r
+<a name="3_7_1"></a><h4>3.7.1 Component class</h4> \r
+<p>This class is used for interaction between the container and the component and between the components inside the container. \r
+</p> \r
+<p>The API reference for this class can be found <a href="interfaceEngines_1_1Component.html">here</a>.</p>\r
+\r
+<a name="3_7_2"></a><h4>3.7.2 Container class</h4> \r
+<p>This class provides a set of methods which are necessary for definition of the process of loading and registration of new components in SALOME application.</p> \r
+<p>The API reference for this class can be found <a href="interfaceEngines_1_1Container.html">here</a>.</p>\r
+\r
+<i><a href="#cont">Back to the contents</a></i> \r
+</body>\r
+</html>\r
diff --git a/doc/html/INPUT/sources/static/overview_Life_Cycle.html b/doc/html/INPUT/sources/static/overview_Life_Cycle.html
new file mode 100755 (executable)
index 0000000..659c2ab
--- /dev/null
@@ -0,0 +1,90 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">\r
+<html>\r
+<head>\r
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\r
+   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">\r
+   <title>Life Cycle service Description</title>\r
+\r
+<link href="doxygen.css" rel="stylesheet" type="text/css">\r
+\r
+</head>\r
+\r
+<body>\r
+&nbsp;\r
+<center><table WIDTH="96%" >\r
+<tr>\r
+<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>\r
+\r
+\r
+<td>\r
+<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>\r
+</td>\r
+</tr>\r
+</table></center>\r
+\r
+\r
+<h1><a name="page2">Life Cycle service Description</a> </h1>\r
+<h2>Introduction</h2>\r
+<p> The objective of this document is to give the users of SALOME \r
+  application a brief overview of the Life Cycle service implemented in SALOME. \r
+  A complete version of the LifeCycle service specification edited by the Object Management Group, Inc.(OMG) can be found <a href="http://www.omg.org" target="top">here.</a> <a name="#cont"></a>\r
+  </p>\r
+<a name="cont"></a><h2>Table of contents </h2>\r
+<b><i><ul>\r
+  <li><a href="#1">1. Overview</a></li>\r
+\r
+\r
+  <li><a href="#2">2. SALOME Life Cycle service description</a></li>\r
+</ul>\r
+</i></b><br>\r
+\r
+<a name="1"></a><h2>1. Overview</h2>\r
+  \r
+<p>Life Cycle service defines services and conventions for creating, deleting, copying and moving objects. \r
+Because CORBA-based environments support distributed objects, the Life Cycle service defines conventions that allow clients to perform \r
+life cycle operations on objects in different locations. This overview describes the life cycle problem for distributed object systems. </p>\r
+<br>\r
+  \r
+\r
+<a name="2"></a><h2>2. SALOME Life Cycle service description</h2>\r
+<p>The SALOME  Life Cycle service represents a partial implementation of the CORBA LifeCycle service. <p>\r
+<p>From general point of view, the SALOME  Life Cycle service allows to <i>find</i> or <i>load</i> with the help of a given container a definte SALOME component with its further\r
+initialization and registration in the Naming service.</p>\r
+<p><b>Container</b>  - it's a certain engine realizing the mechanism of loading a SALOME module.</p>\r
+  <p><b>Component</b> - it's a certain abstract shell wrapping SALOME modules, performing all operations concerned with their initialization and registration. </p>\r
+<p>From the point of view of the service user, the Life Cycle provides a set of functions allowing to :</p>\r
+<ul>\r
+<li>Locate a machine (more generally a container) by a logical set of required features (of both container and\r
+       machine);</li>\r
+<li>Load  components on the obtained containers;</li>\r
+<li>Create a container;</li>\r
+<li>Obtain the container containing a given component;</li>\r
+<li>Treat the list of the active components;</li>\r
+<li>Treat the list of the available containers.</li>\r
+</ul>\r
\r
+\r
+\r
+<p>The SALOME  Life Cycle is a CORBA server. This server at its initialization is  registered with the naming service.</p>\r
+<p>The Life Cycle service is invoked  to find a container and use it to load a\r
+component. It supplies, as parameters, the type of container and the machine features required for loading\r
+a given component.\r
+</p>\r
+<p>The Life Cycle service then returns a CORBA reference of a launched container.</p>\r
+<p>Containers are launched on demand depending on components to be loaded. The Life Cycle service manages  loading of containers.</p>\r
+<p>When there is no launched container matching the request the  Life Cycle service invokes loading of the correct type of container on a correct machine via a rsh type command.</p>\r
+<p>The Life Cycle service interrogates containers to have information about the dynamic state of the machine (load). It contains (and update) the state of the active containers.</p>\r
+<p>The Life Cycle service can implement a loading strategy for new containers on new machines, depending on the state of the already launched containers.</p>\r
+<p>The Life Cycle service can stop containers at the end of session on\r
+demand.</p>\r
+\r
+<p>In SALOME platform the Life Cycle service is implemented in <b>SALOME_Life CycleCORBA</b> class. The API refernce for the methods of this class\r
+can be found <a href="classSALOME__LifeCycleCORBA.html"> here</a>.</p>\r
+<i><a href="#cont">Back to the contents</a></i>\r
+<br>\r
+\r
+  \r
+<br>\r
+\r
+</body>\r
+</html>\r
diff --git a/doc/html/INPUT/sources/static/overview_Naming.html b/doc/html/INPUT/sources/static/overview_Naming.html
new file mode 100755 (executable)
index 0000000..ae24ab5
--- /dev/null
@@ -0,0 +1,197 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">\r
+<html>\r
+<head>\r
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\r
+   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">\r
+   <title>Naming Service Description</title>\r
+<link href="doxygen.css" rel="stylesheet" type="text/css">\r
+</head>\r
+<body>\r
+&nbsp;\r
+<center><table WIDTH="96%" >\r
+<tr>\r
+<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>\r
+\r
+\r
+<td>\r
+<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>\r
+</td>\r
+</tr>\r
+</table></center>\r
+\r
+\r
+<h1><a name="page2">Naming Service Description </a></h1>\r
+<br>\r
+<h2>Introduction</h2>\r
+<p>This page contains an abridged version of the Naming Service specification \r
+  edited by the Object Management Group, Inc.(OMG). The objective of this document is to give the users of SALOME \r
+  application a brief overview of the Naming Service implemented in SALOME. \r
+  A complete version of this document can be found <a href="http://www.omg.org" target="top">here.</a> <a name="#cont"></a>\r
+  </p>\r
+       <br>\r
+<a name="cont"></a><h2>Table of contents </h2>\r
+<b><i>\r
+<ul>\r
+  <li><a href="#1">1. Overview</a></li>\r
+  <li><a href="#2">2. SALOME Naming Service </a></li>\r
+               <ul>\r
+               <li><a href="#2_1">2.1 Introduction </a></li>\r
+               <li><a href="#2_2">2.2 Definitions </a></li>\r
+               <li><a href="#2_3">2.3 Partition of SALOME name directory hierarchy </a></li>\r
+               <li><a href="#2_4">2.4 SALOME name directory persistence </a></li>\r
+               <li><a href="#2_5">2.5 SALOME naming service features </a></li>\r
+               </ul>\r
+  \r
+</ul>\r
+</i> </b> <br>\r
+\r
+<a name="1"></a><h2>1. Overview</h2>\r
+<p>This chapter presents the OMG Naming Service and explains how the Naming Service can be used to decouple clients and servers by\r
+providing an external reference exchange mechanism. The chapter also covers how to solve the bootstrapping problem for clients and\r
+servers by controlling their configuration. \r
+ </p>\r
+  \r
+<p>In practice, copying stringified references from a server to all its clients is clumsy and does not scale. The Naming Service provides a way\r
+for servers to advertise references under a name, and for clients to retrieve them. The advantages are: \r
+</p>\r
+<ul>\r
+  <li>Clients and servers can use meaningful names instead of having to deal with stringified references. </li>\r
+    <li> By changing a reference in the service without changing its name, you can transparently direct clients to a different object.</li> \r
+    <li> The Naming Service solves the bootstrapping problem because it provides a fixed point for clients and servers to rendezvous. </li>\r
+</ul>\r
+<p>The Naming Service is much like a white pages phone book. Given a name, it \r
+  returns an object reference. </p>\r
+  \r
+<p>The terminology used in description of NamigService is the following: </p>\r
+\r
+<ul>\r
+  <li>A name-to-IOR association is called by a name binding. </li>\r
+  <li>Each binding identifies exactly one object reference, but an object reference \r
+    may be bound more than once (have more than one name). </li>\r
+  <li><a name="graph"></a>A naming context is an object that contains name bindings. \r
+    The names within a context must be unique. Naming contexts can contain bindings \r
+    to other naming contexts, so naming contexts can form graphs. Binding contexts \r
+    in other contexts creates a <i>naming graph</i> \97 a directed graph with nodes \r
+    and labeled edges where the nodes are contexts. A naming graph allows more \r
+    complex names to reference an object. Given a context in a naming graph, a \r
+    sequence of names can reference an object. This sequence of names (called \r
+    a <i>compound name</i>) defines a path in the naming graph to navigate the \r
+    resolution process. Figure 1-1 shows an example of a naming graph. </li>\r
+  <li>Binding a name to a context means to add a name\96IOR pair to a context. </li>\r
+  <li>Resolving a name means to look for a name in a context and to obtain the \r
+    IOR bound under that name.</li>\r
+</ul>\r
+\r
+  \r
+<div align="center"><img src="ns_f3-1.jpg"> </div>\r
+<p align="center"><font size="-1"><i>Figure 1-1</i> A Naming Graph </font></p>\r
+ <i><a href="#cont">Back to the contents</a></i>\r
+ <br>\r
+ <a name="2"></a>\r
+<h2>2. SALOME Naming Service </h2>\r
+<a name="2_1"></a>\r
+<h3>2.1 Introduction</h3\r
\r
+>\r
+<p>The SALOME Naming Service is a kernel function which supplies a name directory \r
+  hierarchy for pointing out CORBA objects. This name directory hierarchy allows, \r
+  from symbolic names, to dynamically find the references of distributed SALOME \r
+  objects, without information about their location. SALOME objects which can \r
+  be reached via the naming service are:</p>\r
+  \r
+<ul>\r
+  <li>The kernel services</li>\r
+  <li>Containers\r
+  <li>SALOME components instances\r
+</ul>\r
+<p>The name directory hierarchy in SALOME represents a graph of directories containing \r
+  symbolic associations name-reference on objects. (It has been described in the \r
+  <a href="#graph">previous section</a>)</p>\r
+<a name="2_2"></a>\r
+<h3>2.2 Definitions</h3>\r
+<dl>\r
+<dt><i><b>Directory</b></i></dt> \r
+<dd>Context of names containing symbolic associations name-reference on objects.</dd><br><br>\r
+ <dt><i><b>"/"</b></i></dt>\r
+ <dd>Character used in SALOME to separate two names of a directory</dd><br><br>\r
+ <dt><i><b>Access path</b></i></dt> \r
+ <dd>List of names (separated by "/" character representing the path to be followed \r
+ in the graph to reach an association name-reference (the last name in the sequence).</dd>\r
+</dl> \r
+<blockquote><b>Note:</b>An object can be referenced by several symbolic names \r
+  in one or several directories.</blockquote>\r
+  <a name="2_3"></a>\r
+<h3>2.3 Partition of SALOME name directory hierarchy</h3>\r
+<p>The hierarchical organization of the SALOME name directory is not completely frozen .\r
+Because the framework allows the simultaneous opening of several studies, the following levels are determined:</p>\r
+<pre> \r
+ /Kernel\r
+ /Container/\r
+              /Component       \r
+</pre>\r
+<a name="2_4"></a>\r
+<h3>2.4 SALOME name directory persistence</h3>\r
+<p>During a SALOME session, stopping a server in charge of the Naming Service \r
+  doesn't imply the loss of the contents of the SALOME name directory hierarchy. \r
+  A backup file is produced and can be used to restart the Naming Service. So, \r
+  one can recover the state of the SALOME name directory hierarchy at restart \r
+  time. During such breakdown, every call to any function of the Naming Service \r
+  invokes an exception of type <i>Unreachable service</i>.</p>\r
+<a name="2_5"></a>\r
+<h3>2.5 SALOME Naming Service features</h3>\r
+<p>Usage and administration of the name directory hierarchy is realized by means of the following functions:</p> \r
+<ul>\r
+  <li>Recording and recovering of the reference of an object </li>\r
+  <li>Searching for a symbolic name</li>\r
+  <li>Creating of a directory, reading and modifying of the current directory</li>\r
+  <li>Destructing of a symbolic name and a diredtory</li>\r
+</ul>\r
+<p>The access path used in these functions can be defined, either from the root, or from any\r
+directory of SALOME name directory hierarchy.</p> \r
+\r
+<p>In SALOME there is s standard interface of Naming Service, and any user can \r
+  use it for binding and finding objects. How to use it, it's possible to find \r
+  in any CORBA documentation. However in SALOME there is an additional layer which \r
+  hides calls to standard interface. </p>\r
+ <p>The precise API reference for these functions you can find <a href="classSALOME__Naming Service.html">here.</a> </p>\r
+<p>Here is a short list of public methods which are used for working with the SALOME Naming Service:</p>\r
+<dl>\r
+<dt><h4>Register</h4> </dt>\r
+<dd>Method which register object reference in the naming service with given name. It makes assignment between IOR and stringified name.\r
+Then it's possible to get object reference from name using "Resolve" method. </dd>\r
+<br><br>\r
+<dt><h4>Resolve</h4> </dt>\r
+  <dd>Try to obtain object reference from name. It's necessary before publishing \r
+    IOR in the Naming Service by Register method. </dd>\r
+<br><br>\r
+<dt><h4>Find</h4> </dt>\r
+  <dd>The purpose of this method is to research a name from the current directory \r
+    of the naming service. Then if there is occurrence the naming service changes \r
+    directory to go to the directory where last occurrence is found. </dd>\r
+<br><br>\r
+<dt><h4>CreateDirectory</h4> </dt>\r
+<dd>This method allows to create one or several directories in the current directory</dd>\r
+<br><br>\r
+<dt><h4>ChangeDirectory</h4> </dt>\r
+<dd>Moves the current directory. The current directory is moved to the root directory if the input parameter <i>Name</i> is "/".</dd>\r
+<br><br>\r
+<dt><h4>CurrentDirectory</h4> </dt>\r
+<dd>Method allowing to get the current directory.</dd>\r
+<br><br>\r
+<dt><h4>list</h4> </dt>\r
+<dd>Method allowing to list and print the whole context beginning from the current context.</dd> \r
+<br><br>\r
+<dt><h4>list_directory</h4> </dt>\r
+<dd>Method to get all contexts contained in the current directory.</dd> \r
+<br><br>\r
+<dt><h4>DestroyName</h4> </dt>\r
+<dd>Destroys a symbolic name-object reference association.</dd>\r
+<br><br>\r
+<dt><h4>DestroyDirectory</h4> </dt>\r
+<dd>Destroys an empty directory.</dd>\r
+</dl>\r
+\r
+<i><a href="#cont">Back to the contents</a></i>\r
+<br>\r
+</body>\r
+</html>\r
diff --git a/doc/html/INPUT/sources/static/overview_Study.html b/doc/html/INPUT/sources/static/overview_Study.html
new file mode 100755 (executable)
index 0000000..f4c2783
--- /dev/null
@@ -0,0 +1,261 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">\r
+<html>\r
+<head>\r
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\r
+   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">\r
+   <title>Main Page</title>\r
+<link href="doxygen.css" rel="stylesheet" type="text/css">\r
+</head>\r
+<body>\r
+&nbsp;\r
+<center><table WIDTH="96%" >\r
+<tr>\r
+<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>\r
+\r
+\r
+<td>\r
+<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>\r
+</td>\r
+</tr>\r
+</table></center>\r
+\r
+\r
+<h1><a name="page2">General overview</a>\r
+</h1>\r
+<br>\r
+<h2><a name="cont"></a>Table of contents</h2>\r
+<ul>\r
+  <li><i><b><a href="#1">1. Introduction</a></b></i></li>\r
+  <li><i><b><a href="#2">2. Representation of the study</a></b></i></li>\r
+  <ul>\r
+    <li><i><b><a href="#2_1">2.1 Study in transient format</a></b></i></li>\r
+    <li><i><b><a href="#2_2">2.2 Study in persistent format</a></b></i></li>\r
+    <li><i><b><a href="#2_3">2.3 Link between transient and persistent formats</a></b></i></li>\r
+  </ul>\r
+  <li><i><b><a href="#3">3. Services and features of the study</a></b></i></li>\r
+  <ul>\r
+  <li><i><b><a href="#3_1">3.1 Study class </a></b></i></li>\r
+  <li><i><b><a href="#3_2">3.2 StudyBuilder class </a></b></i></li>\r
+  <li><i><b><a href="#3_3">3.3 StudyManager class </a></b></i></li>\r
+  <li><i><b><a href="#3_4">3.4 SObject class </a></b></i></li>\r
+  <li><i><b><a href="#3_5">3.5 SComponent class </a></b></i></li>\r
+  <li><i><b><a href="#3_6">3.6 ChildIterator class </a></b></i></li>\r
+  <li><i><b><a href="#3_7">3.7 SComponentIterator </a></b></i></li>\r
+  <li><i><b><a href="#3_8">3.8 GenericAttribute class  </a></b></i></li>\r
+  <li><i><b><a href="#3_9">3.9 UseCaseBuilder class </a></b></i></li>\r
+  <li><i><b><a href="#3_10">3.10 UseCaseIterator </a></b></i></li>\r
+  <li><i><b><a href="#3_12">3.11 Callback class </a></b></i></li>\r
+  <li><i><b><a href="#3_12">3.12 Driver class </a></b></i></li>\r
+  </ul>\r
+</ul> \r
+<h2><a name="1"></a>1. Introduction</h2>\r
+<p>In SALOME application the Study module is used for management (creation, saving \r
+  etc.) of studies. In the framework of the platform, a study represents a working \r
+  document allowing to manage the data produced by various components which are \r
+  integarted into SALOME.<br>\r
+</p>\r
+<h2><a name="2"></a>2. Representation of the study</h2>\r
+<p>The study represents a set of objects that we will call Study Objects or SObjects. \r
+  The study can be represented as a tree, every node of that tree containing a \r
+  SObject. SObjects in the study can be values or references towards data of calculation, \r
+  graphs of calculation, trees of construction of detail(room), results. Every \r
+  SOject of the study is characterised by a unique identifier in the study.</p>\r
+<p>The study allows to describe the following relations:</p>\r
+<ul>\r
+  <li>The link between the transient and persistent values of an SObject.</li>\r
+  <li>The relations between the SObjects produced by different components.</li>\r
+  <li>The relations between the SObjects produced by the same component.</li>\r
+  <li>The link between an object and its user name.</li>\r
+  <li>The access to the definition of the component which produce an object of \r
+    the study.</li>\r
+  <li>The access to instance of the component (if this one exists) which has produced \r
+    this SObject of the study.</li>\r
+</ul>\r
+\r
+<p>Every SObject in the study contains a set of attributes. These attributes represent \r
+  a set of definitions associated to that object, they can contain values or corba \r
+  references towards the data contained in the internal data structure of a component.</p>\r
+<p>As the structure of the study is tree-like it is possible to associate sub-objects \r
+  to objects.</p>\r
+<p>As particular object, the study contains Component Data which are labels associated to the component\r
+which produce data in the study. It is to this object that we can associate attributes containing ID which\r
+we shall allow to identify the type of the component and also its instance. Objects produced by a\r
+component will be sub-objects of the coresponding Data Component.</p>\r
+<p>For example Component Data GEOM will contain the data produced by the component \r
+  Geom.</p>\r
+<table width="100%" border="0">\r
+  <tr>\r
+    <td><img src="Study_Struct.gif"></td>\r
+    <td>GEOM contains the data produced by the component GEOM. The component MESH \r
+      contains a SObject Mesh_1 wich refers to the SObject identified \r
+      by ID4 corresponding to Geometrie_1.</td>\r
+  </tr>\r
+</table>\r
+<p>We distinguish two forms of the study, the study opened in a session SALOME and the study in the\r
+persistent format. These two formats are described in the following sections</p>\r
+<h3><a name="2_1"></a>2.1 Study in transient format</h3>\r
+<p>The representation of the study in memory will be based on the document OCAF (supplied by OCC).\r
+The document OCAF can be seen as a tree, every node of that tree is identified by <i>a tag</i> representing an integer value.</p>\r
+<p>The exploration of the tree from the root to a node supplies a sequence of tags which establishes a\r
+unique identifier <i>ID</i>. ID represents a character string containing the sequence of tags separated by\r
+one ':'.</p> \r
+<p>For example  0:1:12:4 </p>\r
+<p>To every node we can associate a set of attributes.</p>\r
+<p>The attributes which the study can contain can be of the following types:</p>\r
+<ul>\r
+<li>All standard attributes supplied by OCC (package TdataStd) which allow to define (integers,\r
+real, strings, identifiers, references etc.)</li>\r
+<li>Attributes which contain CORBA references.</li>\r
+<li>Attributes which contain the path HDF to reach the persistent datum. (Cf. the following chapter)</li>\r
+</ul>\r
+<p><b>Remark</b>: it is the study which takes care to build the attributes from the values which are passed to it, so\r
+an attribute is always in a study, and it knows the study object to which it is attached.</p>\r
+<p>Example of a Study Object as a set of various attributes.</p>\r
+<img src="SObject.gif"> \r
+<h3><a name="2_2"></a>2.2 Study in persistent format</h3>\r
+<p>To store a study HDF format is used, this tool allows to represent persistent data in the form of a tree.</p>\r
+<p>Under the root of the persistent document, you can find a set of nodes:</p>\r
+<ul>\r
+<li>The first node contains the skeleton of the study. The skeleton consists of the identifiers of the\r
+objects, as well as the references among them.</li>\r
+<li>There is also one node for every component which has produced data during this SALOME session. Under each of these\r
+node there are values of the data produced by this component.</li>\r
+</ul>\r
+<h3><a name="2_3"></a>2.3 Link between transient and persistent formats</h3>\r
+<p>It will be possible to complete the definition of one object in the study by associating to it an attribute\r
+<i>HDFPath</i> which will contain the path to the persistent data.</p>\r
+<img src="Link.gif"> \r
+<p><a href="#cont"><b><i>Back to the contents</i></b></a></p>\r
+<h2><a name="3"></a>3. Services and features of the study</h2>\r
+<p>The Study in SALOME application possess a wide functionality. This functionality is provided by a set of classes which are described\r
+below.\r
+<h3><a name="3_1"></a>3.1 Study class</h3>\r
+<p>The purpose of the Study class is to manage the data produced by various components \r
+  of SALOME platform. Most of the Study operations are handled by the <a href="#3_3">StudyManager</a> \r
+  and the <a href="#3_2">StudyBuilder</a>. What \r
+  is left in the Study class are elementary inquiries. A Study is explored by \r
+  a set of tools, mainly iterators , which are described further.</p> \r
+  <p>Nevertheless, the Study class contains a set of methods providing: </p>\r
+  \r
+<ul>\r
+  <li>management of study properties \r
+  <li> search for SObjects. \r
+  <li>search for SComponents\r
+  <li>creation of a new StudyBuilder, ComponentIterator, ChildIterator etc.\r
+</ul>\r
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1Study.html">here</a>.</p>\r
+<h3><a name="3_2"></a>3.2 StudyBuilder class</h3>\r
+<p>StudyBuilder supplies basic services to edit the study. The edition of the study is made by the\r
+component. Every component will use the basic services of the StudyBuilder allowing to write and publish objects.</p>\r
+<p>StudyBulder provides the following functionality:</p>\r
+<ul>\r
+  <li>creation, modification or deletetion of SObjects in the study</li>\r
+  <li>creation or removal of SComponents </li>\r
+  <li>undo/redo functionality. For that purpose it supplies the methods NewCommand, \r
+    CommitCommand, AbortCommand. </li>\r
+</ul>\r
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1StudyBuilder.html">here</a>.</p>\r
+<h3><a name="3_3"></a>3.3 StudyManager class</h3>\r
+<p>The purpose of the Manager is to manipulate Studies. Since SALOME is a multi-document \r
+  application during a working session you can operate as many stadies as you \r
+  wishes to create. </p>\r
+<p>For that purpose StudyManager provides the following functionality:</p>\r
+<ul>\r
+  <li>creation, opening, closing and saving studies</li>\r
+  <li>navigation through a set of studies present in the current working session</li>\r
+  <li> copy/paste of the objects in the study functionality.</li>\r
+</ul>\r
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1StudyManager.html">here</a>.</p>\r
+<h3><a name="3_4"></a>3.4 SObject class</h3>\r
+<p>The objects in the study are built by the StudyBuilder. \r
+The SObject class provides methods for elementary inquiries, like getting an object ID or its attribuites. </p>\r
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1SObject.html">here</a>.</p>\r
+<h3><a name="3_5"></a>3.5 SComponent class</h3>\r
+<p>The SComponent class establishes in the study a permanent assocition to the components \r
+integrated into SALOME platform. The SComponent interface is a specialization of the SObject\r
+ class. It inherits the most of its methods from the SObject class which are used for management of the SComponents.</p>\r
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1SComponent.html">here</a>.</p>\r
+<h3><a name="3_6"></a>3.6 ChildIterator class</h3>\r
+<p>It is one of the tools destined for exploration of the study. This class contains a set of methods allowing to get \r
+the access to all identified objects which are sons of another identifiedobject.</p>\r
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1ChildIterator.html">here</a>.</p>\r
+<h3><a name="3_7"></a>3.7 SComponentIterator</h3>\r
+<p>This is the second tool destined for exploration of the study. This interface contains the methods allowing to iterate over all SComponents in the list.\r
+ The search is started from the first SComponent in the list. </p>\r
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1SComponentIterator.html">here</a>.</p> \r
\r
+<h3><a name="3_8"></a>3.8 GenericAttribute class </h3>\r
+ <p>GenericAttribute represents a base class for all attributes which can be assigned to the SObjects created in the study. All attribute classes \r
+ derive from this classe and inherit its methods. </p>\r
+ <p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1GenericAttribute.html">here</a>.</p> \r
\r
+<p>In SALOME application a SObject can possess the following attributes:</p>\r
+<table width="48%" border="0">\r
+  <tr>\r
+    <td width="44%" height="241"> \r
+      <ul>\r
+       <li><a href="interfaceSALOMEDS_1_1AttributeName.html">AttributeName</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeComment.html">AttributeComment</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeIOR.html">AttributeIOR</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeReal.html">AttributeReal</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeInteger.html">AttributeInteger</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeSequenceOfReal.html">AttributeSequenceOfReal</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeSequenceOfInteger.html">AttributeSequenceOfInteger</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributePersistentRef.html">AttributePersistentRef</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeDrawable.html">AttributeDrawable</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeSelectable.html">AttributeSelectable</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeExpandable.html">AttributeExpandable</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeOpened.html">AttributeOpened</a></li>\r
+ </ul></td>\r
+    <td width="56%" height="241"> \r
+      <ul>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeTextColor.html">AttributeTextColor </a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeTextHighlightColor.html">AttributeTextHighlightColor</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributePixMap.html">AttributePixMap</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeTreeNode.html">AttributeTreeNode</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeLocalID.html">AttributeLocalID</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeUserID.html">AttributeUserID</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeTarget.html">AttributeTarget</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeTableOfInteger.html">AttributeTableOfInteger</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeTableOfReal.html">AttributeTableOfReal</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeTableOfString.html">AttributeTableOfString</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributeStudyProperties.html">AttributeStudyProperties</a></li>\r
+ <li><a href="interfaceSALOMEDS_1_1AttributePythonObject.html">AttributePythonObject</a></li>  \r
+ </ul></td>\r
+  </tr>\r
+</table>\r
+<h3><a name="3_9"></a>3.9 UseCaseBuilder class</h3>\r
+<p>UseCase in the study represents a user-defined subtree, containing all or some of the objects which currently exist \r
+in the study. The UseCaseBuilder class contains a set of methods used for management (creation, deletion etc) of this sub-tree in the study. </p>\r
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1UseCaseBuilder.html">here</a>.</p>\r
\r
+<h3><a name="3_10"></a>3.10 UseCaseIterator</h3>\r
+ <p>This class represents an exploration tool for the UseCase. It contains a set of methods used for iteration over the objects in the UseCase.</p> \r
+ <p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1UseCaseIterator.html">here</a>.</p>\r
\r
+<h3><a name="3_11"></a>3.11 Callback class</h3>\r
+ <p>The StudyBuilder can be created with the method NewBuilder. While invocation of this method a new object of the class \r
+ Callback is created and this object is assigned to the newly created Builder as callback which should be called \r
+ when <i>adding</i> and <i>removing</i> the objects. </p>\r
+ <p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1Callback.html">here</a>.</p>\r
\r
+<h3><a name="3_12"></a>3.12 Driver class</h3>\r
\r
+<p>This class represents a common tool for all components integrated into SALOME \r
+  application, that allows them to communicate with the study. It contains a set \r
+  of methods which can be called by any component and which provide the following \r
+  functionality:\r
+<ul>\r
+  <li>publishing in the study of the objects created by a definite component </li>\r
+  <li>saving/loading of the data created by a definite component. These methods \r
+    are called by the StudyManager when loading/saving a study containing the \r
+    data created by a definite component.</li>\r
+  <li>transforming of the transient references into persistant references (or \r
+    vice versa) of the SObjects when saving (or loading) a study</li>\r
+  <li>copy/paste common functionality. These methods can be called by any component \r
+    in order to copy/paste its object created in the study</li>\r
+</ul>\r
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1Driver.html">here</a>.</p>\r
+<p><a href="#cont"><b><i>Back to the contents</i></b></a></p>\r
+</body>\r
+</html>\r
diff --git a/doc/html/INPUT/sources/static/page2.html b/doc/html/INPUT/sources/static/page2.html
new file mode 100755 (executable)
index 0000000..40eed1f
--- /dev/null
@@ -0,0 +1,34 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+   <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+&nbsp;
+<center><table WIDTH="96%" >
+<tr>
+<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>
+
+
+<td>
+<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>
+</td>
+</tr>
+</table></center>
+
+
+</body>
+</html>
+<!-- Generated by Doxygen 1.3-rc2 -->
+<h1><a name="page2">Mapping of SALOME IDL definitions to Python language.</a>
+</h1><ul>
+<li><b>SALOME STUDY module</b><ul>
+<li><a href="HTML/SALOMEDS.html">Mapping of SALOMEDS functions</a></li><li><a href="HTML/SALOMEDS_Attributes.html">Mapping of SALOMEDS_Attributes functions</a></li></ul>
+</li><li><b>SAlOME KERNEL module</b><ul>
+<li><a href="HTML/SALOME_Session.html">Mapping of SALOME_Session functions</a></li><li><a href="HTML/SALOME_ModuleCatalog.html">Mapping of SALOME_ModuleCatalog functions</a></li><li><a href="HTML/SALOME_Exception.html">Mapping of SALOME_Exception functions</a></li><li><a href="HTML/SALOME_Component.html">Mapping of SALOME_Component functions</a></li></ul>
+</li></ul>
+</body>
+</html>
diff --git a/doc/html/INPUT/sources/static/tree.js b/doc/html/INPUT/sources/static/tree.js
new file mode 100755 (executable)
index 0000000..5e07feb
--- /dev/null
@@ -0,0 +1,200 @@
+foldersTree = gFld("<b>SALOME v.1.4.0 </b>", "", "")
+     insDoc(foldersTree, gLnk("Main Page", "", "main.html"))
+
+aux1 = insFld(foldersTree, gFld("TUI Reference Guide", ""))
+  aux2 = insFld(aux1, gFld("Modules", ""))
+    aux3 = insFld(aux2, gFld("SALOME STUDY module", ""))
+            insDoc(aux3, gLnk("Overview", "", "overview_Study.html"))
+      aux4 = insFld(aux3, gFld("Packages", ""))        
+               insDoc(aux4, gLnk("SALOMEDS", "", "namespaceSALOMEDS.html"))
+            insDoc(aux3, gLnk("Examples", "", "examples_Study.html"))
+    aux3 = insFld(aux2, gFld("SALOME KERNEL module", ""))
+             insDoc(aux3, gLnk("Overview", "", "overview_Kernel.html"))
+      aux4 = insFld(aux3, gFld("Packages", "")) 
+               insDoc(aux4, gLnk("SALOME_ModuleCatalog", "", "namespaceSALOME__ModuleCatalog.html"))
+               insDoc(aux4, gLnk("SALOME", "", "namespaceSALOME.html"))
+               insDoc(aux4, gLnk("Engines", "", "namespaceEngines.html"))
+             insDoc(aux3, gLnk("Examples", "", "examples_Kernel.html"))
+
+
+/*! Data structures
+*/
+         insDoc(aux1, gLnk("Data Structures", "", "annotated.html"))
+
+/*!    insDoc(aux1, gLnk("SALOME_ModuleCatalog::Acomponent", "", "interfaceSALOME__ModuleCatalog_1_1Acomponent.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeComment", "", "interfaceSALOMEDS_1_1AttributeComment.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeDrawable", "", "interfaceSALOMEDS_1_1AttributeDrawable.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeExpandable", "", "interfaceSALOMEDS_1_1AttributeExpandable.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeInteger", "", "interfaceSALOMEDS_1_1AttributeInteger.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeIOR", "", "interfaceSALOMEDS_1_1AttributeIOR.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeLocalID", "", "interfaceSALOMEDS_1_1AttributeLocalID.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeName", "", "interfaceSALOMEDS_1_1AttributeName.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeOpened", "", "interfaceSALOMEDS_1_1AttributeOpened.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributePersistentRef", "", "interfaceSALOMEDS_1_1AttributePersistentRef.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributePixMap", "", "interfaceSALOMEDS_1_1AttributePixMap.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributePythonObject", "", "interfaceSALOMEDS_1_1AttributePythonObject.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeReal", "", "interfaceSALOMEDS_1_1AttributeReal.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeSelectable", "", "interfaceSALOMEDS_1_1AttributeSelectable.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeSequenceOfInteger", "", "interfaceSALOMEDS_1_1AttributeSequenceOfInteger.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeSequenceOfReal", "", "interfaceSALOMEDS_1_1AttributeSequenceOfReal.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeStudyProperties", "", "interfaceSALOMEDS_1_1AttributeStudyProperties.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger", "", "interfaceSALOMEDS_1_1AttributeTableOfInteger.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfInteger_1_1IncorrectArgumentLength.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfInteger_1_1IncorrectIndex.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal", "", "interfaceSALOMEDS_1_1AttributeTableOfReal.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfReal_1_1IncorrectArgumentLength.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfReal_1_1IncorrectIndex.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString", "", "interfaceSALOMEDS_1_1AttributeTableOfString.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfString_1_1IncorrectArgumentLength.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfString_1_1IncorrectIndex.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTarget", "", "interfaceSALOMEDS_1_1AttributeTarget.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTextColor", "", "interfaceSALOMEDS_1_1AttributeTextColor.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTextHighlightColor", "", "interfaceSALOMEDS_1_1AttributeTextHighlightColor.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTreeNode", "", "interfaceSALOMEDS_1_1AttributeTreeNode.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeUserID", "", "interfaceSALOMEDS_1_1AttributeUserID.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Callback", "", "interfaceSALOMEDS_1_1Callback.html"))
+       insDoc(aux1, gLnk("SALOMEDS::ChildIterator", "", "interfaceSALOMEDS_1_1ChildIterator.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Color", "", "structSALOMEDS_1_1Color.html"))
+       insDoc(aux1, gLnk("Engines::Component", "", "interfaceEngines_1_1Component.html"))
+       insDoc(aux1, gLnk("Engines::Container", "", "interfaceEngines_1_1Container.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::DefinitionInterface", "", "structSALOME__ModuleCatalog_1_1DefinitionInterface.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Driver", "", "interfaceSALOMEDS_1_1Driver.html"))
+       insDoc(aux1, gLnk("SALOME::ExceptionStruct", "", "structSALOME_1_1ExceptionStruct.html"))
+       insDoc(aux1, gLnk("SALOMEDS::GenericAttribute", "", "interfaceSALOMEDS_1_1GenericAttribute.html"))
+       insDoc(aux1, gLnk("SALOMEDS::GenericAttribute::LockProtection", "", "exceptionSALOMEDS_1_1GenericAttribute_1_1LockProtection.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::IAPP_Affich", "", "structSALOME__ModuleCatalog_1_1IAPP__Affich.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::ModuleCatalog", "", "interfaceSALOME__ModuleCatalog_1_1ModuleCatalog.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::NotFound", "", "exceptionSALOME__ModuleCatalog_1_1NotFound.html"))
+       insDoc(aux1, gLnk("SALOMEDS::NotImplemented", "", "exceptionSALOMEDS_1_1NotImplemented.html"))
+       insDoc(aux1, gLnk("SALOME::SALOME_Exception", "", "exceptionSALOME_1_1SALOME__Exception.html"))
+       insDoc(aux1, gLnk("SALOMEDS::SComponent", "", "interfaceSALOMEDS_1_1SComponent.html"))
+       insDoc(aux1, gLnk("SALOMEDS::SComponentIterator", "", "interfaceSALOMEDS_1_1SComponentIterator.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::Service", "", "structSALOME__ModuleCatalog_1_1Service.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::ServicesParameter", "", "structSALOME__ModuleCatalog_1_1ServicesParameter.html"))
+       insDoc(aux1, gLnk("SALOME::Session", "", "interfaceSALOME_1_1Session.html"))
+       insDoc(aux1, gLnk("SALOME::Session::GUIActive", "", "exceptionSALOME_1_1Session_1_1GUIActive.html"))
+       insDoc(aux1, gLnk("SALOME::Session::RunningStudies", "", "exceptionSALOME_1_1Session_1_1RunningStudies.html"))
+       insDoc(aux1, gLnk("SALOMEDS::SObject", "", "interfaceSALOMEDS_1_1SObject.html"))
+       insDoc(aux1, gLnk("SALOME::StatSession", "", "structSALOME_1_1StatSession.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study", "", "interfaceSALOMEDS_1_1Study.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyCommentError", "", "exceptionSALOMEDS_1_1Study_1_1StudyCommentError.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidComponent", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidComponent.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidContext", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidContext.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidDirectory", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidDirectory.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyNameAlreadyUsed", "", "exceptionSALOMEDS_1_1Study_1_1StudyNameAlreadyUsed.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyNameError", "", "exceptionSALOMEDS_1_1Study_1_1StudyNameError.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyObjectAlreadyExists", "", "exceptionSALOMEDS_1_1Study_1_1StudyObjectAlreadyExists.html"))
+       insDoc(aux1, gLnk("SALOMEDS::StudyBuilder", "", "interfaceSALOMEDS_1_1StudyBuilder.html"))
+       insDoc(aux1, gLnk("SALOMEDS::StudyBuilder::LockProtection", "", "exceptionSALOMEDS_1_1StudyBuilder_1_1LockProtection.html"))
+       insDoc(aux1, gLnk("SALOMEDS::StudyManager", "", "interfaceSALOMEDS_1_1StudyManager.html"))
+       insDoc(aux1, gLnk("SALOMEDS::UseCaseBuilder", "", "interfaceSALOMEDS_1_1UseCaseBuilder.html"))
+       insDoc(aux1, gLnk("SALOMEDS::UseCaseIterator", "", "interfaceSALOMEDS_1_1UseCaseIterator.html"))
+*/
+         insDoc(aux1, gLnk("Class Hierarchy", "", "hierarchy.html"))
+
+/*!    insDoc(aux1, gLnk("SALOME_ModuleCatalog::Acomponent", "", "interfaceSALOME__ModuleCatalog_1_1Acomponent.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfInteger_1_1IncorrectArgumentLength.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfInteger::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfInteger_1_1IncorrectIndex.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfReal_1_1IncorrectArgumentLength.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfReal::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfReal_1_1IncorrectIndex.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString::IncorrectArgumentLength", "", "exceptionSALOMEDS_1_1AttributeTableOfString_1_1IncorrectArgumentLength.html"))
+       insDoc(aux1, gLnk("SALOMEDS::AttributeTableOfString::IncorrectIndex", "", "exceptionSALOMEDS_1_1AttributeTableOfString_1_1IncorrectIndex.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Callback", "", "interfaceSALOMEDS_1_1Callback.html"))
+       insDoc(aux1, gLnk("SALOMEDS::ChildIterator", "", "interfaceSALOMEDS_1_1ChildIterator.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Color", "", "structSALOMEDS_1_1Color.html"))
+  aux2 = insFld(aux1, gFld("Engines::Component", "", "interfaceEngines_1_1Component.html"))
+       insDoc(aux1, gLnk("Engines::Container", "", "interfaceEngines_1_1Container.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::DefinitionInterface", "", "structSALOME__ModuleCatalog_1_1DefinitionInterface.html"))
+  aux2 = insFld(aux1, gFld("SALOMEDS::Driver", "", "interfaceSALOMEDS_1_1Driver.html"))
+       insDoc(aux1, gLnk("SALOME::ExceptionStruct", "", "structSALOME_1_1ExceptionStruct.html"))
+  aux2 = insFld(aux1, gFld("SALOMEDS::GenericAttribute", "", "interfaceSALOMEDS_1_1GenericAttribute.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeComment", "", "interfaceSALOMEDS_1_1AttributeComment.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeDrawable", "", "interfaceSALOMEDS_1_1AttributeDrawable.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeExpandable", "", "interfaceSALOMEDS_1_1AttributeExpandable.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeInteger", "", "interfaceSALOMEDS_1_1AttributeInteger.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeIOR", "", "interfaceSALOMEDS_1_1AttributeIOR.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeLocalID", "", "interfaceSALOMEDS_1_1AttributeLocalID.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeName", "", "interfaceSALOMEDS_1_1AttributeName.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeOpened", "", "interfaceSALOMEDS_1_1AttributeOpened.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributePersistentRef", "", "interfaceSALOMEDS_1_1AttributePersistentRef.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributePixMap", "", "interfaceSALOMEDS_1_1AttributePixMap.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributePythonObject", "", "interfaceSALOMEDS_1_1AttributePythonObject.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeReal", "", "interfaceSALOMEDS_1_1AttributeReal.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeSelectable", "", "interfaceSALOMEDS_1_1AttributeSelectable.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeSequenceOfInteger", "", "interfaceSALOMEDS_1_1AttributeSequenceOfInteger.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeSequenceOfReal", "", "interfaceSALOMEDS_1_1AttributeSequenceOfReal.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeStudyProperties", "", "interfaceSALOMEDS_1_1AttributeStudyProperties.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeTableOfInteger", "", "interfaceSALOMEDS_1_1AttributeTableOfInteger.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeTableOfReal", "", "interfaceSALOMEDS_1_1AttributeTableOfReal.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeTableOfString", "", "interfaceSALOMEDS_1_1AttributeTableOfString.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeTarget", "", "interfaceSALOMEDS_1_1AttributeTarget.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeTextColor", "", "interfaceSALOMEDS_1_1AttributeTextColor.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeTextHighlightColor", "", "interfaceSALOMEDS_1_1AttributeTextHighlightColor.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeTreeNode", "", "interfaceSALOMEDS_1_1AttributeTreeNode.html"))
+         insDoc(aux2, gLnk("SALOMEDS::AttributeUserID", "", "interfaceSALOMEDS_1_1AttributeUserID.html"))
+       insDoc(aux1, gLnk("SALOMEDS::GenericAttribute::LockProtection", "", "exceptionSALOMEDS_1_1GenericAttribute_1_1LockProtection.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::IAPP_Affich", "", "structSALOME__ModuleCatalog_1_1IAPP__Affich.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::ModuleCatalog", "", "interfaceSALOME__ModuleCatalog_1_1ModuleCatalog.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::NotFound", "", "exceptionSALOME__ModuleCatalog_1_1NotFound.html"))
+       insDoc(aux1, gLnk("SALOMEDS::NotImplemented", "", "exceptionSALOMEDS_1_1NotImplemented.html"))
+       insDoc(aux1, gLnk("SALOME::SALOME_Exception", "", "exceptionSALOME_1_1SALOME__Exception.html"))
+       insDoc(aux1, gLnk("SALOMEDS::SComponentIterator", "", "interfaceSALOMEDS_1_1SComponentIterator.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::Service", "", "structSALOME__ModuleCatalog_1_1Service.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog::ServicesParameter", "", "structSALOME__ModuleCatalog_1_1ServicesParameter.html"))
+       insDoc(aux1, gLnk("SALOME::Session", "", "interfaceSALOME_1_1Session.html"))
+       insDoc(aux1, gLnk("SALOME::Session::GUIActive", "", "exceptionSALOME_1_1Session_1_1GUIActive.html"))
+       insDoc(aux1, gLnk("SALOME::Session::RunningStudies", "", "exceptionSALOME_1_1Session_1_1RunningStudies.html"))
+  aux2 = insFld(aux1, gFld("SALOMEDS::SObject", "", "interfaceSALOMEDS_1_1SObject.html"))
+         insDoc(aux2, gLnk("SALOMEDS::SComponent", "", "interfaceSALOMEDS_1_1SComponent.html"))
+       insDoc(aux1, gLnk("SALOME::StatSession", "", "structSALOME_1_1StatSession.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study", "", "interfaceSALOMEDS_1_1Study.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyCommentError", "", "exceptionSALOMEDS_1_1Study_1_1StudyCommentError.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidComponent", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidComponent.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidContext", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidContext.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyInvalidDirectory", "", "exceptionSALOMEDS_1_1Study_1_1StudyInvalidDirectory.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyNameAlreadyUsed", "", "exceptionSALOMEDS_1_1Study_1_1StudyNameAlreadyUsed.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyNameError", "", "exceptionSALOMEDS_1_1Study_1_1StudyNameError.html"))
+       insDoc(aux1, gLnk("SALOMEDS::Study::StudyObjectAlreadyExists", "", "exceptionSALOMEDS_1_1Study_1_1StudyObjectAlreadyExists.html"))
+       insDoc(aux1, gLnk("SALOMEDS::StudyBuilder", "", "interfaceSALOMEDS_1_1StudyBuilder.html"))
+       insDoc(aux1, gLnk("SALOMEDS::StudyBuilder::LockProtection", "", "exceptionSALOMEDS_1_1StudyBuilder_1_1LockProtection.html"))
+       insDoc(aux1, gLnk("SALOMEDS::StudyManager", "", "interfaceSALOMEDS_1_1StudyManager.html"))
+       insDoc(aux1, gLnk("SALOMEDS::UseCaseBuilder", "", "interfaceSALOMEDS_1_1UseCaseBuilder.html"))
+       insDoc(aux1, gLnk("SALOMEDS::UseCaseIterator", "", "interfaceSALOMEDS_1_1UseCaseIterator.html"))
+*/
+         insDoc(aux1, gLnk("Class methods list", "", "functions.html"))
+/*!
+aux1 = insFld(foldersTree, gFld("Namespace List", "", "namespaces.html"))
+       insDoc(aux1, gLnk("Engines", "", "namespaceEngines.html"))
+       insDoc(aux1, gLnk("SALOME", "", "namespaceSALOME.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog", "", "namespaceSALOME__ModuleCatalog.html"))
+       insDoc(aux1, gLnk("SALOMEDS", "", "namespaceSALOMEDS.html"))
+*/
+         insDoc(aux1, gLnk("Namespace Members", "", "namespacemembers.html"))
+
+         insDoc(aux1, gLnk("File List", "", "files.html"))
+      
+/*!
+       insDoc(aux1, gLnk("SALOME_Component.idl", "", "SALOME__Component_8idl.html"))
+       insDoc(aux1, gLnk("SALOME_Exception.idl", "", "SALOME__Exception_8idl.html"))
+       insDoc(aux1, gLnk("SALOME_ModuleCatalog.idl", "", "SALOME__ModuleCatalog_8idl.html"))
+       insDoc(aux1, gLnk("SALOME_Session.idl", "", "SALOME__Session_8idl.html"))
+       insDoc(aux1, gLnk("SALOMEDS.idl", "", "SALOMEDS_8idl.html"))
+       insDoc(aux1, gLnk("SALOMEDS_Attributes.idl", "", "SALOMEDS__Attributes_8idl.html"))
+*/
+
+aux1 = insFld(foldersTree, gFld("IDL/Python mapping", ""))
+         insDoc(aux1, gLnk("Mapping of IDL definitions to Python language", "", "mapping.html"))
+         insDoc(aux1, gLnk("Mapping of SALOME IDL definitions to Python language", "", "page2.html"))
+/*!  insDoc(foldersTree, gLnk("Graphical Class Hierarchy", "", "inherits.html"))
+*/
+aux1 = insFld(foldersTree, gFld("Naming service", ""))
+         insDoc(aux1, gLnk("Naming Service Description ", "", "overview_Naming.html"))
+         insDoc(aux1, gLnk("Salome_NamingService Class Reference", "", "classSALOME__NamingService.html"))
+         insDoc(aux1, gLnk("Examples", "", "examples_Naming.html"))
+aux1 = insFld(foldersTree, gFld("Life Cycle", ""))
+         insDoc(aux1, gLnk("Life Cycle Service Description ", "", "overview_Life_Cycle.html"))
+         insDoc(aux1, gLnk("Salome_LifeCycleCorba Class Reference", "", "classSALOME__LifeCycleCORBA.html"))
+         insDoc(aux1, gLnk("Examples", "", "examples_Life_cycle.html"))
+
+
diff --git a/doc/html/INPUT/sources/static/treeview.js b/doc/html/INPUT/sources/static/treeview.js
new file mode 100644 (file)
index 0000000..55eb43d
--- /dev/null
@@ -0,0 +1,505 @@
+//**************************************************************** 
+// You are free to copy the "Folder-Tree" script as long as you  
+// keep this copyright notice: 
+// Script found in: http://www.geocities.com/Paris/LeftBank/2178/ 
+// Author: Marcelino Alves Martins (martins@hks.com) December '97. 
+//**************************************************************** 
+//Log of changes: 
+//       17 Feb 98 - Fix initialization flashing problem with Netscape
+//       
+//       27 Jan 98 - Root folder starts open; support for USETEXTLINKS; 
+//                   make the ftien4 a js file 
+//       
+// DvH:  Dec 2000 -  Made some minor changes to support external 
+//                   references
+// Definition of class Folder 
+// ***************************************************************** 
+function Folder(folderDescription, tagName, hreference) //constructor 
+{ 
+  //constant data 
+  this.desc = folderDescription 
+  this.tagName = tagName
+  this.hreference = hreference 
+  this.id = -1   
+  this.navObj = 0  
+  this.iconImg = 0  
+  this.nodeImg = 0  
+  this.isLastNode = 0 
+  //dynamic data 
+  this.isOpen = true 
+  this.iconSrc = "ftv2folderopen.png"   
+  this.children = new Array 
+  this.nChildren = 0 
+  //methods 
+  this.initialize = initializeFolder 
+  this.setState = setStateFolder 
+  this.addChild = addChild 
+  this.createIndex = createEntryIndex 
+  this.hide = hideFolder 
+  this.display = display 
+  this.renderOb = drawFolder 
+  this.totalHeight = totalHeight 
+  this.subEntries = folderSubEntries 
+  this.outputLink = outputFolderLink 
+} 
+function setStateFolder(isOpen) 
+{ 
+  var subEntries 
+  var totalHeight 
+  var fIt = 0 
+  var i=0 
+  if (isOpen == this.isOpen) 
+    return 
+  if (browserVersion == 2)  
+  { 
+    totalHeight = 0 
+    for (i=0; i < this.nChildren; i++) 
+      totalHeight = totalHeight + this.children[i].navObj.clip.height 
+      subEntries = this.subEntries() 
+    if (this.isOpen) 
+      totalHeight = 0 - totalHeight 
+    for (fIt = this.id + subEntries + 1; fIt < nEntries; fIt++) 
+      indexOfEntries[fIt].navObj.moveBy(0, totalHeight) 
+  }  
+  this.isOpen = isOpen 
+  propagateChangesInState(this) 
+} 
+function propagateChangesInState(folder) 
+{   
+  var i=0 
+  if (folder.isOpen) 
+  { 
+    if (folder.nodeImg) 
+      if (folder.isLastNode) 
+        folder.nodeImg.src = "ftv2mlastnode.png" 
+      else 
+         folder.nodeImg.src = "ftv2mnode.png" 
+    folder.iconImg.src = "ftv2folderopen.png" 
+    for (i=0; i<folder.nChildren; i++) 
+      folder.children[i].display() 
+  } 
+  else 
+  { 
+    if (folder.nodeImg) 
+      if (folder.isLastNode) 
+        folder.nodeImg.src = "ftv2plastnode.png" 
+      else 
+         folder.nodeImg.src = "ftv2pnode.png" 
+    folder.iconImg.src = "ftv2folderclosed.png" 
+    for (i=0; i<folder.nChildren; i++) 
+      folder.children[i].hide() 
+  }  
+} 
+function hideFolder() 
+{ 
+  if (browserVersion == 1 || browserVersion == 3) { 
+    if (this.navObj.style.display == "none") 
+      return 
+    this.navObj.style.display = "none" 
+  } else { 
+    if (this.navObj.visibility == "hidden") 
+      return 
+    this.navObj.visibility = "hidden" 
+  } 
+   
+  this.setState(0) 
+} 
+function initializeFolder(level, lastNode, leftSide) 
+{ 
+var j=0 
+var i=0 
+var numberOfFolders 
+var numberOfDocs 
+var nc 
+      
+  nc = this.nChildren 
+   
+  this.createIndex() 
+  var auxEv = "" 
+  if (browserVersion > 0) 
+    auxEv = "<a href='javascript:clickOnNode("+this.id+")'>" 
+  else 
+    auxEv = "<a>" 
+  if (level>0) 
+    if (lastNode) //the last 'brother' in the children array 
+    { 
+      this.renderOb(leftSide + auxEv + "<img name='nodeIcon" + this.id + "' src='ftv2mlastnode.png' width=16 height=22 border=0></a>") 
+//    leftSide = leftSide + "<img src='ftv2blank.png' width=16 height=22>"  
+      this.isLastNode = 1 
+    } 
+    else 
+    { 
+      this.renderOb(leftSide + auxEv + "<img name='nodeIcon" + this.id + "' src='ftv2mnode.png' width=16 height=22 border=0></a>") 
+      leftSide = leftSide + "<img src='ftv2vertline.png' width=16 height=22>" 
+      this.isLastNode = 0 
+    } 
+  else 
+    this.renderOb("") 
+   
+  if (nc > 0) 
+  { 
+    level = level + 1 
+    for (i=0 ; i < this.nChildren; i++)  
+    { 
+      if (i == this.nChildren-1) 
+        this.children[i].initialize(level, 1, leftSide) 
+      else 
+        this.children[i].initialize(level, 0, leftSide) 
+      } 
+  } 
+} 
+function drawFolder(leftSide) 
+{ 
+  if (browserVersion == 2) { 
+    if (!doc.yPos) 
+      doc.yPos=8 
+    doc.write("<layer id='folder" + this.id + "' top=" + doc.yPos + " visibility=hidden>") 
+  } 
+  if (browserVersion == 3) 
+  {
+    doc.write("<div id='folder" + this.id + "' style='visibility:hide;'>") 
+  }
+   
+  doc.write("\n<table ") 
+  if (browserVersion == 1) 
+    doc.write(" id='folder" + this.id + "' style='position:block;' ") 
+  doc.write(" border=0 cellspacing=0 cellpadding=0>") 
+  doc.write("\n<tr><td>") 
+  doc.write(leftSide) 
+  this.outputLink() 
+  doc.write("<img name='folderIcon" + this.id + "' ") 
+  doc.write("src='" + this.iconSrc+"' border=0></a>") 
+  doc.write("</td>\n<td valign=middle nowrap>") 
+  if (USETEXTLINKS) 
+  { 
+    this.outputLink() 
+    doc.write(this.desc + "</a>") 
+  } 
+  else 
+    doc.write(this.desc)
+
+/*! 
+  if (this.tagName!="")
+  {
+    doc.write(" [external]")
+  }
+*/
+  doc.write("</td>")  
+  doc.write("\n</table>\n") 
+   
+  if (browserVersion == 2) { 
+    doc.write("</layer>") 
+  } 
+  if (browserVersion == 3) { 
+    doc.write("</div>") 
+  } 
+  if (browserVersion == 1) { 
+    this.navObj = doc.all["folder"+this.id] 
+    this.iconImg = doc.all["folderIcon"+this.id] 
+    this.nodeImg = doc.all["nodeIcon"+this.id] 
+  } else if (browserVersion == 2) { 
+    this.navObj = doc.layers["folder"+this.id] 
+    this.iconImg = this.navObj.document.images["folderIcon"+this.id] 
+    this.nodeImg = this.navObj.document.images["nodeIcon"+this.id] 
+    doc.yPos=doc.yPos+this.navObj.clip.height 
+  } else if (browserVersion == 3) {
+    this.navObj = doc.getElementById("folder"+this.id)
+    this.iconImg = doc.images.namedItem("folderIcon"+this.id)
+    this.nodeImg = doc.images.namedItem("nodeIcon"+this.id)
+  }
+} 
+function outputFolderLink() 
+{ 
+  if (this.hreference) 
+  { 
+    doc.write("<a ")
+    if (this.tagName)
+    {
+      doc.write("doxygen='" + this.tagName + "' ");
+    }
+    doc.write("href='" + this.hreference + "' TARGET=\"basefrm\" ") 
+    if (browserVersion > 0) 
+      doc.write("onClick='javascript:clickOnFolder("+this.id+")'") 
+    doc.write(">") 
+  } 
+  else 
+    doc.write("<a>") 
+} 
+function addChild(childNode) 
+{ 
+  this.children[this.nChildren] = childNode 
+  this.nChildren++ 
+  return childNode 
+} 
+function folderSubEntries() 
+{ 
+  var i = 0 
+  var se = this.nChildren 
+  for (i=0; i < this.nChildren; i++){ 
+    if (this.children[i].children) //is a folder 
+      se = se + this.children[i].subEntries() 
+  } 
+  return se 
+} 
+// Definition of class Item (a document or link inside a Folder) 
+// ************************************************************* 
+function Item(itemDescription, tagName, itemLink) // Constructor 
+{ 
+  // constant data 
+  this.desc = itemDescription 
+  this.tagName = tagName
+  this.link = itemLink 
+  this.id = -1 //initialized in initalize() 
+  this.navObj = 0 //initialized in render() 
+  this.iconImg = 0 //initialized in render() 
+  this.iconSrc = "ftv2doc.png" 
+  // methods 
+  this.initialize = initializeItem 
+  this.createIndex = createEntryIndex 
+  this.hide = hideItem 
+  this.display = display 
+  this.renderOb = drawItem 
+  this.totalHeight = totalHeight 
+} 
+function hideItem() 
+{ 
+  if (browserVersion == 1 || browserVersion == 3) { 
+    if (this.navObj.style.display == "none") 
+      return 
+    this.navObj.style.display = "none" 
+  } else { 
+    if (this.navObj.visibility == "hidden") 
+      return 
+    this.navObj.visibility = "hidden" 
+  }     
+} 
+function initializeItem(level, lastNode, leftSide) 
+{  
+  this.createIndex() 
+  if (level>0) 
+    if (lastNode) //the last 'brother' in the children array 
+    { 
+      this.renderOb(leftSide + "<img src='ftv2lastnode.png' width=16 height=22>") 
+      leftSide = leftSide + "<img src='ftv2blank.png' width=16 height=22>"  
+    } 
+    else 
+    { 
+      this.renderOb(leftSide + "<img src='ftv2node.png' width=16 height=22>") 
+      leftSide = leftSide + "<img src='ftv2vertline.png' width=16 height=22>" 
+    } 
+  else 
+    this.renderOb("")   
+} 
+function drawItem(leftSide) 
+{ 
+  if (browserVersion == 2) 
+    doc.write("<layer id='item" + this.id + "' top=" + doc.yPos + " visibility=hidden>") 
+  if (browserVersion == 3) 
+    doc.write("<div id='item" + this.id + "' style='display:block;'>") 
+     
+  doc.write("\n<table ") 
+  if (browserVersion == 1) 
+    doc.write(" id='item" + this.id + "' style='position:block;' ") 
+  doc.write(" border=0 cellspacing=0 cellpadding=0>\n") 
+  doc.write("<tr><td>") 
+  doc.write(leftSide) 
+  if (this.link!="")
+  {
+    doc.write("<a href=" + this.link + ">") 
+  }
+  doc.write("<img id='itemIcon"+this.id+"' ") 
+  doc.write("src='"+this.iconSrc+"' border=0>") 
+  if (this.link!="")
+  {
+    doc.write("</a>")
+  } 
+  doc.write("</td>\n<td valign=middle nowrap>") 
+  if (USETEXTLINKS && this.link!="") 
+    doc.write("<a href=" + this.link + ">" + this.desc + "</a>") 
+  else 
+    doc.write(this.desc) 
+/*!
+  if (this.tagName!="")
+  {
+    doc.write(" [external]");
+  }
+*/
+  doc.write("\n</table>\n") 
+   
+  if (browserVersion == 2) 
+    doc.write("</layer>") 
+  if (browserVersion == 3) 
+    doc.write("</div>")
+  if (browserVersion == 1) { 
+    this.navObj = doc.all["item"+this.id] 
+    this.iconImg = doc.all["itemIcon"+this.id] 
+  } else if (browserVersion == 2) { 
+    this.navObj = doc.layers["item"+this.id] 
+    this.iconImg = this.navObj.document.images["itemIcon"+this.id] 
+    doc.yPos=doc.yPos+this.navObj.clip.height 
+  } else if (browserVersion == 3) {
+    this.navObj = doc.getElementById("item"+this.id)
+    this.iconImg = doc.images.namedItem("itemIcon"+this.id)
+  }
+} 
+// Methods common to both objects (pseudo-inheritance) 
+// ******************************************************** 
+function display() 
+{ 
+  if (browserVersion == 1 || browserVersion == 3) 
+    this.navObj.style.display = "block" 
+  else 
+    this.navObj.visibility = "show" 
+} 
+function createEntryIndex() 
+{ 
+  this.id = nEntries 
+  indexOfEntries[nEntries] = this 
+  nEntries++ 
+} 
+// total height of subEntries open 
+function totalHeight() //used with browserVersion == 2 
+{ 
+  var h = this.navObj.clip.height 
+  var i = 0 
+   
+  if (this.isOpen) //is a folder and _is_ open 
+    for (i=0 ; i < this.nChildren; i++)  
+      h = h + this.children[i].totalHeight() 
+  return h 
+} 
+// Events 
+// ********************************************************* 
+function clickOnFolder(folderId) 
+{ 
+  var clicked = indexOfEntries[folderId] 
+  if (!clicked.isOpen) 
+    clickOnNode(folderId) 
+  return  
+  if (clicked.isSelected) 
+    return 
+} 
+function clickOnNode(folderId) 
+{ 
+  var clickedFolder = 0 
+  var state = 0 
+  clickedFolder = indexOfEntries[folderId] 
+  state = clickedFolder.isOpen 
+  clickedFolder.setState(!state) //open<->close  
+} 
+function initializeDocument() 
+{ 
+  doc = document;
+  if (doc.all) 
+    browserVersion = 1 //IE4   
+  else 
+    if (doc.layers) 
+      browserVersion = 2 //NS4 
+    else if(navigator.userAgent.toLowerCase().indexOf('gecko') != -1)
+        browserVersion = 3 //mozilla
+      else 
+        browserVersion = 0 //other 
+
+  foldersTree.initialize(0, 1, "") 
+  foldersTree.display()
+  
+  if (browserVersion > 0) 
+  { 
+    if(browserVersion != 3)
+      doc.write("<layer top="+indexOfEntries[nEntries-1].navObj.top+">&nbsp;</layer>") 
+    // close the whole tree 
+    clickOnNode(0) 
+    // open the root folder 
+    clickOnNode(0) 
+  } 
+} 
+// Auxiliary Functions for Folder-Treee backward compatibility 
+// ********************************************************* 
+function gFld(description, tagName, hreference) 
+{ 
+  folder = new Folder(description, tagName, hreference) 
+  return folder 
+} 
+function gLnk(description, tagName, linkData) 
+{ 
+  fullLink = "" 
+  if (linkData!="")
+  {
+    fullLink = "'"+linkData+"' target=\"basefrm\"" 
+  } 
+  linkItem = new Item(description, tagName, fullLink)   
+  return linkItem 
+} 
+function insFld(parentFolder, childFolder) 
+{ 
+  return parentFolder.addChild(childFolder) 
+} 
+function insDoc(parentFolder, document) 
+{ 
+  parentFolder.addChild(document) 
+} 
+// Global variables 
+// **************** 
+USETEXTLINKS = 1
+indexOfEntries = new Array 
+nEntries = 0 
+doc = document 
+browserVersion = 0 
+selectedFolder=0
diff --git a/doc/html/Makefile.in b/doc/html/Makefile.in
new file mode 100644 (file)
index 0000000..7b070ac
--- /dev/null
@@ -0,0 +1,42 @@
+#  Copyright (C) 2003  CEA/DEN, EDF R&D
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Vasily Rusyaev (Open Cascade NN)
+#  Module : doc
+#  $Header: 
+
+top_srcdir=@top_srcdir@
+top_builddir=../..
+root_srcdir=@ROOT_SRCDIR@
+srcdir=@srcdir@
+VPATH=.:@srcdir@
+doxygen=@DOXYGEN@
+
+@COMMENCE@
+
+doc:
+       cp -fr $(srcdir)/INPUT ./; \
+       cd INPUT; \
+       sed 's|../../../share/salome|$(root_srcdir)|' ./doxyfile > ./doxyfile1; \
+       mv -f doxyfile1 doxyfile; \
+       $(doxygen) ./doxyfile; \
+       cd ..; \
+       cp -fr $(srcdir)/INPUT/sources/static/*.* ./html/
+       cp -fr $(srcdir)/INPUT/sources/ html/
+       cp -fr $(srcdir)/INPUT/exemple/ html/
+       cp -fr $(srcdir)/INPUT/HTML/  html/
+
+clean:
+       rm -rf html
+
+distclean: clean
+       rm -rf INPUT
+
+install:
+       $(INSTALL) -d $(docdir); \
+       cp -rf html $(docdir)
+
+uninstall:
+       rm -rf $(docdir)/html
diff --git a/doc/kernel_resources.pdf b/doc/kernel_resources.pdf
new file mode 100644 (file)
index 0000000..35924a7
Binary files /dev/null and b/doc/kernel_resources.pdf differ
diff --git a/doc/kernel_resources.ps b/doc/kernel_resources.ps
new file mode 100644 (file)
index 0000000..7e21165
--- /dev/null
@@ -0,0 +1,1444 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
+%%Title: kernel_resources.dvi
+%%Pages: 8
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 612 792
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -t letter -o kernel_resources.ps
+%+ kernel_resources.dvi
+%DVIPSParameters: dpi=600, compressed
+%DVIPSSource:  TeX output 2002.01.17:1829
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+
+%%EndProcSet
+TeXDict begin 40258431 52099146 1000 600 600 (kernel_resources.dvi)
+@start
+%DVIPSBitmapFont: Fa cmmi10 10 2
+/Fa 2 63 df<EF0380EF0FC0173FEFFF80933803FE00EE0FF8EE3FE0EEFF80DB03FEC7FC
+ED0FF8ED3FE0EDFF80DA03FEC8FCEC0FF8EC3FE0ECFF80D903FEC9FCEB0FF8EB3FE0EBFF
+80D803FECAFCEA0FF8EA3FE0EA7F8000FECBFCA2EA7F80EA3FE0EA0FF8EA03FEC66C7EEB
+3FE0EB0FF8EB03FE903800FF80EC3FE0EC0FF8EC03FE913800FF80ED3FE0ED0FF8ED03FE
+923800FF80EE3FE0EE0FF8EE03FE933800FF80EF3FC0170FEF0380323279AD41>60
+D<126012FCB4FCEA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01FF9038007F
+C0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07FCED01FF9238007FC0EE1FF0EE07FCEE
+01FF9338007F80EF1FC0A2EF7F80933801FF00EE07FCEE1FF0EE7FC04B48C7FCED07FCED
+1FF0ED7FC04A48C8FCEC07FCEC1FF0EC7FC04948C9FCEB07FCEB1FF0EB7FC04848CAFCEA
+07FCEA3FF0EA7FC048CBFC12FC1270323279AD41>62 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fb cmsy10 10 1
+/Fb 1 16 df<EB1FF0EBFFFE487F000714C04814E04814F04814F8A24814FCA3B612FEA9
+6C14FCA36C14F8A26C14F06C14E06C14C0000114006C5BEB1FF01F1F7BA42A>15
+D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fc ectt1000 10 79
+/Fc 79 126 df<121FEA3F80EA7FC0EAFFE0B0EA7FC0AEEA1F00C7FCA7121FEA3F80EA7F
+C0EAFFE0A5EA7FC0EA3F80EA1F000B3470B32C>33 D<003C131E007F137F481480A66C14
+00A6007E7FA6003E133EA3003C131E001C131C191977B32C>I<0107131C90380F803EA8
+011F137EEC007CA4003FB612E0B712F8A43A003E00F800A2EB7E01017C5BA8EBFC0301F8
+5BA2B712F8A4003F15E03A01F007C000A30003130F01E05BA86C486CC7FC25337DB22C>
+I<EB0FC0EB3FE0497E497E80EA01F8EBF07C147E0003133E13E0A5147E147C9138FC3FF8
+9039F0F87FFCEA01F1EBF3F001F7EB3FF89138E01F009038FFC03F6CEB803EA2EC007E49
+137C485A486C13FC00075CEBFF01D80FDF5B381F9F81383F8F8390380FC3E0387E07E75D
+38FC03F7EB01FF5D6D1410ED007C80A26CEBFF80D87E0113C0D87F03EBE0FC3A3F87F7F1
+F89038FFE3FF6C01C113F06C13806C9038007FC0D801FCEB1F8026357EB32C>38
+D<143814FC13011303EB07F8EB0FF0EB1FC0EB3F80EB7F0013FE485A485A5B12075B120F
+5B485AA2123F90C7FCA25A127EA312FE5AAC7E127EA3127F7EA27F121FA26C7E7F12077F
+12037F6C7E6C7E137FEB3F80EB1FC0EB0FF0EB07F8EB03FC130113001438164272B92C>
+40 D<127012FC7E7E6C7E6C7EEA0FE06C7E6C7E6C7E6C7E137F7F1480131F14C0130FEB
+07E0A214F01303A214F81301A314FC1300AC130114F8A3130314F0A2130714E0A2EB0FC0
+131F1480133F14005B13FE485A485A485A485AEA3FC0485A48C7FC5A5A1270164279B92C
+>I<EB0380497EA60020140800F8143E00FE14FE00FF13C1EBC7C7EBE7CF003FB512F800
+0F14E0000314806C140038007FFCA248B5FC481480000F14E0003F14F839FFE7CFFEEBC7
+C7EB07C100FE13C000F8143E0020140800001400A66D5A1F247AAA2C>I<147014F8AF00
+3FB612E0B712F8A4C700F8C7FCB0147025267DAB2C>I<EA0F80EA1FE0EA3FF0EA7FF8A2
+13FCA3123F121F120F120013F8A21201EA03F01207EA1FE0EA7FC0EAFF80130012FC1270
+0E17718A2C>I<007FB512F0B612F8A36C14F01D0579942C>I<121FEA3F80EA7FC0EAFFE0
+A5EA7FC0EA3F80EA1F000B0B708A2C>I<1507ED0F80A2151F16005D153E157E157CA215
+FC5D14015D14035D14075D140F5D141F92C7FC5C143EA2147E147C14FC5C13015C13035C
+13075C130F5C131F91C8FC5B133EA2137E137C13FC5B12015B12035B12075B120F5B121F
+90C9FCA25A123E127E127C12FC5AA2127021417BB92C>I<EB03F8EB0FFE90383FFF8049
+7F90B57E3901FE0FF03903F803F848486C7EEBE0004848137EA248487FA248C7EA1F80A2
+003E140F007E15C0A3007C140700FC15E0AC6C140F007E15C0A46CEC1F80A36C6CEB3F00
+A26C6C137E6D13FE00075CEBF0016C6C485A3901FE0FF06CB55A6D5B6D5BD90FFEC7FCEB
+03F823357CB32C>I<1307497EA2131FA2133F137F13FF5A1207127FB5FC13DF139FEA7C
+1F1200B3AE007FB512E0B612F0A36C14E01C3477B32C>I<EB0FF890387FFF8048B512E0
+0007804814FC391FF80FFE393FE001FF903880007F48C7EA3F80007E141F00FE15C0150F
+6C15E01507A3127E123CC8FCA2150F16C0151F1680153F16005D15FE4A5A14034A5A4A5A
+4A5A4A5AECFF804948C7FC495A495A495AEB3FE0EB7F8049C8FC485A4848EB03C04848EB
+07E0EA1FE0485A48B6FCB7FCA36C15C023347CB32C>I<EB0FFC90387FFF8048B512E000
+0714F84880391FF807FEEBC0004848137F6D7F1680151FA26C5A6CC7FCC8FC153F16005D
+15FE14014A5AEC1FF890381FFFF0495BA215F86D7F90380007FEEC00FF81ED3F80ED1FC0
+150FA216E01507A2123C127EB4FC150F16C0A248141F007FEC3F806DEB7F006C6C5B391F
+F807FE6CB55A6C5C6C14E0C66C1380D90FFCC7FC23357CB32C>I<EC07F04A7E141F143F
+A2147EA214FCEB01F8A2EB03F0EB07E0A2EB0FC0EB1F80A2EB3F00137EA25B485AA2485A
+5B1207485AA2485A48C7FCA2127E5AB712FC16FEA36C15FCC8EAF800AA91387FFFF091B5
+12F8A36E13F027347EB32C>I<000FB512FE4880A35D0180C8FCADEB83FE90389FFF8090
+B512E015F8819038FE03FE9038F000FF01C07F49EB3F8090C7121F6C15C0C8120FA2ED07
+E0A4123C127EB4FC150F16C0A248141F007EEC3F80007FEC7F006C6C5B6D485A391FF80F
+FC6CB55A6C5C000114C06C6C90C7FCEB0FF823347CB22C>I<EB07FC90383FFF8090B512
+E0000314F84880390FFC07FE391FF001FF9038C0007F4848EB3F8090C7121F4815C0007E
+140FA56CEC1F80A26C6CEB3F006D5B390FF001FE3903FC07F86CB55A6C6C13C0D907FCC7
+FC90387FFFC048B512F03903FC07F8390FF001FE391FC0007F497F48C7EA1F80007EEC0F
+C0A248EC07E0A7007EEC0FC0A2007F141F6C6CEB3F806C6CEB7F009038F001FF390FFC07
+FE6CB55A6C5CC614E0013F1380D907FCC7FC23357CB32C>56 D<EB07FCEB3FFF90B512C0
+488048803907FC07F8390FF001FC48486C7ED83F80137E157F48C77E007EEC1F8012FE5A
+ED0FC0A416E0A37E127E007F141F7E6D133F6C6C137F390FF001FF3807FC0F6CB6FC6C14
+F76C14C7013F130FD90FF813C090C7FCA2151F1680153F1600000F5C486C137E486C13FE
+4A5A4A5A14079038801FF0391FE07FE090B55A6C91C7FC6C5B000113F838007FC023357C
+B32C>I<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F00C7FCAE121FEA3F80EA7FC0
+EAFFE0A5EA7FC0EA3F80EA1F000B2470A32C>I<EA0F80EA1FC0EA3FE0EA7FF0A5EA3FE0
+EA1FC0EA0F80C7FCAEEA0F80EA1FE0EA3FF0EA7FF8A213FCA3123F121F120F120013F8A2
+1201EA03F01207EA1FE0EA7FC0EAFF80130012FC12700E3071A32C>I<1502ED0F80151F
+157F15FF913803FE00EC0FFCEC1FF0EC7FE0ECFF80D903FEC7FC495AEB1FF0495AEBFF80
+000390C8FCEA07FCEA1FF8EA3FE0EAFF8090C9FCA27FEA3FE0EA1FF8EA07FC6CB4FCC67F
+EB3FE06D7EEB07FC6D7E903800FF80EC7FE0EC1FF0EC0FFCEC03FE913800FF80157F151F
+150FED0200212A7BAD2C>I<007FB612F0B712F8A36C15F0CAFCA8007FB612F0B712F8A3
+6C15F025127DA12C>I<122012F87EB4FC7FEA3FE0EA1FF8EA07FC6CB4FCC67FEB3FE06D
+7EEB07FC6D7E903800FF80EC7FE0EC1FF0EC0FFCEC03FE913800FF80157FA215FF913803
+FE00EC0FFCEC1FF0EC7FE0ECFF80D903FEC7FC495AEB1FF0495AEBFF80000390C8FCEA07
+FCEA1FF8EA3FE0EAFF8090C9FC12FC5A1220212A7BAD2C>I<14FE497EA4497FA214EFA2
+130781A214C7A2010F7FA314C390381F83F0A590383F01F8A490387E00FCA549137E90B5
+12FEA34880A29038F8003FA34848EB1F80A4000715C049130FD87FFEEBFFFC6D5AB514FE
+6C15FC497E27347EB32C>65 D<007FB512E015F8B612FE6C8016C03903F0003FED0FE0ED
+07F01503A2ED01F8A6ED03F0A21507ED0FE0ED1FC0EDFF8090B612005D5D15FF16C09039
+F0001FE0ED07F0ED03F81501ED00FCA216FE167EA616FE16FC1501ED03F8150FED3FF000
+7FB612E016C0B712806CECFE0015F027337FB22C>I<02FF13700107EBE0F84913F9013F
+13FD4913FFEBFF813901FE007F4848131FD807F0130F1507485A491303485A150148C7FC
+A25A007EEC00F01600A212FE5AAB7E127EA3007F15F06CEC01F8A26C7EA26C6C13036D14
+F06C6C130716E0D803FC131F6C6CEB3FC03A00FF81FF806DB512006D5B010F5B6D13F001
+00138025357DB32C>I<007FB5FCB612C015F0816C803907E003FEEC00FFED7F80153FED
+1FC0ED0FE0A2150716F0150316F81501A4ED00FCACED01F8A3150316F0A2150716E0150F
+ED1FC0153FED7F80EDFF00EC03FE007FB55AB65A5D15C06C91C7FC26337EB22C>I<007F
+B612F0B712F8A37E3903F00001A7ED00F01600A4EC01E04A7EA490B5FCA5EBF003A46E5A
+91C8FCA5163C167EA8007FB612FEB7FCA36C15FC27337EB22C>I<007FB612F8B712FCA3
+7ED803F0C7FCA716781600A515F04A7EA490B5FCA5EBF001A46E5A92C7FCAD387FFFE0B5
+FC805C7E26337EB22C>I<903901FC038090390FFF87C04913EF017F13FF90B6FC481307
+3803FC01497E4848137F4848133F49131F121F5B003F140F90C7FCA2127EED078092C7FC
+A212FE5AA8913803FFF84A13FCA27E007E6D13F89138000FC0A36C141FA27F121F6D133F
+120F6D137F6C7E6C6C13FF6D5A3801FF076C90B5FC6D13EF011F13CF6DEB0780D901FCC7
+FC26357DB32C>I<D87FFEEBFFFCB54813FEA36C486C13FCD807E0EB0FC0B190B6FCA590
+38E0000FB3D87FFEEBFFFCB54813FEA36C486C13FC27337EB22C>I<007FB512F8B612FC
+A36C14F839000FC000B3B3A5007FB512F8B612FCA36C14F81E3379B22C>I<D87FFCEB7F
+F8486CEBFFFCA36C48EB7FF8D807C0EB1F80153FED7F00157E5D4A5A14034A5A5D4A5A4A
+5A143F4AC7FC147E5CEBC1F813C3EBC7FCA2EBCFFEEBDFBEEBFFBF141F01FE7F496C7E13
+F86E7EEBF00301E07FEBC001816E7EA2157E153E153F811680ED0FC0A2ED07E0D87FFCEB
+1FFC486CEB3FFEA36C48EB1FFC27337EB22C>75 D<387FFFE0B57EA36C5BD803F0C8FCB3
+AE16F0ED01F8A8007FB6FCB7FCA36C15F025337DB22C>I<D87FE0EB0FFC486CEB1FFEA2
+6D133F007F15FC000F15E001BC137BA4019E13F3A3EB9F01A2018F13E3A21483A2018713
+C314C7A201831383A214EFA201811303A214FFEB80FEA3147C14381400ACD87FF0EB1FFC
+486CEB3FFEA36C48EB1FFC27337EB22C>I<D87FF0EB7FFC486CEBFFFEA27F007FEC7FFC
+D807FEEB07C013DEA213DF13CFA2148013C714C0A213C314E0A213C114F0A213C014F8A2
+147CA3143EA2141E141FA2140F1587A2140715C7A2140315E71401A215F71400A215FFD8
+7FFC137F487E153FA26C48EB1F8027337EB22C>I<EB7FFF0003B512E0000F14F8488048
+80EBE003EB800048C7127FA2007E80A300FE158048141FB3A86C143FA2007E1500A3007F
+5CA26C6C13FEEBF00790B5FC6C5C6C5C000314E0C66C90C7FC21357BB32C>I<007FB512
+C0B612F88115FF6C15802603F00013C0153FED0FE0ED07F0A2150316F81501A6150316F0
+1507A2ED0FE0ED3FC015FF90B61280160015FC5D15C001F0C8FCB0387FFF80B57EA36C5B
+25337EB22C>I<EB7FFF0003B512E0000F14F848804880EBF007EB800048C7127FA2007E
+80A300FE158048141FB3A7EB01F0EB03F800FE143F267E01FC1300A2EB00FE007F5C147F
+D83F8013FEEBF03F90B5FC6C5C6C5C000314E0C67E90380007F0A26E7EA26E7EA26E7EA2
+157FA2153E21407BB32C>I<387FFFFCB67E15E015F86C803907E007FE1401EC007F6F7E
+151FA26F7EA64B5AA2153F4BC7FCEC01FE140790B55A5D15E081819038E007FCEC01FE14
+00157F81A8160FEE1F80A5D87FFEEB1FBFB5ECFF00815E6C486D5AC8EA01F029347EB22C
+>I<90381FF80790B5EA0F804814CF000714FF5A381FF01F383FC003497E48C7FC007E14
+7F00FE143F5A151FA46CEC0F00007E91C7FC127F7FEA3FE0EA1FFCEBFFC06C13FC0003EB
+FFC06C14F06C6C7F01077F9038007FFEEC07FF02001380153FED1FC0A2ED0FE0A2007814
+0712FCA56CEC0FC0A26CEC1F806D133F01E0EB7F009038FE01FF90B55A5D00F914F0D8F8
+3F13C0D8700790C7FC23357CB32C>I<007FB612FCB712FEA43AFC007E007EA70078153C
+C71400B3AF90383FFFFCA2497F6D5BA227337EB22C>I<3B7FFF803FFFC0B56C4813E0A3
+6C496C13C03B03F00001F800B3AF6D130300015DA26D130700005D6D130F017F495A6D6C
+485AECE0FF6DB5C7FC6D5B010313F86D5B9038003F802B3480B22C>I<D87FF0EB07FF48
+6C491380A36C486D1300001FC8127CA46C6C5CA76C6C495AA4143E147FA33A03E0FF83E0
+A214F7A201E113C3A3000101E35BA201F113C701F313E7A314C1A200005DA201F713F714
+80A301FF13FF017F91C7FC4A7EA4013E133E29347FB22C>87 D<3A3FFF03FFE0484913F0
+148714076C6D13E03A01F800FE007F0000495A13FE017E5BEB7F03013F5B1487011F5B14
+CF010F5B14FF6D5BA26D90C7FCA26D5AA26D5AA2497EA2497EA2497F81EB0FCF81EB1FC7
+EC87F0EB3F83EC03F8EB7F01017E7FEBFE00497F0001147E49137F000380491480151FD8
+7FFEEBFFFC6D5AB514FE6C15FC497E27337EB22C>I<D87FFCEB7FFC486CEBFFFEA36C48
+EB7FFCD807F0EB0FC0151F000315806D133F12016DEB7F0012006D137E017E13FE017F5B
+EB3F01EC81F8131FEC83F0EB0FC314C7903807E7E0A201035B14EF6DB45AA292C7FC7F5C
+147EB0903807FFE0497FA36D5B27337EB22C>I<003FB612C04815E0A4007EC7EA1FC0ED
+3F80A2ED7F00157E15FE4A5A003C5CC712034A5AA24A5A4A5AA24A5A4AC7FCA214FE495A
+A2495A495AA2495A495AA2495A49C8FCA213FE485AA24848EB03C049EB07E01207485A5B
+121F485AA248C7FCB7FCA46C15C023337CB22C>I<387FFFFCB512FEA314FC00FCC7FCB3
+B3B3B512FC14FEA36C13FC17416FB92C>I<127012F8A27E127C127E123E123F7EA27F12
+0F7F12077F12037F12017F12007F137C137E133EA2133F7F80130F801307801303801301
+80130080147C147E143EA2143F8081140F81140781140381140181140081157CA2157E15
+3E153F811680150FA2ED070021417BB92C>I<387FFFFCB512FEA37EC7127EB3B3B3387F
+FFFEB5FCA36C13FC17417DB92C>I<007FB6FCB71280A46C150021067B7D2C>95
+D<3801FFF0000713FE001F6D7E15E048809038C01FF81407EC01FC381F80000006C77EC8
+127EA3ECFFFE131F90B5FC1203120F48EB807E383FF800EA7FC090C7FC12FE5AA47E007F
+14FEEB8003383FE01F6CB612FC6C15FE6C14BF0001EBFE1F3A003FF007FC27247CA32C>
+97 D<EA7FF0487EA3127F1201AAEC1FE0ECFFF801FB13FE90B6FC16809138F07FC09138
+801FE091380007F049EB03F85BED01FC491300A216FE167EA816FE6D14FCA2ED01F86D13
+036DEB07F0150F9138801FE09138E07FC091B51280160001FB5B01F813F83900F03FC027
+337FB22C>I<903803FFE0011F13F8017F13FE48B5FC48804848C6FCEA0FF0485A49137E
+4848131890C9FC5A127EA25AA8127EA2127F6C140F6DEB1F806C7E6D133F6C6CEB7F0039
+07FE03FF6CB55A6C5C6C6C5B011F13E0010390C7FC21247AA32C>I<EC0FFE4A7EA380EC
+003FAAEB07F8EB3FFE90B512BF4814FF5A3807FC0F380FF00348487E497E48487F90C7FC
+007E80A212FE5AA87E007E5CA2007F5C6C7E5C6C6C5A380FF0073807FC1F6CB612FC6CEC
+BFFE6C143FEB3FFC90390FF01FFC27337DB22C>I<EB03FE90381FFFC0017F13F048B57E
+48803907FE03FE390FF800FFD81FE0EB3F805B4848EB1FC090C7120F5A007E15E015075A
+B7FCA416C000FCC9FC7E127EA2127F6CEC03C06DEB07E06C7ED80FF0130F6C6CEB3FC001
+FF13FF000190B512806C1500013F13FC010F13F00101138023247CA32C>I<EC0FF8EC3F
+FE91B5FC4914805B903807FC7F14F090390FE03F0014C092C7FCA6007FB512FEB7FCA36C
+5C26000FC0C7FCB3A8003FB512F04880A36C5C21337DB22C>I<ED03F8903907F80FFC90
+391FFE3FFE017FB6FC48B7FC48ECFE7F9038FC0FF82607F003133E3A0FE001FC1CD9C000
+1300001F8049137EA66D13FE000F5CEBE0016C6C485A3903FC0FF048B5FC5D481480D99F
+FEC7FCEB87F80180C8FCA37F6C7E90B512F06C14FE48ECFF804815E04815F03A3FC0001F
+F848C7EA03FC007E1400007C157C00FC157E48153EA46C157E007E15FCD87F801303D83F
+E0EB0FF8D81FFCEB7FF06CB612E0000315806C1500D8003F13F8010713C028387EA42C>
+I<EA7FF0487EA3127F1201AAEC1FE0EC7FFC9038F9FFFE01FB7F90B6FC9138F03F80ECC0
+1F02807FEC000F5B5BA25BB3267FFFE0B5FCB500F11480A36C01E0140029337FB22C>I<
+1307EB1FC0A2497EA36D5AA20107C7FC90C8FCA7387FFFC080B5FC7EA2EA0007B3A8007F
+B512FCB612FEA36C14FC1F3479B32C>I<EA7FE0487EA3127F1201AA91381FFFF04A13F8
+A36E13F0913800FE004A5A4A5A4A5A4A5A4A5A4A5A4AC7FC14FEEBF1FC13F3EBF7FE90B5
+FCA2EC9F80EC0FC001FE7FEBFC07496C7E496C7E811400157E811680151F3A7FFFC0FFFC
+B500E113FEA36C01C013FC27337EB22C>107 D<387FFFE0B57EA37EEA0003B3B3A5007F
+B61280B712C0A36C158022337BB22C>I<3A7F83F007E09039CFFC1FF83AFFDFFE3FFCD8
+7FFF13FF91B57E3A07FE1FFC3E01FCEBF83F496C487E01F013E001E013C0A301C01380B3
+3B7FFC3FF87FF0027F13FFD8FFFE6D13F8D87FFC4913F0023F137F2D2481A32C>I<397F
+F01FE039FFF87FFC9038F9FFFE01FB7F6CB6FC00019038F03F80ECC01F02807FEC000F5B
+5BA25BB3267FFFE0B5FCB500F11480A36C01E0140029247FA32C>I<EB07FCEB1FFF017F
+13C048B512F048803907FC07FC390FF001FE48486C7E0180133F003F158090C7121F007E
+EC0FC0A348EC07E0A76C140F007E15C0A2007F141F6C15806D133F6C6CEB7F006D5B6C6C
+485A3907FC07FC6CB55A6C5C6C6C13C0011F90C7FCEB07FC23247CA32C>I<397FF01FE0
+39FFF8FFF801FB13FE90B6FC6C158000019038F07FC09138801FE091380007F049EB03F8
+5BED01FC491300A216FE167EA816FE6D14FCA2ED01F86D13036DEB07F0150F9138801FE0
+9138E07FC091B51280160001FB5B01F813F8EC3FC091C8FCAD387FFFE0B57EA36C5B2736
+7FA32C>I<D87FFEEB3FC0B53801FFF0020713F8021F13FC6C5B39003F7FE1ECFF019138
+FC00F84A13704A13005CA25C5CA391C8FCAF007FB512E0B67EA36C5C26247EA32C>114
+D<90387FF8700003B512F8120F5A5A387FC00F387E00034813015AA36CEB00F0007F1400
+13F0383FFFC06C13FE6CEBFF80000314E0C66C13F8010113FCEB0007EC00FE0078147F00
+FC143F151F7EA26C143F6D133E6D13FE9038F007FC90B5FC15F815E000F8148039701FFC
+0020247AA32C>I<131E133FA9007FB6FCB71280A36C1500D8003FC8FCB1ED03C0ED07E0
+A5EC800F011FEB1FC0ECE07F6DB51280160001035B6D13F89038003FE0232E7EAD2C>I<
+3A7FF003FF80486C487FA3007F7F0001EB000FB3A3151FA2153F6D137F3900FE03FF90B7
+FC6D15807F6D13CF902603FE07130029247FA32C>I<3A7FFF01FFFCB514FE148314016C
+15FC3A03E0000F80A26D131F00011500A26D5B0000143EA26D137E017C137CA2017E13FC
+013E5BA2EB3F01011F5BA21483010F5BA214C701075BA214EF01035BA214FF6D90C7FCA2
+6D5A147C27247EA32C>I<D87FFFEB7FFF6EB5FCB515806C16004A7ED807C0EB01F0A66C
+6C495AA3143E147FA2D801F0495AECFF87A214F7A201F113C700005D9038F9E3CFA201FB
+13EFA3D97BC190C7FC017F13FFA21480A2013F5B90381F007C29247FA32C>I<3A3FFF03
+FFF048018713F8A36C010313F03A00FC007E005D90387E01F8013F5BEB1F83EC87E09038
+0FCFC0903807EF80EB03FF6D90C7FC5C6D5A147C14FE130180903803EF80903807CFC0EB
+0FC7EC83E090381F01F0013F7FEB7E00017C137C49137E0001803A7FFF01FFFC1483B514
+FE6C15FC140127247EA32C>I<3A7FFF01FFFCB5008113FE148314816C010113FC3A03E0
+000F806C7E151F6D140012005D6D133E137C017E137E013E137CA2013F13FC6D5BA2EB0F
+815DA2EB07C1ECC3E0A2EB03E3ECE7C0130114F75DEB00FFA292C7FC80A2143EA2147E14
+7CA214FC5CA2EA0C01003F5BEA7F83EB87E0EA7E0F495A387FFF806C90C8FC6C5A6C5AEA
+07E027367EA32C>I<003FB612E04815F0A4007EC7EA1FE0ED3FC0ED7F80EDFF004A5A00
+3C495AC7485A4A5A4A5A4A5A4A5A4AC7FCEB01FC495AEB0FF0495A495A495A49C8FC4848
+EB01E04848EB03F0485A485A485A485A485AB7FCA46C15E024247DA32C>I<15FF020713
+80141F147F91B512004913C04AC7FCEB03F85CB31307EB1FE013FF007F5BB55A49C8FC6D
+7E6C7FC67F131FEB07F01303B380EB01FEECFFC06D13FF6E1380141F1407020013002141
+7BB92C>I<EA7FC0EAFFF813FE6D7E6C7FC67F131FEB07F01303B380EB01FEECFFC06D13
+FF6E1380141F147F91B512004913C04AC7FCEB03F85CB31307EB1FE013FF007F5BB55A49
+C8FC13F8EA7FC021417BB92C>125 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fd ecbx1200 12 36
+/Fd 36 121 df<160C161EB3B0007FBB1280BC12C0A26C1A80C9001ECAFCB3B0160C4A4A
+7ABD57>43 D<EA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07C00F0F
+788E1F>46 D<EC03C01407141F147FEB03FF133FB6FCA413C3EA0003B3B3ADB712FCA526
+4177C038>49 D<ECFFE0010F13FE013F6D7E90B612E0000315F82607FC0313FE3A0FE000
+7FFFD81F806D138048C7000F13C0488001C015E001F07F00FF6E13F07F17F881A46C5A6C
+5A6C5AC9FC17F05DA217E05D17C04B13804B1300A2ED1FFC4B5A5E4B5A4B5A4A90C7FC4A
+5A4A5AEC0FF04A5AEC3F804AC7127814FE495A494814F8D907E014F0495A495A49C8FC01
+7C140149140348B7FC4816E05A5A5A5A5AB8FC17C0A42D417BC038>I<ECFFF0010713FF
+011F14C0017F14F049C66C7ED803F8EB3FFED807E06D7E81D80FF86D138013FE001F16C0
+7FA66C5A6C4815806C485BC814005D5E4B5A4B5A4B5A4A5B020F1380902607FFFEC7FC15
+F815FF16C090C713F0ED3FFCED0FFEEEFF80816F13C017E0A26F13F0A217F8A3EA0FC0EA
+3FF0487EA2487EA217F0A25D17E06C5A494913C05BD83F80491380D81FF0491300D80FFE
+EBFFFE6CB612F800015D6C6C14C0011F49C7FC010113E02D427BC038>I<EA07C0EA1FF0
+EA3FF8EA7FFCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07C0C7FCAEEA07C0EA1FF0EA3FF8EA7F
+FCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07C00F2C78AB1F>58 D<EE1F80A24C7EA24C7EA34C
+7EA24B7FA34B7FA24B7FA34B7F169F031F80161F82033F80ED3E07037E80157C8203FC80
+4B7E02018115F0820203814B137F0207815D173F020F814B7F021F8292C77EA24A82023E
+80027E82027FB7FCA291B87EA2498302F0C8FCA20103834A157F0107834A153FA2494882
+84011F8491C97E4984133E017E82B6020FB612F0A54C457CC455>65
+D<B9FC18F018FE727E19E026003FFCC700077F05017F716C7E727E727EA2721380A37213
+C0A74E1380A24E1300A24E5A4E5A4E5A4D5B05075B94B5128091B700FCC7FC18F018FF19
+E002FCC7000113F8716C7EF01FFE727E7213801AC07213E0A27213F0A31AF8A71AF0A260
+1AE0604E13C0604E138095B5120005075BBA12F86119C04EC7FC18E045447CC350>I<DC
+FFF01470031F01FF14F04AB6EAE0010207EDF803023FEDFE0791B539E001FF0F4949C7EA
+3F9F010701F0EC0FFF4901C0804990C87E4948814948814948167F4849163F4849161F5A
+4A160F485B19074890CAFC19035A5BA2007F1801A34994C7FC12FFAE127F7F1AF0A2123F
+A27F6C18011AE06C7F19036C6D17C06E16077E6C6DEE0F806C6DEE1F006D6C5E6D6C167E
+6D6C6C5D6D6D4A5A6D01F0EC07F0010101FEEC1FE06D903AFFF001FF80023F90B6C7FC02
+0715FC020115F0DA001F1480030001F8C8FC44467AC451>I<BA12F8A485D8001F90C712
+01EF003F180F180318011800A2197E193EA3191EA21778A285A405F890C7FCA316011603
+161F92B5FCA5ED001F160316011600A2F101E01778A2F103C0A494C7FC1907A21A80A219
+0FA2191FA2193FF17F0061601807181F4DB5FCBBFC61A443447DC34A>69
+D<B712F0A526003FFECAFCB3B1F00780A4180F1900A460A360A2187EA218FE1701170317
+07171F177FEE03FFB95AA539447CC343>76 D<B500FE067FB512806E95B6FCA26F5EA2D8
+003F50C7FC013D6DEE03DFA2013C6DEE079FA26E6CEE0F1FA26E6C161EA26E6C163CA36E
+6C1678A26E6C16F0A26E6DEC01E0A26E6DEC03C0A36E6DEC0780A26F6CEC0F00A26F6C14
+1EA26F6C5CA36F6C5CA26F6C5CA26F6D485AA26F6D485AA26F6D485AA3706C48C7FCA293
+383FF81EA2706C5AA2706C5AA3706C5AA2705BA2705BA2705BA2B6057FB6128071C7FCA2
+173E171C61447CC36A>I<923807FFC092B512FE0207ECFFC0021F15F091267FFE0013FC
+902601FFF0EB1FFF01070180010313C04990C76C7FD91FFC6E6C7E49486F7E49486F7E01
+FF8348496F7E48496F1380A248496F13C0A24890C96C13E0A24819F04982003F19F8A300
+7F19FC49177FA400FF19FEAD007F19FC6D17FFA3003F19F8A26D5E6C19F0A26E5D6C19E0
+A26C6D4B13C06C19806E5D6C6D4B13006C6D4B5A6D6C4B5A6D6C4B5A6D6C4A5B6D01C001
+075B6D01F0011F5B010101FE90B5C7FC6D90B65A023F15F8020715C002004AC8FC030713
+C047467AC454>79 D<B812F8EFFFC018F818FE727ED8001F90C7003F13E005037F05007F
+727E727E727EA28684A286A762A24E90C7FCA24E5A61187F943801FFF005075B053F1380
+92B7C8FC18F818E018F892C77FEF3FFF050F7F717F717FA2717FA2717FA785A61B0F85A2
+187F73131F72141EB700E06DEB803E72EBE0FC72EBFFF8060114F0726C13E0CC00071380
+50457DC354>82 D<DAFFE0131C010701FE133C013F9038FF807C90B6EAE0FC4815F94890
+38801FFF3907FC00014848EB007F4848143F4848140F491407007F15035B1601160012FF
+177CA27FA26D153C7F7F6D92C7FC6C7EEBFFE014FE6CEBFFF015FF6C15E016FC6C816C6F
+7E6C826C826C6C81011F810107811300020F80140003077FED007F82040F1380828212F0
+82A282A27EA218007EA26C5D6C5E6D14036D5D6D140701F84A5A01FFEC3FF002F8EBFFE0
+486CB65AD8FC1F92C7FCD8F80714FC48C614F0480107138031467AC43E>I<003FBA12E0
+A59026FE000FEB8003D87FE09338003FF049171F90C71607A2007E1803007C1801A30078
+1800A400F819F8481978A5C81700B3B3A20107B8FCA545437CC24E>I<007FBA12E0BB12
+F0A46C19E04406776757>95 D<903801FFE0011F13FE017F6D7E48B612E03A03FE007FF8
+4848EB1FFC6D6D7E486C6D7EA26F7FA36F7F6C5A6C5AEA00F090C7FCA40203B5FC91B6FC
+1307013F13F19038FFFC01000313E0481380381FFE00485A5B127F5B12FF5BA35DA26D5B
+6C6C5B4B13F0D83FFE013EEBFFC03A1FFF80FC7F0007EBFFF86CECE01FC66CEB8007D90F
+FCC9FC322F7DAD36>97 D<EB7FC0B5FCA512037EB1ED0FF892B57E02C314E002CF14F891
+39DFC03FFC9139FF000FFE02FCEB03FF4A6D13804A15C04A6D13E05CEF7FF0A218F8173F
+A318FCAC18F8A2177F18F0A3EFFFE06E15C06E5B6E491380027C491300496C495A903AFC
+1FC07FFC496CB512F0D9F00314C049C691C7FCC8EA1FF036467DC43E>I<EC3FFC49B512
+C0010F14F0013F14FC90397FF003FE9039FFC001FF0003495A48494813805B120F485AA2
+485A6F1300007F6E5AED00784991C7FCA212FFAC6C7EA3123F6DEC03C0A26C6C1407000F
+16806D140F6C6DEB1F006C6D133E6C01F05B3A007FFC03F86DB55A010F14C0010391C7FC
+9038003FF82A2F7CAD32>I<EE03FEED07FFA5ED001F160FB1EC3FE0903803FFFC010FEB
+FF8F013F14CF9039FFF807FF48EBC00148903880007F4890C7123F4848141F49140F121F
+485AA3127F5BA212FFAC127FA37F123FA26C6C141FA26C6C143F0007157F6C6C91B5FC6C
+D9C00314FC6C9038F01FEF6DB5128F011FEBFE0F010713F89026007FC0EBF80036467CC4
+3E>I<EC3FF80103B57E010F14E0013F8090397FF83FF89039FFC007FC48496C7E48496C
+7E48486D1380485A001FED7FC05B003FED3FE0A2127F5B17F0161F12FFA290B7FCA401F0
+C9FCA5127FA27FA2123F17F06C7E16016C6C15E06C6C14036C6DEB07C06C6DEB0F806C01
+F0EB3F0090397FFE01FE011FB55A010714F0010114C09026001FFEC7FC2C2F7DAD33>I<
+EDFF80020F13E0027F13F049B512F849EB8FFC90390FFE0FFE90381FFC1F14F8133FEB7F
+F0A2ED0FFCEBFFE0ED03F0ED00C01600ABB612F8A5C601E0C7FCB3B0007FEBFFE0A52746
+7DC522>I<DAFFE0137E010F9039FE03FF80013FEBFF8F90B812C048D9C07F133F489038
+001FF84848EB0FFC4848903907FE1F80001F9238FF0F00496D90C7FCA2003F82A8001F93
+C7FCA26D5B000F5D6C6C495A6C6C495A6C9038C07FF04890B55A1680D8078F49C8FC0180
+13E0000F90CAFCA47F7F7F90B612C016FC6CEDFF8017E06C826C16FC7E000382000F82D8
+1FF0C77ED83FC014074848020113808248C9FC177FA46D15FF007F17006D5C6C6C4A5A6C
+6C4A5AD80FFEEC3FF83B07FFC001FFF0000190B612C06C6C92C7FC010F14F8D9007F90C8
+FC32427DAC38>I<137C48B4FC4813804813C0A24813E0A56C13C0A26C13806C1300EA00
+7C90C7FCAAEB7FC0EA7FFFA512037EB3AFB6FCA518467CC520>105
+D<EB7FC0B5FCA512037EB3B3B3A3B61280A519457CC420>108 D<90277F8007FEEC0FFC
+B590263FFFC090387FFF8092B5D8F001B512E002816E4880913D87F01FFC0FE03FF8913D
+8FC00FFE1F801FFC0003D99F009026FF3E007F6C019E6D013C130F02BC5D02F86D496D7E
+A24A5D4A5DA34A5DB3A7B60081B60003B512FEA5572D7CAC5E>I<90397F8007FEB59038
+3FFF8092B512E0028114F8913987F03FFC91388F801F000390399F000FFE6C139E14BC02
+F86D7E5CA25CA35CB3A7B60083B512FEA5372D7CAC3E>I<EC1FFC49B512C0010714F001
+1F14FC90397FF80FFF9026FFC0017F48496C7F4848C7EA3FE000078248486E7E49140F00
+1F82A2003F82491407007F82A400FF1780AA007F1700A46C6C4A5AA2001F5E6D141F000F
+5E6C6C4A5AA26C6C6CEBFFE06C6D485B27007FF80F90C7FC6DB55A010F14F8010114C090
+26001FFCC8FC312F7DAD38>I<90397FC00FF8B590B57E02C314E002CF14F89139DFC03F
+FC9139FF001FFE000301FCEB07FF6C496D13804A15C04A6D13E05C7013F0A2EF7FF8A4EF
+3FFCACEF7FF8A318F017FFA24C13E06E15C06E5B6E4913806E4913006E495A9139DFC07F
+FC02CFB512F002C314C002C091C7FCED1FF092C9FCADB67EA536407DAC3E>I<90387F80
+7FB53881FFE0028313F0028F13F8ED8FFC91389F1FFE000313BE6C13BC14F8A214F0ED0F
+FC9138E007F8ED01E092C7FCA35CB3A5B612E0A5272D7DAC2E>114
+D<90391FFC038090B51287000314FF120F381FF003383FC00049133F48C7121F127E00FE
+140FA215077EA27F01E090C7FC13FE387FFFF014FF6C14C015F06C14FC6C800003806C15
+806C7E010F14C0EB003F020313E0140000F0143FA26C141F150FA27EA26C15C06C141FA2
+6DEB3F8001E0EB7F009038F803FE90B55A00FC5CD8F03F13E026E007FEC7FC232F7CAD2C
+>I<EB01E0A51303A41307A2130FA2131FA2133F137F13FF1203000F90B51280B7FCA4C6
+01E0C7FCB3A3ED01E0A9150302F013C0137F150790393FF80F8090391FFC1F006DB5FC6D
+13FC01015B9038003FE023407EBE2C>I<D97FC049B4FCB50103B5FCA50003EC000F6C81
+B3A85EA25EA25E7E6E491380017FD901F713FE9138F807E76DB512C7010F1407010313FE
+9026007FF0EBFC00372E7CAC3E>I<B5D8FE1FB539801FFFF0A500019027C0003FE0C7EA
+7C007114786E17F86C6F6C5C6E1601017F6E6C5CA26E011F1403013F6F5C6E013F140701
+1F6F5CA26E0179140F010F048090C7FC6E01F95C6D02F0EBC01E15806D902681E07F5B18
+E003C3157C6D9139C03FF07815E76DDA801F5B18F803FF14F96E9039000FFDE018FF6E48
+6D5BA36E486D5BA26E486D90C8FCA24B7F02075DA26E48147C4B143C4C2C7EAB51>119
+D<B500FE90383FFFF0A5C601F0903803E0006D6C495A6D6C495A011F4AC7FC6E5B6D6C13
+7E6DEB807C6D6D5A6DEBC1F0EDE3E06DEBF7C06EB45A806E90C8FC5D6E7E6E7F6E7FA24A
+7F4A7F8291381F3FFCEC3E1F027C7F4A6C7E49486C7F01036D7F49487E02C08049486C7F
+49C76C7E013E6E7E017E141FB500E090B512FCA5362C7EAB3B>I
+E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fe ecbx1000 10 52
+/Fe 52 122 df<913803FFC0027F13F00103B512FC010FEB00FED93FF8133FD97FE0EBFF
+8049485A5A1480484A13C04A6C1380A36F1300167E93C7FCA592383FFFC0B8FCA4000390
+C7FCB3ABB5D8FC3F13FFA4303A7EB935>28 D<141C143C14F8EB01F0EB03E01307EB0FC0
+EB1F8014005B137E13FE5B12015B1203A2485AA2120F5B121FA25B123FA4485AA512FFB1
+127FA56C7EA4121F7FA2120F7F1207A26C7EA212017F12007F137E7F7F1480EB0FC0EB07
+E01303EB01F0EB00F8143C141C165377BD25>40 D<12E07E127C7E7E7F6C7E6C7E12037F
+6C7E7F12007F137E137FA2EB3F80A214C0131F14E0A2130F14F0A4EB07F8A514FCB114F8
+A5EB0FF0A414E0131FA214C0133F1480A2EB7F00A2137E13FE5B12015B485A5B1207485A
+485A90C7FC123E5A12F05A16537BBD25>I<ED0380B3ADBA12FEA3C8D80380C8FCB3AD3F
+417BB44A>43 D<EA0F80EA3FE0EA7FF0A2EAFFF8A213FCA3127FA2123FEA0F9CEA001C13
+3C1338A31378137013F0EA01E0A2EA03C0EA0780EA0F005A121C12180E1D798C1B>I<EA
+0F80EA3FE0EA7FF0A2EAFFF8A5EA7FF0A2EA3FE0EA0F800D0D798C1B>46
+D<141E143E14FE1307137FB5FCA3138FEA000FB3B3A5007FB61280A4213679B530>49
+D<EB0FFE90387FFFC048B512F0000714FC390FE03FFF261F800F1380263F000313C0D87F
+8014E0EBE00100FF6D13F07FA2ED7FF8A46C5A6C5A0006C7FCC8FCEDFFF0A216E05C16C0
+4A138016004A5A4A5AEC1FF05D4A5A4AC7FC14FE495AD903F01378495A495A495A49C712
+F8017C14F05B49130148B6FC5A5A5A5A5A4815E0B7FCA425367BB530>I<EB03FF011F13
+F0017F13FC3901FC07FF2603F003138048486C13C0496C13E0EA0FF86D14F0487EA66C48
+14E06C5A6C485AC714C04A138016004A5A4A5AEC3FF090380FFFC05D15F090380007FE91
+3801FF806E13C016E0ED7FF016F8ED3FFCA216FEEA1FC0487E487E487EA416FCA249137F
+007F15F801C0EBFFF06C5A6C6C4813E0260FFC0713806CB61200000114FC6C6C13F00107
+90C7FC27377CB530>I<001C15C0D81F80130701F8137F90B61280A216005D5D15F05D15
+804AC7FC14F090C9FCA7EB03FE90381FFFE0017F13F89038FE07FC9038F003FFD9C00113
+80496C13C090C7FC000E15E0C8127F16F0A216F8A3121FEA3FC0487E12FF7FA316F05B15
+FFD87F8014E0007EC713C0003E5B003F4913806C6C481300390FF01FFE6CB512F8000114
+E06C6C1380D90FF8C7FC25377BB530>53 D<123C123EEA3FE090B71280A41700485D5E5E
+5E5EA2007CC7EA0FC000784A5A4BC7FC00F8147E485C5D14014A5AC7485A4A5AA24A5A14
+3F4AC8FCA214FEA213015C1303A21307A2130F5CA2131FA5133FA96D5A6D5A6D5A29397B
+B730>55 D<ED03E04B7EA24B7EA34B7EA24B7EA34B7EA292B57EA34A8015F302038015E1
+A202078015C0020F80ED807FA2021F80ED003F4A80023E131FA2027E80027C7F02FC814A
+7FA20101824A7F49B77EA3498202C0C7FC010F824A147FA2011F8291C8123F4982013E15
+1FA2017E82017C8101FE83B500F80107B61280A4413A7DB948>65
+D<B812C017FC17FF18C028007FF000037F04007F717E717E171F84A2717EA74D5AA26017
+3F4D5A4D5A4C13C0040F5B91B600FCC7FCA2EFFF8002F0C713F0EF3FF8717E717E717E19
+807113C0A319E0A719C0A25F4D138019005FEF7FFE4C485AB912F018C095C7FC17F03B39
+7DB844>I<DB3FFCEB01C00203B5EAC003021FECF00791B6EAFC0F01039039FC00FF3F49
+01C0EB1FFFD91FFEC77E49481403D97FF080494880485B48177F4849153F4890C9FC181F
+485A180F123F5B1807127FA24993C7FC12FFAD127F7FF003C0123FA27F001F1707A26C6C
+1780180F6C6D16006C6D5D6C173E6C6D157ED97FF85D6D6C4A5A6DB44A5A010701C0EB0F
+E06D01FCEBFF80010090B548C7FC021F14F8020314E09126003FFEC8FC3A3B7BB945>I<
+B87E17F817FF18C028007FF8000713F09338007FF8EF1FFE717E050313807113C0A27113
+E0F07FF0A2F03FF8A219FC181FA219FEA419FFAC19FEA419FC183FA219F8187F19F0F0FF
+E0A24D13C04D13804D1300EF1FFEEF7FFC933807FFF0B912C095C7FC17FC178040397DB8
+49>I<B912F0A426007FF8C7FCEF1FF8170717031701A21700A21878A3043C137C183CA4
+1800167CA216FC150391B5FCA4ECF8031500167CA2163C180FA3181EA293C7FCA2183EA2
+183C187CA218FCA2EF01F81703170F173FEE01FFB9FC18F0A338397DB83F>I<B912C0A4
+3A007FF800039338007FE0171F170F1707A21703A21701A318F0EE7800A41800A216F8A2
+1501150791B5FCA4ECF80715011500A21678A693C8FCADB7FCA434397DB83C>I<DB3FFC
+EB01C00203B5EAC003021FECF00791B6EAFC0F01039039FC00FF3F4901C0EB1FFFD91FFE
+C77E49481403D97FF080494880485B48177F4849153F4890C9FC181F485A180F123F5B18
+07127FA24993C8FC12FFAB043FB61280A2127F7FDC0003EBC000123FA27F121FA26C7EA2
+6C7F6C7F6C7F7ED97FF85C6D7E6DB45C010701C05B6D01FCEBFF3F010090B5EAFE0F021F
+ECF8030203ECE0009126003FFEC9FC413B7BB94B>I<B612FCA439007FF800B3B3ADB612
+FCA41E397DB824>73 D<B7FCA426007FF8C9FCB3ACEF0780A5170F1800A35FA25FA25F5F
+5E5EEE0FFE167FB8FCA431397DB839>76 D<B500F80403B512F06E5EA26E5ED8007FF1E0
+00A2D97BFF161EA201796D5DA201786D5DA26E6C5DA36E6C4A5AA26E6C4A5AA26E6C4A5A
+A26E6C4A5AA26E6C141EA36E6D5BA26E6D5BA26F6C5BA26F6C485AA36F6C485AA26F6C48
+5AA26F6C48C7FCA2923803FF1EA36F13BCA26F13F8A2705AA2705AA213FCB500FC6D4848
+B612F0A2EE0F80EE070054397DB85B>I<B500FC0203B512F0A28080C66C6D90390003F0
+006F6E5A81017B7F13798101787F6E7E6E7E6E7F6E7FA26E7F6E7F6E7F6E7F6F7E153F82
+6F13806F13C06F13E06F13F06F13F88117FCEE7FFEEE3FFF7013817013C17013E18218F1
+7013F97013FDEF7FFF8383A28383838383187FA2183F181F01FC160FB500FC1507180318
+01A244397DB84B>I<EDFFF8020FEBFF80027F14F0903A01FFC01FFC010790380007FFD9
+1FFC010113C0D93FF06D6C7E49486E7E49486E7E48496E7E48834890C86C7EA248486F13
+80A248486F13C0A2003F18E0A348486F13F0A400FF18F8AC007F18F06D5DA3003F18E0A2
+6D5D001F18C0A26C6C4B13806C18006E5C6C6D4A5A6C5F6C6D4A5A6D6C4A5AD93FFC4948
+5A6DB401075B0107D9C01F90C7FC010190B512FC6D6C14F0020F1480020001F8C8FC3D3B
+7BB948>I<B8FC17F017FEEFFF8028007FF8000F13C0040113E07013F0EF7FF8EF3FFCA2
+EF1FFEA218FFA818FEA2EF3FFCA2EF7FF8EFFFF04C13E0040F13C091B7120017FC17E002
+F8C9FCB3A4B612FCA438397DB841>I<EDFFF8020FEBFF80027F14F0903A01FFE03FFC01
+0790380007FFD91FFC010113C049486D7FD97FE0EC3FF049486E7E488348496E7E4890C8
+6C7EA248486F1380A2001F18C04981003F18E0A3007F18F04981A300FF18F8AC007F18F0
+A36D5D003F18E0A36C6C4B13C0A2000FDA1FC014806C6C90267FF0071300EDFFF86C903A
+81F07C0FFE6C903AC3C01E1FFC6CDA800F5BD97FE3ECBFF0D93FF36DB45AD91FFF5D0107
+01C091C7FC01019038F01FFC6D6CB500F01308020F6E131C0200EBF9FC92260001FE133C
+9438FF80FC18FF8219F8A28319F0A27113E0A27113C0711380711300EF01FC3E4A7BB948
+>I<B712FCEEFFE017FC17FF28007FF8000F13C004017F707F717E717EA2717EA284A760
+A24D5A604D5A4D5A04035B041F90C8FC91B612FC17E0839139F8003FFCEE0FFF707F707F
+8284A2707FA584A51A601AF084177F1901DD3FFE13E0B600FC011F130394390FFF87C071
+EBFF8005011400CBEA1FFC443A7DB848>I<D907FF130E013FEBE01E90B5EAF83E0003EC
+FE7E3A07FC01FFFE390FF0001F4848130F48481303491301007F140090C8FC167E5A163E
+A27F161E7F7F6D91C7FC13FC387FFFE014FEECFFF06C14FE6F7E6C816C15F06C816C81C6
+81133F010F801301D9000F1480EC007F030F13C01503818100F0157FA3163FA27E17807E
+167F6C16007E6D14FE01E0495A01F813039039FF801FF800FC90B512E0D8F83F5CD8F007
+49C7FC39E0007FF02A3B7BB935>I<003FB91280A4D9F800EBF003D87FC09238007FC049
+161F007EC7150FA2007C1707A200781703A400F818E0481701A4C892C7FCB3AE010FB7FC
+A43B387DB742>I<B600FC011FB512C0A426007FF8C8381FC000725AB3B3181F013F94C7
+FC8060011F163E6D6C157E187C6D6C15FC6D6D495A6D6DEB07F06D01F0EB1FE0DA7FFEEB
+FFC0021FB6C8FC02075C020014F0030F1380423A7DB849>I<007FB9FCBA1280A36C1800
+3905786A4A>95 D<EB3FFE0003B512E0000F14F8391FF00FFE003FEB03FF6D6C7F6E7FA2
+6F7EA26C5A6C5AEA0380C8FCA2EC3FFF010FB5FC137F3901FFF87F00071380380FFE00EA
+3FF85B485A12FF5BA415FF6D5A127F263FF00713F83B1FFC1FBFFFC0390FFFFE1F0003EB
+F80F39003FE0032A257DA42E>97 D<13FFB5FCA412077EAF4AB47E020F13F0023F13FC91
+38FE03FFDAF00013804AEB7FC00280EB3FE091C713F0EE1FF8A217FC160FA217FEAA17FC
+A3EE1FF8A217F06E133F6EEB7FE06E14C0903AFDF001FF80903AF8FC07FE009039F03FFF
+F8D9E00F13E0D9C00390C7FC2F3A7EB935>I<903801FFC0010F13FC017F13FFD9FF8013
+802603FE0013C048485AEA0FF8121F13F0123F6E13804848EB7F00151C92C7FC12FFA912
+7FA27F123FED01E06C7E15036C6CEB07C06C6C14806C6C131FC69038C07E006DB45A010F
+13F00101138023257DA42A>I<EE7F80ED7FFFA4150381AF903801FF81010F13F1013F13
+FD9038FFC07F0003EB001FD807FC1307000F8048487F5B123FA2485AA312FFAA127FA27F
+123FA26C6C5B000F5C6C6C5B6C6C4913C02701FF80FD13FE39007FFFF9011F13E1010113
+012F3A7DB935>I<903803FF80011F13F0017F13FC3901FF83FE3A03FE007F804848133F
+484814C0001FEC1FE05B003FEC0FF0A2485A16F8150712FFA290B6FCA301E0C8FCA4127F
+A36C7E1678121F6C6C14F86D14F000071403D801FFEB0FE06C9038C07FC06DB51200010F
+13FC010113E025257DA42C>I<EC1FF0903801FFFC010713FF90391FF87F8090383FE0FF
+D9FFC113C0A2481381A24813016E1380A2ED3E0092C7FCA8B6FCA4000390C8FCB3ABB512
+FEA4223A7DB91D>I<161FD907FEEBFFC090387FFFE348B6EAEFE02607FE07138F260FF8
+01131F48486C138F003F15CF4990387FC7C0EEC000007F81A6003F5DA26D13FF001F5D6C
+6C4890C7FC3907FE07FE48B512F86D13E0261E07FEC8FC90CAFCA2123E123F7F6C7E90B5
+12F8EDFF8016E06C15F86C816C815A001F81393FC0000F48C8138048157F5A163FA36C15
+7F6C16006D5C6C6C495AD81FF0EB07FCD807FEEB3FF00001B612C06C6C91C7FC010713F0
+2B377DA530>I<13FFB5FCA412077EAFED7FC0913803FFF8020F13FE91381F03FFDA3C01
+138014784A7E4A14C05CA25CA291C7FCB3A3B5D8FC3F13FFA4303A7DB935>I<EA01F0EA
+07FC487EA2487EA56C5AA26C5AEA01F0C8FCA913FF127FA412077EB3A9B512F8A4153B7D
+BA1B>I<13FFB5FCA412077EB3B3ACB512FCA4163A7DB91B>108 D<01FED97FE0EB0FFC00
+FF902601FFFC90383FFF80020701FF90B512E0DA1F81903983F03FF0DA3C00903887801F
+000749DACF007F00034914DE6D48D97FFC6D7E4A5CA24A5CA291C75BB3A3B5D8FC1FB500
+83B512F0A44C257DA451>I<01FEEB7FC000FF903803FFF8020F13FE91381F03FFDA3C01
+1380000713780003497E6D4814C05CA25CA291C7FCB3A3B5D8FC3F13FFA430257DA435>
+I<903801FFC0010F13F8017F13FFD9FF807F3A03FE003FE048486D7E48486D7E48486D7E
+A2003F81491303007F81A300FF1680A9007F1600A3003F5D6D1307001F5DA26C6C495A6C
+6C495A6C6C495A6C6C6CB45A6C6CB5C7FC011F13FC010113C029257DA430>I<9039FF01
+FF80B5000F13F0023F13FC9138FE07FFDAF00113800003496C13C00280EB7FE091C713F0
+EE3FF8A2EE1FFCA3EE0FFEAA17FC161FA217F8163F17F06E137F6E14E06EEBFFC0DAF003
+13809139FC07FE0091383FFFF8020F13E0020390C7FC91C9FCACB512FCA42F357EA435>
+I<9038FE03F000FFEB0FFEEC3FFF91387C7F809138F8FFC000075B6C6C5A5CA29138807F
+80ED3F00150C92C7FC91C8FCB3A2B512FEA422257EA427>114 D<90383FF0383903FFFE
+F8000F13FF381FC00F383F0003007E1301007C130012FC15787E7E6D130013FCEBFFE06C
+13FCECFF806C14C06C14F06C14F81203C614FC131F9038007FFE140700F0130114007E15
+7E7E157C6C14FC6C14F8EB80019038F007F090B512C000F8140038E01FF81F257DA426>
+I<130FA55BA45BA25B5BA25A1207001FEBFFE0B6FCA3000390C7FCB21578A815F86CEB80
+F014816CEBC3E090383FFFC06D1380903803FE001D357EB425>I<01FFEC3FC0B5EB3FFF
+A4000714016C80B3A35DA25DA26C5C6E4813E06CD9C03E13FF90387FFFFC011F13F00103
+138030257DA435>I<B539F001FFF8A4000390C7EA1F00161E6E133E6C153C6E137C6C15
+786E13F8017F5CECF001013F5C14F8011F495AA2ECFC07010F5CECFE0F010791C7FC6E5A
+6D131E15BE6D13BC15FC6D5BA36E5AA26E5AA26E5AA26E5AA22D257EA432>I<B500F1B5
+38803FFFA43D07FE000FF80003E06C6C010715C082028015076C6E6C148015076C01C0ED
+0F00826E485C017FED801E5D90273FF01E7F5B17C0DAF83E147C011F90393C3FE078037C
+14F8903B0FFC781FF0F0A29139FEF00FF10107EDF9E002FF14FB6D496CB45AA24B7E6D5E
+A26D496C90C7FCA292C7FC6E5CA2023E147C023C143C40257EA445>I<B539F01FFFF0A4
+000390398003F8006C01C013E06C1407D97FE05B6D6C485A6E48C7FC90381FFC3E010F5B
+903807FEFC6D6C5A5D6D5B6D5B6E7E6E7E814A7EA24A7E903801F3FFD903E37FD907C17F
+EB0FC049486C7E4A6C7E013E80496D7E49130F00016E7EB590383FFFF8A42D257EA432>
+I<B539F001FFF8A4000390C7EA1F00161E6E133E6C153C6E137C6C15786E13F8017F5CEC
+F001013F5C14F8011F495AA2ECFC07010F5CECFE0F010791C7FC6E5A6D131E15BE6D13BC
+15FC6D5BA36E5AA26E5AA26E5AA26E5AA292C8FCA25C141E003F133E387F803C38FFC07C
+147814F8EBC1F0EBC3E06C485A387D1F80D83FFFC9FCEA1FFCEA07F02D357EA432>I
+E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Ff ecbx1440 14.4 24
+/Ff 24 121 df<151E153E15FE1403140F147FEB07FF0003B5FCB6FCA3EBF87FEAFC00C7
+FCB3B3B3A6007FB712FCA52E4E76CD42>49 D<EC1FFE49B512F0010F14FC013FECFF8049
+15E02701FF803F7F2703FC000713FCD807F001017F48486D7FD81F806E138048C87E7013
+C0D87FE016E001F8806D16F000FF817F7013F8A56C5AA26C5A6C5AEA0380C914F05EA218
+E05E18C05E18804C13005F4C5A4C5A5F4B5B4B5B4B5B94C7FCED0FFC4B5A4B5AED7FC04B
+5A4A90C8FCEC03FC4A5A4A4814F84A5A4A5A4AC8FC02FEEC01F0495A495A495A5CD90F80
+140349C8FC013E1507017FB7FC90B812E05A5A5A5A5A5A5AB9FC18C0A4354E7ACD42>I<
+913807FFC0027F13FC0103B67E010F15E090261FF80313F890267FC0007F01FEC7EA3FFE
+48488148486E138013FE486C6C6D13C0804817E080A66C5B18C06C5B6C90C75AD8003816
+8090C8FC4C1300A24C5A5F4C5A4B5B4B13C0030F5BDB7FFEC7FC91387FFFF816C016FCEE
+FF80DA000313E09238007FF8EE3FFE707E70138018C07013E018F07013F8A218FC82A218
+FEA3EA03C0EA0FF0EA3FFC487EA2B5FCA218FCA25E18F8A26C4816F0495C4916E0D83FE0
+4A13C06C485CD80FF04A1380D807FE91387FFE003B03FFE003FFFC6C90B65A6C6C15E001
+0F92C7FC010114FCD9001F1380374F7BCD42>I<932603FFF01407047F01FF140F0307B6
+00E0131F033F03F8133F92B700FE137F02039126C003FF13FF020F01F8C7EA3FC1023F01
+C0EC0FE391B5C80003B5FC4901FC814949814901E082011F498249498292CA7E49488349
+48835A4A83485B4885A24849187FA2485B1B3FA2485B1B1FA25AA21B0091CDFCA2B5FCAE
+7EA280A36C1A1FA36C7FA21B3F6C7F1B3E6C7F1B7E6C6D187C6C1AFC6E18F86C19016D6C
+EF03F06D7E6FEE07E06D6DEE0FC001076DEE1F806D01F8EE3F006D6D16FE6D01FF4B5A02
+3F01C0EC07F8020F01FCEC3FF00203903AFFC001FFC0020091B6C7FC033F15FC030715F0
+DB007F1480040301F0C8FC505479D25F>67 D<BB12FEA5D8000F01E0C700077FF0007F19
+1F190785858586A2F23F80A21A1FA31A0FA4DD01F014C01A07A497C7FCA21703A3170717
+0F171F17FF92B6FCA5EDE000171F170F17071703A317011BF8A3F201F0A394C8FCA21A03
+A21BE0A21A07A31A0F1BC01A1F1A3FA21A7F1AFF4F13801907191F197F060FB5FCBCFCA2
+1B00A34D527CD156>69 D<B600F04EB612F06F606F60A3D800076D4E49C7FCA2DADFFFF0
+1F7FA202CF6D173EA302C76D177CA202C36D17F8A202C16DEE01F0A202C06DEE03E0A36F
+6CEE07C0A26F6CEE0F80A26F6CEE1F00A36F6D153EA26F6D5DA26F6D5DA36F6D4A5AA26F
+6D4A5AA2706C4A5AA3706C4A5AA2706C4AC7FCA2706D133EA3706D5BA2706D5BA2706D48
+5AA2706D485AA3716C485AA2716C485AA2716C48C8FCA37113BEA27113FCA2715BA3715B
+A2715BA2D91FF06F5AB600FE050FB712F0A2725AA272C7FC74527CD17D>77
+D<003FBB12FCA59126C0007FEB000301FCC7ED003FD87FF0F00FFE491807491803491801
+90C81600A2007E1A7EA3007C1A3EA500FC1A3F481A1FA6C91700B3B3AC49B912C0A55051
+7BD05B>84 D<B700FE4AB612F0A5D8000F01E0CA387FC000091FC7FCB3B3B26D611B3E81
+1B7E6D197CA26D6D17FC636D6D1601027F4D5A6F4C5A023F170F6E6C4C5A6E6D4B5A6E01
+E003FFC8FC6E01F8EC03FE020001FEEC1FFC923B7FFFE001FFF8031F90B612E003071680
+03004BC9FC041F14F0040091CAFC5C537CD165>I<EC3FFE0107B512E0011F14FC017F14
+FF2701FFC00F13C02703FE00037F486C01007F6E6D7E486D80707EA2707EA3707F6C5B6C
+90C7FC6C5AC9FCA60307B5FC0203B6FC147F0103B7FC011FEBF00F017F1300EBFFFC0003
+13F04813C0485B4890C7FC5A5B485AF081F012FF5BA35EA26D5C127F6D5C003F03F713C3
+6DD901E314E06CD9C00714FF00079026F01F8114C06C90B5C61480C602FC6D1300011F01
+F0EB3FFC01010180EB07F03C387CB642>97 D<EB3FF8B5FCA51203C6FCB3A4EE7FF00307
+B5FC031F14C0037F14F0913AF9FF007FFCDAFFF8EB1FFF03E001077F03806D7F92C76C7F
+4A6E7F5C4A6F7E85183F85A38584A31A80AD1A00A36061A261187F616E15FF616E4A5B6E
+4A5B6F495BDACFE04990C7FCDA87F0EB3FFE913A01FE01FFF8496CB65A49013F14C04901
+0749C8FC90C813E041547DD249>I<913803FFE0023F13FE91B67E010315E0010F903800
+3FF8D93FFCEB07FC4948497E4948131F4849497E485B485BA24890C7FC5A5B003F6F5A70
+5A705A007F92C8FC5BA312FFAD127F7FA3123F7F6CEE0F80A26C6D141F18006C6D5C6C6D
+143E6C6D147E6C6D5C6D6C495A6DB4EB07F0010F9038C01FE06D90B5128001014AC7FCD9
+003F13F80203138031387CB63A>I<943803FF80040FB5FCA5EE003F170FB3A4913803FF
+80023F13F849B512FE0107ECFF8F011F9038C03FEF90273FFE0007B5FCD97FF813014948
+7F484980484980484980488291C8FC5A5B123FA2127F5BA312FFAD127FA37F123FA3121F
+7F6C5E6C6D5C5F6C6D91B5FC6C6D5B6C6D4914E0D97FFCD90FEFEBFF80D91FFFEB7F8F01
+0790B5120F010114FC6D6C13E00207010049C7FC41547CD249>I<913807FF80027F13F8
+49B512FE01076E7E011F010313E0903A3FFC007FF0D97FF06D7E49486D7E4849130F4849
+6D7E48824890C77E1880485A82003F17C0A3485A18E082A212FFA290B8FCA401FCCAFCA6
+127FA37F123FA2EF03E06C7E17076C17C06C6D140F18806C6D141F6C6DEC3F006C6D147E
+D97FFC495AD91FFFEB07F86D9038E03FF0010390B512C001005D023F01FCC7FC020113E0
+33387CB63C>I<DA1FFE14FE49B539E007FF80010FDAFC1F13C0013FDAFF7F13E090267F
+F807EBFF072701FFE001EBF07F48497E484990387FF83F91C7003F14C048EEFC1F489338
+FE070049021F90C7FCA2003F82A9001F5EA26D143F6C5E6C5E6E137F6C6D495A6C6D485B
+6CD9F80713804890B6C8FCD803EF14FC01C114E02707C01FFEC9FC49CBFCA2487EA37FA2
+7F13FC90B612FE6CEDFFF017FCEFFF806C8318F06C836C837F48B87E1207D80FFCC70003
+7F4848EC003F4848150F48486F138083485A83A56D5D007F18006D5D003F5F6C6C4B5A01
+FE153FD807FFED7FF06C01C049485AC601FC011F1380013FB648C7FC010F15F8010115C0
+D9000F01F8C8FC3B4F7CB542>103 D<133FEBFFC0487F487FA2487FA66C5BA26C5B6C5B
+013FC7FC90C8FCAEEB1FF8B5FCA512017EB3B3A6B612F0A51C547CD324>105
+D<EB3FF8B5FCA51203C6FCB3B3B3B1B612F8A51D537CD224>108
+D<D93FF0EB1FFCB591B57E030314E0030F14F892391FC07FFC92397E003FFE000302F86D
+7EC6EBF1F04B6D7FECF3C0ECF78092C76C7F14FF5CA25CA45CB3ACB6D8F807B612C0A542
+367CB549>110 D<913801FFC0023F13FE91B67E010315E0010F018013F8903A3FFC001F
+FED97FF0EB07FF49486D7F48496D7F48496D7F91C8127F4883488349153F001F83A2003F
+8349151FA2007F83A400FF1880AC007F1800A3003F5F6D153FA2001F5FA26C6C4B5AA26C
+6D4A5A6C5F6C6D495B6C6D495B6D6C4990C7FCD93FFCEB1FFE6DB46CB45A010790B512F0
+010115C0D9003F49C8FC020313E039387CB642>I<D93FF8EB7FF0B50107B5FC031F14C0
+037F14F09126F9FF0013FCDAFFF8EB3FFF000302E0010F7FC602806D7F92C76C7F4A824A
+804A6E7F85187F85A2183F85A4721380AD4E1300A44E5AA26118FF616E5C616E4A5B6E4A
+5B6F495B03E04990C7FC6FEB7FFE913AF9FE01FFF802F8B65A033F14C0030749C8FC0300
+13E093CAFCB1B612F8A5414D7DB549>I<90393FF001FCB590380FFF804B13E0037F13F0
+9238FE1FF89138F1F83F00019138F07FFC6CEBF3E015C0ECF780A2ECFF00EE3FF84AEB1F
+F0EE0FE093C7FC5CA45CB3ABB612FEA52E367DB535>114 D<903903FFC00E011FEBFC1E
+90B6127E000315FE3907FE003FD80FF0130F4848130348481301491300127F90C8127EA2
+48153EA27FA27F01F091C7FC13FCEBFF806C13FEECFFF06C14FE6F7E6C15E06C816C15FC
+6C81C681133F010F15801301D9000F14C0EC003F030713E0150100F880167F6C153FA216
+1F7EA217C07E6D143F17807F6DEC7F0001F85C6DEB03FE9039FF801FFC486CB512F0D8F8
+1F14C0D8F00791C7FC39E0007FF02B387CB634>I<147CA614FCA41301A31303A21307A2
+130F131F133F137F13FF1203000F90B512FEB7FCA426007FFCC8FCB3A9EE0F80ABEE1F00
+6D7EA2011F143E806D6D5A6DEBC1F86DEBFFF001005C023F1380DA03FEC7FC294D7ECB33
+>I<D93FF8913801FFC0B50207B5FCA50003ED001FC61607B3AE5FA35FA25F137F5F6D6C
+14F7DC01E713F06D6CD907C7EBFFC0903A0FFF801F876D90B51207010114FC6D6C13F002
+0701C091C7FC42377CB549>I<B6D8F001B512FCA5C66C48C7381FF8006D6CEC0FE06D6D
+495A606D6D49C7FC6D6D137E6D6D13FE6D6D485A4C5A6D01FC5B6E6C485A6E6C485A161F
+6EEBBF806E01FFC8FC6E5B5E6E5B806E7F6F7EA26F7E834B7F92B5FC83DA01FB7FDA03F1
+7FDA07F07F4A5A4A486C7E4B6C7E4A486C7F147E02FE6D7F49486D7F49486D7F4A814948
+7F49486D7F011F6F7ED97FE06E7EB500FE0107B6FCA540357EB445>120
+D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fg ecss1000 10 45
+/Fg 45 122 df<903901F807F0EB07FE130F131F133FEB7F0EEB7E0201FEC8FC5BA21201
+AEB538FE07F0A53801FC00B3AE243D7FBC2C>28 D<00FE13FEAD007E13FCA5007C137CAC
+171E77BB2A>34 D<1538157CB3A5003FB812F0B912FCA4C8007CC8FCB3A6153836367BAF
+41>43 D<12FEA7121E123CA312381278A21270A212F00711788617>I<12FEA707077886
+17>46 D<12FEA71200B3A512FEA7072578A417>58 D<12FEA71200B3A512FEA7121E123C
+A312381278A21270A212F0072F78A417>I<EC07F8A24A7EA24A7EA2157EEC3F7F143EA2
+91387E3F80A2147C02FC7F151FA2D901F87F150F01038014F0A201076D7E14E0A2010F6D
+7E14C0A2011F6D7E1480013F808191C7FC4981167F137E01FE6E7E90B7FCA24882A3D803
+F8C7EA0FF05B00078216075B000F8216035B001F8216015B003F6F7EA248C91380177F12
+7E00FE17C0323A7EB937>65 D<B67E15F815FE6F7E82D9000113F09138003FF8150F6F7E
+6F7E150115008282A45E5E15014B5A15074B5AED3FF0EDFFC090B65A4BC7FC15F815FF16
+C0D9000313F09138003FF8ED07FC6F7EED00FFEE7F80EE3FC0A2161F17E0160FA4161F17
+C0163FA2EE7F80ED01FF4B1300ED0FFEED7FFC90B65A16E016804BC7FC15E02B3A79B937
+>I<913803FF80021F13F891B6FC4915C013075B4948C61380D97FF0130FD9FFC013034A
+13014890C9FC485A485A5B120F5B485AA2485AA3485AA448CAFCAC6C7EA46C7EA36C7EA2
+6C7E7F12077F6C7E6C6C15206C6D14E06E1301D97FF0130FD91FFE137F6DB6FC6D15C001
+0115006D5C021F13F0020313802B3E7BBB35>I<B612C015F815FE6F7E16E090C77FED3F
+F8ED0FFCED03FE6F7E81EE7F8017C0163FEE1FE0A2EE0FF0A2160717F8A31603A217FCAB
+17F8A21607A217F0160FA2EE1FE0A2EE3FC0A2EE7F8016FF4B13004B5AED0FFCED3FF8ED
+FFF090B65A168093C7FC15F815C02E3A78B93C>I<B712F0A690C9FCB390B612C0A590C9
+FCB3A390B612FCA7263A78B932>I<913803FF80023F13F891B512FE0103ECFFC04915E0
+5B90383FFE00D97FF0EB1FC0D9FFC013074A13014890C8124048481500485A5B120F5B48
+5AA2485AA3485AA448CAFCA992383FFFF0A36C7EA2ED0007A26C7EA36C7EA26C7E7F1207
+7F6C7E6C7E6C7F80EB7FF0D93FFE137F010FB6FC7F6D15C001001500023F13F802031380
+2C3E7BBB37>71 D<12FFB3B3B3A4083A79B917>73 D<B4FCB3B3B090B612C0A6223A79B9
+2D>76 D<D8FFC0ED07FFA36D5DA26D5D00FE177FA26D153F0178153EA2017C157EA26D15
+FCA3013F14016D15F8A26E1303010F15F06E1307A2010715E06E130FA2010315C06E131F
+A2010115806E133FA2010015006E5B027C137E027E13FEA2023E5BEC3F01A2021F5B1583
+A2020F5B15C702075BA3913803EFC0A215FF6E5BA26E90C7FCA392C8FCA2383A78B949>
+I<EC07F891387FFF8049B512E04980010F14FC90391FFC0FFE90393FE001FF903A7F8000
+7F8049C76C7E48486E7E48486E7E49140700078248486E7E491401001F82491400A2003F
+824981007F1780A390C9123FA24817C0AC6C6CED7F80A56C6CEDFF00A26D5C001F5EA26C
+6C4A5AA26C6C4A5A6C6C4A5A6D141F00015E6C6C4A5AD97FC0EBFF806D6C4890C7FC9039
+1FFC0FFE6DB55A6D5C010114E06D6C1380DA07F8C8FC323E7BBB3D>79
+D<B612C015F815FF8216E090C77FED1FF8ED07FC15036F7E150082821780A2163FA4167F
+A217005E5E15014B5A1507ED1FF8EDFFF090B65A168093C7FC15F815C090CAFCB3A6293A
+79B935>I<B67E15F815FE6F7E8290C77FED1FF06F7EED03FC150182150082A282A35EA2
+5E15015E1503ED0FF84B5AEDFFE090B65A5E4BC7FC15F815E09038000FF0140781140381
+1401816E7E8182153F826F7EA26F7EA26F7E1503826F7EA26F7EA2EE7F80EE3FC0A2EE1F
+E02B3A78B936>82 D<EB03FF011F13F0017F13FE48B612804815C05A4848C6FCD81FF0EB
+1F804848130701801303007F140090C9FCA212FEA67E7E7F7FEA3FF013FC381FFFC06C13
+FC6CEBFF806C14E06C14F86C80013F7F01077FD9007F1380020713C0020013E0157FED1F
+F0150FA2ED07F8A21503A6ED07F0124012600078EC0FE0007C141FB4EC3FC001C0EBFF80
+EBFC036CB61200001F5C6C14F800015C6C6C13C0D907FEC7FC253E7CBB2E>I<B91280A6
+C7D807F8C8FCB3B3B0313A7DB938>I<B4ED1FC0B3B3A76CED3F807FA36C6CEC7F00A26C
+6C14FE6C6C13016D495A6C6C495A6C6CEB1FF03A01FFC07FE06C90B55A013F5C6D49C7FC
+010713F89038007FC02A3C79B939>I<EB1FF0EBFFFC000313FF000F14804814C09038E0
+1FE09038000FF0001C13070018EB03F81210C7FCEC01FCA7143FEB0FFF90B5FC1203120F
+381FFE01EA3FE0EA7F80130012FEA414037E387F800FEBE03F6CB5FC7E6C13F96C13E1D8
+01FEC7FC1E287DA628>97 D<12FEB3A4EB01FCEB0FFF013F13C090B57EB67E9038F03FF8
+EBC007496C7EEB0001486D7EA2157FA3ED3F80AAED7F00A35D5D14016C5CEB80039038C0
+0FF89038F03FF090B55A485C6D5BD91FFEC7FC380007F8213D7ABB2B>I<EB03FE90381F
+FFC0017F13E090B512F84814FC3803FC033907F8007CD80FE01338484813081500485AA2
+48C8FCA3127E12FEA9127FA36C7EA26D1302001F14066C6C131E6C6C137E9038FC03FE6C
+B5FCC614FC6D13F0011F13C0903807FC001F287DA625>I<ED3F80B3A4EB0FE0EB3FFC90
+B5FC4814BF4814FF3807FE07380FF801381FE00049137F003F143F5B127F90C7FCA312FE
+AA127FA36C7E157F6C7E6D13FF380FF0033807FE076CB512BF6C143F6C13FEEB7FF8D90F
+E0C7FC213D7DBB2B>I<EB07F8EB1FFE90387FFF8048B512C04814E03907FC0FF0390FF0
+03F8EBE001391FC000FC49137C003F147E90C7123E5A127E151F12FEB7FCA500FCC8FCA2
+7EA2127EA2127F7E7F6C7E6D13026C6C130E6C6C133E3903FE01FE6CB5FC6C14FC6D13F0
+011F13C0903803FE0020287EA625>I<14FF010313C0130F5B5BEB7F819038FE00404913
+0012015BA21203ADB512FCA5D803F8C7FCB3AE1A3D7FBC19>I<903907E001F890383FFC
+1F90397FFEFFFC48B6FC5A9039F81FF8003907F00FE048486C7EEBC003A248486C7EA76C
+6C485AA2EBE0076C6C485A6C6C485A48B5FC5D4849C7FCEB3FFC381F07E090C9FCA37F7F
+6CB512C015F815FE6CECFF8016C04815E05A3A3F80007FF048C7120F007EEC03F8481401
+A46C1403007E15F0D87F80130F6C6CEB1FE03A1FFC01FFC06CB612806C1500000114FC6C
+6C13F0010790C7FC26387EA52A>I<12FEB3A4EB01FC90380FFF804913C0017F13E090B5
+12F039FFF81FF8EBE007EBC003018013FC14011300A35AB3A71E3C7ABB2B>I<12FFA812
+00AC127FB3B308397BB814>I<12FEB3A5EC03FE4A5A4A5A4A5A4A5A4A5A4A5A4990C7FC
+495A5C495A495A495A495A495A497EB57EA280EBF7F813E3EBC1FCEB80FE497E487F6E7E
+81141F6E7E8114076E7E6E7E811400157F1680213C7ABB29>107
+D<12FEB3B3B3A6073C7ABB14>I<D901FCEB03F83BFE0FFF801FFF496D481380017F6DB5
+12C090B500F114E03CFFF81FFBF03FF0D9E007EBC00F903AC003FF80070180020013F86E
+140301005BA3485CB3A735267AA542>I<EB01FC39FE0FFF804913C0017F13E090B512F0
+39FFF81FF8EBE007EBC003018013FC14011300A35AB3A71E267AA52B>I<EB03FE90380F
+FF80013F13E090B512F848803903FE03FE3907F800FF4848EB7F8049133F4848EB1FC048
+48EB0FE0A290C712074815F0A2007E140300FE15F8A9007FEC07F0A36C6CEB0FE0A26C6C
+EB1FC06D133F6C6CEB7F806C6CEBFF003903FE03FE6CB55A6C5C6D5B011F13C0D903FEC7
+FC25287EA62A>I<EB01FC38FE0FFF013F13C090B57EB67E9038F03FF8EBC00F90388003
+FC1300486D7E14008181A21680153FA9ED7F00A35D5D14016C495AEB80076D485A9038F0
+3FF090B55A485C6D5BD91FFEC7FCEB07F890C9FCAF21367AA52B>I<14F0EAFC07130F13
+3F137F13FF00FD130013FCEAFFF05B5BA25B90C7FCA35AB3A414267AA51C>114
+D<EB7FE03801FFFC0007EBFF804814C05A383FC03F90380007801401007E90C7FCA4127F
+A26C7E13F0EBFF806C13F06C13FC6C7F6C7FC61480131F010013C0143FEC0FE0A21407A3
+124012600078EB0FC000FE131F39FFC07F8090B5FC6C1400001F5B000313F838007FC01B
+287EA620>I<EA01FCAAB6FCA5D801FCC7FCB3A76D138014013900FF07C014FFA26D1300
+EB3FFCEB1FE01A307FAE1E>I<00FEEB01FCB3AA1403A214076C131F387F807F90B5FC6C
+13F914F1000F13C1D803FCC7FC1E267AA42B>I<B4EC0FE06CEC1FC0A27F003FEC3F80A2
+7F001FEC7F00A26C6C137E15FEA26C6C485AA36C6C485AA3D801FC5B140700005C13FE14
+0F017E5B137F141F013F5BA2149FD91FBFC7FCA3EB0FBE14FE6D5AA323257FA426>I<00
+FED901FEEB01FC007F17F802031403A2018013DF003FEE07F01407ED9F80D81FC016E002
+0F140F158FD80FE002C013C0030F131F141FED07E0D807F01680021E143F143E0003DA03
+F0130013F8023C5C0001017C147EED01F813FC027814FE0000D9F8005BA24A13FC017C5D
+167D137E5C013EEC3DF0013F143F5C011F5D161F36257FA439>I<D87F80EB0FE0003FEC
+1FC06C6C133F6DEB7F806C6C1400000714FE6C6C485A3801FC0301FE5B6C6C485A6D485A
+90383F9FC0EB1FDF6DB45A92C7FC6D5A6D5A1301A2497E1307497EECDF8090381F9FC090
+383F0FE0496C7EEBFE0301FC7F00016D7E48486C7E4848137F120F49EB3F804848EB1FC0
+484814E0007FEC0FF048C7EA07F8252580A426>I<B4EC0FE06CEC1FC0A26C7EED3F807F
+001FEC7F00A26C7E15FE7F00075C1401EA03F85DEBFC0312015D3800FE075D137E140F01
+7F5B133FA290381F9F80A292C7FC130FA2EB079E14DEA2EB03FCA26D5AA35C13035CA213
+075C130FA2495A1220D8383FC8FCEA3FFEA25B5BEA0FE023367FA426>I
+E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fh ecrm1000 10 70
+/Fh 70 123 df<DA0FF813FC91397FFF07FF903B01F807DF83C0903A07E001FF0F903B1F
+8007FE1FE090393F000FFC137E16F85B9338F007804848010790C7FC1503ACB812F8A328
+01F80003F0C7FCB3AB486C497E267FFFE0B512F0A3333B7FBA30>27
+D<EC0FF8EC7FFE903901F80780903907E001C090391F8000E090383F0007017E497EA25B
+A2485A6F5AED018092C8FCA9ED03F0B7FCA33901F8000F1503B3AA486C497E267FFFE0B5
+12C0A32A3B7FBA2E>I<EC0FFC91387FFF70903901F803F0903807E00790381F800FEB3F
+00137EA25B150748481303ADB7FCA33901F80003B3AB486C497E267FFFE0B512C0A32A3B
+7FBA2E>I<146014E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485AA212075B12
+0F90C7FCA25A121EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F12077F1203A26C
+7EA26C7E1378A27F7F130E7FEB0380EB01C0EB00E01460135278BD20>40
+D<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378A2137C133C133E131EA2131F7F
+A21480A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A25B131EA2133E133C137C1378A2
+5BA2485A485AA2485A48C7FC120E5A5A5A5A5A13527CBD20>I<1530B3A8B912FCA2C800
+30C8FCB3A836367BAF41>43 D<121C127FEAFF80A213C0A3127F121C1200A412011380A2
+120313005A1206120E5A5A5A12600A19798817>I<B512FCA516057F941C>I<121C127FEA
+FF80A5EA7F00121C0909798817>I<EB03F8EB1FFF90387E0FC09038F803E03901E000F0
+484813780007147C48487FA248C77EA2481580A3007EEC0FC0A500FE15E0B3007E15C0A4
+007F141F6C1580A36C1500A26C6C133EA26C6C5B6C6C5BEBF0013900F803E090387E0FC0
+D91FFFC7FCEB03F823397DB62A>48 D<EB01C013031307131F13FFB5FCA2131F1200B3B3
+A7497E007FB512F0A31C3779B62A>I<EB0FF0EB7FFE48B57E3903E03FE0390F000FF000
+1E6D7E001C6D7E486D7E5A6E7E126012FE6CEC7F807FA56CC7FC121CC8FCEDFF00A25D14
+015D14035D4A5A4A5A5D4A5A4AC7FC147E5C495A14E0495A495A49C8FC011EEB01805B5B
+49130348481400485A485A90C75A48B6FC5A5A485CB6FCA321377CB62A>I<EB07F8EB3F
+FF90B512C03901F80FF03903C007F848486C7E390E0001FEEA0F80391FE000FF7FA56C5A
+6C5AC7485AA25D14035D4A5A5DEC0F80027FC7FCEB1FFCECFF809038000FE06E7EEC01FC
+816E7EED7F80A216C0A2153F16E0A2121EEA7F80A2487EA316C0157F491480007EC7FC00
+70ECFF006C495A121E390F8003F83907F00FF00001B512C06C6C90C7FCEB0FF823397DB6
+2A>I<1538A2157815F8A2140114031407A2140F141F141B14331473146314C313011483
+EB030313071306130C131C131813301370136013C01201EA038013005A120E120C5A1238
+12305A12E0B712F8A3C73803F800AA4A7E0103B512F8A325387EB72A>I<0006140CD807
+80133C9038F003F890B5FC5D5D158092C7FC14FC38067FE090C9FCAAEB07F8EB1FFE9038
+780F809038E007E03907C003F0496C7E130000066D7E81C8FC8181A21680A4121C127F5A
+7FA390C713005D12FC00605C12704A5A6C5C6C1303001E495A6C6C485A3907E03F800001
+B5C7FC38007FFCEB1FE021397CB62A>I<EC3FC0903801FFF0010713FC90380FE03E9038
+3F800790387E001F49EB3F804848137F485A12075B000FEC3F0049131E001F91C7FC5B12
+3FA3127F90C9FCEB01FC903807FF8039FF1E07E090383801F0496C7E01607F01E0137E49
+7F16805BED1FC0A390C713E0A57EA47F123F16C0A2001FEC3F807F000F15006D5B000714
+FE6C6C5B6C6C485A3900FE07F090387FFFC0011F90C7FCEB03FC23397DB62A>I<123012
+38123E003FB612E0A316C05A168016000070C712060060140E5D5D00E014304814705D5D
+C712014A5A4AC7FC1406140E5CA25C1478147014F05C1301A213035C1307A2130FA3131F
+5CA2133FA5137FA96DC8FC131E233A7BB72A>I<EB03F8EB1FFF017F13C09038FC07F039
+01E001F83903C0007C4848133C90C7123E48141E000E141F001E80A3121FA26D5B6D131E
+7FD80FF85B6D137C01FF13786C6D5A6CEBE3E0ECF780C601FFC7FC6D5A6D6C7E010F13E0
+013F7F01F97F3901E07FFE48486C7E380F800F48486C1380001E010113C0487F007C143F
+0078EC1FE0150F00F81407481403A21501A36C15C0A200781403007C15806C14076CEC0F
+006C6C131ED807E0137C3903F803F0C6B55A013F1380D907FCC7FC23397DB62A>I<121C
+127FEAFF80A5EA7F00121CC7FCB2121C127FEAFF80A5EA7F00121C092479A317>58
+D<121C127FEAFF80A5EA7F00121CC7FCB2121C127FEAFF80A213C0A3127F121C1200A412
+011380A2120313005A1206120E5A5A5A12600A3479A317>I<EB3FE03801FFFE3907C03F
+80390E000FC0003CEB07F000301303007014F8007C130100FE14FC7EA4127E003CEB03F8
+C7FCEC07F0A2EC0FE0EC1F80EC3F00147E147C5C495A5C495A5CA249C7FCA31306AA90C8
+FCA8130EEB3F80497EA56D5A010EC7FC1E3B7CBA27>63 D<1538A3157CA315FEA34A7EA3
+4A6C7EA202077FEC063FA2020E7FEC0C1FA2021C7FEC180FA202387FEC3007A202707FEC
+6003A202C07F1501A2D901807F81A249C77F167FA20106810107B6FCA24981010CC7121F
+A2496E7EA3496E7EA3496E7EA213E0707E1201486C81D80FFC02071380B56C90B512FEA3
+373C7DBB3E>65 D<B712E016FC16FF0001903980007FC06C90C7EA1FE0707E707E707EA2
+707EA283A75F16035F4C5A4C5A4C5A4C5AEEFF8091B500FCC7FCA291C7EA7F80EE1FE0EE
+07F0707E707E83707EA21880177F18C0A7188017FFA24C13005F16034C5AEE1FF8486DEB
+7FF0B812C094C7FC16F832397DB83B>I<913A01FF800180020FEBE003027F13F8903A01
+FF807E07903A03FC000F0FD90FF0EB039F4948EB01DFD93F80EB00FF49C8127F01FE153F
+12014848151F4848150FA248481507A2485A1703123F5B007F1601A35B00FF93C7FCAD12
+7F6DED0180A3123F7F001F160318006C7E5F6C7E17066C6C150E6C6C5D00001618017F15
+386D6C5CD91FE05C6D6CEB03C0D903FCEB0F80902701FF803FC7FC9039007FFFFC020F13
+F002011380313D7BBA3C>I<B712C016F816FE000190398001FF806C90C7EA3FE0EE0FF0
+EE03F8707E707E177FA2EF3F8018C0171F18E0170F18F0A3EF07F8A418FCAC18F8A4EF0F
+F0A218E0A2171F18C0EF3F80A2EF7F0017FE4C5A4C5AEE0FF0EE3FE0486DEBFF80B8C7FC
+16F816C036397DB83F>I<B812FEA3000190388000076C90C8FC173F838383A383A31880
+170116C0A394C7FCA31501A21503150F91B5FCA3EC000F15031501A21500A21860A318E0
+93C712C0A41701A3EF0380A21707A2170F173F177F486D903807FF00B9FCA333397EB838
+>I<B812F8A30001903880001F6C90C71201EE00FC177C173C171CA2170CA4170E1706A2
+ED0180A21700A41503A21507151F91B5FCA3EC001F15071503A21501A692C8FCAD4813C0
+B612C0A32F397DB836>I<B648B512FEA30001902680000313006C90C76C5AB3A491B6FC
+A391C71201B3A6486D497EB648B512FEA337397DB83E>72 D<B612C0A3C6EBC0006D5AB3
+B3AD497EB612C0A31A397EB81E>I<013FB512E0A39039001FFC00EC07F8B3B3A3123FEA
+7F80EAFFC0A44A5A1380D87F005B0070131F6C5C6C495A6C49C7FC380781FC3801FFF038
+007F80233B7DB82B>I<B612E0A3000101C0C8FC6C90C9FCB3AD1718A517381730A31770
+A317F0A216011603160FEE1FE0486D13FFB8FCA32D397DB834>76
+D<B5933807FFF86E5DA20001F0FC002600DFC0ED1BF8A2D9CFE01533A3D9C7F01563A3D9
+C3F815C3A2D9C1FCEC0183A3D9C0FEEC0303A2027F1406A36E6C130CA36E6C1318A26E6C
+1330A36E6C1360A26E6C13C0A3913901FC0180A3913900FE0300A2ED7F06A3ED3F8CA2ED
+1FD8A3ED0FF0A3486C6D5A487ED80FFC6D48497EB500C00203B512F8A2ED018045397DB8
+4C>I<B5913807FFFE8080C69238007FE06EEC1F80D9DFF0EC0F001706EBCFF8EBC7FCA2
+EBC3FEEBC1FFA201C07F6E7EA26E7E6E7E81140F6E7E8114036E7E168080ED7FC016E015
+3FED1FF0ED0FF8A2ED07FCED03FEA2ED01FF6F1386A2EE7FC6EE3FE6A2EE1FF6EE0FFEA2
+16071603A216011600A2177E486C153E487ED80FFC151EB500C0140EA2170637397DB83E
+>I<EC03FF021F13E09138FE01FC903901F8007ED907E0EB1F8049486D7ED93F80EB07F0
+49C76C7E01FE6E7E48486E7E49157E0003167F4848ED3F80A24848ED1FC0A2001F17E049
+150F003F17F0A3007F17F8491507A300FF17FCAC007F17F86D150FA3003F17F0A26C6CED
+1FE0A36C6CED3FC0000717806D157F000317006C6C15FEA26C6C4A5A017F4A5A6D6C495A
+6D6C495AD907E0EB1F80D903F8017FC7FC903900FE01FC91381FFFE0020390C8FC363D7B
+BA41>I<B712C016FC16FF0001D9800013C06C90C7EA1FE0707EEE03F883707EA2707EA2
+1880A71800A24C5AA24C5A5FEE0FF04C5AEEFF8091B548C7FC16F091CAFCB3A5487FB6FC
+A331397EB838>I<EC03FF021F13E09138FE01FC903901F8007ED907E0EB1F8049486D7E
+D93F80EB07F049C76C7E01FE6E7E48486E7EA24848157F0007178049153F000F17C04915
+1F001F17E0A24848ED0FF0A3007F17F8A2491507A200FF17FCAC007F17F8A26D150FA200
+3F17F0A26C6CED1FE0A36C6CED3FC00007027C14804AB4FC3C03F80383807F003B01FC07
+01C0FEEC0E002600FE0CEBE1FC017FEC63F8D93F8CEB77F0D91FCCEB3FE0D907EE14806D
+B449C7FC0100D981FC130CEC1FFF0203131C91C7001E131C161F183CEF807CEFC0F8EE0F
+FFA318F08218E07013C07013809338007E00364B7BBA41>I<B612FEEDFFE016F8000190
+388007FE6C90C76C7EEE3FC0707E707E707EA2707EA283A65FA24C5AA24C5A4C5AEE3F80
+04FFC8FCED07FC91B512E05E9138000FF0ED03F8ED00FE82707E707EA2161F83A583A6F0
+0180A217F8160F1803486D01071400B66D6C5A04011306933800FE0ECAEA3FFCEF07F039
+3B7DB83D>I<D90FF813C090383FFE0190B512813903F807E33907E000F74848137F4848
+133F48C7121F003E140F007E1407A2007C140312FC1501A36C1400A37E6D14006C7E7F13
+F86CB47E6C13F8ECFF806C14E06C14F86C14FEC680013F1480010714C0EB007F020713E0
+EC007FED3FF0151F150FED07F8A200C01403A21501A37EA216F07E15036C15E06C14076C
+15C06C140F6DEB1F80D8FBF0EB3F00D8F0FE13FE39E03FFFF8010F13E0D8C00190C7FC25
+3D7CBA2E>I<003FB812E0A3D9C003EB001F273E0001FE130348EE01F000781600007017
+70A300601730A400E01738481718A4C71600B3B0913807FF80011FB612E0A335397DB83C
+>I<B6903807FFFEA3000101809038007FE06C90C8EA1F80EF0F001706B3B2170E6D150C
+80171C133F17186D6C14385F6D6C14F06D6C5C6D6C495A6D6CEB07806D6C49C7FC91387F
+807E91381FFFF8020713E09138007F80373B7DB83E>I<B500FC91387FFF80A300030180
+91380FFC006C90C8EA07E0715A6C705A6E1403017F93C7FCA280013F1506A26E140E011F
+150C80010F5DA28001075DA26E147001031560A26D6C5CA2806D4A5AA2ED8003027F91C8
+FCA291383FC006A215E0021F5BA2EDF01C020F1318A26E6C5AA215FC02035BA2EDFEE002
+015BA26E6C5AA36FC9FCA3153EA2151CA3393B7EB83E>I<B5D8FC07B5D8F001B5FCA300
+07902780001FFEC7EA1FF86C48C7D80FF8EC07E000010307ED03C01B807F6C6F6C1500A2
+6E5F017F6E6C1406A280013F4A6C5CA280011F4A6D5BEE067FA26D6C010E6D5BEE0C3FA2
+6D6C011C6D5BEE181FA26D6C6F5BEE300FA26D6C6F485AEE6007A26D6C4CC7FC9338C003
+FCA203805D913B7F818001FE06A203C1150EDA3FC3C7EAFF0CA203E3151CDA1FE6EC7F98
+A215F6DA0FFCEC3FF0A302075E4B141FA202035E4B140FA202015E4B1407A2020093C8FC
+4B80503B7EB855>I<B500FE91383FFFE0A3000301E0913807FE00C649EC03F0017F6F5A
+606D6C5D6D6C140395C7FC6D6C1406A26D6C5C6D6C141C17186D6C143817306D6D5B6E6C
+13E05F91383FE0015F91381FF003DA0FF890C8FC1606913807FC0E160C913803FE1C9138
+01FF185E6E13B016E0157F6F5AB3A24B7E023FB512C0A33B397FB83E>89
+D<003FB7FCA39039FC0001FE01C0130349495A003EC7FC003C4A5A5E0038141F00784A5A
+12704B5A5E006014FF4A90C7FCA24A5A5DC712074A5AA24A5A5D143F4A5AA24A5A92C8FC
+5B495AA2495A5C130F4948EB0180A2495A5C137F495A16034890C7FC5B1203485AEE0700
+485A495C001F5D48485C5E4848495A49130FB8FCA329397BB833>I<007FB81280B912C0
+A26C17803204797041>95 D<EB1FE0EBFFFC3803E03F3907000F80390F8007E0486C6C7E
+13E06E7EA26E7E6C5A6C5AC8FCA4147FEB07FFEB3FE0EBFE00EA03F8EA0FF0EA1FC0123F
+485A90C7FC160C12FEA31401A26C13036CEB077C903980063E18383FC01E3A0FE0781FF0
+3A03FFF00FE03A007F8007C026277DA52A>97 D<EA03F012FFA3120F1203B0EC1FE0EC7F
+F89038F1E03E9039F3801F809039F7000FC001FEEB07E049EB03F049EB01F85BED00FCA2
+16FEA2167E167FAA167E16FEA216FC15016D14F8ED03F07F01EEEB07E001C6EB0FC09039
+C7801F00903881E07E903800FFF8C7EA1FC0283B7EB92E>I<EB03FC90381FFF8090387E
+03E03901F80070484813F83907E001FC380FC003A2EA1F80123F90380001F848EB00F015
+00A2127E12FEAA127E127FA26C14067F001F140E6D130C000F141C6C6C13386C6C13706C
+6C13E039007C07C090381FFF00EB07F81F277DA525>I<ED0FC0EC03FFA3EC003F150FB0
+EB03F8EB1FFF90387E078F9038F801EF3903F0007F4848133F4848131FA24848130F123F
+90C7FC5AA2127E12FEAA127E127FA27EA26C6C131FA26C6C133F6C6C137F6C6CEBEFF03A
+01F801CFFF39007C078F90381FFE0FD907F813C0283B7DB92E>I<EB07F8EB1FFF90387C
+0FC03901F803E03903F001F0D807E013F8380FC0004848137CA248C7127E153E5A153F12
+7E12FEA3B7FCA248C8FCA5127EA2127FA26C14037F001F14076C6C13060007140E6D131C
+D801F013386C6C137090387E03E090381FFF80903803FC0020277EA525>I<147E903803
+FF8090380FC1E0EB1F8790383F0FF0137EA213FCA23901F803C091C7FCADB512FCA3D801
+F8C7FCB3AB487E387FFFF8A31C3B7FBA19>I<ED03F090390FF00FF890393FFC3C3C9039
+F81F707C3901F00FE03903E007C03A07C003E010000FECF000A248486C7EA86C6C485AA2
+00075C6C6C485A6D485A6D48C7FC38073FFC38060FF0000EC9FCA4120FA213C06CB512C0
+15F86C14FE6CECFF804815C03A0F80007FE048C7EA0FF0003E140348140116F8481400A5
+6C1401007C15F06CEC03E0003F1407D80F80EB0F80D807E0EB3F003901FC01FC39007FFF
+F0010790C7FC26387EA52A>I<EA03F012FFA3120F1203B0EC0FF0EC3FFCECF03F9039F1
+C01F809039F3800FC0EBF70013FE496D7EA25BA35BB3A3486C497EB500C1B51280A3293A
+7EB92E>I<EA0380EA0FE0487EA56C5AEA0380C8FCAAEA03F012FFA312071203B3AA487E
+B512C0A312387EB717>I<EB01C0EB07F0EB0FF8A5EB07F0EB01C090C7FCAAEB01F813FF
+A313071301B3B3A2123C127E00FF13F01303A214E038FE07C0127C383C0F00EA0FFEEA03
+F8154984B719>I<EA03F012FFA3120F1203B1913801FFFCA39138007FC01600157C1570
+5D4A5A4A5A4AC7FC141E1438147814FC13F1EBF3FEEBF73F01FE7FEBF81F496C7E811407
+6E7E6E7E811400157E157F811680ED1FC0486CEB3FF0B500C0B5FCA3283A7EB92C>I<EA
+03F012FFA3120F1203B3B3AD487EB512C0A3123A7EB917>I<2703F00FF0EB1FE000FFD9
+3FFCEB7FF8913AF03F01E07E903BF1C01F83803F3D0FF3800FC7001F802603F70013CE01
+FE14DC49D907F8EB0FC0A2495CA3495CB3A3486C496CEB1FE0B500C1B50083B5FCA34025
+7EA445>I<3903F00FF000FFEB3FFCECF03F9039F1C01F803A0FF3800FC03803F70013FE
+496D7EA25BA35BB3A3486C497EB500C1B51280A329257EA42E>I<EB03FE90380FFF8090
+383E03E09038F800F84848137C48487F48487F4848EB0F80001F15C090C712074815E0A2
+007EEC03F0A400FE15F8A9007E15F0A2007F14076C15E0A26C6CEB0FC0000F15806D131F
+6C6CEB3F006C6C137EC66C13F890387E03F090381FFFC0D903FEC7FC25277EA52A>I<39
+03F01FE000FFEB7FF89038F1E07E9039F3801F803A07F7000FC0D803FEEB07E049EB03F0
+4914F849130116FC150016FEA3167FAA16FEA3ED01FCA26DEB03F816F06D13076DEB0FE0
+01F614C09039F7803F009038F1E07E9038F0FFF8EC1FC091C8FCAB487EB512C0A328357E
+A42E>I<3807E01F00FFEB7FC09038E1E3E09038E387F0380FE707EA03E613EE9038EC03
+E09038FC0080491300A45BB3A2487EB512F0A31C257EA421>114
+D<EBFF03000313E7380F80FF381E003F487F487F00707F12F0A2807EA27EB490C7FCEA7F
+E013FF6C13E06C13F86C7F00037FC67F01071380EB007F141F00C0EB0FC01407A26C1303
+A37E15806C13077EEC0F00B4131E38F3C07C38E1FFF038C03F801A277DA521>I<1318A5
+1338A31378A313F8120112031207001FB5FCB6FCA2D801F8C7FCB215C0A93800FC011580
+EB7C03017E13006D5AEB0FFEEB01F81A347FB220>I<D803F0EB07E000FFEB01FFA3000F
+EB001F00031407B3A4150FA3151F12016D133F0000EC77F86D9038E7FF8090383F03C790
+381FFF87903A03FC07E00029267EA42E>I<B538803FFEA33A0FF8000FF06C48EB07E000
+03EC03C06D148000011500A26C6C1306A26D130E017E130CA26D5BA2EC8038011F1330A2
+6D6C5AA214E001075BA2903803F180A3D901FBC7FCA214FF6D5AA2147CA31438A227257E
+A32C>I<B53A1FFFE03FFEA3260FF8009038000FF86C48017EEB03E018C00003023EEB01
+80A26C6C013FEB0300A36C6CEC8006156FA2017E9038EFC00C15C7171CD93F01EBE01815
+830281EBF038D91F831430150102C3EBF87090260FC6001360A2D907E66D5A02EC137CA2
+D903FCEB7F804A133FA2010192C7FC4A7FA20100141E4A130E0260130C37257EA33C>I<
+B538807FFFA33A03FE003FF00001EC1F80000092C7FC017E131C6D13186D6C5AECC07001
+0F5B6D6C5AECF180EB03FB6DB4C8FC6D5AA2147F804A7E8114CF903801C7E090380383F0
+90380703F8EB0601496C7E011C137E49137F01787F496D7E486C80000FEC3FF0D8FFFE90
+B51280A329247FA32C>I<B538803FFEA33A0FF8000FF06C48EB07C00003EC03806C7E16
+007F00001406A2017E5BA2137F6D5BA26D6C5AA2ECC070010F1360A26D6C5AA214F10103
+5BA2D901FBC7FCA214FF6D5AA2147CA31438A21430A214701460A25CA2EA7C0100FE5B13
+0391C8FC1306EAFC0EEA701C6C5AEA1FF0EA0FC027357EA32C>I<003FB512FCA2EB8003
+D83E0013F8003CEB07F00038EB0FE012300070EB1FC0EC3F800060137F150014FE495AA2
+C6485A495AA2495A495A495AA290387F000613FEA2485A485A0007140E5B4848130C4848
+131CA24848133C48C7127C48EB03FC90B5FCA21F247EA325>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fi ecss2074 20.74 19
+/Fi 19 119 df<EF7FFCA34D7EA34C7FA34C805F5F040780187FDC0FF87FA2183FDC1FF0
+7FA2181F043F8017E0180F047F8017C004FF6D7E1780A24B6E7E1700A24B6E7F5EA20307
+6E7F5E030F82197F5E031F82193F5E033F6F7EA25E037F6F7EA25E03FF6F7EA24A498185
+93C8FC4A84855D020784855D020F717EA24A48831A3FA24A48831A1F5D027F841A0F5D02
+FF841A074990BAFCA34986A34986A202FCCBFC010F861B7F5C011F861B3F4948851B1FA2
+4948851B0FA24948851B075C4887874890CC148087A248481BC087A248481BE01C7F5B00
+1F1CF01C3F48481BF8A21C1F48481BFC1C0FA248481BFE1C075B5F757BF46A>65
+D<BB12F8A801C0CCFCB3B3A890BA1280A801C0CCFCB3B3AC90BA12FEA9477570F45F>69
+D<D8FFC0F1FFF05013E05013C0501380501300505A505A63505A505A4F5B4F5B4F90C7FC
+4F5A4F5A4F5A4F5A19FF4E5B4E5B4E5B4E90C8FC4E5A614E5A4E5A4E5A4D5B4D5B4D90C9
+FC4D5A4D5A4D5A177F4D5A4C5B4C5B4C5B4C90CAFC4C5A5F4C5A4C5A4C5A4B5B4B5B5D5D
+4B7F5D4B7F92B57E5C4A804AEB9FFC4A131F4B6C7E4A486C7EEC3FF84A486C7FDAFFE080
+01C1497E01C3496C7F01C790C7FCD9CFFE6E7ED9DFFC6E7E13FF4A6E7E4A6E7E5C4A6E7E
+4A6E7F91C8FC496F7F496F7F5B49707E498349163F727EA2727E727EA2727F727FA2727F
+737EA2737E86191F737EA2737E737FA2737F737FA2747E747EA2747E747EA2747E1C8086
+7413C0A27413E0F37FF0A2F33FF8F31FFC567570F46E>75 D<EAFFC0B3B3B3B3B3B390B9
+12FCA83E7570F456>I<D8FFFCF33FFFA36D63A26D98B5FCA36E61A201BF1BFD6E190301
+9F1BF96E1907A3D98FF0F10FF1A3D987F8F11FE1A26E193F01831BC1A26E197F01811B81
+A26E19FF01801B016F5FA2027F19FE6F1703023F19FCA26F1707021F19F8A26F170F020F
+19F06F171FA2020719E06F173FA2020319C06F177F020119806F17FFA26E1900705DA203
+7F5F701503A26F6C4B5AA2031F5F70150FA2030F5F70151FA203075F70153FA26F6C4B5A
+A203015F7015FFA26F94C7FC715BA2047F5D711303043F5D711307A2041F5D71130FA204
+0F5D71131FA204075D71133F04035DA271137F04015DA27113FF7092C8FC1881057F5BA2
+18C3053F5BA394381FE7F8A2050F5B18FFA2715BA3715BA2715BA394CBFCA268756FF48B
+>I<EF1FFE0403B512F0041F14FE047F6E7E4BB712E0030716F8031F16FE037F707E92B5
+D8F003804A91C7003F7F020701F8020713F84A01E002017F4A01806E6C7E4A48C9EA1FFF
+4A48707F4A48707F4949707F03C016004949717E4990CB6C7E49864A181F4948727E4948
+727EA24948727F4948727FA24849727FA24849737EA291CD123F4888491A1F000F88A249
+1A0F001F88A2491A07003F88A34986A2007F1D80A44986A200FF1DC0B06D62007F1D80A5
+6D62A2003F1D00A26D62A2001F64A26D1A1F000F64A26D1A3F6C646E197FA26C6D4F5AA2
+6C6D4E5BA26C6D4E5BA26D6C4E5B6D6C4E90C7FCA26D6C4E5A6E183F6D6D4D5A6D626D6D
+4D5A6F5E6D6D4C5B6D01FC040F5B6E6C4C5B6E6C4C90C8FC6E01C0EDFFFE6E6D4A5B6E01
+FC020F5B020101FF023F13E06EDAF003B55A6F90B75A031F4CC9FC030716F86F5EDB007F
+1580041F4ACAFC040314F09326001FFECBFC627977F675>79 D<923801FFF8033FEBFFE0
+4AB612FC0207EDFF80021F16E0027F16F891B812FE0103EFFF80499026FE000F14C04901
+E0EB007F490180140F4948C800031380D97FF815004948167F02C0161F4849160F4890CA
+120749EF0100000795C7FC5B485AA2485AA35B123FA87FA2121F7FA27F120F7F7F6C7F80
+6C7F6C7F14FC6C13FF6D13C06D13F86DEBFF806D14F86D14FF6D15F06D15FF6D6C15E06E
+15F8020F15FE020381DA007F15C0030781030081040F80040080050F7F05017F716C1380
+061F13C018077213E07213F084F17FF8193FF11FFCA2190FF107FEA319031AFFA285A91A
+FE1903A3F107FCA20020180F007019F8007C181F007E19F0007F183F01C0EF7FE06DEFFF
+C0D8FFF85E01FE4C13806D6C030F13006C01E04B5A001F01FCED7FFC6CD9FF80903803FF
+F8000302FC013F5BC691B75A6D5F010F94C7FC010316FCD9007F15F0020F15C002014AC8
+FCDA000713E0487979F659>83 D<ED3FFF4AB512F8020F14FF023F15C04A15F049B712FC
+4916FF49178049EBE0004990C7120FD93FFC02011300D97FF06E7E4948151F0280814890
+C912034894C7FC5B485A5B120F5B121F5B123F5BA3485AA548CCFCAD6C7EA47F123FA27F
+121F7FA26C7EA26C6C17806D1601000317036C6C160F6E151F6C01E0ED7FC06D6CEC01FF
+D93FFC14076DB4143F6DD9E003B512806D90B6EAFE006D5E6D16F06D6C5D6E1580020F02
+FCC7FC020114E09126003FFCC8FC3A4C78CA47>99 D<F07FE0B3B3AD4AB47E020F13F802
+3F13FE91B612804915E0010715F04915FC4915FE499038F007FF49D9800013FF02FCC712
+3F4948804801E0804849804A804890C87E4981485A49167F121F5BA2485AA25B127FA25B
+A312FF90CAFCAD7F127FA47F123FA27FA26C7E18FF6C7E6D5D00075E7F6C6C5D6E5C6C6D
+5C02F05C6C6DECFF7F6DB4EB03FE6D9038E01FFC6D90B512F86D15F06D15E06D15806D15
+006D6C13FC021F13E0020390C9FC3B7C78FA52>I<ED7FE0913803FFFE021F6D7E4A14E0
+91B612F84981010781498149D9C01F7F90273FFE00037FD97FF8130002E06E7E4948EC1F
+F04849140F4890C86C7E5B48486F7E491501120F496F7E121F49167EA24848167F845B12
+7FA290CAFCF01F80A2BAFCA748CCFCA47EA37EA27FA36C7EA36C7EA26C7E7F12077F6C6C
+17806D16016C6D15076C6D150F6EED3FC0D97FF815FF6D6C14036DB46C131F6DD9F003B5
+12806D90B712006D16FC01005E6E15E0021F1580020702FCC7FC020114E09126001FFEC8
+FC3A4C79CA47>I<EE3FFF4BB512F01507151F5D5D4AB6FC5CEEE0034A90C71210DA0FFC
+14004A5A5D4A5A5D147F5D14FFA292C9FC5BA45BB3A9B812C0A8D8000390C9FCB3B3B3AB
+347C7DFB31>I<EAFFC0B3B3B3B3B3B3AF0A7B73FA25>108 D<ED1FF826FFC001B57E0207
+14E0021F14F8027F8091B67E01C18101C316809038C7FE00D9CFF0011F13C0D9DFE00107
+13E0D9FF80130191C8FC18F049157F5B173F4916F8A249151FA35BA45BB3B3AC354A72C9
+52>110 D<ED1FFC92B57E020714F0021F14FC027F14FF91B77E010316E0498249D9F007
+7F4990C76C7ED93FFCEC1FFED97FF0EC07FF4A8049486E7F48496E7F4890C96C7E49163F
+4848707E49160F000F844916074848707EA34848707EA2491600007F84A490CB7E481980
+AC6D17FF007F1900A36D5EA2003F606D1603A2001F606D1607A26C6C4C5A6D161F000760
+6D163F6C6C4C5A6C6D4B5A6E5C6C6D4A5BD97FF8020F90C7FC6D6C4A5A6DB46CEBFFFC6D
+D9F0075B6D90B65A6D5E010016806E92C8FC021F14FC020714F0020114C09126001FFCC9
+FC414C79CA50>I<ED0FFCD8FFC090B57E020714E0021F80027F14FC91B67E01C38101C7
+829026CFFE0080D9DFF0131FD9FFC001077F4A01017F49C87F49157F496F7E171F496F7E
+491507717E5B83198083A2187F19C0A2183FA319E0181FAC183FA219C0A3187FA2198018
+FFA24D1300A25F6D4B5AA26D4B5A6D151F4D5A6D4B5A6DEC01FF6D4A5B6E010F5BD9DFE0
+013F5B9026CFFC01B5C7FC01C7B65A01C35D01C15D01C05D023F14C0020F5C020301FCC8
+FC9138003FE092CAFCB3AE3B6B72C952>I<ED01F8B46C131F157FEC01FF1407141F5C5C
+9138FFFE00018113F0018313C0018790C7FCEB8FFCEB9FF85CEBBFC0A2EBFF8091C8FC5B
+A25B5BA35BA25BA45BB3B3A7254A72C936>114 D<91380FFFC091B512FE0107ECFFC001
+1F15F8017F15FE90B812804817C05A489038F0003F4890C70003138049EC007FD81FF815
+1F491507003F16014992C7FCA2485AA77FA26C7E7F7F6CB4FC6C13C014F86CEBFF806C14
+FC6CECFFE06C15FC6D14FF6D15C0010F81010315F8010081020F80DA007F7F03071480DB
+003F13C0160F040313E01600EF7FF0173FA2EF1FF8A2170FA7EF1FF0A20070163F127C00
+7FEE7FE001C015FF01F0020313C0B5020F138002F0137F91B712006C5E001F5E000716F0
+C65E011F1580010302FCC7FCD9000F13C0354C7CCA3D>I<D8FFC0ED1FF8B3B3B0173FA3
+177FA217FFA26D5C5E007F5D6D5C6D143F01FEECFFDF273FFF8007139F91B6121F6C15FC
+6C15F86C15E06C15806CECFE006C6C13F0D90FFEC9FC354A72C852>117
+D<D8FFC0EF3FF0007F19E07F003FF07FC0A27F001FF0FF80A26D5E000F19007F00074D5A
+A26D16070003607F6C4D5AA26E151F6C6080017F4C5AA280013F4C5AA26E15FF011F5F80
+010F4B90C7FCA26E5C01075E8001034B5AA2806D4B5AA26D6D495AA281027F4A5AA28102
+3F4A5AA26E6C495AA281020F4990C8FCA2DA07FC5B1603A26E6C485AA2DA01FF5B160FA2
+6EEB8FF0169FA292387FDFE016FF6F5BA36F5BA26F90C9FCA344497EC849>I
+E
+%EndDVIPSBitmapFont
+end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%BeginPaperSize: Letter
+letter
+%%EndPaperSize
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop 0 201 a Fi(SALOME)54 b(Kernel)g(resources)f(fo)l(r)g(develop)t
+(er)p 0 315 3900 24 v 0 428 a Fh(An)n(toine)28 b(Y)-7
+b(essa)n(y)n(an,)25 b(P)n(aul)j(Rascle)1735 b(V)-7 b(ersion)27
+b(0.1)g(Jan)n(uary)e(16,)i(2002)0 734 y Fg(This)33 b(do)r(cument)g
+(describ)r(es)g(the)g(development)f(environment)g(fo)n(r)i(C++)e(and)h
+(Python.)53 b(Mak)n(e\034les)32 b(generation)g(and)h(usage)0
+848 y(a)n(re)40 b(intro)r(duced)f(in)h(another)g(do)r(cument:)61
+b("using)38 b(the)i(SALOME)g(con\034guration)f(and)h(building)e(system)
+i(environment".)0 961 y(Development)33 b(environment)h(is)g(intended)g
+(here)g(as:)51 b(trace)34 b(and)g(debug)g(macros)g(usage;)j(SALOME)d
+(exceptions)f(usage,)i(in)0 1075 y(C++)20 b(and)h(Python;)i(user)e
+(CORBA)h(exceptions)e(usage,)i(in)f(C++)f(and)h(Python,)h(with)f(and)f
+(without)g(Graphical)h(User)h(Interface;)0 1188 y(some)27
+b(general)g(purp)r(ose)g(services)g(such)g(as)h(singleton,)e(used)h(fo)
+n(r)g(CORBA)h(connection)e(and)i(disconnection.)0 1527
+y Ff(Con)l(ten)l(ts)0 1766 y Fe(1)77 b(T)-8 b(race)33
+b(and)f(debug)f(Utilities)2662 b(1)125 1923 y Fh(1.1)83
+b(T)-7 b(w)n(o)27 b(mo)r(des:)37 b(debug)27 b(and)h(release)74
+b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
+f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
+(.)134 b(2)125 2079 y(1.2)83 b(C++)27 b(Macros)f(for)h(trace)g(and)g
+(debug)36 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
+(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
+f(.)h(.)134 b(2)315 2236 y(1.2.1)94 b(Macros)26 b(de\034ned)i(in)g
+(debug)f(and)g(release)g(mo)r(des)60 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h
+(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134
+b(2)315 2392 y(1.2.2)94 b(Macros)26 b(de\034ned)i(only)f(in)h(debug)f
+(mo)r(de)83 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
+h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134
+b(3)0 2632 y Fe(2)77 b(Exceptions)3272 b(5)125 2788 y
+Fh(2.1)83 b(C++)27 b(exceptions:)36 b(class)27 b(SALOME_Exception)74
+b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
+h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(5)315 2945
+y(2.1.1)94 b(de\034nition)67 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
+(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
+g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134
+b(5)315 3101 y(2.1.2)94 b(usage)79 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h
+(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
+h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
+(.)h(.)134 b(5)125 3257 y(2.2)83 b(CORBA)28 b(exceptions)f(.)41
+b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
+(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
+f(.)h(.)f(.)h(.)f(.)h(.)134 b(6)315 3414 y(2.2.1)94 b(de\034nition)67
+b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
+h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(6)315 3570 y(2.2.2)94
+b(usage)79 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134
+b(7)0 3810 y Fe(3)77 b(Miscellaneous)29 b(to)s(ols)2919
+b(7)125 3966 y Fh(3.1)83 b(Singleton)c(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h
+(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
+f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
+(.)f(.)h(.)f(.)h(.)134 b(7)315 4123 y(3.1.1)94 b(De\034nition)50
+b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
+h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f
+(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(7)315 4279 y(3.1.2)94
+b(Usage)63 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
+(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
+f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134
+b(8)315 4436 y(3.1.3)94 b(Design)27 b(description)62
+b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
+h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
+(.)h(.)f(.)h(.)134 b(8)0 4774 y Ff(1)d(T)-11 b(race)45
+b(and)e(debug)h(Utilities)0 5013 y Fh(During)24 b(the)h(dev)n(elopmen)n
+(t)e(pro)r(cess,)h(an)g(execution)g(log)f(is)h(useful)h(to)f(iden)n
+(tify)h(problems.)35 b(This)24 b(log)g(con)n(tains)f(messages,)0
+5126 y(v)-5 b(ariables)31 b(v)-5 b(alues,)33 b(source)e(\034les)h
+(names)g(and)g(line)h(n)n(um)n(b)r(ers.)51 b(It)32 b(is)g(recommended)g
+(to)g(v)n(erify)g(assertions)e(on)i(v)-5 b(ariables)0
+5240 y(v)g(alues)27 b(and)h(if)g(necessary)-7 b(,)26
+b(to)h(stop)g(the)h(execution)f(at)h(debug)f(time,)h(in)g(order)e(to)i
+(v)-5 b(alidate)27 b(all)g(parts)g(of)h(co)r(de.)p eop
+%%Page: 2 2
+2 1 bop 0 -167 3900 5 v 0 -200 a Fe(1.)73 b(T)-8 b(race)34
+b(and)e(debug)f(Utilities)2644 b Fh(2)0 162 y Fd(1.1)112
+b(T)-9 b(w)m(o)37 b(mo)s(des:)50 b(debug)38 b(and)h(release)0
+372 y Fh(The)27 b(goal)e(of)h(debug)h(mo)r(de)f(is)h(to)f(c)n(hec)n(k)g
+(as)g(man)n(y)g(features)g(as)f(p)r(ossible)i(during)f(the)h(early)e
+(stages)g(of)i(the)g(dev)n(elopmen)n(t)0 485 y(pro)r(cess.)46
+b(The)31 b(purp)r(ose)g(of)g(the)g(utilities)h(pro)n(vided)e(in)h
+(SALOME)h(is)f(to)g(help)g(the)g(dev)n(elop)r(er)f(to)h(add)g(detailed)
+g(traces)0 599 y(and)c(c)n(hec)n(k)g(v)-5 b(ariables)26
+b(v)-5 b(alues,)27 b(without)h(writing)g(a)f(lot)g(of)h(co)r(de.)0
+755 y(When)33 b(the)g(co)r(de)f(is)h(assumed)e(to)i(b)r(e)g(v)-5
+b(alid,)33 b(the)g(release)e(mo)r(de)i(optimizes)f(execution,)i(in)e
+(terms)g(of)h(sp)r(eed,)h(memory)-7 b(,)0 869 y(and)27
+b(displa)n(y)g(only)g(user)g(lev)n(el)g(messages.)0 1025
+y(But,)22 b(some)d(informations)f(m)n(ust)i(alw)n(a)n(ys)e(b)r(e)i
+(displa)n(y)n(ed)e(in)i(b)r(oth)g(mo)r(des:)33 b(esp)r(ecially)19
+b(messages)f(concerning)g(en)n(vironmen)n(t)0 1139 y(or)31
+b(in)n(ternal)g(errors,)g(with)h(v)n(ersion)e(iden)n(ti\034cation.)49
+b(When)32 b(an)g(end)g(user)f(is)g(confron)n(ted)g(to)h(suc)n(h)f(a)h
+(message,)f(he)h(ma)n(y)0 1253 y(refer)23 b(to)h(a)g(con\034guration)e
+(do)r(cumen)n(tation)i(or)f(send)h(the)g(message)f(to)g(the)i(p)r
+(eople)f(in)g(c)n(harge)e(of)i(SALOME)h(installation,)0
+1366 y(or)i(to)g(the)h(dev)n(elopmen)n(t)f(team,)h(follo)n(wing)e(the)i
+(kind)g(of)f(error.)0 1658 y Fd(1.2)112 b(C++)38 b(Macros)g(for)f
+(trace)g(and)i(debug)0 1868 y Fh(SALOME)23 b(pro)n(vides)d(C++)h
+(macros)g(for)g(trace)h(and)f(debug.)35 b(These)22 b(macros)e(are)i(in)
+g Fc(SALOME/src/utils)o(/u)o(ti)o(lit)o(ie)o(s.)o(h)0
+1981 y Fh(and)30 b(this)h(\034le)g(m)n(ust)g(b)r(e)g(included)g(in)g
+(C++)f(source.)45 b(Some)30 b(macros)f(are)h(activ)-5
+b(ated)30 b(only)g(in)h(debug)g(mo)r(de,)g(others)f(are)0
+2095 y(alw)n(a)n(ys)c(activ)-5 b(ated.)37 b(T)-7 b(o)27
+b(activ)-5 b(ate)28 b(the)g(debug)f(mo)r(de,)h Fc(_DEBUG_)d
+Fh(m)n(ust)j(b)r(e)g(de\034ned,)g(whic)n(h)g(is)g(the)g(case)f(when)h
+(SALOME)0 2208 y(Mak)n(e\034les)k(are)g(generated)f(from)i
+(con\034gure,)g(without)g(options.)53 b(When)33 b Fc(_DEBUG_)d
+Fh(is)j(unde\034ned)g(\(release)f(mo)r(de\),)j(the)0
+2322 y(debug)c(mo)r(de)h(macros)d(are)i(de\034ned)h(empt)n(y)f(\(they)h
+(do)f(nothing\).)48 b(So,)32 b(when)g(switc)n(hing)f(from)g(debug)g(to)
+g(release,)g(it)h(is)0 2436 y(p)r(ossible)27 b(\(and)h(recommended\))f
+(to)g(let)h(the)g(macro)f(calls)f(unc)n(hanged)h(in)h(the)g(source.)0
+2592 y(All)23 b(the)h(macros)d(writing)i(on)f(the)i(standard)e(output)h
+(start)g(b)n(y)f(\035ushing)h(the)g(standard)f(error.)34
+b(A)n(t)23 b(the)g(end)h(of)f(the)g(displa)n(y)0 2706
+y(those)k(macros)f(\035ush)i(the)g(standard)e(output.)0
+2862 y(T)-7 b(w)n(o)27 b(informations)f(are)h(systematically)f(added)i
+(in)g(fron)n(t)f(of)g(the)h(information)f(displa)n(y)n(ed:)125
+3102 y Fb(\017)41 b Fh(the)28 b(name)f(of)g(the)h(source)f(\034le)g(in)
+h(whic)n(h)g(the)g(macros)e(is)h(set;)125 3282 y Fb(\017)41
+b Fh(the)28 b(line)f(n)n(um)n(b)r(er)h(of)f(the)h(source)e(\034le)i(at)
+g(whic)n(h)f(the)h(macro)e(is)i(set.)0 3554 y Fe(1.2.1)94
+b(Macros)32 b(de\034ned)f(in)g(debug)h(and)g(release)f(mo)s(des)0
+3764 y(INF)m(OS_COMPILA)-8 b(TION)84 b Fh(The)30 b(C++)f(macro)g
+Fc(INFOS_COMPILATIO)o(N)24 b Fh(writes)30 b(on)g(the)g(standard)f
+(output)i(infor-)0 3878 y(mations)c(ab)r(out)h(the)f(compiling)h(pro)r
+(cess:)125 4117 y Fb(\017)41 b Fh(the)28 b(name)f(of)g(the)h(compiler)f
+(:)37 b Fc(g++,)42 b(KCC,)g(CC,)g(pgCC)p Fh(;)125 4297
+y Fb(\017)f Fh(the)28 b(date)f(and)g(the)h(time)g(of)g(the)g(compiling)
+f(pro)r(cessing)f(pro)r(cess.)0 4537 y(This)35 b(macro)f
+Fc(INFOS_COMPILATIO)o(N)29 b Fh(do)r(es)35 b(not)g(ha)n(v)n(e)f(an)n(y)
+g(argumen)n(t.)58 b(Moreo)n(v)n(er,)35 b(it)g(is)g(de\034ned)h(in)f(b)r
+(oth)h(compiling)0 4650 y(mo)r(de)28 b(:)37 b Fc(_DEBUG_)24
+b Fh(and)k Fc(_RELEASE_)p Fh(.)0 4807 y(Example)g(:)0
+5046 y Fc(#include)40 b("utilities.h")0 5160 y(int)i(main\(int)e(argc)i
+(,)i(char)d(**argv\))0 5274 y({)87 5387 y(INFOS_COMPILATIO)o(N;)p
+eop
+%%Page: 3 3
+3 2 bop 0 -167 3900 5 v 0 -200 a Fe(1.)73 b(T)-8 b(race)34
+b(and)e(debug)f(Utilities)2644 b Fh(3)87 162 y Fc(...)0
+275 y(})0 548 y Fe(INF)m(OS\(str\))83 b Fh(In)39 b(b)r(oth)f(compiling)
+g(mo)r(de)g Fc(_DEBUG_)d Fh(and)j Fc(_RELEASE_)p Fh(,)f(The)h(C++)g
+(macro)e Fc(INFOS)g Fh(writes)i(on)g(the)0 661 y(standard)27
+b(output)h(the)g(string)e(whic)n(h)i(has)f(b)r(een)h(passed)f(in)g
+(argumen)n(t)g(b)n(y)g(the)h(user.)0 818 y(Example)g(:)0
+1057 y Fc(#include)40 b("utilities.h")0 1171 y(int)i(main\(int)e(argc)i
+(,)i(char)d(**argv\))0 1285 y({)87 1398 y(...)87 1512
+y(INFOS\("NORMAL)d(END)43 b(OF)f(THE)h(PROCESS"\);)87
+1625 y(return)e(0;)0 1739 y(})0 1978 y Fh(displa)n(ys)26
+b(:)0 2218 y Fc(main.cxx)40 b([5])i(:)i(NORMAL)d(END)h(OF)h(THE)f
+(PROCESS)0 2490 y Fe(1.2.2)94 b(Macros)32 b(de\034ned)f(only)g(in)h
+(debug)f(mo)s(de)0 2701 y(MESSA)m(GE\(str\))83 b Fh(In)19
+b Fc(_DEBUG_)d Fh(compiling)j(mo)r(de)g(only)-7 b(,)20
+b(the)f(C++)g(macro)e Fc(MESSAGE)f Fh(writes)j(on)f(the)i(standard)e
+(output)0 2814 y(the)34 b(string)g(whic)n(h)g(has)f(b)r(een)i(passed)e
+(in)i(argumen)n(t)e(b)n(y)g(the)i(user.)56 b(In)34 b
+Fc(_RELEASE_)c Fh(compiling)k(mo)r(de,)i(this)e(macro)f(is)0
+2928 y(blank.)0 3084 y(Example)28 b(:)0 3324 y Fc(#include)40
+b("utilities.h")0 3437 y(#include)g(<string>)0 3551 y(using)h
+(namespace)f(std;)0 3664 y(int)i(main\(int)e(argc)i(,)i(char)d
+(**argv\))0 3778 y({)87 3892 y(...)87 4005 y(const)h(char)f(*str)h(=)i
+("Salome";)87 4119 y(MESSAGE\(str\);)87 4232 y(...)e(const)g(string)f
+(st;)87 4346 y(st)i(=)g("Aster";)87 4459 y(MESSAGE\(c_str\(st)o(+")37
+b(and)42 b(CASTEM"\)\);)87 4573 y(return)f(0;)0 4687
+y(})0 4926 y Fh(displa)n(ys)26 b(:)0 5166 y Fc(-)43 b(Trace)f(main.cxx)
+e([8])i(:)h(Salome)0 5279 y(-)g(Trace)f(main.cxx)e([12])i(:)h(Aster)e
+(and)i(CASTEM)p eop
+%%Page: 4 4
+4 3 bop 0 -167 3900 5 v 0 -200 a Fe(1.)73 b(T)-8 b(race)34
+b(and)e(debug)f(Utilities)2644 b Fh(4)0 162 y Fe(BEGIN_OF\(func_name\))
+82 b Fh(In)28 b Fc(_DEBUG_)c Fh(compiling)i(mo)r(de,)i(The)f(C++)f
+(macro)g Fc(BEGIN_OF)d Fh(app)r(ends)k(the)h(string)0
+275 y Fc("Begin)41 b(of)i(")27 b Fh(to)g(the)h(one)e(passed)h(in)g
+(argumen)n(t)g(b)n(y)g(the)g(user)g(and)g(displa)n(ys)f(the)i(result)f
+(on)g(the)g(standard)g(output.)37 b(In)0 389 y Fc(_RELEASE_)24
+b Fh(compiling)j(mo)r(de,)h(this)g(macro)e(is)h(blank.)0
+545 y(Example)h(:)0 751 y Fc(#include)40 b("utilities.h")0
+865 y(int)i(main\(int)e(argc)i(,)i(char)d(**argv\))0
+978 y({)87 1092 y(BEGIN_OF\(argv[0])o(\);)87 1205 y(return)g(0;)0
+1319 y(})0 1524 y Fh(displa)n(ys)26 b(:)0 1730 y Fc(-)43
+b(Trace)f(main.cxx)e([3])i(:)h(Begin)f(of)g(a.out)0 1997
+y Fe(END_OF\(func_name\))82 b Fh(In)47 b Fc(_DEBUG_)c
+Fh(compiling)i(mo)r(de,)51 b(The)46 b(C++)f(macro)f Fc(END_OF)g
+Fh(app)r(ends)i(the)g(string)0 2110 y Fc("Normal)41 b(end)h(of)h(")38
+b Fh(to)h(the)h(one)f(passed)f(in)h(argumen)n(t)g(b)n(y)f(the)i(user)e
+(and)h(displa)n(ys)f(the)i(result)f(on)g(the)g(standard)0
+2224 y(output.)e(In)28 b Fc(_RELEASE_)c Fh(compiling)j(mo)r(de,)h(this)
+g(macro)e(is)h(blank.)0 2380 y(Example)h(:)0 2586 y Fc(#include)40
+b("utilities.h")0 2700 y(int)i(main\(int)e(argc)i(,)i(char)d(**argv\))0
+2813 y({)87 2927 y(END_OF\(argv[0]\);)87 3040 y(return)g(0;)0
+3154 y(})0 3360 y Fh(displa)n(ys)26 b(:)0 3565 y Fc(-)43
+b(Trace)f(main.cxx)e([4])i(:)h(Normal)e(end)i(of)f(a.out)0
+3832 y Fe(SCR)m(UTE\(v)-5 b(ar\))84 b Fh(In)30 b Fc(_DEBUG_)c
+Fh(compiling)j(mo)r(de,)h(The)f(C++)f(macro)g Fc(SCRUTE)f
+Fh(displa)n(ys)h(its)h(argumen)n(t)f(whic)n(h)h(is)g(an)0
+3946 y(application)21 b(v)-5 b(ariable)22 b(follo)n(w)n(ed)f(b)n(y)h
+(the)g(v)-5 b(alue)22 b(of)g(the)h(v)-5 b(ariable.)34
+b(In)22 b Fc(_RELEASE_)d Fh(compiling)j(mo)r(de,)h(this)f(macro)f(is)h
+(blank.)0 4102 y(Example)28 b(:)0 4308 y Fc(#include)40
+b("utilities.h")0 4421 y(int)i(main\(int)e(argc)i(,)i(char)d(**argv\))0
+4535 y({)87 4648 y(const)h(int)g(i=999;)87 4762 y(if\()g(i)i(>)f(0)g
+(\))g(SCRUTE\(i\))d(;)j(i=i+1;)87 4875 y(return)e(0;)0
+4989 y(})0 5195 y Fh(displa)n(ys)26 b(:)0 5400 y Fc(-)43
+b(Trace)f(main.cxx)e([5])i(:)h(i=999)p eop
+%%Page: 5 5
+5 4 bop 0 -167 3900 5 v 0 -200 a Fe(2.)73 b(Exceptions)3255
+b Fh(5)0 162 y Fe(ASSER)-8 b(T\(condition\))82 b Fh(In)33
+b Fc(_DEBUG_)c Fh(compiling)i(mo)r(de)i(only)-7 b(,)33
+b(The)f(C++)f(macro)g Fc(ASSERT)e Fh(c)n(hec)n(ks)i(the)i(expression)0
+275 y(passed)23 b(in)h(argumen)n(t)f(to)g(b)r(e)i(not)e(NULL.)i(If)f
+(it)g(is)g(NULL)g(the)g(pro)r(cess)f(is)g(stopp)r(ed)h(and)g(the)g
+(condition)g(is)f(written)h(on)g(the)0 389 y(standard)30
+b(output.)47 b(In)31 b Fc(_RELEASE_)c Fh(compiling)j(mo)r(de,)i(this)f
+(macro)e(is)i(blank.)46 b(N.B.)31 b(:)43 b(if)32 b Fc(ASSERT)c
+Fh(is)i(already)g(de\034ned,)0 502 y(this)e(macro)e(is)i(ignored.)0
+659 y(Example)g(:)0 898 y Fc(#include)40 b("utilities.h")0
+1012 y(...)0 1126 y(const)h(char)h(*ptrS)g(=)h(fonc\(\);)0
+1239 y(ASSERT\(ptrS!=NUL)o(L\))o(;)0 1353 y(cout)f(<<)h
+(strlen\(ptrS\);)0 1466 y(float)e(table[10];)0 1580 y(int)h(k;)0
+1693 y(...)0 1807 y(ASSERT\(k<10\);)0 1921 y(cout)g(<<)h(table[k];)0
+2259 y Ff(2)131 b(Exceptions)0 2516 y Fd(2.1)112 b(C++)38
+b(exceptions:)49 b(class)38 b(SALOME_Exception)0 2727
+y Fe(2.1.1)94 b(de\034nition)0 2937 y Fh(The)30 b(class)f
+Fc(SALOME_Exceptio)o(n)24 b Fh(pro)n(vides)k(a)h(generic)g(metho)r(d)h
+(to)g(send)f(a)h(message,)f(with)h(optional)f(source)f(\034le)i(name)0
+3050 y(and)g(line)g(n)n(um)n(b)r(er.)43 b(This)30 b(class)f(is)h(in)n
+(tended)g(to)g(serv)n(e)e(as)h(a)h(base)f(class)g(for)g(all)h(kinds)g
+(of)g(exceptions)f(SALOME)h(co)r(de.)0 3164 y(All)25
+b(the)g(exceptions)e(deriv)n(ed)h(from)g Fc(SALOME_Exception)18
+b Fh(could)24 b(b)r(e)h(handled)f(in)h(a)f(single)f(catc)n(h,)i(in)g
+(whic)n(h)f(the)h(message)0 3277 y(asso)r(ciated)h(to)i(the)g
+(exception)f(is)g(displa)n(y)n(ed,)g(or)f(sen)n(t)i(to)f(a)g(log)g
+(\034le.)0 3434 y(The)h(class)e Fc(SALOME_Exception)21
+b Fh(inherits)28 b(its)f(b)r(eha)n(vior)f(from)i(the)g(STL)f(class)g
+(exception.)0 3706 y Fe(2.1.2)94 b(usage)0 3916 y Fh(The)26
+b(header)g Fc(SALOME/src/util)o(s/)o(uti)o(ls)o(_S)o(ALO)o(ME)o(_E)o
+(xce)o(pt)o(io)o(n.h)o(xx)20 b Fh(m)n(ust)26 b(b)r(e)h(included)f(in)h
+(the)f(C++)g(source,)f(when)0 4030 y(raised)h(or)h(trapp)r(ed:)0
+4187 y Fc(#include)40 b("utils_SALOME_Ex)o(cep)o(ti)o(on)o(.hx)o(x")0
+4343 y Fh(The)28 b Fc(SALOME_Exceptio)o(n)21 b Fh(constructor)26
+b(is:)0 4582 y Fc(SALOME_Exception)o(\()37 b(const)42
+b(char)g(*text,)784 4696 y(const)g(char)g(*fileName=0,)784
+4810 y(const)g(unsigned)e(int)i(lineNumber=0)d(\);)0
+5049 y Fh(The)28 b(exception)f(is)g(raised)g(lik)n(e)g(this:)0
+5289 y Fc(throw)41 b(SALOME_Exception\()o("m)o(y)d(pertinent)h
+(message"\);)p eop
+%%Page: 6 6
+6 5 bop 0 -167 3900 5 v 0 -200 a Fe(2.)73 b(Exceptions)3255
+b Fh(6)0 162 y(or)27 b(lik)n(e)g(this:)0 401 y Fc(throw)41
+b(SALOME_Exception\()o(LO)o(CAL)o(IZ)o(ED)o(\("m)o(y)c(pertinent)j
+(message"\)\);)0 641 y Fh(where)24 b(LOCALIZED)h(is)f(a)h(macro)e(pro)n
+(vided)g(with)j Fc(utils_SALOME_Ex)o(ce)o(pti)o(on)o(.h)o(xx)18
+b Fh(whic)n(h)25 b(giv)n(es)e(\034le)i(name)f(and)h(line)0
+754 y(n)n(um)n(b)r(er.)0 911 y(The)j(exception)f(is)g(handled)h(lik)n
+(e)f(this:)0 1150 y Fc(try)87 1264 y({)174 1377 y(...)87
+1491 y(})0 1605 y(catch)41 b(\(const)g(SALOME_Exception)c(&ex\))87
+1718 y({)174 1832 y(cerr)42 b(<<)h(ex.what\(\))d(<<endl;)87
+1945 y(})0 2185 y Fh(The)28 b Fc(what\(\))d Fh(metho)r(d)j(o)n(v)n
+(errides)d(the)j(one)f(de\034ned)h(in)g(the)g(STL)f(exception)g(class.)
+0 2476 y Fd(2.2)112 b(CORBA)37 b(exceptions)0 2686 y
+Fe(2.2.1)94 b(de\034nition)0 2896 y Fh(The)24 b(idl)h
+Fc(SALOME_Exception)18 b Fh(pro)n(vides)23 b(a)g(generic)h(CORBA)g
+(exception)g(for)g(SALOME,)g(with)h(an)f(attribute)h(that)f(giv)n(es)0
+3010 y(an)j(exception)g(t)n(yp)r(e,a)h(message,)e(plus)i(optional)e
+(source)h(\034le)g(name)h(and)f(line)h(n)n(um)n(b)r(er.)0
+3166 y(This)i(idl)h(is)f(in)n(tended)g(to)g(serv)n(e)f(for)h(all)g
+(user)f(CORBA)h(exceptions)g(raised)f(in)h(SALOME)h(co)r(de,)g(as)e
+(IDL)i(sp)r(eci\034cation)0 3280 y(do)r(es)21 b(not)g(supp)r(ort)h
+(exception)f(inheritance.)34 b(So,)22 b(all)g(the)f(user)g(CORBA)g
+(exceptions)g(from)g(SALOME)h(could)f(b)r(e)h(handled)0
+3394 y(in)28 b(a)f(single)g(catc)n(h.)0 3550 y(The)h(exception)f(t)n
+(yp)r(es)g(de\034ned)h(in)g(idl)g(are:)0 3790 y Fe(COMM)208
+3936 y Fh(CORBA)f(comm)n(unication)g(problem,)0 4116
+y Fe(BAD_P)-8 b(ARAM)208 4263 y Fh(Bad)27 b(User)g(parameters,)0
+4443 y Fe(INTERNAL_ERR)m(OR)208 4590 y Fh(application)f(lev)n(el)h
+(problem)g(\(often)i(irreco)n(v)n(erable\).)0 4829 y(CORBA)k(system)g
+(and)f(user)h(exceptions)f(already)g(de\034ned)h(in)h(the)f(pac)n(k)-5
+b(ages)31 b(used)i(within)h(SALOME,)f(suc)n(h)g(as)g(Om-)0
+4943 y(niORB)27 b(exceptions,)g(m)n(ust)h(b)r(e)g(handled)f(separately)
+-7 b(.)p eop
+%%Page: 7 7
+7 6 bop 0 -167 3900 5 v 0 -200 a Fe(3.)73 b(Miscellaneous)30
+b(to)s(ols)2901 b Fh(7)0 162 y Fe(2.2.2)94 b(usage)0
+372 y(CORBA)35 b(serv)-5 b(an)m(t,)37 b(C++)83 b Fh(The)31
+b(CORBA)g(Serv)n(er)e(header)h(for)g Fc(SALOME_Exception)24
+b Fh(and)31 b(a)f(macro)g(to)h(thro)n(w)f(the)0 485 y(exception)d(are)g
+(pro)n(vided)f(with)i(the)g(header)f Fc(SALOME/src/Utils)o(/U)o(ti)o
+(ls_)o(Co)o(rb)o(aEx)o(ce)o(pt)o(ion)o(.h)o(xx)p Fh(:)0
+717 y Fc(#include)40 b("Utils_CorbaExce)o(pti)o(on)o(.h)o(xx")0
+949 y Fh(The)28 b(exception)f(is)g(raised)g(with)h(a)f(macro)f(whic)n
+(h)i(app)r(ends)f(\034le)h(name)f(and)h(line)f(n)n(um)n(b)r(er.)0
+1181 y Fc(if)43 b(\(myStudyName.si)o(ze\()o(\))37 b(==)43
+b(0\))131 1294 y(THROW_SALOME_CO)o(RBA)o(_E)o(XC)o(EPT)o(IO)o(N\()o
+("No)37 b(Study)k(Name)h(given",)f(\\)1394 1408 y(SALOME::BAD_PARAM)o
+(\);)0 1679 y Fe(CORBA)113 b(Clien)m(t,)133 b(GUI)114
+b(Qt)f(C++)84 b Fh(The)99 b(CORBA)f(Clien)n(t)h(header)f(for)g
+Fc(SALOME_Exceptio)o(n)0 1793 y Fh(and)141 b(a)f(Qt)h(function)h
+(header)e(that)h(displa)n(ys)f(a)h(message)e(b)r(o)n(x)i(are)f(pro)n
+(vided)g(in)0 1906 y Fc(SALOME/src/SALOM)o(EG)o(UI/)o(SA)o(LO)o(MEG)o
+(UI)o(_Q)o(tCa)o(tc)o(hC)o(orb)o(aE)o(xc)o(ept)o(io)o(n.h)o(xx)o
+Fh(:)0 2138 y Fc(#include)40 b("SALOMEGUI_QtCat)o(chC)o(or)o(ba)o(Exc)o
+(ep)o(ti)o(on.)o(hx)o(x")0 2370 y Fh(A)28 b(t)n(ypical)f(exc)n(hange)f
+(with)i(a)f(CORBA)h(Serv)-5 b(an)n(t)27 b(will)g(b)r(e:)0
+2602 y Fc(try)87 2715 y({)174 2829 y(...)43 b(//)f(one)h(ore)f(more)g
+(CORBA)f(calls)87 2943 y(})0 3056 y(catch)g(\(const)g
+(SALOME::SALOME_Ex)o(ce)o(pti)o(on)c(&)43 b(S_ex\))87
+3170 y({)174 3283 y(QtCatchCorbaExcep)o(ti)o(on)o(\(S_)o(ex)o(\);)87
+3397 y(})0 3668 y Fe(CORBA)28 b(Clien)m(t,)g(C++,)h(without)f(GUI)84
+b Fh(Nothing)24 b(sp)r(eci\034c)h(has)f(b)r(een)h(pro)n(vided)f(to)h
+(the)g(dev)n(elop)r(er)e(y)n(et.)36 b(See)25 b(the)0
+3782 y(idl)i(or)f(the)h(Qt)f(function)i Fc(SALOMEGUI_QtCat)o(ch)o(Cor)o
+(ba)o(Exc)o(ep)o(ti)o(on.)o(hx)o(x)21 b Fh(to)26 b(see)g(ho)n(w)h(to)f
+(get)h(the)g(information)f(giv)n(en)f(b)n(y)0 3895 y(the)j(exception)f
+(ob)5 b(ject.)0 4232 y Ff(3)131 b(Miscellaneous)45 b(to)t(ols)0
+4490 y Fd(3.1)112 b(Singleton)0 4700 y Fe(3.1.1)94 b(De\034nition)0
+4910 y Fh(A)37 b(singleton)g(is)g(an)g(application)f(data)h(whic)n(h)g
+(is)g(created)f(and)h(deleted)h(only)f(once)f(at)h(the)h(end)f(of)g
+(the)h(application)0 5024 y(pro)r(cess.)63 b(The)36 b(C++)g(compiler)g
+(allo)n(ws)f(the)i(user)f(to)h(create)e(a)h(static)h(singleton)f(data)g
+(b)r(efore)g(the)h(\034rst)g(executable)0 5137 y(statemen)n(t.)g(They)
+27 b(are)g(deleted)h(after)f(the)h(last)f(statemen)n(t)h(execution.)0
+5294 y(The)g Fc(SINGLETON_)23 b Fh(template)28 b(class)e(deals)h(with)h
+(dynamic)f(singleton.)36 b(It)28 b(is)f(useful)h(for)f(functor)g(ob)5
+b(jects.)37 b(F)-7 b(or)27 b(example,)0 5407 y(an)g(ob)5
+b(ject)27 b(that)h(connects)f(the)g(application)g(to)g(a)g(system)g(at)
+g(creation)g(and)g(disconnects)f(the)i(application)f(at)g(deletion.)p
+eop
+%%Page: 8 8
+8 7 bop 0 -167 3900 5 v 0 -200 a Fe(3.)73 b(Miscellaneous)30
+b(to)s(ols)2901 b Fh(8)0 162 y Fe(3.1.2)94 b(Usage)0
+372 y Fh(T)-7 b(o)27 b(create)g(a)g(single)g(instance)g(a)g(POINT)h(ob)
+5 b(ject)28 b(:)0 611 y Fc(#)43 b(include)e("Utils_SINGLETO)o(N.h)o(xx)
+o(")0 725 y(...)0 838 y(POINT)g(*ptrPoint=SINGLET)o(ON)o(_<P)o(OI)o(NT)
+o(>::)o(In)o(st)o(anc)o(e\()o(\))c(;)0 952 y(assert\(ptrPoint!)o(=N)o
+(ULL)o(\))g(;)0 1191 y Fh(No)27 b(need)g(to)g(delete)g(ptrP)n(oin)n(t.)
+37 b(Deletion)27 b(is)g(ac)n(hiev)n(ed)f(automatically)g(at)h(exit.)37
+b(If)27 b(the)h(user)e(tries)h(to)g(create)f(more)g(than)0
+1305 y(one)e(singleton)g(b)n(y)g(using)f(the)i(class)e(metho)r(d)i
+Fc(SINGLETON_)p Fa(<)p Fc(TYPE)p Fa(>)o Fc(::I)o(ns)o(ta)o(nce)o(\(\))o
+Fh(,)19 b(the)25 b(p)r(oin)n(ter)f(is)g(returned)g(with)h(the)0
+1419 y(same)i(v)-5 b(alue)27 b(ev)n(en)g(if)i(this)e(is)h(done)f(in)h
+(di\033eren)n(t)g(functions)f(\(threads)h(?\).)0 1658
+y Fc(POINT)41 b(*p1=SINGLETON_<PO)o(IN)o(T>:)o(:I)o(ns)o(tan)o(ce)o
+(\(\))c(;)0 1772 y(...)0 1885 y(POINT)k(*p2=SINGLETON_<PO)o(IN)o(T>:)o
+(:I)o(ns)o(tan)o(ce)o(\(\))c(;)0 1999 y(assert\(p1==p2\))0
+2271 y Fe(3.1.3)94 b(Design)30 b(description)0 2482 y
+Fh(Here)d(are)g(the)h(principles)f(features)g(of)g(the)h(singleton)f
+(design)g(:)125 2721 y Fb(\017)41 b Fh(the)28 b(user)f(creates)g(an)g
+(ob)5 b(ject)28 b(of)g(class)f Fc(TYPE)f Fh(b)n(y)i(using)f(the)i
+(class)e(metho)r(d)h Fc(SINGLETON_)p Fa(<)p Fc(TYPE)p
+Fa(>)o Fc(::)o(In)o(sta)o(nc)o(e\()o(\))208 2835 y Fh(whic)n(h)f
+(returns)g(a)g(p)r(oin)n(ter)g(to)h(the)g(single)f(ob)5
+b(ject)27 b(;)125 3015 y Fb(\017)41 b Fh(to)27 b(create)g(an)g(ob)5
+b(ject,)27 b Fc(SINGLETON_)p Fa(<)p Fc(TYPE)p Fa(>)o
+Fc(::I)o(ns)o(tan)o(ce)o(\(\))21 b Fh(uses)27 b(the)h(default)g
+(constructor)e(of)i(class)e Fc(TYPE)g Fh(;)125 3195 y
+Fb(\017)41 b Fh(at)31 b(the)h(same)g(time,)h(this)f(class)f(metho)r(d)h
+(creates)f(a)g(destructor)g(ob)5 b(ject)31 b(whic)n(h)h(is)g(added)f
+(to)h(the)g(generic)f(list)h(of)208 3308 y(destructor)26
+b(ob)5 b(jects)27 b(to)h(b)r(e)g(executed)f(at)g(the)h(end)g(of)g(the)g
+(application)f(\()p Fc(atexit)p Fh(\))e(;)125 3488 y
+Fb(\017)41 b Fh(at)30 b(the)h(end)f(of)h(the)f(application)g(pro)r
+(cess)f(all)h(the)h(deletions)f(are)g(p)r(erformed)f(b)n(y)i(the)f
+Fc(Nettoyage\(\))c Fh(C)31 b(function)208 3602 y(whic)n(h)c(executes)g
+(the)h(destruction)f(ob)5 b(jects)27 b(end)h(then)g(deletes)g(the)g
+(destructions)f(ob)5 b(jects)27 b(themselv)n(es)g(;)125
+3782 y Fb(\017)41 b Fh(the)23 b Fc(Nettoyage\(\))c Fh(C)k(function)g
+(using)g(atexit\(\))g(C)h(function)f(is)g(em)n(b)r(edded)h(in)f(a)g
+(static)f(single)h(ob)5 b(ject)23 b Fc(ATEXIT_\(\))p
+Fh(.)p eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/examples/Carene.brep b/examples/Carene.brep
new file mode 100644 (file)
index 0000000..fa3565b
--- /dev/null
@@ -0,0 +1,318 @@
+DBRep_DrawableShape
+
+CASCADE Topology V1, (c) Matra-Datavision
+Locations 6
+1
+              1               0               0               0 
+              0 1.11022302462516e-16              -1               0 
+              0               1 6.1257422745431e-17               0 
+1
+6.1257422745431e-17              -1               0               0 
+              1 1.11022302462516e-16               0               0 
+              0               0               1               0 
+1
+              1               0               0           6.505 
+              0               1               0               0 
+              0               0               1               0 
+1
+              1               0               0               0 
+              0               1               0               0 
+              0               0               1            -0.2 
+2  1 1 2 1 3 1 4 1 0
+2  4 -1 3 -1 2 -1 1 -1 0
+Curve2ds 8
+1 0 0 1 0 
+1 0 0 1 0 
+1 4 0 0 1 
+1 11 0 0 1 
+1 11 0 0 1 
+1 0 1 1 0 
+1 0 1 1 0 
+1 4 0 0 1 
+Curves 7
+7 0 0  5 36 8  -1.4336500000000001 0.64996799999999999 -6.5049999999999999  -1.4336605 0.64972076670000001 -6.5049999999999999  -1.4336178749999999 0.64945686670000002 -6.5049999999999999  -1.4336992083 0.6492221333 -6.5049999999999999  -1.4336128333 0.64895823330000002 -6.5049999999999999  -1.43364 0.64871100000000004 -6.5049999999999999  -1.4334536667 0.61781496670000002 -6.5049999999999999  -1.4338860833000002 0.58679560000000008 -6.5049999999999999  -1.4337184999999999 0.55586383750000001 -6.5049999999999999  -1.4339196667 0.52489728330000007 -6.5049999999999999  -1.4339999999999999 0.49393500000000001 -6.5049999999999999  -1.4203730000000001 0.44235658329999999 -6.5049999999999999  -1.4019439167000001 0.39482056250000003 -6.5049999999999999  -1.3786762917000002 0.35127068750000001 -6.5049999999999999  -1.3506378333 0.31178091669999997 -6.5049999999999999  -1.3177400000000001 0.27629500000000001 -6.5049999999999999  -1.2811151667 0.23680705000000002 -6.5049999999999999  -1.238647625 0.2022839958 -6.5049999999999999  -1.1916550832999999 0.172336775 -6.5049999999999999  -1.1423406667 0.1464565333 -6.5049999999999999  -1.0919700000000001 0.124249 -6.5049999999999999  -1.0352280833 0.099204750000000008 -6.5049999999999999  -0.97734481250000005 0.078821291700000004 -6.5049999999999999  -0.91855039580000009 0.062216593699999996 -6.5049999999999999  -0.85908024999999999 0.048575291700000002 -6.5049999999999999  -0.79917499999999997 0.037031500000000002 -6.5049999999999999  -0.71422663330000002 0.020663891799999997 -6.5049999999999999  -0.62839160000000005 0.0085204118000000006 -6.5049999999999999  -0.54202406670000003 6.0440099999999998e-05 -6.5049999999999999  -0.4554365333 -0.0055199242999999995 -6.5049999999999999  -0.36900400000000005 -0.0092480200000000009 -6.5049999999999999  -0.29509078329999999 -0.012436537700000002 -6.5049999999999999  -0.2212840875 -0.014272503300000001 -6.5049999999999999  -0.1475632875 -0.0151237605 -6.5049999999999999  -0.073806716699999997 -0.015365757300000001 -6.5049999999999999  0 -0.0153654 -6.5049999999999999 
+ 4 6 5 5 6 5 7 5 8 5 9 5 10 5 11 6
+7 0 0  5 36 8  1.4336500000000001 0.64996799999999999 -6.5049999999999999  1.4336605 0.64972076670000001 -6.5049999999999999  1.4336178749999999 0.64945686670000002 -6.5049999999999999  1.4336992083 0.6492221333 -6.5049999999999999  1.4336128333 0.64895823330000002 -6.5049999999999999  1.43364 0.64871100000000004 -6.5049999999999999  1.4334536667 0.61781496670000002 -6.5049999999999999  1.4338860833000002 0.58679560000000008 -6.5049999999999999  1.4337184999999999 0.55586383750000001 -6.5049999999999999  1.4339196667 0.52489728330000007 -6.5049999999999999  1.4339999999999999 0.49393500000000001 -6.5049999999999999  1.4203730000000001 0.44235658329999999 -6.5049999999999999  1.4019439167000001 0.39482056250000003 -6.5049999999999999  1.3786762917000002 0.35127068750000001 -6.5049999999999999  1.3506378333 0.31178091669999997 -6.5049999999999999  1.3177400000000001 0.27629500000000001 -6.5049999999999999  1.2811151667 0.23680705000000002 -6.5049999999999999  1.238647625 0.2022839958 -6.5049999999999999  1.1916550832999999 0.172336775 -6.5049999999999999  1.1423406667 0.1464565333 -6.5049999999999999  1.0919700000000001 0.124249 -6.5049999999999999  1.0352280833 0.099204750000000008 -6.5049999999999999  0.97734481250000005 0.078821291700000004 -6.5049999999999999  0.91855039580000009 0.062216593699999996 -6.5049999999999999  0.85908024999999999 0.048575291700000002 -6.5049999999999999  0.79917499999999997 0.037031500000000002 -6.5049999999999999  0.71422663330000002 0.020663891799999997 -6.5049999999999999  0.62839160000000005 0.0085204118000000006 -6.5049999999999999  0.54202406670000003 6.0440099999999998e-05 -6.5049999999999999  0.4554365333 -0.0055199242999999995 -6.5049999999999999  0.36900400000000005 -0.0092480200000000009 -6.5049999999999999  0.29509078329999999 -0.012436537700000002 -6.5049999999999999  0.2212840875 -0.014272503300000001 -6.5049999999999999  0.1475632875 -0.0151237605 -6.5049999999999999  0.073806716699999997 -0.015365757300000001 -6.5049999999999999  0 -0.0153654 -6.5049999999999999 
+ 4 6 5 5 6 5 7 5 8 5 9 5 10 5 11 6
+1 -1.4336500000000001 0.64996799999999999 -6.5049999999999999 1 0 0 
+7 1 0  5 6 2  0 -1.4336500000000012 0.44996799999999954  1 1.6261605900786513 -1.6018359687478967 0.50133159091572177  0.99999999999999123 3.197537687201788 -1.3597569987336706 0.54529808698484217  1.00000000000002 3.163340737824532 -1.6307640784352895 0.54895174812063019  0.9999999999999809 5.6480191182691533 -0.70777342625966599 0.62409523622375362  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991  1
+ 0 6 1 6
+7 1 0  5 6 2  0 -1.2702642757100887e-15 -0.2153654000000004  1 1.6301107356496369 -1.0892856285694023e-15 -0.48063406919001683  0.99999999999999123 3.2616899716505454 -9.0814394513853924e-16 -0.34829923223785531  1.00000000000002 3.0108044478154201 -9.3599783364924434e-16 -0.51558946287975504  0.9999999999999809 5.8048915685398486 -6.2579184822554488e-16 -0.26361891182622504  1.0000000000000084 6.4756682999999997 -5.5132067106056179e-16 -0.17298380000000002  1
+ 0 6 1 6
+7 0 0  5 36 8  6.5049999999999999 -5.48064198191422e-16 0.64999999999999991  6.5049999999999999 -5.48064198191422e-16 0.64999999999999991  6.5049999999999999 -5.48064198191422e-16 0.64999999999999991  6.5049999999999999 -5.48064198191422e-16 0.64999999999999991  6.5049999999999999 -5.48064198191422e-16 0.64999999999999991  6.5049999999999999 -5.48064198191422e-16 0.64999999999999991  6.5049999999999999 -5.48064198191422e-16 0.61282594999999995  6.5049999999999999 -5.48064198191422e-16 0.57565721250000013  6.5049999999999999 -5.48064198191422e-16 0.53847607920000007  6.5049999999999999 -5.48064198191422e-16 0.50131171670000008  6.5049999999999999 -5.48064198191422e-16 0.46413599999999994  6.5049999999999999 -5.48064198191422e-16 0.42103916670000002  6.5049999999999999 -5.48064198191422e-16 0.37789566670000002  6.5049999999999999 -5.48064198191422e-16 0.33463570830000006  6.5049999999999999 -5.48064198191422e-16 0.2913353333  6.5049999999999999 -5.48064198191422e-16 0.24795600000000001  6.5049999999999999 -5.48064198191422e-16 0.21525483329999995  6.5049999999999999 -5.48064198191422e-16 0.18255970830000001  6.5049999999999999 -5.48064198191422e-16 0.14975604170000001  6.5049999999999999 -5.48064198191422e-16 0.11698966669999999  6.5049999999999999 -5.48064198191422e-16 0.084145999999999999  6.5049999999999999 -5.48064198191422e-16 0.057401949999999979  6.5049999999999999 -5.48064198191422e-16 0.030663212499999981  6.5049999999999999 -5.48064198191422e-16 0.0039120791999999738  6.5049999999999999 -5.48064198191422e-16 -0.022822283300000024  6.5049999999999999 -5.48064198191422e-16 -0.049568000000000029  6.5049999999999999 -5.48064198191422e-16 -0.065376400000000001  6.5049999999999999 -5.48064198191422e-16 -0.081184800000000001  6.5049999999999999 -5.48064198191422e-16 -0.096993200000000016  6.5049999999999999 -5.48064198191422e-16 -0.1128016  6.5049999999999999 -5.48064198191422e-16 -0.12861  6.5049717682999999 -5.4806733253975843e-16 -0.14198959330000002  6.5022298991999996 -5.4837174116029129e-16 -0.15311614500000001  6.4962763716999996 -5.4903271549111519e-16 -0.1619915821  6.48749004 -5.5000819426664854e-16 -0.16861366500000002  6.4756682999999997 -5.5132067106056179e-16 -0.17298380000000002 
+ 4 6 5 5 6 5 7 5 8 5 9 5 10 5 11 6
+7 1 0  5 6 2  0 1.4336500000000008 0.44996799999999954  1 1.6261605900786513 1.6018359687478962 0.50133159091572177  0.99999999999999123 3.197537687201788 1.3597569987336702 0.54529808698484217  1.00000000000002 3.163340737824532 1.630764078435289 0.54895174812063019  0.9999999999999809 5.6480191182691533 0.70777342625966544 0.62409523622375362  1.0000000000000084 6.5049999999999999 1.0477058897466628e-32 0.64999999999999991  1
+ 0 6 1 6
+Polygon3D 0
+PolygonOnTriangulations 11
+8 1 3 4 5 6 7 8 2 
+p 0.28680002 1 4 6.33333333333333 6.80583333333333 7.24333333333333 7.89958333333333 8.88395833333333 9.94197916666667 11 
+8 1 9 10 11 12 13 14 15 
+p 0.65050002 1 4 6.33333333333333 6.80583333333333 7.24333333333333 7.89958333333333 8.88395833333333 9.94197916666667 11 
+8 9 10 11 12 13 14 15 2 
+p 0.28680002 1 4 6.33333333333333 6.80583333333333 7.24333333333333 7.89958333333333 8.88395833333333 9.94197916666667 11 
+8 1 9 10 11 12 13 14 15 
+p 0.65050002 1 4 6.33333333333333 6.80583333333333 7.24333333333333 7.89958333333333 8.88395833333333 9.94197916666667 11 
+2 1 9 
+p 0.28680002 1 0 2.8673 
+8 1 3 4 5 6 7 8 2 
+p 0.65050002 1 0 0.27 0.46683 0.6144525 0.7663275 0.9182025 0.95910125 1 
+4 15 17 18 16 
+p 0.65050002 1 0 0.333333333333333 0.666666666666667 1 
+4 15 16 17 18 
+p 0.761601513 1 0 0.333333333333333 0.666666666666667 1 
+5 2 19 20 21 16 
+p 0.3291936 1 4 7.11111111111111 10.2222222222222 10.6111111111111 11 
+5 2 19 20 21 18 
+p 0.65050002 1 4 7.11111111111111 10.2222222222222 10.6111111111111 11 
+8 1 3 4 5 6 7 8 2 
+p 0.65050002 1 0 0.27 0.46683 0.6144525 0.7663275 0.9182025 0.95910125 1 
+Surfaces 3
+1 0 0 -6.5049999999999999 0 0 1 1 0 -0 -0 1 0 
+9 1 0 0 0 5 5 36 6 8 2 0 -1.4336500000000012 0.44996799999999954  1 1.6261605900786513 -1.6018359687478967 0.50133159091572177  0.99999999999999123 3.197537687201788 -1.3597569987336706 0.54529808698484217  1.00000000000002 3.163340737824532 -1.6307640784352895 0.54895174812063019  0.9999999999999809 5.6480191182691533 -0.70777342625966599 0.62409523622375362  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991  1 
+0 -1.4336605000000011 0.44972076669999955  1 1.6400156548996869 -1.596515654739741 0.49680307239596166  0.99999999999999123 3.1655248440155725 -1.3924568269312445 0.59018855957463812  1.00000000000002 3.1808046621826938 -1.5532909396702321 0.41139589970412355  0.9999999999999809 5.654846610439936 -0.71753119566173762 0.64265549515955556  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991  1 
+0 -1.433617875000001 0.44945686669999957  1 1.6506584879977897 -1.5922532479624822 0.49177870525204603  0.99999999999999123 3.1411873334678044 -1.4188920682190418 0.63692979799464955  1.00000000000002 3.194328618841463 -1.492139575555754 0.27060102810993697  0.9999999999999809 5.6601234641615443 -0.72484600698083768 0.66143488236555736  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991  1 
+0 -1.4336992083000011 0.44922213329999955  1 1.6576040194166746 -1.5873960554461539 0.48630597029020578  0.99999999999999123 3.1243290671000779 -1.4407978495894476 0.68565925643462255  1.00000000000002 3.2044356421761373 -1.4467997269838779 0.12641574118463941  0.9999999999999809 5.6632372560436925 -0.72967269820712544 0.68044642465747673  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991  1 
+0 -1.4336128333000011 0.44895823329999957  1 1.661460468803355 -1.5837538230348516 0.48029503278954838  0.99999999999999123 3.1157743827622624 -1.4567026640898446 0.73625732176641601  1.00000000000002 3.2097596991925323 -1.4177336596546268 -0.020999411630545545  0.9999999999999809 5.6651076542439549 -0.73206850766754095 0.69967203886878782  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991  1 
+0 -1.4336400000000011 0.44871099999999958  1 1.6617199495650541 -1.580153159181267 0.47383155703797997  0.99999999999999123 3.1145446090069875 -1.4671701117791915 0.78877811687612887  1.00000000000002 3.2117648502985281 -1.4047569944934635 -0.17173786500016977  0.9999999999999809 5.6649275028909392 -0.73198055176979504 0.71912076249112344  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.64999999999999991  1 
+0 -1.4334536667000011 0.41781496669999957  1 1.6585846326587925 -1.5873496118654769 0.44276327840713481  0.99999999999999123 3.1238627684672795 -1.436901258698742 0.70845138408142261  1.00000000000002 3.200691534143417 -1.4450909520432809 -0.069881705908850025  0.9999999999999809 5.6712707573050887 -0.70653745235000698 0.67022669391364287  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.61282594999999995  1 
+0 -1.4338860833000013 0.38679559999999963  1 1.6595678374105531 -1.5935105282194739 0.41184681055280242  0.99999999999999123 3.1279079330880668 -1.4073680420109922 0.62790277079899581  1.00000000000002 3.1931656606434964 -1.4849597779038357 0.032247032264193502  0.9999999999999809 5.6763290500484702 -0.68134175331416669 0.62121033938316328  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.57565721250000013  1 
+0 -1.433718500000001 0.35586383749999956  1 1.6562673519558917 -1.5989257401417531 0.38111319384492054  0.99999999999999123 3.1355009246239662 -1.3760091594904507 0.54695823996489745  1.00000000000002 3.1843861418390853 -1.5264086617504995 0.13481421887590461  0.9999999999999809 5.6815370619686911 -0.65574048327470236 0.57189117823854485  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.53847607920000007  1 
+0 -1.4339196667000011 0.32489728329999962  1 1.6563823641089357 -1.5956038422640375 0.35130442637470416  0.99999999999999123 3.1404393442778584 -1.3579500750749196 0.46454694270028657  1.00000000000002 3.1768506331851296 -1.5580419941652228 0.23854962743965119  0.9999999999999809 5.6862198210563522 -0.63374786732810706 0.52215929713737808  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.50131171670000008  1 
+0 -1.4340000000000011 0.29393499999999961  1 1.6549615753593554 -1.5830463167892219 0.32273366185676522  0.99999999999999123 3.1460611378467807 -1.3516439153948141 0.38041312976713093  1.00000000000002 3.1695626895920279 -1.5813337130453256 0.34359554092746541  0.9999999999999809 5.6906524727603918 -0.61488511446441096 0.47186993524852427  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.46413599999999994  1 
+0 -1.4203730000000012 0.2423565832999996  1 1.6543010001077403 -1.5878646977942659 0.26866694328112467  0.99999999999999123 3.1514139096491514 -1.319176200135775 0.29492162054468651  1.00000000000002 3.1633116123061802 -1.6177118468824343 0.29727467040829747  0.9999999999999809 5.6955339521523092 -0.58208281977952747 0.42369275260883937  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.42103916670000002  1 
+0 -1.4019439167000012 0.19482056249999963  1 1.6529544447898721 -1.5757951751485078 0.20738997531697517  0.99999999999999123 3.1581513603847027 -1.309221515999148 0.21690440791400878  1.00000000000002 3.1562571204977159 -1.6321216654491635 0.24661667123332054  0.9999999999999809 5.7001641661755968 -0.55484659535963288 0.3771188399210591  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.37789566670000002  1 
+0 -1.3786762917000013 0.15127068749999961  1 1.6513939308634327 -1.5512129420956484 0.14423037418120646  0.99999999999999123 3.1648479458951071 -1.3106993214971123 0.14332111981541304  1.00000000000002 3.1494429169891927 -1.6287421029473848 0.19325025896208289  0.9999999999999809 5.7040934281434019 -0.53245635516036194 0.33211569582677336  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.33463570830000006  1 
+0 -1.3506378333000011 0.11178091669999957  1 1.6495889183038299 -1.5153361784803252 0.083809016176971077  0.99999999999999123 3.1721147740355935 -1.3133602070342767 0.072812292976349433  1.00000000000002 3.1424309087803777 -1.6140695072311599 0.13803554405340746  0.9999999999999809 5.7078452140145055 -0.51245571560264769 0.28863532754181181  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.2913353333  1 
+0 -1.3177400000000012 0.076294999999999613  1 1.6485877782998006 -1.47244327482729 0.031445616502008708  0.99999999999999123 3.1772036854590451 -1.3057907312814181 0.0022113386428762229  1.00000000000002 3.1372530970478119 -1.5927264448139689 0.082858098621042459  0.9999999999999809 5.7108181744699156 -0.49399606565377652 0.24649290312935487  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.24795600000000001  1 
+0 -1.2811151667000011 0.036807049999999619  1 1.6479215232887923 -1.4481138556428514 -0.0034994963647348811  0.99999999999999123 3.1809789953420351 -1.2984903019296825 -0.0457928457522268  1.00000000000002 3.1334441910773672 -1.5752568959202087 0.034759734054665939  0.9999999999999809 5.7130192738963137 -0.4800079314307174 0.2139476736738174  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.21525483329999995  1 
+0 -1.2386476250000011 0.0022839957999996052  1 1.6473025492318252 -1.4226122061336262 -0.035769638365498221  0.99999999999999123 3.1846854762215004 -1.2839957622221869 -0.09342962389256057  1.00000000000002 3.129708811905755 -1.5536449962363714 -0.012855623627513572  0.9999999999999809 5.7150670385870059 -0.46697828941107661 0.1818750704625462  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.18255970830000001  1 
+0 -1.191655083300001 -0.027663225000000402  1 1.647347442976745 -1.3963140144476183 -0.066038995427979447  0.99999999999999123 3.1865489772697075 -1.2614172907843229 -0.13761261112971743  1.00000000000002 3.127735889142869 -1.528048309625252 -0.060263423193341832  0.9999999999999809 5.7165025871669242 -0.45419278287329146 0.15046818447744587  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.14975604170000001  1 
+0 -1.1423406667000011 -0.053543466700000403  1 1.6475774673982779 -1.370604111802489 -0.094877881364486924  0.99999999999999123 3.1880576148411461 -1.2307317897625329 -0.17615568605734247  1.00000000000002 3.1255807663587865 -1.4947625153746946 -0.10553380430524842  0.9999999999999809 5.717968691823673 -0.44278516629992387 0.11847577837761357  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.11698966669999999  1 
+0 -1.0919700000000012 -0.075751000000000415  1 1.6480023139640461 -1.3444320999488228 -0.12362866978542278  0.99999999999999123 3.1885134010722003 -1.1936918518813693 -0.20482326247385416  1.00000000000002 3.1246341193658602 -1.4560281673125137 -0.14826823786040147  0.9999999999999809 5.7189052827105282 -0.43053800840199119 0.085556435087671065  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.084145999999999999  1 
+0 -1.0352280833000012 -0.10079525000000041  1 1.6490913169205279 -1.2749655484198994 -0.18298146793115833  0.99999999999999123 3.1883150231899009 -1.1628015026179599 -0.22955541537812463  1.00000000000002 3.1241794214772818 -1.4051825514982024 -0.21350942052349295  0.9999999999999809 5.7197360679734048 -0.42458641474270081 0.061984610291792329  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.057401949999999979  1 
+0 -0.97734481250000138 -0.12117870830000041  1 1.6496855449783792 -1.2023944417340386 -0.23424379207629414  0.99999999999999123 3.1878088681107997 -1.1212928776316518 -0.24116178483719211  1.00000000000002 3.1237792237800042 -1.344826174344848 -0.27565819302906774  0.9999999999999809 5.7204919344010952 -0.42061941833535399 0.036330884320337174  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.030663212499999981  1 
+0 -0.91855039580000142 -0.13778340630000041  1 1.6509024847804952 -1.12534436243289 -0.27947580143931228  0.99999999999999123 3.1871135887629252 -1.0738407105494425 -0.24270306234480629  1.00000000000002 3.123363208447222 -1.2801590008609163 -0.32939027481774275  0.9999999999999809 5.7214928671410936 -0.41442427512437563 0.0078552946102686382  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 0.0039120791999999738  1 
+0 -0.85908025000000132 -0.1514247083000004  1 1.6514602330757429 -1.046060138107104 -0.31872905948094205  0.99999999999999123 3.18667973843873 -1.0249094414255635 -0.24049491850395333  1.00000000000002 3.1223307902143023 -1.2129119277871387 -0.37172468958898514  0.9999999999999809 5.722441859665591 -0.40365989959986359 -0.02267260671769409  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 -0.022822283300000024  1 
+0 -0.7991750000000013 -0.1629685000000004  1 1.6519135392646134 -0.96382482572027139 -0.34987705197804536  0.99999999999999123 3.1866547085711132 -0.97923623780916069 -0.24460115073122723  1.00000000000002 3.1212995352044639 -1.1458402899320621 -0.40215091141189735  0.9999999999999809 5.7234166955905161 -0.38520404523873769 -0.052585896625352013  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 -0.049568000000000029  1 
+0 -0.71422663330000136 -0.1793361082000004  1 1.6532142396598908 -0.87146009976235372 -0.38610470439916605  0.99999999999999123 3.1854904230160579 -0.8446779310542526 -0.27223886617574689  1.00000000000002 3.1203850557957349 -1.0505829071685253 -0.44838167077727331  0.9999999999999809 5.7245168752795514 -0.38064671977314096 -0.094033715039109275  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 -0.065376400000000001  1 
+0 -0.62839160000000138 -0.19147958820000041  1 1.65276556236214 -0.77264328213728506 -0.41149215631879033  0.99999999999999123 3.1878638208645604 -0.72093941709612885 -0.2973931091787978  1.00000000000002 3.1170662231573569 -0.94555049467549368 -0.4740559497120384  0.9999999999999809 5.7259815427224083 -0.36894436680991155 -0.13694212995821936  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 -0.081184800000000001  1 
+0 -0.54202406670000136 -0.1999395599000004  1 1.6537006487902617 -0.67128593549879101 -0.42920032205706654  0.99999999999999123 3.1865541762189493 -0.59952302374827615 -0.31822523274111397  1.00000000000002 3.1165914943536075 -0.83911789461617359 -0.48664338221706044  0.9999999999999809 5.7265595045316777 -0.34924188084883595 -0.1763952236106239  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 -0.096993200000000016  1 
+0 -0.45543653330000128 -0.20551992430000041  1 1.6532859898246155 -0.57072991871383538 -0.44168678900283492  0.99999999999999123 3.1889922534492792 -0.47187731874243499 -0.33473722304513903  1.00000000000002 3.113408698752695 -0.74107517023063907 -0.49192434676192703  0.9999999999999809 5.7279643163112564 -0.31967883265540986 -0.2080588414311749  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 -0.1128016  1 
+0 -0.36900400000000133 -0.20924802000000042  1 1.6535793351660395 -0.47617037434290554 -0.4509782640107739  0.99999999999999123 3.1886894664401888 -0.32679800642482215 -0.34646950335365834  1.00000000000002 3.1128337072765428 -0.6608873869721692 -0.49623379649899363  0.9999999999999809 5.7285586049778381 -0.27929861676234574 -0.22746335729925196  1.0000000000000084 6.5049999999999999 -5.48064198191422e-16 -0.12861  1 
+0 -0.29509078330000127 -0.2124365377000004  1 1.6533430786054526 -0.37671583850670476 -0.46396505674457589  0.99999999999999123 3.1902895585564552 -0.27594462061656733 -0.34219343723599083  1.00000000000002 3.1104776588263099 -0.50749009570684289 -0.51075007568215924  0.9999999999999809 5.7294891659970224 -0.23921026685059071 -0.25242810944966859  1.0000000000000084 6.5049717682999999 -5.4806733253975843e-16 -0.14198959330000002  1 
+0 -0.22128408750000128 -0.21427250330000042  1 1.6512550117906617 -0.28151063542080246 -0.46833765764586544  0.99999999999999123 3.1961115594321829 -0.21220986805640826 -0.35315295047567047  1.00000000000002 3.1025997536493417 -0.36904437927938805 -0.50514281738321021  0.9999999999999809 5.735304295172309 -0.18776020592975087 -0.27032296455033022  1.0000000000000084 6.5022298991999996 -5.4837174116029129e-16 -0.15311614500000001  1 
+0 -0.14756328750000128 -0.2151237605000004  1 1.6475625206719269 -0.18878432519520197 -0.46909048659368391  0.99999999999999123 3.2089504030233806 -0.14032299201629181 -0.36658189825507032  1.00000000000002 3.0842817660168516 -0.24202588267923317 -0.49397776708614699  0.9999999999999809 5.7492010389608916 -0.12781701365559173 -0.27940640413322615  1.0000000000000084 6.4962763716999996 -5.4903271549111519e-16 -0.1619915821  1 
+0 -0.07380671670000126 -0.2153657573000004  1 1.6406977747402305 -0.096338544669297796 -0.47140320111980222  0.99999999999999123 3.2291746811163033 -0.065888576133830257 -0.3693901671607549  1.00000000000002 3.0557613770603251 -0.12226349886069415 -0.49260494439257202  0.9999999999999809 5.7713707162768566 -0.063142140712637559 -0.27765152437508905  1.0000000000000084 6.48749004 -5.5000819426664854e-16 -0.16861366500000002  1 
+0 -1.2702642757100887e-15 -0.2153654000000004  1 1.6301107356496369 -1.0892856285694023e-15 -0.48063406919001683  0.99999999999999123 3.2616899716505454 -9.0814394513853924e-16 -0.34829923223785531  1.00000000000002 3.0108044478154201 -9.3599783364924434e-16 -0.51558946287975504  0.9999999999999809 5.8048915685398486 -6.2579184822554488e-16 -0.26361891182622504  1.0000000000000084 6.4756682999999997 -5.5132067106056179e-16 -0.17298380000000002  1 
+
+4 6
+5 5
+6 5
+7 5
+8 5
+9 5
+10 5
+11 6
+
+0 6
+1 6
+
+9 1 0 0 0 5 5 36 6 8 2 0 1.4336500000000008 0.44996799999999954  1 1.6261605900786513 1.6018359687478962 0.50133159091572177  0.99999999999999123 3.197537687201788 1.3597569987336702 0.54529808698484217  1.00000000000002 3.163340737824532 1.630764078435289 0.54895174812063019  0.9999999999999809 5.6480191182691533 0.70777342625966544 0.62409523622375362  1.0000000000000084 6.5049999999999999 1.0477058897466628e-32 0.64999999999999991  1 
+0 1.4336605000000007 0.44972076669999955  1 1.6400156548996869 1.5965156547397406 0.49680307239596166  0.99999999999999123 3.1655248440155725 1.3924568269312441 0.59018855957463812  1.00000000000002 3.1808046621826938 1.5532909396702317 0.41139589970412355  0.9999999999999809 5.654846610439936 0.71753119566173706 0.64265549515955556  1.0000000000000084 6.5049999999999999 1.0477058897466628e-32 0.64999999999999991  1 
+0 1.4336178750000006 0.44945686669999957  1 1.6506584879977897 1.5922532479624818 0.49177870525204603  0.99999999999999123 3.1411873334678044 1.4188920682190413 0.63692979799464955  1.00000000000002 3.194328618841463 1.4921395755557536 0.27060102810993697  0.9999999999999809 5.6601234641615443 0.72484600698083712 0.66143488236555736  1.0000000000000084 6.5049999999999999 1.0477058897466628e-32 0.64999999999999991  1 
+0 1.4336992083000006 0.44922213329999955  1 1.6576040194166746 1.5873960554461535 0.48630597029020578  0.99999999999999123 3.1243290671000779 1.4407978495894471 0.68565925643462255  1.00000000000002 3.2044356421761373 1.4467997269838775 0.12641574118463941  0.9999999999999809 5.6632372560436925 0.72967269820712488 0.68044642465747673  1.0000000000000084 6.5049999999999999 1.0477058897466628e-32 0.64999999999999991  1 
+0 1.4336128333000007 0.44895823329999957  1 1.661460468803355 1.5837538230348511 0.48029503278954838  0.99999999999999123 3.1157743827622624 1.4567026640898442 0.73625732176641601  1.00000000000002 3.2097596991925323 1.4177336596546264 -0.020999411630545545  0.9999999999999809 5.6651076542439549 0.73206850766754039 0.69967203886878782  1.0000000000000084 6.5049999999999999 1.0477058897466628e-32 0.64999999999999991  1 
+0 1.4336400000000007 0.44871099999999958  1 1.6617199495650541 1.5801531591812665 0.47383155703797997  0.99999999999999123 3.1145446090069875 1.4671701117791911 0.78877811687612887  1.00000000000002 3.2117648502985281 1.404756994493463 -0.17173786500016977  0.9999999999999809 5.6649275028909392 0.73198055176979449 0.71912076249112344  1.0000000000000084 6.5049999999999999 1.0477058897466628e-32 0.64999999999999991  1 
+0 1.4334536667000006 0.41781496669999957  1 1.6585846326587925 1.5873496118654764 0.44276327840713481  0.99999999999999123 3.1238627684672795 1.4369012586987415 0.70845138408142261  1.00000000000002 3.200691534143417 1.4450909520432804 -0.069881705908850025  0.9999999999999809 5.6712707573050887 0.70653745235000642 0.67022669391364287  1.0000000000000084 6.5049999999999999 1.0018853354752077e-32 0.61282594999999995  1 
+0 1.4338860833000009 0.38679559999999963  1 1.6595678374105531 1.5935105282194735 0.41184681055280242  0.99999999999999123 3.1279079330880668 1.4073680420109917 0.62790277079899581  1.00000000000002 3.1931656606434964 1.4849597779038353 0.032247032264193502  0.9999999999999809 5.6763290500484702 0.68134175331416613 0.62121033938316328  1.0000000000000084 6.5049999999999999 9.5607132936556335e-33 0.57565721250000013  1 
+0 1.4337185000000006 0.35586383749999956  1 1.6562673519558917 1.5989257401417527 0.38111319384492054  0.99999999999999123 3.1355009246239662 1.3760091594904502 0.54695823996489745  1.00000000000002 3.1843861418390853 1.5264086617504991 0.13481421887590461  0.9999999999999809 5.6815370619686911 0.6557404832747018 0.57189117823854485  1.0000000000000084 6.5049999999999999 9.1024204425278003e-33 0.53847607920000007  1 
+0 1.4339196667000007 0.32489728329999962  1 1.6563823641089357 1.5956038422640371 0.35130442637470416  0.99999999999999123 3.1404393442778584 1.3579500750749192 0.46454694270028657  1.00000000000002 3.1768506331851296 1.5580419941652224 0.23854962743965119  0.9999999999999809 5.6862198210563522 0.63374786732810651 0.52215929713737808  1.0000000000000084 6.5049999999999999 8.6443343074698004e-33 0.50131171670000008  1 
+0 1.4340000000000006 0.29393499999999961  1 1.6549615753593554 1.5830463167892215 0.32273366185676522  0.99999999999999123 3.1460611378467807 1.3516439153948137 0.38041312976713093  1.00000000000002 3.1695626895920279 1.5813337130453251 0.34359554092746541  0.9999999999999809 5.6906524727603918 0.61488511446441041 0.47186993524852427  1.0000000000000084 6.5049999999999999 8.1861082210916421e-33 0.46413599999999994  1 
+0 1.4203730000000008 0.2423565832999996  1 1.6543010001077403 1.5878646977942654 0.26866694328112467  0.99999999999999123 3.1514139096491514 1.3191762001357745 0.29492162054468651  1.00000000000002 3.1633116123061802 1.6177118468824339 0.29727467040829747  0.9999999999999809 5.6955339521523092 0.58208281977952692 0.42369275260883937  1.0000000000000084 6.5049999999999999 7.6548987378229366e-33 0.42103916670000002  1 
+0 1.4019439167000007 0.19482056249999963  1 1.6529544447898721 1.5757951751485073 0.20738997531697517  0.99999999999999123 3.1581513603847027 1.3092215159991476 0.21690440791400878  1.00000000000002 3.1562571204977159 1.632121665449163 0.24661667123332054  0.9999999999999809 5.7001641661755968 0.55484659535963232 0.3771188399210591  1.0000000000000084 6.5049999999999999 7.1231140430666399e-33 0.37789566670000002  1 
+0 1.3786762917000008 0.15127068749999961  1 1.6513939308634327 1.551212942095648 0.14423037418120646  0.99999999999999123 3.1648479458951071 1.3106993214971119 0.14332111981541304  1.00000000000002 3.1494429169891927 1.6287421029473843 0.19325025896208289  0.9999999999999809 5.7040934281434019 0.53245635516036138 0.33211569582677336  1.0000000000000084 6.5049999999999999 6.5898938877033984e-33 0.33463570830000006  1 
+0 1.3506378333000006 0.11178091669999957  1 1.6495889183038299 1.5153361784803248 0.083809016176971077  0.99999999999999123 3.1721147740355935 1.3133602070342763 0.072812292976349433  1.00000000000002 3.1424309087803777 1.6140695072311595 0.13803554405340746  0.9999999999999809 5.7078452140145055 0.51245571560264713 0.28863532754181181  1.0000000000000084 6.5049999999999999 6.0561755592829369e-33 0.2913353333  1 
+0 1.3177400000000008 0.076294999999999613  1 1.6485877782998006 1.4724432748272895 0.031445616502008708  0.99999999999999123 3.1772036854590451 1.3057907312814176 0.0022113386428762229  1.00000000000002 3.1372530970478119 1.5927264448139684 0.082858098621042459  0.9999999999999809 5.7108181744699156 0.49399606565377596 0.24649290312935487  1.0000000000000084 6.5049999999999999 5.5214839946747777e-33 0.24795600000000001  1 
+0 1.2811151667000007 0.036807049999999619  1 1.6479215232887923 1.448113855642851 -0.0034994963647348811  0.99999999999999123 3.1809789953420351 1.2984903019296821 -0.0457928457522268  1.00000000000002 3.1334441910773672 1.5752568959202082 0.034759734054665939  0.9999999999999809 5.7130192738963137 0.48000793143071685 0.2139476736738174  1.0000000000000084 6.5049999999999999 5.118410995225631e-33 0.21525483329999995  1 
+0 1.2386476250000007 0.0022839957999996052  1 1.6473025492318252 1.4226122061336257 -0.035769638365498221  0.99999999999999123 3.1846854762215004 1.2839957622221865 -0.09342962389256057  1.00000000000002 3.129708811905755 1.553644996236371 -0.012855623627513572  0.9999999999999809 5.7150670385870059 0.46697828941107605 0.1818750704625462  1.0000000000000084 6.5049999999999999 4.7154124654785332e-33 0.18255970830000001  1 
+0 1.1916550833000006 -0.027663225000000402  1 1.647347442976745 1.3963140144476178 -0.066038995427979447  0.99999999999999123 3.1865489772697075 1.2614172907843224 -0.13761261112971743  1.00000000000002 3.127735889142869 1.5280483096252515 -0.060263423193341832  0.9999999999999809 5.7165025871669242 0.4541927828732909 0.15046818447744587  1.0000000000000084 6.5049999999999999 4.3110760572184637e-33 0.14975604170000001  1 
+0 1.1423406667000007 -0.053543466700000403  1 1.6475774673982779 1.3706041118024885 -0.094877881364486924  0.99999999999999123 3.1880576148411461 1.2307317897625325 -0.17615568605734247  1.00000000000002 3.1255807663587865 1.4947625153746942 -0.10553380430524842  0.9999999999999809 5.717968691823673 0.44278516629992332 0.11847577837761357  1.0000000000000084 6.5049999999999999 3.907199303416725e-33 0.11698966669999999  1 
+0 1.0919700000000008 -0.075751000000000415  1 1.6480023139640461 1.3444320999488224 -0.12362866978542278  0.99999999999999123 3.1885134010722003 1.1936918518813688 -0.20482326247385416  1.00000000000002 3.1246341193658602 1.4560281673125133 -0.14826823786040147  0.9999999999999809 5.7189052827105282 0.43053800840199064 0.085556435087671065  1.0000000000000084 6.5049999999999999 3.5023698558582973e-33 0.084145999999999999  1 
+0 1.0352280833000007 -0.10079525000000041  1 1.6490913169205279 1.274965548419899 -0.18298146793115833  0.99999999999999123 3.1883150231899009 1.1628015026179594 -0.22955541537812463  1.00000000000002 3.1241794214772818 1.4051825514982019 -0.21350942052349295  0.9999999999999809 5.7197360679734048 0.42458641474270026 0.061984610291792329  1.0000000000000084 6.5049999999999999 3.1727239887914825e-33 0.057401949999999979  1 
+0 0.97734481250000083 -0.12117870830000041  1 1.6496855449783792 1.2023944417340382 -0.23424379207629414  0.99999999999999123 3.1878088681107997 1.1212928776316513 -0.24116178483719211  1.00000000000002 3.1237792237800042 1.3448261743448475 -0.27565819302906774  0.9999999999999809 5.7204919344010952 0.42061941833535343 0.036330884320337174  1.0000000000000084 6.5049999999999999 2.8431436033427772e-33 0.030663212499999981  1 
+0 0.91855039580000086 -0.13778340630000041  1 1.6509024847804952 1.1253443624328896 -0.27947580143931228  0.99999999999999123 3.1871135887629252 1.0738407105494421 -0.24270306234480629  1.00000000000002 3.123363208447222 1.2801590008609158 -0.32939027481774275  0.9999999999999809 5.7214928671410936 0.41442427512437507 0.0078552946102686382  1.0000000000000084 6.5049999999999999 2.513410427862682e-33 0.0039120791999999738  1 
+0 0.85908025000000077 -0.1514247083000004  1 1.6514602330757429 1.0460601381071035 -0.31872905948094205  0.99999999999999123 3.18667973843873 1.0249094414255631 -0.24049491850395333  1.00000000000002 3.1223307902143023 1.2129119277871383 -0.37172468958898514  0.9999999999999809 5.722441859665591 0.40365989959986304 -0.02267260671769409  1.0000000000000084 6.5049999999999999 2.1838839684524195e-33 -0.022822283300000024  1 
+0 0.79917500000000075 -0.1629685000000004  1 1.6519135392646134 0.96382482572027084 -0.34987705197804536  0.99999999999999123 3.1866547085711132 0.97923623780916014 -0.24460115073122723  1.00000000000002 3.1212995352044639 1.1458402899320617 -0.40215091141189735  0.9999999999999809 5.7234166955905161 0.38520404523873714 -0.052585896625352013  1.0000000000000084 6.5049999999999999 1.8542175577219997e-33 -0.049568000000000029  1 
+0 0.7142266333000008 -0.1793361082000004  1 1.6532142396598908 0.87146009976235317 -0.38610470439916605  0.99999999999999123 3.1854904230160579 0.84467793105425204 -0.27223886617574689  1.00000000000002 3.1203850557957349 1.0505829071685249 -0.44838167077727331  0.9999999999999809 5.7245168752795514 0.38064671977314041 -0.094033715039109275  1.0000000000000084 6.5049999999999999 1.6593639837517511e-33 -0.065376400000000001  1 
+0 0.62839160000000083 -0.19147958820000041  1 1.65276556236214 0.7726432821372845 -0.41149215631879033  0.99999999999999123 3.1878638208645604 0.7209394170961283 -0.2973931091787978  1.00000000000002 3.1170662231573569 0.94555049467549313 -0.4740559497120384  0.9999999999999809 5.7259815427224083 0.368944366809911 -0.13694212995821936  1.0000000000000084 6.5049999999999999 1.4645104097815023e-33 -0.081184800000000001  1 
+0 0.54202406670000081 -0.1999395599000004  1 1.6537006487902617 0.67128593549879045 -0.42920032205706654  0.99999999999999123 3.1865541762189493 0.5995230237482756 -0.31822523274111397  1.00000000000002 3.1165914943536075 0.83911789461617303 -0.48664338221706044  0.9999999999999809 5.7265595045316777 0.3492418808488354 -0.1763952236106239  1.0000000000000084 6.5049999999999999 1.2696568358112534e-33 -0.096993200000000016  1 
+0 0.45543653330000072 -0.20551992430000041  1 1.6532859898246155 0.57072991871383483 -0.44168678900283492  0.99999999999999123 3.1889922534492792 0.47187731874243444 -0.33473722304513903  1.00000000000002 3.113408698752695 0.74107517023063851 -0.49192434676192703  0.9999999999999809 5.7279643163112564 0.31967883265540931 -0.2080588414311749  1.0000000000000084 6.5049999999999999 1.0748032618410048e-33 -0.1128016  1 
+0 0.36900400000000078 -0.20924802000000042  1 1.6535793351660395 0.47617037434290499 -0.4509782640107739  0.99999999999999123 3.1886894664401888 0.3267980064248216 -0.34646950335365834  1.00000000000002 3.1128337072765428 0.66088738697216864 -0.49623379649899363  0.9999999999999809 5.7285586049778381 0.27929861676234519 -0.22746335729925196  1.0000000000000084 6.5049999999999999 8.7994968787075593e-34 -0.12861  1 
+0 0.29509078330000071 -0.2124365377000004  1 1.6533430786054526 0.3767158385067042 -0.46396505674457589  0.99999999999999123 3.1902895585564552 0.27594462061656677 -0.34219343723599083  1.00000000000002 3.1104776588263099 0.50749009570684234 -0.51075007568215924  0.9999999999999809 5.7294891659970224 0.23921026685059016 -0.25242810944966859  1.0000000000000084 6.5049717682999999 3.134348336431728e-21 -0.14198959330000002  1 
+0 0.22128408750000073 -0.21427250330000042  1 1.6512550117906617 0.2815106354208019 -0.46833765764586544  0.99999999999999123 3.1961115594321829 0.21220986805640771 -0.35315295047567047  1.00000000000002 3.1025997536493417 0.36904437927938749 -0.50514281738321021  0.9999999999999809 5.735304295172309 0.18776020592975032 -0.27032296455033022  1.0000000000000084 6.5022298991999996 3.0754296886925812e-19 -0.15311614500000001  1 
+0 0.14756328750000072 -0.2151237605000004  1 1.6475625206719269 0.18878432519520141 -0.46909048659368391  0.99999999999999123 3.2089504030233806 0.14032299201629125 -0.36658189825507032  1.00000000000002 3.0842817660168516 0.24202588267923261 -0.49397776708614699  0.9999999999999809 5.7492010389608916 0.12781701365559117 -0.27940640413322615  1.0000000000000084 6.4962763716999996 9.6851729969316465e-19 -0.1619915821  1 
+0 0.073806716700000718 -0.2153657573000004  1 1.6406977747402305 0.096338544669297255 -0.47140320111980222  0.99999999999999123 3.2291746811163033 0.065888576133829715 -0.3693901671607549  1.00000000000002 3.0557613770603251 0.12226349886069361 -0.49260494439257202  0.9999999999999809 5.7713707162768566 0.063142140712637018 -0.27765152437508905  1.0000000000000084 6.48749004 1.9439960752265573e-18 -0.16861366500000002  1 
+0 7.2220007751866659e-16 -0.2153654000000004  1 1.6301107356496369 5.4122143037798042e-16 -0.48063406919001683  0.99999999999999123 3.2616899716505454 3.6007974694711714e-16 -0.34829923223785531  1.00000000000002 3.0108044478154201 3.8793363545782239e-16 -0.51558946287975504  0.9999999999999809 5.8048915685398486 7.772765003412293e-17 -0.26361891182622504  1.0000000000000084 6.4756682999999997 3.2564728691397811e-18 -0.17298380000000002  1 
+
+4 6
+5 5
+6 5
+7 5
+8 5
+9 5
+10 5
+11 6
+
+0 6
+1 6
+
+Triangulations 3
+16 15 1 0.28680002
+-1.43365 0.649968000000001 -6.505 2.6687712369883e-16 -0.0153653999999993 -6.505 -1.40594454048148 0.412448655683128 -6.505 -1.34785173795684 0.312258655741433 -6.505 -1.26992407550245 0.231133141238001 -6.505 -1.11714049207609 0.135773418207067 -6.505 -0.833870180340218 0.044025234731016 -6.505 -0.394082927009659 -0.00810213487881201 -6.505 1.43365 0.649968000000001 -6.505 1.40594454048148 0.412448655683128 -6.505 1.34785173795684 0.312258655741433 -6.505 1.26992407550245 0.231133141238001 -6.505 1.11714049207609 0.135773418207067 -6.505 0.833870180340219 0.044025234731016 -6.505 0.394082927009659 -0.00810213487881201 -6.505 -1.20368667290425e-16 0.317301300000001 -6.505 -1.43365 0.649968000000001 2.22044604925031e-16 -0.0153653999999993 -1.40594454048148 0.412448655683128 -1.34785173795684 0.312258655741432 -1.26992407550245 0.231133141238001 -1.11714049207609 0.135773418207066 -0.833870180340219 0.0440252347310157 -0.394082927009659 -0.00810213487881232 1.43365 0.649968000000001 1.40594454048148 0.412448655683128 1.34785173795684 0.312258655741432 1.26992407550245 0.231133141238001 1.11714049207609 0.135773418207066 0.833870180340218 0.0440252347310157 0.394082927009659 -0.00810213487881232 -4.44089209850063e-16 0.317301300000001 1 5 6 1 6 7 16 7 8 1 3 4 5 1 4 1 7 16 1 16 9 8 2 16 15 14 16 14 9 16 13 9 14 12 11 9 10 9 11 12 9 13 15 16 2 
+21 19 1 0.570173415
+0 -1.43365 0.449968 6.505 -2.74032099095711e-16 0.649999999999999 1.98092892292892 -1.48171098275022 0.510741713120906 3.13707385249348 -1.37428305641704 0.546252356415255 4.01489342552515 -1.17201839635292 0.573584514791118 5.03045258162268 -0.807098423323603 0.605048480993933 6.06649267160459 -0.296834263216068 0.636720867352713 6.30524876905432 -0.147414068660439 0.643958400270071 0 -1.40594454048148 0.212448655683128 0 -1.34785173795684 0.112258655741432 0 -1.26992407550245 0.0311331412380007 0 -1.11714049207608 -0.0642265817929337 0 -0.833870180340217 -0.155974765268984 0 -0.394082927009658 -0.208102134878812 0 9.89077201217497e-16 -0.2153654 6.4756683 -3.46993823106302e-16 -0.1729838 2.37160830651042 -1.00696286098207e-15 -0.397691803899926 4.35903610341951 -7.8631405099122e-16 -0.35730792986787 6.505 -5.48064198191422e-16 0.229788048905756 6.50358381274824 -5.4822142656083e-16 -0.142363766539061 6.49413006455314 -5.49271003452351e-16 -0.16108011196234 4 0 4 1 4 0.27 4 0.46683 4 0.6144525 4 0.7663275 4 0.9182025 4 0.95910125 6.33333333333333 0 6.80583333333333 0 7.24333333333333 0 7.89958333333333 0 8.88395833333333 0 9.94197916666667 0 11 0 11 1 11 0.333333333333333 11 0.666666666666667 7.11111111111111 1 10.2222222222222 1 10.6111111111111 1 3 1 9 4 3 17 10 3 9 5 4 18 18 6 5 19 8 7 19 2 8 7 6 19 10 11 3 12 17 3 13 14 17 14 15 17 12 13 17 20 19 18 21 20 18 18 19 6 18 16 21 17 18 4 3 11 12 
+21 19 1 0.67827539325
+0 1.43365 0.449968 6.505 -2.74032099095711e-16 0.649999999999999 1.98092892292892 1.48171098275022 0.510741713120906 3.13707385249348 1.37428305641704 0.546252356415255 4.01489342552515 1.17201839635292 0.573584514791118 5.03045258162268 0.807098423323603 0.605048480993933 6.06649267160459 0.296834263216068 0.636720867352713 6.30524876905432 0.14741406866044 0.643958400270071 0 1.40594454048148 0.212448655683128 0 1.34785173795684 0.112258655741432 0 1.26992407550245 0.0311331412380007 0 1.11714049207609 -0.0642265817929337 0 0.83387018034022 -0.155974765268984 0 0.39408292700966 -0.208102134878812 0 9.89077201217497e-16 -0.2153654 2.37160830651042 -1.00696286098207e-15 -0.397691803899926 4.35903610341951 -7.8631405099122e-16 -0.35730792986787 6.4756683 -3.46993823106302e-16 -0.1729838 6.505 -5.48064198191422e-16 0.229788048905756 6.50358381274824 -5.4822142656083e-16 -0.142363766539061 6.49413006455314 -5.49271003452351e-16 -0.16108011196234 4 0 4 1 4 0.27 4 0.46683 4 0.6144525 4 0.7663275 4 0.9182025 4 0.95910125 6.33333333333333 0 6.80583333333333 0 7.24333333333333 0 7.89958333333333 0 8.88395833333333 0 9.94197916666667 0 11 0 11 0.333333333333333 11 0.666666666666667 11 1 7.11111111111111 1 10.2222222222222 1 10.6111111111111 1 3 1 9 4 3 16 10 3 9 5 4 17 17 6 5 19 8 7 19 2 8 7 6 19 10 11 3 12 16 3 13 14 16 14 15 16 12 13 16 20 19 17 21 20 17 17 19 6 17 18 21 16 17 4 3 11 12 
+
+TShapes 20
+Ve
+1.00000000800623e-07
+0 -1.43365 0.449968
+0 0
+
+0101100
+*
+Ve
+1.00000002000918e-07
+0 6.65356658657859e-16 -0.2153654
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  1 0 4 11
+2  1 2 6 4 11
+6  1 1 0
+6  2 2 6
+0
+
+0101000
++20 6 -19 6 *
+Ve
+1.00000000800623e-07
+0 1.43365 0.449968
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  2 0 4 11
+2  2 3 6 4 11
+6  3 1 0
+6  4 3 6
+0
+
+0101000
++17 6 -19 6 *
+Ed
+ 1e-10 1 1 0
+1  3 0 0 2.8673
+6  5 1 0
+0
+
+0101000
++20 6 -17 6 *
+Wi
+
+0101000
+-18 0 +16 0 +15 0 *
+Fa
+0  1e-10 1 0
+2  1
+0101000
+-14 0 *
+Ve
+1e-07
+6.505 -2.74032099095711e-16 0.649999999999999
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  4 0 0 1
+2  3 2 0 0 1
+6  6 2 0
+0
+
+0101000
++20 0 -12 0 *
+Ve
+1.00000000145923e-07
+6.4756683 -3.46993823106302e-16 -0.1729838
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  5 0 0 1
+2  4 2 0 0 1
+2  5 3 0 0 1
+6  7 2 0
+6  8 3 0
+0
+
+0101000
++19 0 -10 0 *
+Ed
+ 1e-07 1 1 0
+1  6 0 4 11
+2  6 2 0 4 11
+2  7 3 0 4 11
+6  9 2 0
+6  10 3 0
+0
+
+0101000
++12 0 -10 0 *
+Wi
+
+0101000
+-11 0 +18 5 +9 0 -8 0 *
+Fa
+0  1e-07 2 0
+2  2
+0101000
++7 0 *
+Ed
+ 1e-07 1 1 0
+1  7 0 0 1
+2  8 3 0 0 1
+6  11 3 0
+0
+
+0101000
++17 0 -12 0 *
+Wi
+
+0101000
+-5 0 +16 5 +9 0 -8 0 *
+Fa
+0  1e-07 3 0
+2  3
+0101000
++4 0 *
+Sh
+
+0101000
++13 5 -6 0 +3 0 *
+Co
+
+1100000
++2 0 *
+
++1 0 
\ No newline at end of file
diff --git a/examples/Makefile.in b/examples/Makefile.in
new file mode 100644 (file)
index 0000000..48f9d93
--- /dev/null
@@ -0,0 +1,33 @@
+#  Copyright (C) 2003  CEA/DEN, EDF R&D
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Vasily Rusyaev (Open Cascade NN)
+#  Module : doc
+#  $Header: 
+
+top_srcdir=@top_srcdir@
+top_builddir=..
+srcdir=@srcdir@
+VPATH=.:@srcdir@
+curdir = $(shell pwd)
+instdatadir=${prefix}/examples
+
+SUBDIRS=.
+
+@COMMENCE@
+
+data:
+       (cd $(srcdir) ; cp -fr `ls | grep -v "Makefile.in"` $(curdir))
+
+clean:
+        rm -rf `ls | grep -v "Makefile"`  
+
+install:
+       rm -rf $(instdatadir)
+       mkdir $(instdatadir)
+       cp -rf `ls | grep -v "Makefile"` $(instdatadir) 
+
+uninstall:
+       rm -rf $(instdatadir)
diff --git a/examples/carre_en_quad4_seg2.med b/examples/carre_en_quad4_seg2.med
new file mode 100644 (file)
index 0000000..7d7c753
Binary files /dev/null and b/examples/carre_en_quad4_seg2.med differ
diff --git a/examples/champ1.med b/examples/champ1.med
new file mode 100644 (file)
index 0000000..d913700
Binary files /dev/null and b/examples/champ1.med differ
diff --git a/examples/clo.med b/examples/clo.med
new file mode 100755 (executable)
index 0000000..7456fff
Binary files /dev/null and b/examples/clo.med differ
diff --git a/examples/clo2.med b/examples/clo2.med
new file mode 100755 (executable)
index 0000000..eaeb479
Binary files /dev/null and b/examples/clo2.med differ
diff --git a/examples/cube_hexa8_quad4.med b/examples/cube_hexa8_quad4.med
new file mode 100644 (file)
index 0000000..4680ddb
Binary files /dev/null and b/examples/cube_hexa8_quad4.med differ
diff --git a/examples/essaiminimail.med b/examples/essaiminimail.med
new file mode 100755 (executable)
index 0000000..249c09f
Binary files /dev/null and b/examples/essaiminimail.med differ
diff --git a/examples/flocon.brep b/examples/flocon.brep
new file mode 100644 (file)
index 0000000..e550b02
--- /dev/null
@@ -0,0 +1,30139 @@
+DBRep_DrawableShape
+
+CASCADE Topology V1, (c) Matra-Datavision
+Locations 0
+Curve2ds 0
+Curves 1536
+1 0 0 0 1 0 0 
+1 1.2345679012345681 0 0 0.5 -0.8660254037844386 0 
+1 1.8518518518518521 -1.0691671651659738 0 0.5 0.8660254037844386 0 
+1 2.4691358024691361 0 0 1 0 0 
+1 3.7037037037037042 0 0 0.5 -0.8660254037844386 0 
+1 4.3209876543209882 -1.0691671651659738 0 -0.50000000000000022 -0.86602540378443849 0 
+1 3.7037037037037037 -2.1383343303319475 0 1 0 0 
+1 4.9382716049382722 -2.1383343303319475 0 0.50000000000000011 -0.8660254037844386 0 
+1 5.5555555555555562 -3.2075014954979211 0 0.50000000000000011 0.8660254037844386 0 
+1 6.1728395061728403 -2.1383343303319475 0 1 3.5971225997855069e-16 0 
+1 7.4074074074074083 -2.1383343303319471 0 -0.50000000000000011 0.8660254037844386 0 
+1 6.7901234567901243 -1.0691671651659738 0 0.5 0.8660254037844386 0 
+1 7.4074074074074083 0 0 1 0 0 
+1 8.6419753086419764 0 0 0.49999999999999944 -0.86602540378443893 0 
+1 9.2592592592592595 -1.0691671651659738 0 0.50000000000000056 0.86602540378443837 0 
+1 9.8765432098765444 0 0 1 0 0 
+1 11.111111111111112 0 0 0.49999999999999944 -0.86602540378443893 0 
+1 11.728395061728396 -1.0691671651659738 0 -0.49999999999999961 -0.86602540378443882 0 
+1 11.111111111111112 -2.1383343303319471 0 1 -3.5971225997855069e-16 0 
+1 12.345679012345681 -2.1383343303319475 0 0.49999999999999956 -0.86602540378443893 0 
+1 12.962962962962964 -3.2075014954979211 0 -0.50000000000000044 -0.86602540378443837 0 
+1 12.345679012345679 -4.2766686606638951 0 -1 7.1942451995710237e-16 0 
+1 11.111111111111112 -4.2766686606638942 0 0.49999999999999922 -0.86602540378443904 0 
+1 11.728395061728396 -5.3458358258298686 0 -0.50000000000000067 -0.86602540378443826 0 
+1 11.111111111111111 -6.4150029909958421 0 1 0 0 
+1 12.345679012345679 -6.4150029909958421 0 0.50000000000000067 -0.86602540378443826 0 
+1 12.962962962962964 -7.4841701561618157 0 0.50000000000000067 0.86602540378443826 0 
+1 13.580246913580249 -6.4150029909958421 0 1 0 0 
+1 14.814814814814817 -6.4150029909958421 0 0.49999999999999956 -0.86602540378443893 0 
+1 15.4320987654321 -7.4841701561618157 0 -0.49999999999999983 -0.86602540378443871 0 
+1 14.814814814814817 -8.5533373213277883 0 1 -1.4388490399142047e-15 0 
+1 16.049382716049383 -8.5533373213277901 0 0.50000000000000067 -0.86602540378443826 0 
+1 16.666666666666668 -9.6225044864937637 0 0.50000000000000067 0.86602540378443826 0 
+1 17.283950617283953 -8.5533373213277901 0 1 1.4388490399142006e-15 0 
+1 18.518518518518523 -8.5533373213277883 0 -0.50000000000000311 0.86602540378443682 0 
+1 17.901234567901234 -7.4841701561618157 0 0.50000000000000067 0.86602540378443826 0 
+1 18.518518518518519 -6.4150029909958421 0 1 0 0 
+1 19.753086419753089 -6.4150029909958421 0 0.49999999999999967 -0.86602540378443882 0 
+1 20.370370370370374 -7.4841701561618184 0 0.49999999999999784 0.86602540378443993 0 
+1 20.987654320987655 -6.415002990995843 0 1 0 0 
+1 22.222222222222225 -6.415002990995843 0 -0.50000000000000067 0.86602540378443826 0 
+1 21.60493827160494 -5.3458358258298695 0 0.50000000000000033 0.86602540378443849 0 
+1 22.222222222222225 -4.2766686606638951 0 -1 0 0 
+1 20.987654320987659 -4.2766686606638951 0 -0.50000000000000044 0.86602540378443837 0 
+1 20.370370370370374 -3.2075014954979211 0 0.50000000000000067 0.86602540378443826 0 
+1 20.987654320987659 -2.1383343303319475 0 1 3.5971225997855119e-16 0 
+1 22.222222222222225 -2.1383343303319471 0 -0.50000000000000067 0.86602540378443826 0 
+1 21.60493827160494 -1.0691671651659738 0 0.50000000000000056 0.86602540378443837 0 
+1 22.222222222222225 0 0 1 0 0 
+1 23.456790123456791 0 0 0.50000000000000111 -0.86602540378443804 0 
+1 24.074074074074076 -1.0691671651659722 0 0.50000000000000111 0.86602540378443804 0 
+1 24.691358024691361 0 0 1 0 0 
+1 25.925925925925927 0 0 0.50000000000000067 -0.86602540378443826 0 
+1 26.543209876543212 -1.0691671651659733 0 -0.50000000000000067 -0.86602540378443826 0 
+1 25.925925925925927 -2.1383343303319466 0 1 0 0 
+1 27.160493827160494 -2.1383343303319466 0 0.50000000000000078 -0.86602540378443815 0 
+1 27.777777777777779 -3.2075014954979197 0 0.50000000000000078 0.86602540378443815 0 
+1 28.395061728395063 -2.1383343303319466 0 1 -7.1942451995710237e-16 0 
+1 29.62962962962963 -2.1383343303319475 0 -0.49999999999999822 0.86602540378443971 0 
+1 29.012345679012348 -1.0691671651659733 0 0.50000000000000067 0.86602540378443826 0 
+1 29.629629629629633 0 0 1 0 0 
+1 30.8641975308642 0 0 0.50000000000000111 -0.86602540378443804 0 
+1 31.481481481481485 -1.0691671651659722 0 0.49999999999999895 0.86602540378443926 0 
+1 32.098765432098766 0 0 1 0 0 
+1 33.333333333333336 0 0 0.50000000000000056 -0.86602540378443837 0 
+1 33.950617283950621 -1.0691671651659738 0 -0.49999999999999606 -0.86602540378444093 0 
+1 33.333333333333343 -2.138334330331948 0 1 3.5971225997855222e-16 0 
+1 34.567901234567906 -2.1383343303319475 0 0.50000000000000067 -0.86602540378443826 0 
+1 35.18518518518519 -3.2075014954979211 0 -0.50000000000000044 -0.86602540378443837 0 
+1 34.567901234567906 -4.2766686606638951 0 -1 7.1942451995710444e-16 0 
+1 33.333333333333343 -4.2766686606638942 0 0.49999999999999567 -0.86602540378444115 0 
+1 33.950617283950621 -5.3458358258298695 0 -0.50000000000000067 -0.86602540378443826 0 
+1 33.333333333333336 -6.415002990995843 0 1 0 0 
+1 34.567901234567906 -6.415002990995843 0 0.5 -0.8660254037844386 0 
+1 35.18518518518519 -7.4841701561618184 0 0.49999999999999539 0.86602540378444137 0 
+1 35.802469135802468 -6.4150029909958421 0 1 0 0 
+1 37.037037037037038 -6.4150029909958421 0 0.50000000000000067 -0.86602540378443826 0 
+1 37.654320987654323 -7.4841701561618157 0 -0.50000000000000033 -0.86602540378443849 0 
+1 37.037037037037038 -8.5533373213277901 0 1 0 0 
+1 38.271604938271608 -8.5533373213277901 0 0.50000000000000067 -0.86602540378443826 0 
+1 38.888888888888893 -9.6225044864937637 0 -0.50000000000000067 -0.86602540378443826 0 
+1 38.271604938271608 -10.691671651659737 0 -1 0 0 
+1 37.037037037037038 -10.691671651659737 0 0.50000000000000067 -0.86602540378443826 0 
+1 37.654320987654323 -11.760838816825711 0 -0.50000000000000067 -0.86602540378443826 0 
+1 37.037037037037038 -12.830005981991684 0 -1 0 0 
+1 35.802469135802468 -12.830005981991684 0 -0.49999999999999567 0.86602540378444115 0 
+1 35.18518518518519 -11.760838816825709 0 -0.5 -0.8660254037844386 0 
+1 34.567901234567906 -12.830005981991684 0 -1 0 0 
+1 33.333333333333336 -12.830005981991684 0 0.50000000000000067 -0.86602540378443826 0 
+1 33.950617283950621 -13.899173147157658 0 -0.49999999999999628 -0.86602540378444082 0 
+1 33.333333333333343 -14.968340312323631 0 1 0 0 
+1 34.567901234567906 -14.968340312323631 0 0.50000000000000067 -0.86602540378443826 0 
+1 35.18518518518519 -16.037507477489605 0 -0.5 -0.8660254037844386 0 
+1 34.567901234567906 -17.10667464265558 0 -1 2.8776980798284178e-15 0 
+1 33.333333333333343 -17.106674642655577 0 0.49999999999999567 -0.86602540378444115 0 
+1 33.950617283950621 -18.175841807821552 0 -0.5 -0.8660254037844386 0 
+1 33.333333333333336 -19.245008972987527 0 1 0 0 
+1 34.567901234567906 -19.245008972987527 0 0.5 -0.8660254037844386 0 
+1 35.18518518518519 -20.314176138153503 0 0.49999999999999567 0.86602540378444115 0 
+1 35.802469135802468 -19.245008972987527 0 1 0 0 
+1 37.037037037037038 -19.245008972987527 0 0.50000000000000122 -0.86602540378443793 0 
+1 37.654320987654323 -20.314176138153499 0 -0.5 -0.8660254037844386 0 
+1 37.037037037037038 -21.383343303319474 0 1 0 0 
+1 38.271604938271601 -21.383343303319474 0 0.50000000000000122 -0.86602540378443793 0 
+1 38.888888888888886 -22.452510468485446 0 0.50000000000000122 0.86602540378443793 0 
+1 39.506172839506171 -21.383343303319474 0 1 0 0 
+1 40.740740740740733 -21.383343303319474 0 -0.49999999999999567 0.86602540378444115 0 
+1 40.123456790123456 -20.314176138153499 0 0.50000000000000122 0.86602540378443793 0 
+1 40.74074074074074 -19.245008972987527 0 1 0 0 
+1 41.97530864197531 -19.245008972987527 0 0.5 -0.8660254037844386 0 
+1 42.592592592592595 -20.314176138153503 0 0.49999999999999567 0.86602540378444115 0 
+1 43.209876543209873 -19.245008972987527 0 1 0 0 
+1 44.444444444444443 -19.245008972987527 0 0.5 -0.8660254037844386 0 
+1 45.061728395061728 -20.314176138153503 0 -0.5 -0.8660254037844386 0 
+1 44.444444444444443 -21.383343303319478 0 1 2.8776980798284012e-15 0 
+1 45.679012345679013 -21.383343303319474 0 0.5 -0.8660254037844386 0 
+1 46.296296296296298 -22.45251046848545 0 -0.5 -0.8660254037844386 0 
+1 45.679012345679013 -23.521677633651425 0 -1 2.8776980798284012e-15 0 
+1 44.444444444444443 -23.521677633651422 0 0.5 -0.8660254037844386 0 
+1 45.061728395061728 -24.590844798817397 0 -0.5 -0.8660254037844386 0 
+1 44.444444444444443 -25.660011963983372 0 1 0 0 
+1 45.679012345679013 -25.660011963983372 0 0.49999999999999567 -0.86602540378444115 0 
+1 46.296296296296291 -26.729179129149347 0 0.49999999999999872 0.86602540378443937 0 
+1 46.913580246913575 -25.660011963983369 0 1 0 0 
+1 48.148148148148145 -25.660011963983369 0 0.5 -0.8660254037844386 0 
+1 48.76543209876543 -26.729179129149344 0 -0.49999999999999567 -0.86602540378444115 0 
+1 48.148148148148152 -27.798346294315319 0 1 2.8776980798284178e-15 0 
+1 49.382716049382715 -27.798346294315316 0 0.5 -0.8660254037844386 0 
+1 50 -28.867513459481291 0 0.5 0.8660254037844386 0 
+1 50.617283950617285 -27.798346294315316 0 1 -2.8776980798284178e-15 0 
+1 51.851851851851848 -27.798346294315319 0 -0.49999999999999567 0.86602540378444115 0 
+1 51.23456790123457 -26.729179129149344 0 0.5 0.8660254037844386 0 
+1 51.851851851851855 -25.660011963983369 0 1 0 0 
+1 53.086419753086425 -25.660011963983369 0 0.49999999999999872 -0.86602540378443937 0 
+1 53.703703703703709 -26.729179129149347 0 0.49999999999999567 0.86602540378444115 0 
+1 54.320987654320987 -25.660011963983372 0 1 0 0 
+1 55.555555555555557 -25.660011963983372 0 -0.5 0.8660254037844386 0 
+1 54.938271604938272 -24.590844798817397 0 0.5 0.8660254037844386 0 
+1 55.555555555555557 -23.521677633651422 0 -1 -2.8776980798284012e-15 0 
+1 54.320987654320987 -23.521677633651425 0 -0.5 0.8660254037844386 0 
+1 53.703703703703702 -22.45251046848545 0 0.5 0.8660254037844386 0 
+1 54.320987654320987 -21.383343303319474 0 1 -2.8776980798284012e-15 0 
+1 55.555555555555557 -21.383343303319478 0 -0.5 0.8660254037844386 0 
+1 54.938271604938272 -20.314176138153503 0 0.5 0.8660254037844386 0 
+1 55.555555555555557 -19.245008972987527 0 1 0 0 
+1 56.790123456790127 -19.245008972987527 0 0.49999999999999567 -0.86602540378444115 0 
+1 57.407407407407405 -20.314176138153503 0 0.5 0.8660254037844386 0 
+1 58.02469135802469 -19.245008972987527 0 1 0 0 
+1 59.25925925925926 -19.245008972987527 0 0.50000000000000122 -0.86602540378443793 0 
+1 59.876543209876544 -20.314176138153499 0 -0.49999999999999567 -0.86602540378444115 0 
+1 59.259259259259267 -21.383343303319474 0 1 0 0 
+1 60.493827160493829 -21.383343303319474 0 0.50000000000000122 -0.86602540378443793 0 
+1 61.111111111111114 -22.452510468485446 0 0.50000000000000122 0.86602540378443793 0 
+1 61.728395061728399 -21.383343303319474 0 1 0 0 
+1 62.962962962962962 -21.383343303319474 0 -0.49999999999999567 0.86602540378444115 0 
+1 62.345679012345684 -20.314176138153499 0 0.50000000000000122 0.86602540378443793 0 
+1 62.962962962962969 -19.245008972987527 0 1 0 0 
+1 64.197530864197532 -19.245008972987527 0 0.50000000000000677 -0.86602540378443471 0 
+1 64.814814814814824 -20.314176138153496 0 0.49999999999999817 0.86602540378443971 0 
+1 65.432098765432102 -19.245008972987527 0 1 0 0 
+1 66.666666666666671 -19.245008972987527 0 -0.49999999999999567 0.86602540378444115 0 
+1 66.049382716049394 -18.175841807821552 0 0.49999999999999695 0.86602540378444037 0 
+1 66.666666666666671 -17.10667464265558 0 -1 0 0 
+1 65.432098765432102 -17.10667464265558 0 -0.49999999999999567 0.86602540378444115 0 
+1 64.814814814814824 -16.037507477489605 0 0.49999999999999628 0.86602540378444082 0 
+1 65.432098765432102 -14.968340312323631 0 1 1.4388490399142006e-15 0 
+1 66.666666666666671 -14.96834031232363 0 -0.49999999999999756 0.86602540378444004 0 
+1 66.049382716049394 -13.89917314715766 0 0.49999999999999628 0.86602540378444082 0 
+1 66.666666666666671 -12.830005981991686 0 -1 0 0 
+1 65.432098765432102 -12.830005981991686 0 -0.49999999999999567 0.86602540378444115 0 
+1 64.814814814814824 -11.760838816825711 0 -0.50000000000000488 -0.86602540378443582 0 
+1 64.197530864197532 -12.830005981991684 0 -1 0 0 
+1 62.962962962962969 -12.830005981991684 0 -0.50000000000000067 0.86602540378443826 0 
+1 62.345679012345684 -11.760838816825711 0 0.49999999999999628 0.86602540378444082 0 
+1 62.962962962962962 -10.691671651659737 0 -1 0 0 
+1 61.728395061728399 -10.691671651659737 0 -0.50000000000000067 0.86602540378443826 0 
+1 61.111111111111114 -9.6225044864937637 0 0.50000000000000067 0.86602540378443826 0 
+1 61.728395061728399 -8.5533373213277901 0 1 0 0 
+1 62.962962962962962 -8.5533373213277901 0 -0.499999999999996 0.86602540378444093 0 
+1 62.345679012345684 -7.4841701561618157 0 0.50000000000000067 0.86602540378443826 0 
+1 62.962962962962969 -6.4150029909958421 0 1 0 0 
+1 64.197530864197532 -6.4150029909958421 0 0.50000000000000622 -0.86602540378443504 0 
+1 64.814814814814824 -7.4841701561618121 0 0.49999999999999784 0.86602540378443993 0 
+1 65.432098765432102 -6.415002990995843 0 1 0 0 
+1 66.666666666666671 -6.415002990995843 0 -0.49999999999999628 0.86602540378444082 0 
+1 66.049382716049394 -5.3458358258298695 0 0.49999999999999695 0.86602540378444037 0 
+1 66.666666666666671 -4.2766686606638977 0 -1 2.1582735598713009e-15 0 
+1 65.432098765432102 -4.2766686606638951 0 -0.49999999999999617 0.86602540378444082 0 
+1 64.814814814814824 -3.2075014954979211 0 0.49999999999999628 0.86602540378444082 0 
+1 65.432098765432102 -2.1383343303319475 0 1 2.1582735598713009e-15 0 
+1 66.666666666666671 -2.1383343303319449 0 -0.49999999999999717 0.86602540378444026 0 
+1 66.049382716049394 -1.0691671651659738 0 0.49999999999999623 0.86602540378444082 0 
+1 66.666666666666671 0 0 1 0 0 
+1 67.901234567901241 0 0 0.50000000000000433 -0.86602540378443615 0 
+1 68.518518518518533 -1.0691671651659753 0 0.49999999999999567 0.86602540378444115 0 
+1 69.135802469135811 0 0 1 0 0 
+1 70.370370370370381 0 0 0.49999999999999567 -0.86602540378444115 0 
+1 70.987654320987659 -1.0691671651659753 0 -0.49999999999999678 -0.86602540378444048 0 
+1 70.370370370370381 -2.1383343303319475 0 1 -2.5179858198498511e-15 0 
+1 71.604938271604951 -2.1383343303319506 0 0.49999999999999567 -0.86602540378444115 0 
+1 72.222222222222229 -3.207501495497926 0 0.49999999999999567 0.86602540378444115 0 
+1 72.839506172839506 -2.1383343303319506 0 1 2.5179858198498511e-15 0 
+1 74.074074074074076 -2.1383343303319475 0 -0.49999999999999678 0.86602540378444048 0 
+1 73.456790123456798 -1.0691671651659753 0 0.49999999999999567 0.86602540378444115 0 
+1 74.074074074074076 0 0 1 0 0 
+1 75.308641975308646 0 0 0.49999999999999567 -0.86602540378444115 0 
+1 75.925925925925924 -1.0691671651659753 0 0.50000000000000433 0.86602540378443615 0 
+1 76.543209876543216 0 0 1 0 0 
+1 77.777777777777786 0 0 0.49999999999999617 -0.86602540378444082 0 
+1 78.395061728395063 -1.069167165165974 0 -0.49999999999999706 -0.86602540378444037 0 
+1 77.777777777777786 -2.1383343303319453 0 1 -2.1582735598713009e-15 0 
+1 79.012345679012356 -2.138334330331948 0 0.49999999999999617 -0.86602540378444082 0 
+1 79.629629629629633 -3.207501495497922 0 -0.49999999999999617 -0.86602540378444082 0 
+1 79.012345679012356 -4.2766686606638959 0 -1 -4.3165471197426515e-15 0 
+1 77.7777777777778 -4.2766686606639013 0 0.49999999999999817 -0.86602540378443971 0 
+1 78.395061728395078 -5.3458358258298695 0 -0.49999999999999628 -0.86602540378444082 0 
+1 77.7777777777778 -6.415002990995843 0 1 0 0 
+1 79.01234567901237 -6.415002990995843 0 0.49999999999999567 -0.86602540378444115 0 
+1 79.629629629629648 -7.4841701561618184 0 0.499999999999996 0.86602540378444093 0 
+1 80.246913580246925 -6.4150029909958439 0 1 0 0 
+1 81.481481481481495 -6.4150029909958439 0 0.49999999999999628 -0.86602540378444082 0 
+1 82.098765432098773 -7.4841701561618175 0 -0.49999999999999722 -0.86602540378444026 0 
+1 81.481481481481495 -8.5533373213277883 0 1 -2.8776980798284012e-15 0 
+1 82.716049382716065 -8.5533373213277919 0 0.49999999999999628 -0.86602540378444082 0 
+1 83.333333333333343 -9.6225044864937654 0 0.49999999999999628 0.86602540378444082 0 
+1 83.950617283950621 -8.5533373213277919 0 1 2.8776980798284012e-15 0 
+1 85.18518518518519 -8.5533373213277883 0 -0.49999999999999722 0.86602540378444026 0 
+1 84.567901234567913 -7.4841701561618175 0 0.49999999999999628 0.86602540378444082 0 
+1 85.18518518518519 -6.4150029909958439 0 1 1.4388490399142006e-15 0 
+1 86.41975308641976 -6.4150029909958421 0 0.499999999999996 -0.86602540378444093 0 
+1 87.037037037037038 -7.4841701561618166 0 0.49999999999999567 0.86602540378444115 0 
+1 87.654320987654316 -6.4150029909958413 0 1 1.4388490399142006e-15 0 
+1 88.888888888888886 -6.4150029909958395 0 -0.49999999999999661 0.86602540378444059 0 
+1 88.271604938271608 -5.3458358258298668 0 0.49999999999999722 0.86602540378444026 0 
+1 88.888888888888886 -4.2766686606638959 0 -1 1.4388490399142006e-15 0 
+1 87.654320987654316 -4.2766686606638942 0 -0.49999999999999678 0.86602540378444048 0 
+1 87.037037037037038 -3.207501495497922 0 0.49999999999999617 0.86602540378444082 0 
+1 87.654320987654316 -2.138334330331948 0 1 2.1582735598713009e-15 0 
+1 88.888888888888886 -2.1383343303319453 0 -0.49999999999999706 0.86602540378444037 0 
+1 88.271604938271608 -1.069167165165974 0 0.49999999999999617 0.86602540378444082 0 
+1 88.888888888888886 0 0 1 0 0 
+1 90.123456790123456 0 0 0.49999999999999567 -0.86602540378444115 0 
+1 90.740740740740733 -1.0691671651659753 0 0.50000000000000433 0.86602540378443615 0 
+1 91.358024691358025 0 0 1 0 0 
+1 92.592592592592595 0 0 0.49999999999999567 -0.86602540378444115 0 
+1 93.209876543209873 -1.0691671651659753 0 -0.49999999999999678 -0.86602540378444048 0 
+1 92.592592592592595 -2.1383343303319475 0 1 -2.5179858198498511e-15 0 
+1 93.827160493827165 -2.1383343303319506 0 0.49999999999999567 -0.86602540378444115 0 
+1 94.444444444444443 -3.207501495497926 0 0.49999999999999567 0.86602540378444115 0 
+1 95.061728395061721 -2.1383343303319506 0 1 2.5179858198498511e-15 0 
+1 96.296296296296291 -2.1383343303319475 0 -0.49999999999999678 0.86602540378444048 0 
+1 95.679012345679013 -1.0691671651659753 0 0.49999999999999567 0.86602540378444115 0 
+1 96.296296296296291 0 0 1 0 0 
+1 97.53086419753086 0 0 0.50000000000000433 -0.86602540378443615 0 
+1 98.148148148148152 -1.0691671651659753 0 0.49999999999999567 0.86602540378444115 0 
+1 98.76543209876543 0 0 1 0 0 
+1 100 0 0 -0.49999999999999628 0.86602540378444082 0 
+1 99.382716049382722 1.0691671651659735 0 0.49999999999999706 0.86602540378444037 0 
+1 100 2.1383343303319449 0 -1 1.7985612998927508e-15 0 
+1 98.76543209876543 2.1383343303319471 0 -0.49999999999999628 0.86602540378444082 0 
+1 98.148148148148152 3.2075014954979206 0 0.49999999999999628 0.86602540378444082 0 
+1 98.76543209876543 4.2766686606638942 0 1 7.194245199571003e-16 0 
+1 100 4.2766686606638951 0 -0.49999999999999695 0.86602540378444037 0 
+1 99.382716049382722 5.3458358258298668 0 0.49999999999999628 0.86602540378444082 0 
+1 100 6.4150029909958404 0 -1 0 0 
+1 98.76543209876543 6.4150029909958404 0 -0.49999999999999539 0.86602540378444137 0 
+1 98.148148148148152 7.4841701561618166 0 -0.50000000000000433 -0.86602540378443615 0 
+1 97.53086419753086 6.4150029909958413 0 -1 0 0 
+1 96.296296296296291 6.4150029909958413 0 -0.49999999999999628 0.86602540378444082 0 
+1 95.679012345679013 7.4841701561618148 0 0.49999999999999695 0.86602540378444037 0 
+1 96.296296296296291 8.5533373213277866 0 -1 1.4388490399142006e-15 0 
+1 95.061728395061721 8.5533373213277883 0 -0.49999999999999628 0.86602540378444082 0 
+1 94.444444444444443 9.6225044864937619 0 0.49999999999999628 0.86602540378444082 0 
+1 95.061728395061721 10.691671651659735 0 1 2.8776980798284012e-15 0 
+1 96.296296296296291 10.691671651659739 0 -0.49999999999999695 0.86602540378444037 0 
+1 95.679012345679013 11.760838816825711 0 0.49999999999999628 0.86602540378444082 0 
+1 96.296296296296291 12.830005981991684 0 1 0 0 
+1 97.53086419753086 12.830005981991684 0 0.50000000000000488 -0.86602540378443582 0 
+1 98.148148148148152 11.760838816825711 0 0.49999999999999567 0.86602540378444115 0 
+1 98.76543209876543 12.830005981991686 0 1 0 0 
+1 100 12.830005981991686 0 -0.50000000000000488 0.86602540378443582 0 
+1 99.382716049382708 13.89917314715766 0 0.50000000000000366 0.86602540378443649 0 
+1 100 14.968340312323637 0 -1 -4.3165471197426018e-15 0 
+1 98.76543209876543 14.968340312323631 0 -0.50000000000000488 0.86602540378443582 0 
+1 98.148148148148138 16.037507477489605 0 0.49999999999999567 0.86602540378444115 0 
+1 98.765432098765416 17.10667464265558 0 1 0 0 
+1 99.999999999999986 17.10667464265558 0 -0.49999999999999695 0.86602540378444037 0 
+1 99.382716049382708 18.175841807821552 0 0.49999999999999567 0.86602540378444115 0 
+1 99.999999999999986 19.245008972987527 0 -1 0 0 
+1 98.765432098765416 19.245008972987527 0 -0.49999999999999567 0.86602540378444115 0 
+1 98.148148148148138 20.314176138153503 0 -0.49999999999999567 -0.86602540378444115 0 
+1 97.53086419753086 19.245008972987527 0 -1 0 0 
+1 96.296296296296291 19.245008972987527 0 -0.50000000000000555 0.86602540378443549 0 
+1 95.679012345678998 20.314176138153499 0 0.49999999999999567 0.86602540378444115 0 
+1 96.296296296296276 21.383343303319474 0 -1 -2.8776980798284343e-15 0 
+1 95.061728395061721 21.383343303319471 0 -0.50000000000000555 0.86602540378443549 0 
+1 94.444444444444429 22.452510468485443 0 -0.49999999999999695 -0.86602540378444037 0 
+1 93.827160493827151 21.383343303319471 0 -1 -5.7553961596568024e-15 0 
+1 92.592592592592581 21.383343303319464 0 0.49999999999999817 -0.86602540378443971 0 
+1 93.209876543209859 20.314176138153496 0 -0.49999999999999695 -0.86602540378444037 0 
+1 92.592592592592581 19.245008972987524 0 -1 0 0 
+1 91.358024691358011 19.245008972987524 0 -0.49999999999999567 0.86602540378444115 0 
+1 90.740740740740733 20.314176138153499 0 -0.49999999999999567 -0.86602540378444115 0 
+1 90.123456790123456 19.245008972987524 0 -1 0 0 
+1 88.888888888888886 19.245008972987524 0 -0.49999999999999567 0.86602540378444115 0 
+1 88.271604938271608 20.314176138153499 0 0.49999999999999695 0.86602540378444037 0 
+1 88.888888888888886 21.383343303319471 0 -1 0 0 
+1 87.654320987654316 21.383343303319471 0 -0.49999999999999567 0.86602540378444115 0 
+1 87.037037037037038 22.452510468485446 0 0.49999999999999695 0.86602540378444037 0 
+1 87.654320987654316 23.521677633651418 0 1 2.8776980798284012e-15 0 
+1 88.888888888888886 23.521677633651422 0 -0.49999999999999695 0.86602540378444037 0 
+1 88.271604938271608 24.590844798817393 0 0.49999999999999695 0.86602540378444037 0 
+1 88.888888888888886 25.660011963983365 0 -1 0 0 
+1 87.654320987654316 25.660011963983365 0 -0.49999999999999567 0.86602540378444115 0 
+1 87.037037037037038 26.72917912914934 0 -0.50000000000000433 -0.86602540378443615 0 
+1 86.419753086419746 25.660011963983365 0 -1 0 0 
+1 85.185185185185176 25.660011963983365 0 -0.49999999999999567 0.86602540378444115 0 
+1 84.567901234567898 26.72917912914934 0 0.49999999999999695 0.86602540378444037 0 
+1 85.185185185185176 27.798346294315312 0 -1 0 0 
+1 83.950617283950606 27.798346294315312 0 -0.49999999999999567 0.86602540378444115 0 
+1 83.333333333333329 28.867513459481287 0 0.49999999999999567 0.86602540378444115 0 
+1 83.950617283950606 29.936680624647263 0 1 0 0 
+1 85.185185185185176 29.936680624647263 0 -0.49999999999999695 0.86602540378444037 0 
+1 84.567901234567898 31.005847789813235 0 0.49999999999999567 0.86602540378444115 0 
+1 85.185185185185176 32.07501495497921 0 1 0 0 
+1 86.419753086419746 32.07501495497921 0 0.50000000000000433 -0.86602540378443615 0 
+1 87.037037037037038 31.005847789813235 0 0.49999999999999567 0.86602540378444115 0 
+1 87.654320987654316 32.07501495497921 0 1 0 0 
+1 88.888888888888886 32.07501495497921 0 -0.49999999999999695 0.86602540378444037 0 
+1 88.271604938271608 33.144182120145182 0 0.49999999999999695 0.86602540378444037 0 
+1 88.888888888888886 34.213349285311153 0 -1 0 0 
+1 87.654320987654316 34.213349285311153 0 -0.49999999999999695 0.86602540378444037 0 
+1 87.037037037037038 35.282516450477125 0 0.49999999999999695 0.86602540378444037 0 
+1 87.654320987654316 36.351683615643097 0 1 5.7553961596568024e-15 0 
+1 88.888888888888886 36.351683615643104 0 -0.49999999999999695 0.86602540378444037 0 
+1 88.271604938271608 37.420850780809076 0 0.49999999999999695 0.86602540378444037 0 
+1 88.888888888888886 38.490017945975048 0 1 0 0 
+1 90.123456790123456 38.490017945975048 0 0.49999999999999695 -0.86602540378444037 0 
+1 90.740740740740733 37.420850780809076 0 0.49999999999999695 0.86602540378444037 0 
+1 91.358024691358011 38.490017945975048 0 1 0 0 
+1 92.592592592592581 38.490017945975048 0 0.49999999999999695 -0.86602540378444037 0 
+1 93.209876543209859 37.420850780809076 0 -0.49999999999999944 -0.86602540378443893 0 
+1 92.592592592592581 36.351683615643111 0 1 -5.7553961596568024e-15 0 
+1 93.827160493827151 36.351683615643104 0 0.49999999999999695 -0.86602540378444037 0 
+1 94.444444444444429 35.282516450477132 0 0.50000000000000555 0.86602540378443549 0 
+1 95.061728395061721 36.351683615643104 0 1 0 0 
+1 96.296296296296276 36.351683615643104 0 -0.49999999999999695 0.86602540378444037 0 
+1 95.679012345678998 37.420850780809076 0 0.50000000000000555 0.86602540378443549 0 
+1 96.296296296296291 38.490017945975048 0 1 0 0 
+1 97.53086419753086 38.490017945975048 0 0.49999999999999695 -0.86602540378444037 0 
+1 98.148148148148138 37.420850780809076 0 0.49999999999999695 0.86602540378444037 0 
+1 98.765432098765416 38.490017945975048 0 1 0 0 
+1 99.999999999999986 38.490017945975048 0 -0.49999999999999695 0.86602540378444037 0 
+1 99.382716049382708 39.559185111141019 0 0.49999999999999695 0.86602540378444037 0 
+1 99.999999999999986 40.628352276306991 0 -1 5.7553961596568024e-15 0 
+1 98.765432098765416 40.628352276306998 0 -0.49999999999999695 0.86602540378444037 0 
+1 98.148148148148138 41.69751944147297 0 0.50000000000000555 0.86602540378443549 0 
+1 98.76543209876543 42.766686606638942 0 1 -5.7553961596568024e-15 0 
+1 100 42.766686606638935 0 -0.50000000000000311 0.86602540378443693 0 
+1 99.382716049382708 43.835853771804913 0 0.50000000000000555 0.86602540378443549 0 
+1 100 44.905020936970885 0 -1 0 0 
+1 98.76543209876543 44.905020936970885 0 -0.49999999999999445 0.86602540378444182 0 
+1 98.148148148148152 45.974188102136864 0 -0.50000000000000555 -0.86602540378443549 0 
+1 97.53086419753086 44.905020936970892 0 -1 0 0 
+1 96.296296296296291 44.905020936970892 0 -0.49999999999999695 0.86602540378444037 0 
+1 95.679012345679013 45.974188102136864 0 0.49999999999999695 0.86602540378444037 0 
+1 96.296296296296291 47.043355267302836 0 -1 5.7553961596568024e-15 0 
+1 95.061728395061721 47.043355267302843 0 -0.49999999999999695 0.86602540378444037 0 
+1 94.444444444444443 48.112522432468815 0 0.49999999999999695 0.86602540378444037 0 
+1 95.061728395061721 49.181689597634787 0 1 5.7553961596568024e-15 0 
+1 96.296296296296291 49.181689597634794 0 -0.49999999999999695 0.86602540378444037 0 
+1 95.679012345679013 50.250856762800765 0 0.49999999999999695 0.86602540378444037 0 
+1 96.296296296296291 51.320023927966737 0 1 0 0 
+1 97.53086419753086 51.320023927966737 0 0.50000000000000056 -0.86602540378443826 0 
+1 98.148148148148152 50.250856762800751 0 0.49999999999999445 0.86602540378444182 0 
+1 98.76543209876543 51.32002392796673 0 1 0 0 
+1 100 51.32002392796673 0 -0.49999999999999695 0.86602540378444037 0 
+1 99.382716049382722 52.389191093132702 0 0.49999999999999695 0.86602540378444037 0 
+1 100 53.458358258298674 0 -1 5.7553961596568024e-15 0 
+1 98.76543209876543 53.458358258298681 0 -0.49999999999999695 0.86602540378444037 0 
+1 98.148148148148152 54.527525423464652 0 0.49999999999999695 0.86602540378444037 0 
+1 98.76543209876543 55.596692588630624 0 1 5.7553961596568024e-15 0 
+1 100 55.596692588630631 0 -0.49999999999999695 0.86602540378444037 0 
+1 99.382716049382722 56.665859753796603 0 0.49999999999999695 0.86602540378444037 0 
+1 100 57.735026918962575 0 -1 0 0 
+1 98.76543209876543 57.735026918962575 0 -0.49999999999999445 0.86602540378444182 0 
+1 98.148148148148152 58.804194084128554 0 -0.50000000000000311 -0.86602540378443693 0 
+1 97.53086419753086 57.735026918962575 0 -1 0 0 
+1 96.296296296296291 57.735026918962575 0 -0.49999999999999695 0.86602540378444037 0 
+1 95.679012345679013 58.804194084128547 0 0.49999999999999695 0.86602540378444037 0 
+1 96.296296296296291 59.873361249294518 0 -1 5.7553961596568024e-15 0 
+1 95.061728395061721 59.873361249294526 0 -0.49999999999999695 0.86602540378444037 0 
+1 94.444444444444443 60.942528414460497 0 -0.49999999999999695 -0.86602540378444037 0 
+1 93.827160493827165 59.873361249294526 0 -1 -5.7553961596568024e-15 0 
+1 92.592592592592595 59.873361249294518 0 0.49999999999999695 -0.86602540378444037 0 
+1 93.209876543209873 58.804194084128547 0 -0.49999999999999695 -0.86602540378444037 0 
+1 92.592592592592595 57.735026918962575 0 -1 0 0 
+1 91.358024691358025 57.735026918962575 0 -0.50000000000000311 0.86602540378443693 0 
+1 90.740740740740733 58.804194084128554 0 -0.49999999999999445 -0.86602540378444182 0 
+1 90.123456790123456 57.735026918962575 0 -1 0 0 
+1 88.888888888888886 57.735026918962575 0 -0.49999999999999695 0.86602540378444037 0 
+1 88.271604938271608 58.804194084128547 0 0.49999999999999695 0.86602540378444037 0 
+1 88.888888888888886 59.873361249294518 0 -1 5.7553961596568024e-15 0 
+1 87.654320987654316 59.873361249294526 0 -0.49999999999999695 0.86602540378444037 0 
+1 87.037037037037038 60.942528414460497 0 0.50000000000000555 0.86602540378443549 0 
+1 87.65432098765433 62.011695579626469 0 1 0 0 
+1 88.888888888888886 62.011695579626469 0 -0.49999999999999445 0.86602540378444182 0 
+1 88.271604938271608 63.080862744792448 0 0.50000000000000555 0.86602540378443549 0 
+1 88.8888888888889 64.15002990995842 0 -1 0 0 
+1 87.65432098765433 64.15002990995842 0 -0.50000000000000311 0.86602540378443693 0 
+1 87.037037037037038 65.219197075124399 0 -0.49999999999999445 -0.86602540378444182 0 
+1 86.41975308641976 64.15002990995842 0 -1 0 0 
+1 85.18518518518519 64.15002990995842 0 -0.49999999999999445 0.86602540378444182 0 
+1 84.567901234567913 65.219197075124399 0 0.49999999999999944 0.86602540378443893 0 
+1 85.18518518518519 66.288364240290363 0 -1 0 0 
+1 83.950617283950621 66.288364240290363 0 -0.49999999999999445 0.86602540378444182 0 
+1 83.333333333333343 67.357531405456342 0 -0.49999999999999445 -0.86602540378444182 0 
+1 82.716049382716065 66.288364240290363 0 -1 0 0 
+1 81.481481481481495 66.288364240290363 0 0.49999999999999944 -0.86602540378443893 0 
+1 82.098765432098773 65.219197075124399 0 -0.49999999999999445 -0.86602540378444182 0 
+1 81.481481481481495 64.15002990995842 0 -1 0 0 
+1 80.246913580246925 64.15002990995842 0 -0.49999999999999445 0.86602540378444182 0 
+1 79.629629629629648 65.219197075124399 0 -0.49999999999999445 -0.86602540378444182 0 
+1 79.01234567901237 64.15002990995842 0 -1 0 0 
+1 77.7777777777778 64.15002990995842 0 0.49999999999999695 -0.86602540378444037 0 
+1 78.395061728395078 63.080862744792448 0 -0.49999999999999695 -0.86602540378444037 0 
+1 77.7777777777778 62.011695579626476 0 1 -5.7553961596568687e-15 0 
+1 79.012345679012356 62.011695579626469 0 0.49999999999999695 -0.86602540378444037 0 
+1 79.629629629629633 60.942528414460497 0 -0.49999999999999695 -0.86602540378444037 0 
+1 79.012345679012356 59.873361249294526 0 -1 -5.7553961596568024e-15 0 
+1 77.777777777777786 59.873361249294518 0 0.49999999999999695 -0.86602540378444037 0 
+1 78.395061728395063 58.804194084128547 0 -0.49999999999999695 -0.86602540378444037 0 
+1 77.777777777777786 57.735026918962575 0 -1 0 0 
+1 76.543209876543216 57.735026918962575 0 -0.50000000000000311 0.86602540378443693 0 
+1 75.925925925925924 58.804194084128554 0 -0.49999999999999445 -0.86602540378444182 0 
+1 75.308641975308646 57.735026918962575 0 -1 0 0 
+1 74.074074074074076 57.735026918962575 0 -0.49999999999999695 0.86602540378444037 0 
+1 73.456790123456798 58.804194084128547 0 0.49999999999999695 0.86602540378444037 0 
+1 74.074074074074076 59.873361249294518 0 -1 5.7553961596568024e-15 0 
+1 72.839506172839506 59.873361249294526 0 -0.49999999999999695 0.86602540378444037 0 
+1 72.222222222222229 60.942528414460497 0 -0.49999999999999695 -0.86602540378444037 0 
+1 71.604938271604951 59.873361249294526 0 -1 -5.7553961596568024e-15 0 
+1 70.370370370370381 59.873361249294518 0 0.49999999999999695 -0.86602540378444037 0 
+1 70.987654320987659 58.804194084128547 0 -0.49999999999999695 -0.86602540378444037 0 
+1 70.370370370370381 57.735026918962575 0 -1 0 0 
+1 69.135802469135811 57.735026918962575 0 -0.49999999999999445 0.86602540378444182 0 
+1 68.518518518518533 58.804194084128554 0 -0.50000000000000311 -0.86602540378443693 0 
+1 67.901234567901241 57.735026918962575 0 -1 0 0 
+1 66.666666666666671 57.735026918962575 0 -0.49999999999999695 0.86602540378444037 0 
+1 66.049382716049394 58.804194084128547 0 0.49999999999999695 0.86602540378444037 0 
+1 66.666666666666671 59.873361249294518 0 -1 5.7553961596568024e-15 0 
+1 65.432098765432102 59.873361249294526 0 -0.49999999999999695 0.86602540378444037 0 
+1 64.814814814814824 60.942528414460497 0 0.49999999999999695 0.86602540378444037 0 
+1 65.432098765432102 62.011695579626469 0 1 5.7553961596568024e-15 0 
+1 66.666666666666671 62.011695579626476 0 -0.49999999999999695 0.86602540378444037 0 
+1 66.049382716049394 63.080862744792448 0 0.49999999999999695 0.86602540378444037 0 
+1 66.666666666666671 64.15002990995842 0 -1 0 0 
+1 65.432098765432102 64.15002990995842 0 -0.49999999999999445 0.86602540378444182 0 
+1 64.814814814814824 65.219197075124399 0 -0.50000000000000311 -0.86602540378443693 0 
+1 64.197530864197532 64.15002990995842 0 -1 0 0 
+1 62.962962962962969 64.15002990995842 0 -0.49999999999999872 0.86602540378443937 0 
+1 62.345679012345684 65.219197075124399 0 0.49999999999999872 0.86602540378443937 0 
+1 62.962962962962969 66.288364240290377 0 -1 -1.1510792319313605e-14 0 
+1 61.728395061728399 66.288364240290363 0 -0.49999999999999872 0.86602540378443937 0 
+1 61.111111111111114 67.357531405456342 0 0.49999999999999872 0.86602540378443937 0 
+1 61.728395061728399 68.426698570622321 0 1 -1.1510792319313605e-14 0 
+1 62.962962962962969 68.426698570622307 0 -0.49999999999999872 0.86602540378443937 0 
+1 62.345679012345684 69.495865735788286 0 0.49999999999999872 0.86602540378443937 0 
+1 62.962962962962969 70.565032900954265 0 1 0 0 
+1 64.197530864197532 70.565032900954265 0 0.5000000000000081 -0.86602540378443404 0 
+1 64.814814814814824 69.4958657357883 0 0.49999999999999944 0.86602540378443893 0 
+1 65.432098765432102 70.565032900954265 0 1 0 0 
+1 66.666666666666671 70.565032900954265 0 -0.49999999999999445 0.86602540378444182 0 
+1 66.049382716049394 71.634200066120243 0 0.49999999999999944 0.86602540378443893 0 
+1 66.666666666666671 72.703367231286208 0 -1 0 0 
+1 65.432098765432102 72.703367231286208 0 -0.49999999999999445 0.86602540378444182 0 
+1 64.814814814814824 73.772534396452187 0 0.49999999999999445 0.86602540378444182 0 
+1 65.432098765432102 74.841701561618166 0 1 0 0 
+1 66.666666666666671 74.841701561618166 0 -0.49999999999999944 0.86602540378443893 0 
+1 66.049382716049394 75.91086872678413 0 0.49999999999999445 0.86602540378444182 0 
+1 66.666666666666671 76.980035891950109 0 -1 0 0 
+1 65.432098765432102 76.980035891950109 0 -0.49999999999999445 0.86602540378444182 0 
+1 64.814814814814824 78.049203057116088 0 -0.50000000000000311 -0.86602540378443693 0 
+1 64.197530864197532 76.980035891950109 0 -1 0 0 
+1 62.962962962962969 76.980035891950109 0 -0.49999999999999872 0.86602540378443937 0 
+1 62.345679012345684 78.049203057116088 0 0.49999999999999872 0.86602540378443937 0 
+1 62.962962962962969 79.118370222282067 0 -1 -1.1510792319313539e-14 0 
+1 61.728395061728392 79.118370222282053 0 -0.49999999999999872 0.86602540378443937 0 
+1 61.111111111111107 80.187537387448032 0 -0.49999999999999872 -0.86602540378443937 0 
+1 60.493827160493822 79.118370222282053 0 -1 0 0 
+1 59.259259259259252 79.118370222282053 0 0.50000000000000311 -0.86602540378443693 0 
+1 59.876543209876544 78.049203057116074 0 -0.49999999999999872 -0.86602540378443937 0 
+1 59.25925925925926 76.980035891950095 0 -1 0 0 
+1 58.02469135802469 76.980035891950095 0 -0.49999999999999872 0.86602540378443937 0 
+1 57.407407407407405 78.049203057116074 0 -0.49999999999999445 -0.86602540378444182 0 
+1 56.790123456790127 76.980035891950095 0 -1 0 0 
+1 55.555555555555557 76.980035891950095 0 -0.49999999999999872 0.86602540378443937 0 
+1 54.938271604938272 78.049203057116074 0 0.5000000000000081 0.86602540378443404 0 
+1 55.555555555555564 79.118370222282039 0 -1 0 0 
+1 54.320987654320987 79.118370222282039 0 -0.49999999999999872 0.86602540378443937 0 
+1 53.703703703703702 80.187537387448018 0 0.49999999999999872 0.86602540378443937 0 
+1 54.320987654320987 81.256704552613996 0 1 0 0 
+1 55.555555555555564 81.256704552613996 0 -0.5000000000000081 0.86602540378443404 0 
+1 54.938271604938272 82.325871717779961 0 0.49999999999999872 0.86602540378443937 0 
+1 55.555555555555557 83.39503888294594 0 -1 0 0 
+1 54.320987654320987 83.39503888294594 0 -0.49999999999999445 0.86602540378444182 0 
+1 53.703703703703709 84.464206048111919 0 -0.49999999999999872 -0.86602540378443937 0 
+1 53.086419753086425 83.39503888294594 0 -1 0 0 
+1 51.851851851851855 83.39503888294594 0 -0.49999999999999872 0.86602540378443937 0 
+1 51.23456790123457 84.464206048111919 0 0.50000000000000377 0.86602540378443649 0 
+1 51.851851851851855 85.533373213277883 0 -1 0 0 
+1 50.617283950617285 85.533373213277883 0 -0.49999999999999872 0.86602540378443937 0 
+1 50 86.602540378443862 0 -0.49999999999999872 -0.86602540378443937 0 
+1 49.382716049382715 85.533373213277883 0 -1 0 0 
+1 48.148148148148145 85.533373213277883 0 0.50000000000000377 -0.86602540378443649 0 
+1 48.76543209876543 84.464206048111919 0 -0.49999999999999872 -0.86602540378443937 0 
+1 48.148148148148145 83.39503888294594 0 -1 0 0 
+1 46.913580246913575 83.39503888294594 0 -0.49999999999999872 0.86602540378443937 0 
+1 46.296296296296291 84.464206048111919 0 -0.49999999999999445 -0.86602540378444182 0 
+1 45.679012345679013 83.39503888294594 0 -1 0 0 
+1 44.444444444444443 83.39503888294594 0 0.49999999999999872 -0.86602540378443937 0 
+1 45.061728395061728 82.325871717779961 0 -0.5000000000000081 -0.86602540378443404 0 
+1 44.444444444444436 81.256704552613996 0 1 0 0 
+1 45.679012345679013 81.256704552613996 0 0.49999999999999872 -0.86602540378443937 0 
+1 46.296296296296298 80.187537387448018 0 -0.49999999999999872 -0.86602540378443937 0 
+1 45.679012345679013 79.118370222282039 0 -1 0 0 
+1 44.444444444444436 79.118370222282039 0 0.5000000000000081 -0.86602540378443404 0 
+1 45.061728395061728 78.049203057116074 0 -0.49999999999999872 -0.86602540378443937 0 
+1 44.444444444444443 76.980035891950095 0 -1 0 0 
+1 43.209876543209873 76.980035891950095 0 -0.49999999999999445 0.86602540378444182 0 
+1 42.592592592592595 78.049203057116074 0 -0.49999999999999872 -0.86602540378443937 0 
+1 41.97530864197531 76.980035891950095 0 -1 0 0 
+1 40.74074074074074 76.980035891950095 0 -0.49999999999999872 0.86602540378443937 0 
+1 40.123456790123456 78.049203057116074 0 0.50000000000000311 0.86602540378443693 0 
+1 40.740740740740748 79.118370222282053 0 -1 0 0 
+1 39.506172839506178 79.118370222282053 0 -0.49999999999999872 0.86602540378443937 0 
+1 38.888888888888893 80.187537387448032 0 -0.49999999999999872 -0.86602540378443937 0 
+1 38.271604938271608 79.118370222282053 0 -1 1.1510792319313539e-14 0 
+1 37.037037037037031 79.118370222282067 0 0.50000000000000311 -0.86602540378443693 0 
+1 37.654320987654323 78.049203057116088 0 -0.49999999999999872 -0.86602540378443937 0 
+1 37.037037037037038 76.980035891950109 0 -1 0 0 
+1 35.802469135802468 76.980035891950109 0 -0.49999999999999445 0.86602540378444182 0 
+1 35.18518518518519 78.049203057116088 0 -0.49999999999999872 -0.86602540378443937 0 
+1 34.567901234567906 76.980035891950109 0 -1 0 0 
+1 33.333333333333336 76.980035891950109 0 0.49999999999999872 -0.86602540378443937 0 
+1 33.950617283950621 75.91086872678413 0 -0.49999999999999872 -0.86602540378443937 0 
+1 33.333333333333336 74.841701561618152 0 1 1.1510792319313605e-14 0 
+1 34.567901234567906 74.841701561618166 0 0.49999999999999872 -0.86602540378443937 0 
+1 35.18518518518519 73.772534396452187 0 -0.49999999999999872 -0.86602540378443937 0 
+1 34.567901234567906 72.703367231286208 0 -1 1.1510792319313605e-14 0 
+1 33.333333333333336 72.703367231286222 0 0.49999999999999872 -0.86602540378443937 0 
+1 33.950617283950621 71.634200066120243 0 -0.49999999999999872 -0.86602540378443937 0 
+1 33.333333333333336 70.565032900954265 0 1 0 0 
+1 34.567901234567906 70.565032900954265 0 0.49999999999999872 -0.86602540378443937 0 
+1 35.18518518518519 69.495865735788286 0 0.49999999999999445 0.86602540378444182 0 
+1 35.802469135802468 70.565032900954265 0 1 0 0 
+1 37.037037037037038 70.565032900954265 0 0.49999999999999872 -0.86602540378443937 0 
+1 37.654320987654323 69.495865735788286 0 -0.50000000000000311 -0.86602540378443693 0 
+1 37.037037037037031 68.426698570622307 0 1 1.1510792319313539e-14 0 
+1 38.271604938271608 68.426698570622321 0 0.49999999999999872 -0.86602540378443937 0 
+1 38.888888888888893 67.357531405456342 0 -0.49999999999999872 -0.86602540378443937 0 
+1 38.271604938271608 66.288364240290363 0 -1 1.1510792319313539e-14 0 
+1 37.037037037037031 66.288364240290377 0 0.50000000000000311 -0.86602540378443693 0 
+1 37.654320987654323 65.219197075124399 0 -0.49999999999999872 -0.86602540378443937 0 
+1 37.037037037037038 64.15002990995842 0 -1 0 0 
+1 35.802469135802468 64.15002990995842 0 -0.49999999999999445 0.86602540378444182 0 
+1 35.18518518518519 65.219197075124399 0 -0.49999999999999872 -0.86602540378443937 0 
+1 34.567901234567906 64.15002990995842 0 -1 0 0 
+1 33.333333333333336 64.15002990995842 0 0.50000000000000122 -0.86602540378443793 0 
+1 33.950617283950621 63.080862744792448 0 -0.49999999999999445 -0.86602540378444182 0 
+1 33.333333333333343 62.011695579626469 0 1 0 0 
+1 34.567901234567906 62.011695579626469 0 0.50000000000000122 -0.86602540378443793 0 
+1 35.18518518518519 60.942528414460497 0 -0.50000000000000122 -0.86602540378443793 0 
+1 34.567901234567906 59.873361249294526 0 -1 0 0 
+1 33.333333333333343 59.873361249294526 0 0.49999999999999445 -0.86602540378444182 0 
+1 33.950617283950621 58.804194084128547 0 -0.50000000000000122 -0.86602540378443793 0 
+1 33.333333333333336 57.735026918962575 0 -1 0 0 
+1 32.098765432098766 57.735026918962575 0 -0.49999999999999661 0.86602540378444059 0 
+1 31.481481481481485 58.804194084128554 0 -0.49999999999999872 -0.86602540378443937 0 
+1 30.8641975308642 57.735026918962575 0 -1 0 0 
+1 29.629629629629633 57.735026918962575 0 -0.50000000000000122 0.86602540378443793 0 
+1 29.012345679012348 58.804194084128547 0 0.49999999999999661 0.86602540378444059 0 
+1 29.62962962962963 59.873361249294526 0 -1 0 0 
+1 28.395061728395063 59.873361249294526 0 -0.50000000000000122 0.86602540378443793 0 
+1 27.777777777777779 60.942528414460497 0 -0.50000000000000122 -0.86602540378443793 0 
+1 27.160493827160494 59.873361249294526 0 -1 -5.7553961596568356e-15 0 
+1 25.925925925925931 59.873361249294518 0 0.49999999999999911 -0.86602540378443915 0 
+1 26.543209876543212 58.804194084128547 0 -0.50000000000000122 -0.86602540378443793 0 
+1 25.925925925925927 57.735026918962575 0 -1 0 0 
+1 24.691358024691361 57.735026918962575 0 -0.50000000000000122 0.86602540378443793 0 
+1 24.074074074074076 58.804194084128547 0 -0.50000000000000122 -0.86602540378443793 0 
+1 23.456790123456791 57.735026918962575 0 -1 0 0 
+1 22.222222222222225 57.735026918962575 0 -0.50000000000000122 0.86602540378443793 0 
+1 21.60493827160494 58.804194084128547 0 0.49999999999999661 0.86602540378444059 0 
+1 22.222222222222221 59.873361249294526 0 -1 0 0 
+1 20.987654320987659 59.873361249294526 0 -0.50000000000000122 0.86602540378443793 0 
+1 20.370370370370374 60.942528414460497 0 0.50000000000000122 0.86602540378443793 0 
+1 20.987654320987659 62.011695579626469 0 1 0 0 
+1 22.222222222222225 62.011695579626469 0 -0.49999999999999661 0.86602540378444059 0 
+1 21.604938271604944 63.080862744792448 0 0.50000000000000122 0.86602540378443793 0 
+1 22.222222222222229 64.15002990995842 0 -1 0 0 
+1 20.987654320987659 64.15002990995842 0 -0.49999999999999872 0.86602540378443937 0 
+1 20.370370370370374 65.219197075124399 0 -0.49999999999999661 -0.86602540378444059 0 
+1 19.753086419753092 64.15002990995842 0 -1 0 0 
+1 18.518518518518523 64.15002990995842 0 -0.49999999999999872 0.86602540378443937 0 
+1 17.901234567901238 65.219197075124399 0 0.50000000000000588 0.86602540378443527 0 
+1 18.518518518518526 66.288364240290363 0 -1 0 0 
+1 17.283950617283956 66.288364240290363 0 -0.49999999999999872 0.86602540378443937 0 
+1 16.666666666666671 67.357531405456342 0 -0.49999999999999872 -0.86602540378443937 0 
+1 16.049382716049386 66.288364240290363 0 -1 0 0 
+1 14.814814814814815 66.288364240290363 0 0.50000000000000588 -0.86602540378443527 0 
+1 15.432098765432103 65.219197075124399 0 -0.49999999999999872 -0.86602540378443937 0 
+1 14.814814814814818 64.15002990995842 0 -1 0 0 
+1 13.58024691358025 64.15002990995842 0 -0.49999999999999872 0.86602540378443937 0 
+1 12.962962962962965 65.219197075124399 0 -0.49999999999999767 -0.86602540378444004 0 
+1 12.345679012345682 64.15002990995842 0 -1 0 0 
+1 11.111111111111114 64.15002990995842 0 0.50000000000000122 -0.86602540378443793 0 
+1 11.728395061728399 63.080862744792448 0 -0.49999999999999767 -0.86602540378444004 0 
+1 11.111111111111116 62.011695579626469 0 1 0 0 
+1 12.345679012345682 62.011695579626469 0 0.50000000000000122 -0.86602540378443793 0 
+1 12.962962962962967 60.942528414460497 0 -0.50000000000000122 -0.86602540378443793 0 
+1 12.345679012345682 59.873361249294526 0 -1 0 0 
+1 11.111111111111116 59.873361249294526 0 0.49999999999999767 -0.86602540378444004 0 
+1 11.728395061728399 58.804194084128547 0 -0.50000000000000122 -0.86602540378443793 0 
+1 11.111111111111114 57.735026918962575 0 -1 0 0 
+1 9.8765432098765462 57.735026918962575 0 -0.50000000000000011 0.8660254037844386 0 
+1 9.2592592592592631 58.804194084128547 0 -0.50000000000000122 -0.86602540378443793 0 
+1 8.6419753086419782 57.735026918962575 0 -1 0 0 
+1 7.407407407407411 57.735026918962575 0 -0.50000000000000067 0.86602540378443826 0 
+1 6.790123456790127 58.804194084128547 0 0.49999999999999711 0.86602540378444026 0 
+1 7.4074074074074092 59.873361249294526 0 -1 0 0 
+1 6.1728395061728429 59.873361249294526 0 -0.50000000000000067 0.86602540378443826 0 
+1 5.5555555555555589 60.942528414460497 0 -0.50000000000000067 -0.86602540378443826 0 
+1 4.9382716049382749 59.873361249294526 0 -1 -5.755396159656819e-15 0 
+1 3.7037037037037086 59.873361249294518 0 0.49999999999999961 -0.86602540378443882 0 
+1 4.3209876543209909 58.804194084128547 0 -0.50000000000000044 -0.86602540378443837 0 
+1 3.7037037037037073 57.735026918962575 0 -1 0 0 
+1 2.4691358024691392 57.735026918962575 0 -0.50000000000000056 0.86602540378443826 0 
+1 1.8518518518518554 58.804194084128547 0 -0.50000000000000067 -0.86602540378443826 0 
+1 1.2345679012345714 57.735026918962575 0 -1 0 0 
+1 3.5527136788005009e-15 57.735026918962575 0 0.50000000000000056 -0.86602540378443826 0 
+1 0.61728395061728736 56.665859753796603 0 -0.5 -0.8660254037844386 0 
+1 4.4408920985006262e-15 55.596692588630631 0 1 -5.7553961596568166e-15 0 
+1 1.2345679012345712 55.596692588630624 0 0.50000000000000056 -0.86602540378443826 0 
+1 1.851851851851855 54.527525423464652 0 -0.50000000000000089 -0.86602540378443815 0 
+1 1.2345679012345707 53.458358258298681 0 -1 0 0 
+1 3.8857805861880479e-15 53.458358258298681 0 0.49999999999999734 -0.86602540378444015 0 
+1 0.61728395061728647 52.389191093132702 0 -0.50000000000000089 -0.86602540378443815 0 
+1 2.2204460492503131e-15 51.32002392796673 0 1 0 0 
+1 1.2345679012345703 51.32002392796673 0 0.500000000000002 -0.86602540378443749 0 
+1 1.8518518518518565 50.250856762800758 0 0.49999999999999684 0.86602540378444048 0 
+1 2.4691358024691383 51.320023927966737 0 1 0 0 
+1 3.7037037037037064 51.320023927966737 0 0.50000000000000044 -0.86602540378443837 0 
+1 4.32098765432099 50.250856762800765 0 -0.49999999999999711 -0.86602540378444026 0 
+1 3.7037037037037077 49.181689597634787 0 1 0 0 
+1 4.938271604938274 49.181689597634787 0 0.50000000000000067 -0.86602540378443826 0 
+1 5.555555555555558 48.112522432468815 0 -0.50000000000000067 -0.86602540378443826 0 
+1 4.938271604938274 47.043355267302843 0 -1 -5.755396159656819e-15 0 
+1 3.7037037037037077 47.043355267302836 0 0.49999999999999961 -0.86602540378443882 0 
+1 4.32098765432099 45.974188102136864 0 -0.50000000000000044 -0.86602540378443837 0 
+1 3.7037037037037064 44.905020936970892 0 -1 0 0 
+1 2.4691358024691383 44.905020936970892 0 -0.499999999999997 0.86602540378444037 0 
+1 1.8518518518518563 45.974188102136871 0 -0.50000000000000189 -0.86602540378443749 0 
+1 1.2345679012345703 44.905020936970899 0 -1 0 0 
+1 2.2204460492503131e-15 44.905020936970899 0 0.50000000000000089 -0.86602540378443815 0 
+1 0.61728395061728647 43.835853771804928 0 -0.49999999999999734 -0.86602540378444015 0 
+1 3.8857805861880479e-15 42.766686606638949 0 1 0 0 
+1 1.2345679012345707 42.766686606638949 0 0.50000000000000089 -0.86602540378443815 0 
+1 1.851851851851855 41.697519441472977 0 -0.50000000000000056 -0.86602540378443826 0 
+1 1.2345679012345712 40.628352276307005 0 -1 -5.7553961596568166e-15 0 
+1 4.4408920985006262e-15 40.628352276306998 0 0.5 -0.8660254037844386 0 
+1 0.61728395061728736 39.559185111141026 0 -0.50000000000000056 -0.86602540378443826 0 
+1 3.5527136788005009e-15 38.490017945975055 0 1 0 0 
+1 1.2345679012345712 38.490017945975055 0 0.50000000000000056 -0.86602540378443826 0 
+1 1.851851851851855 37.420850780809083 0 0.50000000000000056 0.86602540378443826 0 
+1 2.4691358024691388 38.490017945975055 0 1 0 0 
+1 3.7037037037037064 38.490017945975055 0 0.50000000000000044 -0.86602540378443837 0 
+1 4.32098765432099 37.420850780809083 0 -0.50000000000000011 -0.8660254037844386 0 
+1 3.7037037037037068 36.351683615643111 0 1 -5.755396159656819e-15 0 
+1 4.9382716049382731 36.351683615643104 0 0.50000000000000011 -0.8660254037844386 0 
+1 5.5555555555555562 35.282516450477132 0 0.50000000000000067 0.86602540378443826 0 
+1 6.1728395061728403 36.351683615643104 0 1 0 0 
+1 7.4074074074074066 36.351683615643104 0 -0.49999999999999911 0.86602540378443915 0 
+1 6.7901234567901252 37.420850780809076 0 0.50000000000000067 0.86602540378443826 0 
+1 7.4074074074074092 38.490017945975048 0 1 0 0 
+1 8.6419753086419764 38.490017945975048 0 0.50000000000000122 -0.86602540378443793 0 
+1 9.2592592592592613 37.420850780809076 0 0.50000000000000011 0.8660254037844386 0 
+1 9.8765432098765444 38.490017945975048 0 1 0 0 
+1 11.111111111111112 38.490017945975048 0 0.50000000000000011 -0.8660254037844386 0 
+1 11.728395061728396 37.420850780809076 0 -0.49999999999999911 -0.86602540378443915 0 
+1 11.111111111111114 36.351683615643104 0 1 -5.755396159656819e-15 0 
+1 12.345679012345681 36.351683615643097 0 0.50000000000000011 -0.8660254037844386 0 
+1 12.962962962962964 35.282516450477125 0 -0.50000000000000122 -0.86602540378443793 0 
+1 12.345679012345679 34.213349285311153 0 -1 5.7553961596568277e-15 0 
+1 11.111111111111114 34.21334928531116 0 0.49999999999999661 -0.86602540378444059 0 
+1 11.728395061728396 33.144182120145182 0 -0.50000000000000122 -0.86602540378443793 0 
+1 11.111111111111111 32.07501495497921 0 1 0 0 
+1 12.345679012345679 32.07501495497921 0 0.5 -0.8660254037844386 0 
+1 12.962962962962964 31.005847789813235 0 0.5 0.8660254037844386 0 
+1 13.580246913580249 32.07501495497921 0 1 0 0 
+1 14.814814814814817 32.07501495497921 0 0.49999999999999889 -0.86602540378443926 0 
+1 15.4320987654321 31.005847789813235 0 -0.50000000000000122 -0.86602540378443793 0 
+1 14.814814814814815 29.936680624647263 0 1 0 0 
+1 16.049382716049383 29.936680624647263 0 0.5 -0.8660254037844386 0 
+1 16.666666666666668 28.867513459481287 0 -0.5 -0.8660254037844386 0 
+1 16.049382716049383 27.798346294315312 0 -1 0 0 
+1 14.814814814814815 27.798346294315312 0 0.50000000000000122 -0.86602540378443793 0 
+1 15.4320987654321 26.72917912914934 0 -0.49999999999999889 -0.86602540378443926 0 
+1 14.814814814814817 25.660011963983365 0 -1 0 0 
+1 13.580246913580249 25.660011963983365 0 -0.5 0.8660254037844386 0 
+1 12.962962962962964 26.72917912914934 0 -0.5 -0.8660254037844386 0 
+1 12.345679012345679 25.660011963983365 0 -1 0 0 
+1 11.111111111111111 25.660011963983365 0 0.50000000000000122 -0.86602540378443793 0 
+1 11.728395061728396 24.590844798817393 0 -0.49999999999999784 -0.86602540378443993 0 
+1 11.111111111111114 23.521677633651418 0 1 0 0 
+1 12.345679012345679 23.521677633651418 0 0.50000000000000122 -0.86602540378443793 0 
+1 12.962962962962964 22.452510468485446 0 -0.49999999999999889 -0.86602540378443926 0 
+1 12.345679012345681 21.383343303319471 0 -1 0 0 
+1 11.111111111111111 21.383343303319471 0 0.50000000000000122 -0.86602540378443793 0 
+1 11.728395061728396 20.314176138153499 0 -0.49999999999999889 -0.86602540378443926 0 
+1 11.111111111111112 19.245008972987524 0 -1 0 0 
+1 9.8765432098765444 19.245008972987524 0 -0.5 0.8660254037844386 0 
+1 9.2592592592592595 20.314176138153499 0 -0.49999999999999889 -0.86602540378443926 0 
+1 8.6419753086419764 19.245008972987524 0 -1 0 0 
+1 7.4074074074074083 19.245008972987524 0 -0.49999999999999944 0.86602540378443893 0 
+1 6.7901234567901243 20.314176138153499 0 0.50000000000000178 0.8660254037844376 0 
+1 7.4074074074074101 21.383343303319471 0 -1 0 0 
+1 6.1728395061728403 21.383343303319471 0 -0.49999999999999944 0.86602540378443893 0 
+1 5.5555555555555562 22.452510468485446 0 -0.49999999999999944 -0.86602540378443893 0 
+1 4.9382716049382722 21.383343303319471 0 -1 0 0 
+1 3.7037037037037028 21.383343303319471 0 0.50000000000000155 -0.86602540378443782 0 
+1 4.3209876543209882 20.314176138153499 0 -0.49999999999999944 -0.86602540378443893 0 
+1 3.7037037037037042 19.245008972987524 0 -1 0 0 
+1 2.4691358024691361 19.245008972987524 0 -0.49999999999999944 0.86602540378443893 0 
+1 1.8518518518518521 20.314176138153499 0 -0.49999999999999944 -0.86602540378443893 0 
+1 1.2345679012345681 19.245008972987524 0 -1 0 0 
+1 0 19.245008972987524 0 0.50000000000000067 -0.86602540378443826 0 
+1 0.61728395061728403 18.175841807821552 0 -0.49999999999999983 -0.86602540378443871 0 
+1 1.4432899320127035e-15 17.10667464265558 0 1 -2.8776980798284083e-15 0 
+1 1.2345679012345681 17.106674642655577 0 0.50000000000000067 -0.86602540378443826 0 
+1 1.8518518518518521 16.037507477489605 0 -0.49999999999999967 -0.86602540378443882 0 
+1 1.2345679012345687 14.968340312323631 0 -1 -1.4388490399142032e-15 0 
+1 1.1102230246251565e-15 14.96834031232363 0 0.50000000000000078 -0.86602540378443815 0 
+1 0.61728395061728525 13.899173147157658 0 -0.49999999999999972 -0.86602540378443882 0 
+1 1.7763568394002505e-15 12.830005981991684 0 1 0 0 
+1 1.2345679012345692 12.830005981991684 0 0.49999999999999906 -0.86602540378443915 0 
+1 1.8518518518518525 11.760838816825709 0 0.50000000000000011 0.8660254037844386 0 
+1 2.4691358024691366 12.830005981991683 0 1 0 0 
+1 3.7037037037037042 12.830005981991683 0 0.50000000000000011 -0.8660254037844386 0 
+1 4.3209876543209882 11.760838816825709 0 -0.49999999999999944 -0.86602540378443893 0 
+1 3.7037037037037042 10.691671651659734 0 1 1.4388490399142028e-15 0 
+1 4.9382716049382722 10.691671651659735 0 0.50000000000000011 -0.8660254037844386 0 
+1 5.5555555555555562 9.6225044864937619 0 -0.50000000000000011 -0.8660254037844386 0 
+1 4.9382716049382722 8.5533373213277883 0 -1 1.4388490399142028e-15 0 
+1 3.7037037037037042 8.5533373213277901 0 0.49999999999999944 -0.86602540378443893 0 
+1 4.3209876543209882 7.4841701561618148 0 -0.50000000000000011 -0.8660254037844386 0 
+1 3.7037037037037042 6.4150029909958413 0 -1 0 0 
+1 2.4691358024691366 6.4150029909958413 0 -0.50000000000000011 0.8660254037844386 0 
+1 1.8518518518518525 7.4841701561618148 0 -0.49999999999999994 -0.86602540378443871 0 
+1 1.2345679012345687 6.4150029909958413 0 -1 0 0 
+1 8.8817841970012523e-16 6.4150029909958413 0 0.49999999999999989 -0.86602540378443871 0 
+1 0.61728395061728458 5.3458358258298677 0 -0.5 -0.8660254037844386 0 
+1 6.6613381477509392e-16 4.2766686606638942 0 1 0 0 
+1 1.2345679012345683 4.2766686606638942 0 0.49999999999999994 -0.86602540378443871 0 
+1 1.8518518518518521 3.2075014954979206 0 -0.50000000000000011 -0.8660254037844386 0 
+1 1.2345679012345681 2.1383343303319471 0 -1 0 0 
+1 2.2204460492503131e-16 2.1383343303319471 0 0.49999999999999994 -0.86602540378443871 0 
+1 0.61728395061728403 1.0691671651659735 0 -0.50000000000000011 -0.8660254037844386 0 
+1 35 35 0 1 0 0 
+1 35.370370370370374 35 0 0.5 -0.8660254037844386 0 
+1 35.555555555555557 34.679249850450205 0 0.5 0.8660254037844386 0 
+1 35.74074074074074 35 0 1 0 0 
+1 36.111111111111114 35 0 0.5 -0.8660254037844386 0 
+1 36.296296296296298 34.679249850450205 0 -0.50000000000000022 -0.86602540378443849 0 
+1 36.111111111111114 34.358499700900417 0 1 0 0 
+1 36.481481481481481 34.358499700900417 0 0.50000000000000011 -0.8660254037844386 0 
+1 36.666666666666664 34.037749551350622 0 0.50000000000000011 0.8660254037844386 0 
+1 36.851851851851855 34.358499700900417 0 1 3.5971225997855069e-16 0 
+1 37.222222222222221 34.358499700900417 0 -0.50000000000000011 0.8660254037844386 0 
+1 37.037037037037038 34.679249850450205 0 0.5 0.8660254037844386 0 
+1 37.222222222222221 35 0 1 0 0 
+1 37.592592592592595 35 0 0.49999999999999944 -0.86602540378443893 0 
+1 37.777777777777779 34.679249850450205 0 0.50000000000000056 0.86602540378443837 0 
+1 37.962962962962962 35 0 1 0 0 
+1 38.333333333333336 35 0 0.49999999999999944 -0.86602540378443893 0 
+1 38.518518518518519 34.679249850450205 0 -0.49999999999999961 -0.86602540378443882 0 
+1 38.333333333333336 34.358499700900417 0 1 -3.5971225997855069e-16 0 
+1 38.703703703703702 34.358499700900417 0 0.49999999999999956 -0.86602540378443893 0 
+1 38.888888888888886 34.037749551350622 0 -0.50000000000000044 -0.86602540378443837 0 
+1 38.703703703703702 33.716999401800834 0 -1 7.1942451995710237e-16 0 
+1 38.333333333333336 33.716999401800834 0 0.49999999999999922 -0.86602540378443904 0 
+1 38.518518518518519 33.396249252251039 0 -0.50000000000000067 -0.86602540378443826 0 
+1 38.333333333333336 33.075499102701251 0 1 0 0 
+1 38.703703703703702 33.075499102701251 0 0.50000000000000067 -0.86602540378443826 0 
+1 38.888888888888886 32.754748953151456 0 0.50000000000000067 0.86602540378443826 0 
+1 39.074074074074076 33.075499102701251 0 1 0 0 
+1 39.444444444444443 33.075499102701251 0 0.49999999999999956 -0.86602540378443893 0 
+1 39.629629629629633 32.754748953151456 0 -0.49999999999999983 -0.86602540378443871 0 
+1 39.444444444444443 32.433998803601661 0 1 -1.4388490399142047e-15 0 
+1 39.814814814814817 32.433998803601661 0 0.50000000000000067 -0.86602540378443826 0 
+1 40 32.113248654051873 0 0.50000000000000067 0.86602540378443826 0 
+1 40.185185185185183 32.433998803601661 0 1 1.4388490399142006e-15 0 
+1 40.555555555555557 32.433998803601661 0 -0.50000000000000311 0.86602540378443682 0 
+1 40.370370370370367 32.754748953151456 0 0.50000000000000067 0.86602540378443826 0 
+1 40.555555555555557 33.075499102701251 0 1 0 0 
+1 40.925925925925924 33.075499102701251 0 0.49999999999999967 -0.86602540378443882 0 
+1 41.111111111111114 32.754748953151456 0 0.49999999999999784 0.86602540378443993 0 
+1 41.296296296296298 33.075499102701244 0 1 0 0 
+1 41.666666666666664 33.075499102701244 0 -0.50000000000000067 0.86602540378443826 0 
+1 41.481481481481481 33.396249252251039 0 0.50000000000000033 0.86602540378443849 0 
+1 41.666666666666664 33.716999401800834 0 -1 0 0 
+1 41.296296296296298 33.716999401800834 0 -0.50000000000000044 0.86602540378443837 0 
+1 41.111111111111114 34.037749551350622 0 0.50000000000000067 0.86602540378443826 0 
+1 41.296296296296298 34.358499700900417 0 1 3.5971225997855119e-16 0 
+1 41.666666666666664 34.358499700900417 0 -0.50000000000000067 0.86602540378443826 0 
+1 41.481481481481481 34.679249850450205 0 0.50000000000000056 0.86602540378443837 0 
+1 41.666666666666664 35 0 1 0 0 
+1 42.037037037037038 35 0 0.50000000000000111 -0.86602540378443804 0 
+1 42.222222222222221 34.679249850450205 0 0.50000000000000111 0.86602540378443804 0 
+1 42.407407407407405 35 0 1 0 0 
+1 42.777777777777779 35 0 0.50000000000000067 -0.86602540378443826 0 
+1 42.962962962962962 34.679249850450205 0 -0.50000000000000067 -0.86602540378443826 0 
+1 42.777777777777779 34.358499700900417 0 1 0 0 
+1 43.148148148148145 34.358499700900417 0 0.50000000000000078 -0.86602540378443815 0 
+1 43.333333333333336 34.037749551350622 0 0.50000000000000078 0.86602540378443815 0 
+1 43.518518518518519 34.358499700900417 0 1 -7.1942451995710237e-16 0 
+1 43.888888888888886 34.358499700900417 0 -0.49999999999999822 0.86602540378443971 0 
+1 43.703703703703702 34.679249850450205 0 0.50000000000000067 0.86602540378443826 0 
+1 43.888888888888893 35 0 1 0 0 
+1 44.25925925925926 35 0 0.50000000000000111 -0.86602540378443804 0 
+1 44.444444444444443 34.679249850450205 0 0.49999999999999895 0.86602540378443926 0 
+1 44.629629629629626 35 0 1 0 0 
+1 45 35 0 0.50000000000000056 -0.86602540378443837 0 
+1 45.185185185185183 34.679249850450205 0 -0.49999999999999606 -0.86602540378444093 0 
+1 45 34.358499700900417 0 1 3.5971225997855222e-16 0 
+1 45.370370370370374 34.358499700900417 0 0.50000000000000067 -0.86602540378443826 0 
+1 45.555555555555557 34.037749551350622 0 -0.50000000000000044 -0.86602540378443837 0 
+1 45.370370370370374 33.716999401800834 0 -1 7.1942451995710444e-16 0 
+1 45 33.716999401800834 0 0.49999999999999567 -0.86602540378444115 0 
+1 45.185185185185183 33.396249252251039 0 -0.50000000000000067 -0.86602540378443826 0 
+1 45 33.075499102701244 0 1 0 0 
+1 45.370370370370374 33.075499102701244 0 0.5 -0.8660254037844386 0 
+1 45.555555555555557 32.754748953151456 0 0.49999999999999539 0.86602540378444137 0 
+1 45.74074074074074 33.075499102701251 0 1 0 0 
+1 46.111111111111114 33.075499102701251 0 0.50000000000000067 -0.86602540378443826 0 
+1 46.296296296296298 32.754748953151456 0 -0.50000000000000033 -0.86602540378443849 0 
+1 46.111111111111114 32.433998803601661 0 1 0 0 
+1 46.481481481481481 32.433998803601661 0 0.50000000000000067 -0.86602540378443826 0 
+1 46.666666666666664 32.113248654051873 0 -0.50000000000000067 -0.86602540378443826 0 
+1 46.481481481481481 31.792498504502078 0 -1 0 0 
+1 46.111111111111114 31.792498504502078 0 0.50000000000000067 -0.86602540378443826 0 
+1 46.296296296296298 31.471748354952286 0 -0.50000000000000067 -0.86602540378443826 0 
+1 46.111111111111114 31.150998205402495 0 -1 0 0 
+1 45.74074074074074 31.150998205402495 0 -0.49999999999999567 0.86602540378444115 0 
+1 45.555555555555557 31.471748354952286 0 -0.5 -0.8660254037844386 0 
+1 45.370370370370374 31.150998205402495 0 -1 0 0 
+1 45 31.150998205402495 0 0.50000000000000067 -0.86602540378443826 0 
+1 45.185185185185183 30.830248055852703 0 -0.49999999999999628 -0.86602540378444082 0 
+1 45 30.509497906302911 0 1 0 0 
+1 45.370370370370374 30.509497906302911 0 0.50000000000000067 -0.86602540378443826 0 
+1 45.555555555555557 30.18874775675312 0 -0.5 -0.8660254037844386 0 
+1 45.370370370370374 29.867997607203325 0 -1 2.8776980798284178e-15 0 
+1 45 29.867997607203328 0 0.49999999999999567 -0.86602540378444115 0 
+1 45.185185185185183 29.547247457653533 0 -0.5 -0.8660254037844386 0 
+1 45 29.226497308103742 0 1 0 0 
+1 45.370370370370374 29.226497308103742 0 0.5 -0.8660254037844386 0 
+1 45.555555555555557 28.90574715855395 0 0.49999999999999567 0.86602540378444115 0 
+1 45.74074074074074 29.226497308103742 0 1 0 0 
+1 46.111111111111114 29.226497308103742 0 0.50000000000000122 -0.86602540378443793 0 
+1 46.296296296296298 28.90574715855395 0 -0.5 -0.8660254037844386 0 
+1 46.111111111111114 28.584997009004159 0 1 0 0 
+1 46.481481481481481 28.584997009004159 0 0.50000000000000122 -0.86602540378443793 0 
+1 46.666666666666664 28.264246859454367 0 0.50000000000000122 0.86602540378443793 0 
+1 46.851851851851848 28.584997009004159 0 1 0 0 
+1 47.222222222222221 28.584997009004159 0 -0.49999999999999567 0.86602540378444115 0 
+1 47.037037037037038 28.90574715855395 0 0.50000000000000122 0.86602540378443793 0 
+1 47.222222222222221 29.226497308103742 0 1 0 0 
+1 47.592592592592595 29.226497308103742 0 0.5 -0.8660254037844386 0 
+1 47.777777777777779 28.90574715855395 0 0.49999999999999567 0.86602540378444115 0 
+1 47.962962962962962 29.226497308103742 0 1 0 0 
+1 48.333333333333336 29.226497308103742 0 0.5 -0.8660254037844386 0 
+1 48.518518518518519 28.90574715855395 0 -0.5 -0.8660254037844386 0 
+1 48.333333333333336 28.584997009004155 0 1 2.8776980798284012e-15 0 
+1 48.703703703703702 28.584997009004159 0 0.5 -0.8660254037844386 0 
+1 48.888888888888886 28.264246859454364 0 -0.5 -0.8660254037844386 0 
+1 48.703703703703702 27.943496709904572 0 -1 2.8776980798284012e-15 0 
+1 48.333333333333336 27.943496709904572 0 0.5 -0.8660254037844386 0 
+1 48.518518518518519 27.622746560354781 0 -0.5 -0.8660254037844386 0 
+1 48.333333333333336 27.301996410804989 0 1 0 0 
+1 48.703703703703702 27.301996410804989 0 0.49999999999999567 -0.86602540378444115 0 
+1 48.888888888888886 26.981246261255198 0 0.49999999999999872 0.86602540378443937 0 
+1 49.074074074074069 27.301996410804989 0 1 0 0 
+1 49.444444444444443 27.301996410804989 0 0.5 -0.8660254037844386 0 
+1 49.629629629629626 26.981246261255198 0 -0.49999999999999567 -0.86602540378444115 0 
+1 49.444444444444443 26.660496111705406 0 1 2.8776980798284178e-15 0 
+1 49.814814814814817 26.660496111705406 0 0.5 -0.8660254037844386 0 
+1 50 26.339745962155614 0 0.5 0.8660254037844386 0 
+1 50.185185185185183 26.660496111705406 0 1 -2.8776980798284178e-15 0 
+1 50.555555555555557 26.660496111705406 0 -0.49999999999999567 0.86602540378444115 0 
+1 50.370370370370374 26.981246261255198 0 0.5 0.8660254037844386 0 
+1 50.555555555555557 27.301996410804989 0 1 0 0 
+1 50.925925925925924 27.301996410804989 0 0.49999999999999872 -0.86602540378443937 0 
+1 51.111111111111114 26.981246261255198 0 0.49999999999999567 0.86602540378444115 0 
+1 51.296296296296298 27.301996410804989 0 1 0 0 
+1 51.666666666666664 27.301996410804989 0 -0.5 0.8660254037844386 0 
+1 51.481481481481481 27.622746560354781 0 0.5 0.8660254037844386 0 
+1 51.666666666666664 27.943496709904572 0 -1 -2.8776980798284012e-15 0 
+1 51.296296296296298 27.943496709904572 0 -0.5 0.8660254037844386 0 
+1 51.111111111111107 28.264246859454364 0 0.5 0.8660254037844386 0 
+1 51.296296296296298 28.584997009004159 0 1 -2.8776980798284012e-15 0 
+1 51.666666666666664 28.584997009004155 0 -0.5 0.8660254037844386 0 
+1 51.481481481481481 28.90574715855395 0 0.5 0.8660254037844386 0 
+1 51.666666666666664 29.226497308103742 0 1 0 0 
+1 52.037037037037038 29.226497308103742 0 0.49999999999999567 -0.86602540378444115 0 
+1 52.222222222222221 28.90574715855395 0 0.5 0.8660254037844386 0 
+1 52.407407407407405 29.226497308103742 0 1 0 0 
+1 52.777777777777779 29.226497308103742 0 0.50000000000000122 -0.86602540378443793 0 
+1 52.962962962962962 28.90574715855395 0 -0.49999999999999567 -0.86602540378444115 0 
+1 52.777777777777779 28.584997009004159 0 1 0 0 
+1 53.148148148148145 28.584997009004159 0 0.50000000000000122 -0.86602540378443793 0 
+1 53.333333333333336 28.264246859454367 0 0.50000000000000122 0.86602540378443793 0 
+1 53.518518518518519 28.584997009004159 0 1 0 0 
+1 53.888888888888886 28.584997009004159 0 -0.49999999999999567 0.86602540378444115 0 
+1 53.703703703703702 28.90574715855395 0 0.50000000000000122 0.86602540378443793 0 
+1 53.888888888888893 29.226497308103742 0 1 0 0 
+1 54.25925925925926 29.226497308103742 0 0.50000000000000677 -0.86602540378443471 0 
+1 54.444444444444443 28.90574715855395 0 0.49999999999999817 0.86602540378443971 0 
+1 54.629629629629626 29.226497308103742 0 1 0 0 
+1 55 29.226497308103742 0 -0.49999999999999567 0.86602540378444115 0 
+1 54.814814814814817 29.547247457653533 0 0.49999999999999695 0.86602540378444037 0 
+1 55 29.867997607203325 0 -1 0 0 
+1 54.629629629629626 29.867997607203325 0 -0.49999999999999567 0.86602540378444115 0 
+1 54.444444444444443 30.18874775675312 0 0.49999999999999628 0.86602540378444082 0 
+1 54.629629629629626 30.509497906302911 0 1 1.4388490399142006e-15 0 
+1 55 30.509497906302911 0 -0.49999999999999756 0.86602540378444004 0 
+1 54.814814814814817 30.830248055852703 0 0.49999999999999628 0.86602540378444082 0 
+1 55 31.150998205402495 0 -1 0 0 
+1 54.629629629629626 31.150998205402495 0 -0.49999999999999567 0.86602540378444115 0 
+1 54.444444444444443 31.471748354952286 0 -0.50000000000000488 -0.86602540378443582 0 
+1 54.25925925925926 31.150998205402495 0 -1 0 0 
+1 53.888888888888893 31.150998205402495 0 -0.50000000000000067 0.86602540378443826 0 
+1 53.703703703703702 31.471748354952286 0 0.49999999999999628 0.86602540378444082 0 
+1 53.888888888888886 31.792498504502078 0 -1 0 0 
+1 53.518518518518519 31.792498504502078 0 -0.50000000000000067 0.86602540378443826 0 
+1 53.333333333333336 32.113248654051873 0 0.50000000000000067 0.86602540378443826 0 
+1 53.518518518518519 32.433998803601661 0 1 0 0 
+1 53.888888888888886 32.433998803601661 0 -0.499999999999996 0.86602540378444093 0 
+1 53.703703703703702 32.754748953151456 0 0.50000000000000067 0.86602540378443826 0 
+1 53.888888888888893 33.075499102701251 0 1 0 0 
+1 54.25925925925926 33.075499102701251 0 0.50000000000000622 -0.86602540378443504 0 
+1 54.444444444444443 32.754748953151456 0 0.49999999999999784 0.86602540378443993 0 
+1 54.629629629629626 33.075499102701244 0 1 0 0 
+1 55 33.075499102701244 0 -0.49999999999999628 0.86602540378444082 0 
+1 54.814814814814817 33.396249252251039 0 0.49999999999999695 0.86602540378444037 0 
+1 55 33.716999401800834 0 -1 2.1582735598713009e-15 0 
+1 54.629629629629626 33.716999401800834 0 -0.49999999999999617 0.86602540378444082 0 
+1 54.444444444444443 34.037749551350622 0 0.49999999999999628 0.86602540378444082 0 
+1 54.629629629629626 34.358499700900417 0 1 2.1582735598713009e-15 0 
+1 55 34.358499700900417 0 -0.49999999999999717 0.86602540378444026 0 
+1 54.814814814814817 34.679249850450205 0 0.49999999999999623 0.86602540378444082 0 
+1 55 35 0 1 0 0 
+1 55.370370370370374 35 0 0.50000000000000433 -0.86602540378443615 0 
+1 55.555555555555557 34.679249850450205 0 0.49999999999999567 0.86602540378444115 0 
+1 55.74074074074074 35 0 1 0 0 
+1 56.111111111111114 35 0 0.49999999999999567 -0.86602540378444115 0 
+1 56.296296296296298 34.679249850450205 0 -0.49999999999999678 -0.86602540378444048 0 
+1 56.111111111111114 34.358499700900417 0 1 -2.5179858198498511e-15 0 
+1 56.481481481481481 34.358499700900417 0 0.49999999999999567 -0.86602540378444115 0 
+1 56.666666666666664 34.037749551350622 0 0.49999999999999567 0.86602540378444115 0 
+1 56.851851851851848 34.358499700900417 0 1 2.5179858198498511e-15 0 
+1 57.222222222222221 34.358499700900417 0 -0.49999999999999678 0.86602540378444048 0 
+1 57.037037037037038 34.679249850450205 0 0.49999999999999567 0.86602540378444115 0 
+1 57.222222222222221 35 0 1 0 0 
+1 57.592592592592595 35 0 0.49999999999999567 -0.86602540378444115 0 
+1 57.777777777777779 34.679249850450205 0 0.50000000000000433 0.86602540378443615 0 
+1 57.962962962962962 35 0 1 0 0 
+1 58.333333333333336 35 0 0.49999999999999617 -0.86602540378444082 0 
+1 58.518518518518519 34.679249850450205 0 -0.49999999999999706 -0.86602540378444037 0 
+1 58.333333333333336 34.358499700900417 0 1 -2.1582735598713009e-15 0 
+1 58.703703703703702 34.358499700900417 0 0.49999999999999617 -0.86602540378444082 0 
+1 58.888888888888886 34.037749551350622 0 -0.49999999999999617 -0.86602540378444082 0 
+1 58.703703703703702 33.716999401800834 0 -1 -4.3165471197426515e-15 0 
+1 58.333333333333336 33.716999401800827 0 0.49999999999999817 -0.86602540378443971 0 
+1 58.518518518518519 33.396249252251039 0 -0.49999999999999628 -0.86602540378444082 0 
+1 58.333333333333336 33.075499102701244 0 1 0 0 
+1 58.703703703703709 33.075499102701244 0 0.49999999999999567 -0.86602540378444115 0 
+1 58.888888888888893 32.754748953151456 0 0.499999999999996 0.86602540378444093 0 
+1 59.074074074074076 33.075499102701244 0 1 0 0 
+1 59.44444444444445 33.075499102701244 0 0.49999999999999628 -0.86602540378444082 0 
+1 59.629629629629633 32.754748953151456 0 -0.49999999999999722 -0.86602540378444026 0 
+1 59.44444444444445 32.433998803601661 0 1 -2.8776980798284012e-15 0 
+1 59.814814814814817 32.433998803601661 0 0.49999999999999628 -0.86602540378444082 0 
+1 60 32.113248654051873 0 0.49999999999999628 0.86602540378444082 0 
+1 60.185185185185183 32.433998803601661 0 1 2.8776980798284012e-15 0 
+1 60.555555555555557 32.433998803601661 0 -0.49999999999999722 0.86602540378444026 0 
+1 60.370370370370374 32.754748953151456 0 0.49999999999999628 0.86602540378444082 0 
+1 60.555555555555557 33.075499102701244 0 1 1.4388490399142006e-15 0 
+1 60.925925925925924 33.075499102701251 0 0.499999999999996 -0.86602540378444093 0 
+1 61.111111111111107 32.754748953151456 0 0.49999999999999567 0.86602540378444115 0 
+1 61.296296296296291 33.075499102701251 0 1 1.4388490399142006e-15 0 
+1 61.666666666666664 33.075499102701251 0 -0.49999999999999661 0.86602540378444059 0 
+1 61.481481481481481 33.396249252251039 0 0.49999999999999722 0.86602540378444026 0 
+1 61.666666666666664 33.716999401800834 0 -1 1.4388490399142006e-15 0 
+1 61.296296296296291 33.716999401800834 0 -0.49999999999999678 0.86602540378444048 0 
+1 61.111111111111107 34.037749551350622 0 0.49999999999999617 0.86602540378444082 0 
+1 61.296296296296291 34.358499700900417 0 1 2.1582735598713009e-15 0 
+1 61.666666666666664 34.358499700900417 0 -0.49999999999999706 0.86602540378444037 0 
+1 61.481481481481481 34.679249850450205 0 0.49999999999999617 0.86602540378444082 0 
+1 61.666666666666664 35 0 1 0 0 
+1 62.037037037037038 35 0 0.49999999999999567 -0.86602540378444115 0 
+1 62.222222222222221 34.679249850450205 0 0.50000000000000433 0.86602540378443615 0 
+1 62.407407407407405 35 0 1 0 0 
+1 62.777777777777779 35 0 0.49999999999999567 -0.86602540378444115 0 
+1 62.962962962962962 34.679249850450205 0 -0.49999999999999678 -0.86602540378444048 0 
+1 62.777777777777779 34.358499700900417 0 1 -2.5179858198498511e-15 0 
+1 63.148148148148145 34.358499700900417 0 0.49999999999999567 -0.86602540378444115 0 
+1 63.333333333333329 34.037749551350622 0 0.49999999999999567 0.86602540378444115 0 
+1 63.518518518518512 34.358499700900417 0 1 2.5179858198498511e-15 0 
+1 63.888888888888886 34.358499700900417 0 -0.49999999999999678 0.86602540378444048 0 
+1 63.703703703703702 34.679249850450205 0 0.49999999999999567 0.86602540378444115 0 
+1 63.888888888888886 35 0 1 0 0 
+1 64.259259259259252 35 0 0.50000000000000433 -0.86602540378443615 0 
+1 64.444444444444443 34.679249850450205 0 0.49999999999999567 0.86602540378444115 0 
+1 64.629629629629633 35 0 1 0 0 
+1 65 35 0 -0.49999999999999628 0.86602540378444082 0 
+1 64.81481481481481 35.320750149549795 0 0.49999999999999706 0.86602540378444037 0 
+1 65 35.641500299099583 0 -1 1.7985612998927508e-15 0 
+1 64.629629629629633 35.641500299099583 0 -0.49999999999999628 0.86602540378444082 0 
+1 64.444444444444443 35.962250448649378 0 0.49999999999999628 0.86602540378444082 0 
+1 64.629629629629633 36.283000598199166 0 1 7.194245199571003e-16 0 
+1 65 36.283000598199166 0 -0.49999999999999695 0.86602540378444037 0 
+1 64.81481481481481 36.603750747748961 0 0.49999999999999628 0.86602540378444082 0 
+1 65 36.924500897298749 0 -1 0 0 
+1 64.629629629629633 36.924500897298749 0 -0.49999999999999539 0.86602540378444137 0 
+1 64.444444444444443 37.245251046848544 0 -0.50000000000000433 -0.86602540378443615 0 
+1 64.259259259259252 36.924500897298749 0 -1 0 0 
+1 63.888888888888886 36.924500897298749 0 -0.49999999999999628 0.86602540378444082 0 
+1 63.703703703703702 37.245251046848544 0 0.49999999999999695 0.86602540378444037 0 
+1 63.888888888888886 37.566001196398339 0 -1 1.4388490399142006e-15 0 
+1 63.518518518518512 37.566001196398339 0 -0.49999999999999628 0.86602540378444082 0 
+1 63.333333333333329 37.886751345948127 0 0.49999999999999628 0.86602540378444082 0 
+1 63.518518518518512 38.207501495497922 0 1 2.8776980798284012e-15 0 
+1 63.888888888888886 38.207501495497922 0 -0.49999999999999695 0.86602540378444037 0 
+1 63.703703703703702 38.52825164504771 0 0.49999999999999628 0.86602540378444082 0 
+1 63.888888888888886 38.849001794597505 0 1 0 0 
+1 64.259259259259252 38.849001794597505 0 0.50000000000000488 -0.86602540378443582 0 
+1 64.444444444444443 38.52825164504771 0 0.49999999999999567 0.86602540378444115 0 
+1 64.629629629629633 38.849001794597505 0 1 0 0 
+1 65 38.849001794597505 0 -0.50000000000000488 0.86602540378443582 0 
+1 64.81481481481481 39.169751944147301 0 0.50000000000000366 0.86602540378443649 0 
+1 65 39.490502093697089 0 -1 -4.3165471197426018e-15 0 
+1 64.629629629629633 39.490502093697089 0 -0.50000000000000488 0.86602540378443582 0 
+1 64.444444444444443 39.811252243246884 0 0.49999999999999567 0.86602540378444115 0 
+1 64.629629629629619 40.132002392796672 0 1 0 0 
+1 65 40.132002392796672 0 -0.49999999999999695 0.86602540378444037 0 
+1 64.81481481481481 40.452752542346467 0 0.49999999999999567 0.86602540378444115 0 
+1 65 40.773502691896255 0 -1 0 0 
+1 64.629629629629619 40.773502691896255 0 -0.49999999999999567 0.86602540378444115 0 
+1 64.444444444444443 41.09425284144605 0 -0.49999999999999567 -0.86602540378444115 0 
+1 64.259259259259252 40.773502691896255 0 -1 0 0 
+1 63.888888888888886 40.773502691896255 0 -0.50000000000000555 0.86602540378443549 0 
+1 63.703703703703695 41.09425284144605 0 0.49999999999999567 0.86602540378444115 0 
+1 63.888888888888879 41.415002990995845 0 -1 -2.8776980798284343e-15 0 
+1 63.518518518518512 41.415002990995838 0 -0.50000000000000555 0.86602540378443549 0 
+1 63.333333333333329 41.735753140545633 0 -0.49999999999999695 -0.86602540378444037 0 
+1 63.148148148148145 41.415002990995838 0 -1 -5.7553961596568024e-15 0 
+1 62.777777777777771 41.415002990995838 0 0.49999999999999817 -0.86602540378443971 0 
+1 62.962962962962955 41.09425284144605 0 -0.49999999999999695 -0.86602540378444037 0 
+1 62.777777777777771 40.773502691896255 0 -1 0 0 
+1 62.407407407407405 40.773502691896255 0 -0.49999999999999567 0.86602540378444115 0 
+1 62.222222222222221 41.09425284144605 0 -0.49999999999999567 -0.86602540378444115 0 
+1 62.037037037037038 40.773502691896255 0 -1 0 0 
+1 61.666666666666664 40.773502691896255 0 -0.49999999999999567 0.86602540378444115 0 
+1 61.481481481481481 41.09425284144605 0 0.49999999999999695 0.86602540378444037 0 
+1 61.666666666666664 41.415002990995838 0 -1 0 0 
+1 61.296296296296291 41.415002990995838 0 -0.49999999999999567 0.86602540378444115 0 
+1 61.111111111111107 41.735753140545633 0 0.49999999999999695 0.86602540378444037 0 
+1 61.296296296296291 42.056503290095428 0 1 2.8776980798284012e-15 0 
+1 61.666666666666664 42.056503290095428 0 -0.49999999999999695 0.86602540378444037 0 
+1 61.481481481481481 42.377253439645216 0 0.49999999999999695 0.86602540378444037 0 
+1 61.666666666666664 42.698003589195011 0 -1 0 0 
+1 61.296296296296291 42.698003589195011 0 -0.49999999999999567 0.86602540378444115 0 
+1 61.111111111111107 43.018753738744799 0 -0.50000000000000433 -0.86602540378443615 0 
+1 60.925925925925924 42.698003589195011 0 -1 0 0 
+1 60.55555555555555 42.698003589195011 0 -0.49999999999999567 0.86602540378444115 0 
+1 60.370370370370367 43.018753738744799 0 0.49999999999999695 0.86602540378444037 0 
+1 60.55555555555555 43.339503888294594 0 -1 0 0 
+1 60.185185185185183 43.339503888294594 0 -0.49999999999999567 0.86602540378444115 0 
+1 60 43.660254037844389 0 0.49999999999999567 0.86602540378444115 0 
+1 60.185185185185183 43.981004187394177 0 1 0 0 
+1 60.55555555555555 43.981004187394177 0 -0.49999999999999695 0.86602540378444037 0 
+1 60.370370370370367 44.301754336943972 0 0.49999999999999567 0.86602540378444115 0 
+1 60.55555555555555 44.62250448649376 0 1 0 0 
+1 60.925925925925924 44.62250448649376 0 0.50000000000000433 -0.86602540378443615 0 
+1 61.111111111111107 44.301754336943972 0 0.49999999999999567 0.86602540378444115 0 
+1 61.296296296296291 44.62250448649376 0 1 0 0 
+1 61.666666666666664 44.62250448649376 0 -0.49999999999999695 0.86602540378444037 0 
+1 61.481481481481481 44.943254636043555 0 0.49999999999999695 0.86602540378444037 0 
+1 61.666666666666664 45.264004785593343 0 -1 0 0 
+1 61.296296296296291 45.264004785593343 0 -0.49999999999999695 0.86602540378444037 0 
+1 61.111111111111107 45.584754935143138 0 0.49999999999999695 0.86602540378444037 0 
+1 61.296296296296291 45.905505084692926 0 1 5.7553961596568024e-15 0 
+1 61.666666666666664 45.905505084692933 0 -0.49999999999999695 0.86602540378444037 0 
+1 61.481481481481481 46.226255234242721 0 0.49999999999999695 0.86602540378444037 0 
+1 61.666666666666664 46.547005383792516 0 1 0 0 
+1 62.037037037037038 46.547005383792516 0 0.49999999999999695 -0.86602540378444037 0 
+1 62.222222222222221 46.226255234242721 0 0.49999999999999695 0.86602540378444037 0 
+1 62.407407407407405 46.547005383792516 0 1 0 0 
+1 62.777777777777771 46.547005383792516 0 0.49999999999999695 -0.86602540378444037 0 
+1 62.962962962962955 46.226255234242721 0 -0.49999999999999944 -0.86602540378443893 0 
+1 62.777777777777771 45.905505084692933 0 1 -5.7553961596568024e-15 0 
+1 63.148148148148145 45.905505084692933 0 0.49999999999999695 -0.86602540378444037 0 
+1 63.333333333333329 45.584754935143138 0 0.50000000000000555 0.86602540378443549 0 
+1 63.518518518518512 45.905505084692933 0 1 0 0 
+1 63.888888888888879 45.905505084692933 0 -0.49999999999999695 0.86602540378444037 0 
+1 63.703703703703695 46.226255234242721 0 0.50000000000000555 0.86602540378443549 0 
+1 63.888888888888886 46.547005383792516 0 1 0 0 
+1 64.259259259259252 46.547005383792516 0 0.49999999999999695 -0.86602540378444037 0 
+1 64.444444444444443 46.226255234242721 0 0.49999999999999695 0.86602540378444037 0 
+1 64.629629629629619 46.547005383792516 0 1 0 0 
+1 65 46.547005383792516 0 -0.49999999999999695 0.86602540378444037 0 
+1 64.81481481481481 46.867755533342304 0 0.49999999999999695 0.86602540378444037 0 
+1 65 47.188505682892099 0 -1 5.7553961596568024e-15 0 
+1 64.629629629629619 47.188505682892099 0 -0.49999999999999695 0.86602540378444037 0 
+1 64.444444444444443 47.509255832441887 0 0.50000000000000555 0.86602540378443549 0 
+1 64.629629629629633 47.830005981991683 0 1 -5.7553961596568024e-15 0 
+1 65 47.830005981991683 0 -0.50000000000000311 0.86602540378443693 0 
+1 64.81481481481481 48.15075613154147 0 0.50000000000000555 0.86602540378443549 0 
+1 65 48.471506281091266 0 -1 0 0 
+1 64.629629629629633 48.471506281091266 0 -0.49999999999999445 0.86602540378444182 0 
+1 64.444444444444443 48.792256430641061 0 -0.50000000000000555 -0.86602540378443549 0 
+1 64.259259259259252 48.471506281091266 0 -1 0 0 
+1 63.888888888888886 48.471506281091266 0 -0.49999999999999695 0.86602540378444037 0 
+1 63.703703703703702 48.792256430641061 0 0.49999999999999695 0.86602540378444037 0 
+1 63.888888888888886 49.113006580190849 0 -1 5.7553961596568024e-15 0 
+1 63.518518518518512 49.113006580190856 0 -0.49999999999999695 0.86602540378444037 0 
+1 63.333333333333329 49.433756729740644 0 0.49999999999999695 0.86602540378444037 0 
+1 63.518518518518512 49.754506879290439 0 1 5.7553961596568024e-15 0 
+1 63.888888888888886 49.754506879290439 0 -0.49999999999999695 0.86602540378444037 0 
+1 63.703703703703702 50.075257028840227 0 0.49999999999999695 0.86602540378444037 0 
+1 63.888888888888886 50.396007178390022 0 1 0 0 
+1 64.259259259259252 50.396007178390022 0 0.50000000000000056 -0.86602540378443826 0 
+1 64.444444444444443 50.075257028840227 0 0.49999999999999445 0.86602540378444182 0 
+1 64.629629629629633 50.396007178390022 0 1 0 0 
+1 65 50.396007178390022 0 -0.49999999999999695 0.86602540378444037 0 
+1 64.81481481481481 50.71675732793981 0 0.49999999999999695 0.86602540378444037 0 
+1 65 51.037507477489605 0 -1 5.7553961596568024e-15 0 
+1 64.629629629629633 51.037507477489605 0 -0.49999999999999695 0.86602540378444037 0 
+1 64.444444444444443 51.358257627039393 0 0.49999999999999695 0.86602540378444037 0 
+1 64.629629629629633 51.679007776589188 0 1 5.7553961596568024e-15 0 
+1 65 51.679007776589188 0 -0.49999999999999695 0.86602540378444037 0 
+1 64.81481481481481 51.999757926138983 0 0.49999999999999695 0.86602540378444037 0 
+1 65 52.320508075688771 0 -1 0 0 
+1 64.629629629629633 52.320508075688771 0 -0.49999999999999445 0.86602540378444182 0 
+1 64.444444444444443 52.641258225238566 0 -0.50000000000000311 -0.86602540378443693 0 
+1 64.259259259259252 52.320508075688771 0 -1 0 0 
+1 63.888888888888886 52.320508075688771 0 -0.49999999999999695 0.86602540378444037 0 
+1 63.703703703703702 52.641258225238566 0 0.49999999999999695 0.86602540378444037 0 
+1 63.888888888888886 52.962008374788354 0 -1 5.7553961596568024e-15 0 
+1 63.518518518518512 52.962008374788354 0 -0.49999999999999695 0.86602540378444037 0 
+1 63.333333333333329 53.282758524338149 0 -0.49999999999999695 -0.86602540378444037 0 
+1 63.148148148148145 52.962008374788354 0 -1 -5.7553961596568024e-15 0 
+1 62.777777777777779 52.962008374788354 0 0.49999999999999695 -0.86602540378444037 0 
+1 62.962962962962962 52.641258225238566 0 -0.49999999999999695 -0.86602540378444037 0 
+1 62.777777777777779 52.320508075688771 0 -1 0 0 
+1 62.407407407407405 52.320508075688771 0 -0.50000000000000311 0.86602540378443693 0 
+1 62.222222222222221 52.641258225238566 0 -0.49999999999999445 -0.86602540378444182 0 
+1 62.037037037037038 52.320508075688771 0 -1 0 0 
+1 61.666666666666664 52.320508075688771 0 -0.49999999999999695 0.86602540378444037 0 
+1 61.481481481481481 52.641258225238566 0 0.49999999999999695 0.86602540378444037 0 
+1 61.666666666666664 52.962008374788354 0 -1 5.7553961596568024e-15 0 
+1 61.296296296296291 52.962008374788354 0 -0.49999999999999695 0.86602540378444037 0 
+1 61.111111111111107 53.282758524338149 0 0.50000000000000555 0.86602540378443549 0 
+1 61.296296296296298 53.603508673887937 0 1 0 0 
+1 61.666666666666664 53.603508673887937 0 -0.49999999999999445 0.86602540378444182 0 
+1 61.481481481481481 53.924258823437732 0 0.50000000000000555 0.86602540378443549 0 
+1 61.666666666666671 54.245008972987527 0 -1 0 0 
+1 61.296296296296298 54.245008972987527 0 -0.50000000000000311 0.86602540378443693 0 
+1 61.111111111111107 54.565759122537315 0 -0.49999999999999445 -0.86602540378444182 0 
+1 60.925925925925924 54.245008972987527 0 -1 0 0 
+1 60.555555555555557 54.245008972987527 0 -0.49999999999999445 0.86602540378444182 0 
+1 60.370370370370374 54.565759122537315 0 0.49999999999999944 0.86602540378443893 0 
+1 60.555555555555557 54.88650927208711 0 -1 0 0 
+1 60.185185185185183 54.88650927208711 0 -0.49999999999999445 0.86602540378444182 0 
+1 60 55.207259421636898 0 -0.49999999999999445 -0.86602540378444182 0 
+1 59.814814814814817 54.88650927208711 0 -1 0 0 
+1 59.44444444444445 54.88650927208711 0 0.49999999999999944 -0.86602540378443893 0 
+1 59.629629629629633 54.565759122537315 0 -0.49999999999999445 -0.86602540378444182 0 
+1 59.44444444444445 54.245008972987527 0 -1 0 0 
+1 59.074074074074076 54.245008972987527 0 -0.49999999999999445 0.86602540378444182 0 
+1 58.888888888888893 54.565759122537315 0 -0.49999999999999445 -0.86602540378444182 0 
+1 58.703703703703709 54.245008972987527 0 -1 0 0 
+1 58.333333333333336 54.245008972987527 0 0.49999999999999695 -0.86602540378444037 0 
+1 58.518518518518519 53.924258823437732 0 -0.49999999999999695 -0.86602540378444037 0 
+1 58.333333333333336 53.603508673887944 0 1 -5.7553961596568687e-15 0 
+1 58.703703703703702 53.603508673887937 0 0.49999999999999695 -0.86602540378444037 0 
+1 58.888888888888886 53.282758524338149 0 -0.49999999999999695 -0.86602540378444037 0 
+1 58.703703703703702 52.962008374788354 0 -1 -5.7553961596568024e-15 0 
+1 58.333333333333336 52.962008374788354 0 0.49999999999999695 -0.86602540378444037 0 
+1 58.518518518518519 52.641258225238566 0 -0.49999999999999695 -0.86602540378444037 0 
+1 58.333333333333336 52.320508075688771 0 -1 0 0 
+1 57.962962962962962 52.320508075688771 0 -0.50000000000000311 0.86602540378443693 0 
+1 57.777777777777779 52.641258225238566 0 -0.49999999999999445 -0.86602540378444182 0 
+1 57.592592592592595 52.320508075688771 0 -1 0 0 
+1 57.222222222222221 52.320508075688771 0 -0.49999999999999695 0.86602540378444037 0 
+1 57.037037037037038 52.641258225238566 0 0.49999999999999695 0.86602540378444037 0 
+1 57.222222222222221 52.962008374788354 0 -1 5.7553961596568024e-15 0 
+1 56.851851851851848 52.962008374788354 0 -0.49999999999999695 0.86602540378444037 0 
+1 56.666666666666664 53.282758524338149 0 -0.49999999999999695 -0.86602540378444037 0 
+1 56.481481481481481 52.962008374788354 0 -1 -5.7553961596568024e-15 0 
+1 56.111111111111114 52.962008374788354 0 0.49999999999999695 -0.86602540378444037 0 
+1 56.296296296296298 52.641258225238566 0 -0.49999999999999695 -0.86602540378444037 0 
+1 56.111111111111114 52.320508075688771 0 -1 0 0 
+1 55.74074074074074 52.320508075688771 0 -0.49999999999999445 0.86602540378444182 0 
+1 55.555555555555557 52.641258225238566 0 -0.50000000000000311 -0.86602540378443693 0 
+1 55.370370370370374 52.320508075688771 0 -1 0 0 
+1 55 52.320508075688771 0 -0.49999999999999695 0.86602540378444037 0 
+1 54.814814814814817 52.641258225238566 0 0.49999999999999695 0.86602540378444037 0 
+1 55 52.962008374788354 0 -1 5.7553961596568024e-15 0 
+1 54.629629629629626 52.962008374788354 0 -0.49999999999999695 0.86602540378444037 0 
+1 54.444444444444443 53.282758524338149 0 0.49999999999999695 0.86602540378444037 0 
+1 54.629629629629626 53.603508673887937 0 1 5.7553961596568024e-15 0 
+1 55 53.603508673887944 0 -0.49999999999999695 0.86602540378444037 0 
+1 54.814814814814817 53.924258823437732 0 0.49999999999999695 0.86602540378444037 0 
+1 55 54.245008972987527 0 -1 0 0 
+1 54.629629629629626 54.245008972987527 0 -0.49999999999999445 0.86602540378444182 0 
+1 54.444444444444443 54.565759122537315 0 -0.50000000000000311 -0.86602540378443693 0 
+1 54.25925925925926 54.245008972987527 0 -1 0 0 
+1 53.888888888888893 54.245008972987527 0 -0.49999999999999872 0.86602540378443937 0 
+1 53.703703703703702 54.565759122537315 0 0.49999999999999872 0.86602540378443937 0 
+1 53.888888888888893 54.88650927208711 0 -1 -1.1510792319313605e-14 0 
+1 53.518518518518519 54.88650927208711 0 -0.49999999999999872 0.86602540378443937 0 
+1 53.333333333333336 55.207259421636898 0 0.49999999999999872 0.86602540378443937 0 
+1 53.518518518518519 55.528009571186693 0 1 -1.1510792319313605e-14 0 
+1 53.888888888888893 55.528009571186693 0 -0.49999999999999872 0.86602540378443937 0 
+1 53.703703703703702 55.848759720736481 0 0.49999999999999872 0.86602540378443937 0 
+1 53.888888888888893 56.169509870286277 0 1 0 0 
+1 54.25925925925926 56.169509870286277 0 0.5000000000000081 -0.86602540378443404 0 
+1 54.444444444444443 55.848759720736489 0 0.49999999999999944 0.86602540378443893 0 
+1 54.629629629629626 56.169509870286277 0 1 0 0 
+1 55 56.169509870286277 0 -0.49999999999999445 0.86602540378444182 0 
+1 54.814814814814817 56.490260019836072 0 0.49999999999999944 0.86602540378443893 0 
+1 55 56.81101016938586 0 -1 0 0 
+1 54.629629629629626 56.81101016938586 0 -0.49999999999999445 0.86602540378444182 0 
+1 54.444444444444443 57.131760318935655 0 0.49999999999999445 0.86602540378444182 0 
+1 54.629629629629626 57.45251046848545 0 1 0 0 
+1 55 57.45251046848545 0 -0.49999999999999944 0.86602540378443893 0 
+1 54.814814814814817 57.773260618035238 0 0.49999999999999445 0.86602540378444182 0 
+1 55 58.094010767585033 0 -1 0 0 
+1 54.629629629629626 58.094010767585033 0 -0.49999999999999445 0.86602540378444182 0 
+1 54.444444444444443 58.414760917134828 0 -0.50000000000000311 -0.86602540378443693 0 
+1 54.25925925925926 58.094010767585033 0 -1 0 0 
+1 53.888888888888893 58.094010767585033 0 -0.49999999999999872 0.86602540378443937 0 
+1 53.703703703703702 58.414760917134828 0 0.49999999999999872 0.86602540378443937 0 
+1 53.888888888888893 58.735511066684616 0 -1 -1.1510792319313539e-14 0 
+1 53.518518518518519 58.735511066684616 0 -0.49999999999999872 0.86602540378443937 0 
+1 53.333333333333329 59.056261216234411 0 -0.49999999999999872 -0.86602540378443937 0 
+1 53.148148148148145 58.735511066684616 0 -1 0 0 
+1 52.777777777777779 58.735511066684616 0 0.50000000000000311 -0.86602540378443693 0 
+1 52.962962962962962 58.414760917134821 0 -0.49999999999999872 -0.86602540378443937 0 
+1 52.777777777777779 58.094010767585026 0 -1 0 0 
+1 52.407407407407405 58.094010767585026 0 -0.49999999999999872 0.86602540378443937 0 
+1 52.222222222222221 58.414760917134821 0 -0.49999999999999445 -0.86602540378444182 0 
+1 52.037037037037038 58.094010767585026 0 -1 0 0 
+1 51.666666666666664 58.094010767585026 0 -0.49999999999999872 0.86602540378443937 0 
+1 51.481481481481481 58.414760917134821 0 0.5000000000000081 0.86602540378443404 0 
+1 51.666666666666671 58.735511066684609 0 -1 0 0 
+1 51.296296296296298 58.735511066684609 0 -0.49999999999999872 0.86602540378443937 0 
+1 51.111111111111107 59.056261216234404 0 0.49999999999999872 0.86602540378443937 0 
+1 51.296296296296298 59.377011365784199 0 1 0 0 
+1 51.666666666666671 59.377011365784199 0 -0.5000000000000081 0.86602540378443404 0 
+1 51.481481481481481 59.697761515333987 0 0.49999999999999872 0.86602540378443937 0 
+1 51.666666666666664 60.018511664883782 0 -1 0 0 
+1 51.296296296296298 60.018511664883782 0 -0.49999999999999445 0.86602540378444182 0 
+1 51.111111111111114 60.339261814433577 0 -0.49999999999999872 -0.86602540378443937 0 
+1 50.925925925925924 60.018511664883782 0 -1 0 0 
+1 50.555555555555557 60.018511664883782 0 -0.49999999999999872 0.86602540378443937 0 
+1 50.370370370370374 60.339261814433577 0 0.50000000000000377 0.86602540378443649 0 
+1 50.555555555555557 60.660011963983365 0 -1 0 0 
+1 50.185185185185183 60.660011963983365 0 -0.49999999999999872 0.86602540378443937 0 
+1 50 60.98076211353316 0 -0.49999999999999872 -0.86602540378443937 0 
+1 49.814814814814817 60.660011963983365 0 -1 0 0 
+1 49.444444444444443 60.660011963983365 0 0.50000000000000377 -0.86602540378443649 0 
+1 49.629629629629626 60.339261814433577 0 -0.49999999999999872 -0.86602540378443937 0 
+1 49.444444444444443 60.018511664883782 0 -1 0 0 
+1 49.074074074074069 60.018511664883782 0 -0.49999999999999872 0.86602540378443937 0 
+1 48.888888888888886 60.339261814433577 0 -0.49999999999999445 -0.86602540378444182 0 
+1 48.703703703703702 60.018511664883782 0 -1 0 0 
+1 48.333333333333336 60.018511664883782 0 0.49999999999999872 -0.86602540378443937 0 
+1 48.518518518518519 59.697761515333987 0 -0.5000000000000081 -0.86602540378443404 0 
+1 48.333333333333329 59.377011365784199 0 1 0 0 
+1 48.703703703703702 59.377011365784199 0 0.49999999999999872 -0.86602540378443937 0 
+1 48.888888888888886 59.056261216234404 0 -0.49999999999999872 -0.86602540378443937 0 
+1 48.703703703703702 58.735511066684609 0 -1 0 0 
+1 48.333333333333329 58.735511066684609 0 0.5000000000000081 -0.86602540378443404 0 
+1 48.518518518518519 58.414760917134821 0 -0.49999999999999872 -0.86602540378443937 0 
+1 48.333333333333336 58.094010767585026 0 -1 0 0 
+1 47.962962962962962 58.094010767585026 0 -0.49999999999999445 0.86602540378444182 0 
+1 47.777777777777779 58.414760917134821 0 -0.49999999999999872 -0.86602540378443937 0 
+1 47.592592592592595 58.094010767585026 0 -1 0 0 
+1 47.222222222222221 58.094010767585026 0 -0.49999999999999872 0.86602540378443937 0 
+1 47.037037037037038 58.414760917134821 0 0.50000000000000311 0.86602540378443693 0 
+1 47.222222222222221 58.735511066684616 0 -1 0 0 
+1 46.851851851851855 58.735511066684616 0 -0.49999999999999872 0.86602540378443937 0 
+1 46.666666666666664 59.056261216234411 0 -0.49999999999999872 -0.86602540378443937 0 
+1 46.481481481481481 58.735511066684616 0 -1 1.1510792319313539e-14 0 
+1 46.111111111111107 58.735511066684616 0 0.50000000000000311 -0.86602540378443693 0 
+1 46.296296296296298 58.414760917134828 0 -0.49999999999999872 -0.86602540378443937 0 
+1 46.111111111111114 58.094010767585033 0 -1 0 0 
+1 45.74074074074074 58.094010767585033 0 -0.49999999999999445 0.86602540378444182 0 
+1 45.555555555555557 58.414760917134828 0 -0.49999999999999872 -0.86602540378443937 0 
+1 45.370370370370374 58.094010767585033 0 -1 0 0 
+1 45 58.094010767585033 0 0.49999999999999872 -0.86602540378443937 0 
+1 45.185185185185183 57.773260618035238 0 -0.49999999999999872 -0.86602540378443937 0 
+1 45 57.452510468485443 0 1 1.1510792319313605e-14 0 
+1 45.370370370370374 57.45251046848545 0 0.49999999999999872 -0.86602540378443937 0 
+1 45.555555555555557 57.131760318935655 0 -0.49999999999999872 -0.86602540378443937 0 
+1 45.370370370370374 56.81101016938586 0 -1 1.1510792319313605e-14 0 
+1 45 56.811010169385867 0 0.49999999999999872 -0.86602540378443937 0 
+1 45.185185185185183 56.490260019836072 0 -0.49999999999999872 -0.86602540378443937 0 
+1 45 56.169509870286277 0 1 0 0 
+1 45.370370370370374 56.169509870286277 0 0.49999999999999872 -0.86602540378443937 0 
+1 45.555555555555557 55.848759720736481 0 0.49999999999999445 0.86602540378444182 0 
+1 45.74074074074074 56.169509870286277 0 1 0 0 
+1 46.111111111111114 56.169509870286277 0 0.49999999999999872 -0.86602540378443937 0 
+1 46.296296296296298 55.848759720736481 0 -0.50000000000000311 -0.86602540378443693 0 
+1 46.111111111111107 55.528009571186693 0 1 1.1510792319313539e-14 0 
+1 46.481481481481481 55.528009571186693 0 0.49999999999999872 -0.86602540378443937 0 
+1 46.666666666666664 55.207259421636898 0 -0.49999999999999872 -0.86602540378443937 0 
+1 46.481481481481481 54.88650927208711 0 -1 1.1510792319313539e-14 0 
+1 46.111111111111107 54.88650927208711 0 0.50000000000000311 -0.86602540378443693 0 
+1 46.296296296296298 54.565759122537315 0 -0.49999999999999872 -0.86602540378443937 0 
+1 46.111111111111114 54.245008972987527 0 -1 0 0 
+1 45.74074074074074 54.245008972987527 0 -0.49999999999999445 0.86602540378444182 0 
+1 45.555555555555557 54.565759122537315 0 -0.49999999999999872 -0.86602540378443937 0 
+1 45.370370370370374 54.245008972987527 0 -1 0 0 
+1 45 54.245008972987527 0 0.50000000000000122 -0.86602540378443793 0 
+1 45.185185185185183 53.924258823437732 0 -0.49999999999999445 -0.86602540378444182 0 
+1 45 53.603508673887937 0 1 0 0 
+1 45.370370370370374 53.603508673887937 0 0.50000000000000122 -0.86602540378443793 0 
+1 45.555555555555557 53.282758524338149 0 -0.50000000000000122 -0.86602540378443793 0 
+1 45.370370370370374 52.962008374788354 0 -1 0 0 
+1 45 52.962008374788354 0 0.49999999999999445 -0.86602540378444182 0 
+1 45.185185185185183 52.641258225238566 0 -0.50000000000000122 -0.86602540378443793 0 
+1 45 52.320508075688771 0 -1 0 0 
+1 44.629629629629626 52.320508075688771 0 -0.49999999999999661 0.86602540378444059 0 
+1 44.444444444444443 52.641258225238566 0 -0.49999999999999872 -0.86602540378443937 0 
+1 44.25925925925926 52.320508075688771 0 -1 0 0 
+1 43.888888888888893 52.320508075688771 0 -0.50000000000000122 0.86602540378443793 0 
+1 43.703703703703702 52.641258225238566 0 0.49999999999999661 0.86602540378444059 0 
+1 43.888888888888886 52.962008374788354 0 -1 0 0 
+1 43.518518518518519 52.962008374788354 0 -0.50000000000000122 0.86602540378443793 0 
+1 43.333333333333336 53.282758524338149 0 -0.50000000000000122 -0.86602540378443793 0 
+1 43.148148148148145 52.962008374788354 0 -1 -5.7553961596568356e-15 0 
+1 42.777777777777779 52.962008374788354 0 0.49999999999999911 -0.86602540378443915 0 
+1 42.962962962962962 52.641258225238566 0 -0.50000000000000122 -0.86602540378443793 0 
+1 42.777777777777779 52.320508075688771 0 -1 0 0 
+1 42.407407407407405 52.320508075688771 0 -0.50000000000000122 0.86602540378443793 0 
+1 42.222222222222221 52.641258225238566 0 -0.50000000000000122 -0.86602540378443793 0 
+1 42.037037037037038 52.320508075688771 0 -1 0 0 
+1 41.666666666666664 52.320508075688771 0 -0.50000000000000122 0.86602540378443793 0 
+1 41.481481481481481 52.641258225238566 0 0.49999999999999661 0.86602540378444059 0 
+1 41.666666666666664 52.962008374788354 0 -1 0 0 
+1 41.296296296296298 52.962008374788354 0 -0.50000000000000122 0.86602540378443793 0 
+1 41.111111111111114 53.282758524338149 0 0.50000000000000122 0.86602540378443793 0 
+1 41.296296296296298 53.603508673887937 0 1 0 0 
+1 41.666666666666664 53.603508673887937 0 -0.49999999999999661 0.86602540378444059 0 
+1 41.481481481481481 53.924258823437732 0 0.50000000000000122 0.86602540378443793 0 
+1 41.666666666666671 54.245008972987527 0 -1 0 0 
+1 41.296296296296298 54.245008972987527 0 -0.49999999999999872 0.86602540378443937 0 
+1 41.111111111111114 54.565759122537315 0 -0.49999999999999661 -0.86602540378444059 0 
+1 40.925925925925931 54.245008972987527 0 -1 0 0 
+1 40.555555555555557 54.245008972987527 0 -0.49999999999999872 0.86602540378443937 0 
+1 40.370370370370374 54.565759122537315 0 0.50000000000000588 0.86602540378443527 0 
+1 40.555555555555557 54.88650927208711 0 -1 0 0 
+1 40.185185185185183 54.88650927208711 0 -0.49999999999999872 0.86602540378443937 0 
+1 40 55.207259421636898 0 -0.49999999999999872 -0.86602540378443937 0 
+1 39.814814814814817 54.88650927208711 0 -1 0 0 
+1 39.444444444444443 54.88650927208711 0 0.50000000000000588 -0.86602540378443527 0 
+1 39.629629629629633 54.565759122537315 0 -0.49999999999999872 -0.86602540378443937 0 
+1 39.444444444444443 54.245008972987527 0 -1 0 0 
+1 39.074074074074076 54.245008972987527 0 -0.49999999999999872 0.86602540378443937 0 
+1 38.888888888888893 54.565759122537315 0 -0.49999999999999767 -0.86602540378444004 0 
+1 38.703703703703702 54.245008972987527 0 -1 0 0 
+1 38.333333333333336 54.245008972987527 0 0.50000000000000122 -0.86602540378443793 0 
+1 38.518518518518519 53.924258823437732 0 -0.49999999999999767 -0.86602540378444004 0 
+1 38.333333333333336 53.603508673887937 0 1 0 0 
+1 38.703703703703702 53.603508673887937 0 0.50000000000000122 -0.86602540378443793 0 
+1 38.888888888888893 53.282758524338149 0 -0.50000000000000122 -0.86602540378443793 0 
+1 38.703703703703702 52.962008374788354 0 -1 0 0 
+1 38.333333333333336 52.962008374788354 0 0.49999999999999767 -0.86602540378444004 0 
+1 38.518518518518519 52.641258225238566 0 -0.50000000000000122 -0.86602540378443793 0 
+1 38.333333333333336 52.320508075688771 0 -1 0 0 
+1 37.962962962962962 52.320508075688771 0 -0.50000000000000011 0.8660254037844386 0 
+1 37.777777777777779 52.641258225238566 0 -0.50000000000000122 -0.86602540378443793 0 
+1 37.592592592592595 52.320508075688771 0 -1 0 0 
+1 37.222222222222221 52.320508075688771 0 -0.50000000000000067 0.86602540378443826 0 
+1 37.037037037037038 52.641258225238566 0 0.49999999999999711 0.86602540378444026 0 
+1 37.222222222222221 52.962008374788354 0 -1 0 0 
+1 36.851851851851855 52.962008374788354 0 -0.50000000000000067 0.86602540378443826 0 
+1 36.666666666666664 53.282758524338149 0 -0.50000000000000067 -0.86602540378443826 0 
+1 36.481481481481481 52.962008374788354 0 -1 -5.755396159656819e-15 0 
+1 36.111111111111114 52.962008374788354 0 0.49999999999999961 -0.86602540378443882 0 
+1 36.296296296296298 52.641258225238566 0 -0.50000000000000044 -0.86602540378443837 0 
+1 36.111111111111114 52.320508075688771 0 -1 0 0 
+1 35.74074074074074 52.320508075688771 0 -0.50000000000000056 0.86602540378443826 0 
+1 35.555555555555557 52.641258225238566 0 -0.50000000000000067 -0.86602540378443826 0 
+1 35.370370370370374 52.320508075688771 0 -1 0 0 
+1 35 52.320508075688771 0 0.50000000000000056 -0.86602540378443826 0 
+1 35.185185185185183 51.999757926138983 0 -0.5 -0.8660254037844386 0 
+1 35 51.679007776589188 0 1 -5.7553961596568166e-15 0 
+1 35.370370370370374 51.679007776589188 0 0.50000000000000056 -0.86602540378443826 0 
+1 35.555555555555557 51.358257627039393 0 -0.50000000000000089 -0.86602540378443815 0 
+1 35.370370370370374 51.037507477489605 0 -1 0 0 
+1 35 51.037507477489605 0 0.49999999999999734 -0.86602540378444015 0 
+1 35.185185185185183 50.71675732793981 0 -0.50000000000000089 -0.86602540378443815 0 
+1 35 50.396007178390022 0 1 0 0 
+1 35.370370370370374 50.396007178390022 0 0.500000000000002 -0.86602540378443749 0 
+1 35.555555555555557 50.075257028840227 0 0.49999999999999684 0.86602540378444048 0 
+1 35.74074074074074 50.396007178390022 0 1 0 0 
+1 36.111111111111114 50.396007178390022 0 0.50000000000000044 -0.86602540378443837 0 
+1 36.296296296296298 50.075257028840227 0 -0.49999999999999711 -0.86602540378444026 0 
+1 36.111111111111114 49.754506879290439 0 1 0 0 
+1 36.481481481481481 49.754506879290439 0 0.50000000000000067 -0.86602540378443826 0 
+1 36.666666666666664 49.433756729740644 0 -0.50000000000000067 -0.86602540378443826 0 
+1 36.481481481481481 49.113006580190856 0 -1 -5.755396159656819e-15 0 
+1 36.111111111111114 49.113006580190849 0 0.49999999999999961 -0.86602540378443882 0 
+1 36.296296296296298 48.792256430641061 0 -0.50000000000000044 -0.86602540378443837 0 
+1 36.111111111111114 48.471506281091266 0 -1 0 0 
+1 35.74074074074074 48.471506281091266 0 -0.499999999999997 0.86602540378444037 0 
+1 35.555555555555557 48.792256430641061 0 -0.50000000000000189 -0.86602540378443749 0 
+1 35.370370370370374 48.471506281091273 0 -1 0 0 
+1 35 48.471506281091273 0 0.50000000000000089 -0.86602540378443815 0 
+1 35.185185185185183 48.150756131541478 0 -0.49999999999999734 -0.86602540378444015 0 
+1 35 47.830005981991683 0 1 0 0 
+1 35.370370370370374 47.830005981991683 0 0.50000000000000089 -0.86602540378443815 0 
+1 35.555555555555557 47.509255832441895 0 -0.50000000000000056 -0.86602540378443826 0 
+1 35.370370370370374 47.188505682892099 0 -1 -5.7553961596568166e-15 0 
+1 35 47.188505682892099 0 0.5 -0.8660254037844386 0 
+1 35.185185185185183 46.867755533342304 0 -0.50000000000000056 -0.86602540378443826 0 
+1 35 46.547005383792516 0 1 0 0 
+1 35.370370370370374 46.547005383792516 0 0.50000000000000056 -0.86602540378443826 0 
+1 35.555555555555557 46.226255234242721 0 0.50000000000000056 0.86602540378443826 0 
+1 35.74074074074074 46.547005383792516 0 1 0 0 
+1 36.111111111111114 46.547005383792516 0 0.50000000000000044 -0.86602540378443837 0 
+1 36.296296296296298 46.226255234242721 0 -0.50000000000000011 -0.8660254037844386 0 
+1 36.111111111111114 45.905505084692933 0 1 -5.755396159656819e-15 0 
+1 36.481481481481481 45.905505084692933 0 0.50000000000000011 -0.8660254037844386 0 
+1 36.666666666666664 45.584754935143138 0 0.50000000000000067 0.86602540378443826 0 
+1 36.851851851851855 45.905505084692933 0 1 0 0 
+1 37.222222222222221 45.905505084692933 0 -0.49999999999999911 0.86602540378443915 0 
+1 37.037037037037038 46.226255234242721 0 0.50000000000000067 0.86602540378443826 0 
+1 37.222222222222221 46.547005383792516 0 1 0 0 
+1 37.592592592592595 46.547005383792516 0 0.50000000000000122 -0.86602540378443793 0 
+1 37.777777777777779 46.226255234242721 0 0.50000000000000011 0.8660254037844386 0 
+1 37.962962962962962 46.547005383792516 0 1 0 0 
+1 38.333333333333336 46.547005383792516 0 0.50000000000000011 -0.8660254037844386 0 
+1 38.518518518518519 46.226255234242721 0 -0.49999999999999911 -0.86602540378443915 0 
+1 38.333333333333336 45.905505084692933 0 1 -5.755396159656819e-15 0 
+1 38.703703703703702 45.905505084692926 0 0.50000000000000011 -0.8660254037844386 0 
+1 38.888888888888886 45.584754935143138 0 -0.50000000000000122 -0.86602540378443793 0 
+1 38.703703703703702 45.264004785593343 0 -1 5.7553961596568277e-15 0 
+1 38.333333333333336 45.26400478559335 0 0.49999999999999661 -0.86602540378444059 0 
+1 38.518518518518519 44.943254636043555 0 -0.50000000000000122 -0.86602540378443793 0 
+1 38.333333333333336 44.62250448649376 0 1 0 0 
+1 38.703703703703702 44.62250448649376 0 0.5 -0.8660254037844386 0 
+1 38.888888888888886 44.301754336943972 0 0.5 0.8660254037844386 0 
+1 39.074074074074076 44.62250448649376 0 1 0 0 
+1 39.444444444444443 44.62250448649376 0 0.49999999999999889 -0.86602540378443926 0 
+1 39.629629629629633 44.301754336943972 0 -0.50000000000000122 -0.86602540378443793 0 
+1 39.444444444444443 43.981004187394177 0 1 0 0 
+1 39.814814814814817 43.981004187394177 0 0.5 -0.8660254037844386 0 
+1 40 43.660254037844389 0 -0.5 -0.8660254037844386 0 
+1 39.814814814814817 43.339503888294594 0 -1 0 0 
+1 39.444444444444443 43.339503888294594 0 0.50000000000000122 -0.86602540378443793 0 
+1 39.629629629629633 43.018753738744799 0 -0.49999999999999889 -0.86602540378443926 0 
+1 39.444444444444443 42.698003589195011 0 -1 0 0 
+1 39.074074074074076 42.698003589195011 0 -0.5 0.8660254037844386 0 
+1 38.888888888888886 43.018753738744799 0 -0.5 -0.8660254037844386 0 
+1 38.703703703703702 42.698003589195011 0 -1 0 0 
+1 38.333333333333336 42.698003589195011 0 0.50000000000000122 -0.86602540378443793 0 
+1 38.518518518518519 42.377253439645216 0 -0.49999999999999784 -0.86602540378443993 0 
+1 38.333333333333336 42.056503290095428 0 1 0 0 
+1 38.703703703703702 42.056503290095428 0 0.50000000000000122 -0.86602540378443793 0 
+1 38.888888888888886 41.735753140545633 0 -0.49999999999999889 -0.86602540378443926 0 
+1 38.703703703703702 41.415002990995838 0 -1 0 0 
+1 38.333333333333336 41.415002990995838 0 0.50000000000000122 -0.86602540378443793 0 
+1 38.518518518518519 41.09425284144605 0 -0.49999999999999889 -0.86602540378443926 0 
+1 38.333333333333336 40.773502691896255 0 -1 0 0 
+1 37.962962962962962 40.773502691896255 0 -0.5 0.8660254037844386 0 
+1 37.777777777777779 41.09425284144605 0 -0.49999999999999889 -0.86602540378443926 0 
+1 37.592592592592595 40.773502691896255 0 -1 0 0 
+1 37.222222222222221 40.773502691896255 0 -0.49999999999999944 0.86602540378443893 0 
+1 37.037037037037038 41.09425284144605 0 0.50000000000000178 0.8660254037844376 0 
+1 37.222222222222221 41.415002990995838 0 -1 0 0 
+1 36.851851851851855 41.415002990995838 0 -0.49999999999999944 0.86602540378443893 0 
+1 36.666666666666664 41.735753140545633 0 -0.49999999999999944 -0.86602540378443893 0 
+1 36.481481481481481 41.415002990995838 0 -1 0 0 
+1 36.111111111111114 41.415002990995838 0 0.50000000000000155 -0.86602540378443782 0 
+1 36.296296296296298 41.09425284144605 0 -0.49999999999999944 -0.86602540378443893 0 
+1 36.111111111111114 40.773502691896255 0 -1 0 0 
+1 35.74074074074074 40.773502691896255 0 -0.49999999999999944 0.86602540378443893 0 
+1 35.555555555555557 41.09425284144605 0 -0.49999999999999944 -0.86602540378443893 0 
+1 35.370370370370374 40.773502691896255 0 -1 0 0 
+1 35 40.773502691896255 0 0.50000000000000067 -0.86602540378443826 0 
+1 35.185185185185183 40.452752542346467 0 -0.49999999999999983 -0.86602540378443871 0 
+1 35 40.132002392796672 0 1 -2.8776980798284083e-15 0 
+1 35.370370370370374 40.132002392796672 0 0.50000000000000067 -0.86602540378443826 0 
+1 35.555555555555557 39.811252243246884 0 -0.49999999999999967 -0.86602540378443882 0 
+1 35.370370370370374 39.490502093697089 0 -1 -1.4388490399142032e-15 0 
+1 35 39.490502093697089 0 0.50000000000000078 -0.86602540378443815 0 
+1 35.185185185185183 39.169751944147301 0 -0.49999999999999972 -0.86602540378443882 0 
+1 35 38.849001794597505 0 1 0 0 
+1 35.370370370370374 38.849001794597505 0 0.49999999999999906 -0.86602540378443915 0 
+1 35.555555555555557 38.52825164504771 0 0.50000000000000011 0.8660254037844386 0 
+1 35.74074074074074 38.849001794597505 0 1 0 0 
+1 36.111111111111114 38.849001794597505 0 0.50000000000000011 -0.8660254037844386 0 
+1 36.296296296296298 38.52825164504771 0 -0.49999999999999944 -0.86602540378443893 0 
+1 36.111111111111114 38.207501495497922 0 1 1.4388490399142028e-15 0 
+1 36.481481481481481 38.207501495497922 0 0.50000000000000011 -0.8660254037844386 0 
+1 36.666666666666664 37.886751345948127 0 -0.50000000000000011 -0.8660254037844386 0 
+1 36.481481481481481 37.566001196398339 0 -1 1.4388490399142028e-15 0 
+1 36.111111111111114 37.566001196398339 0 0.49999999999999944 -0.86602540378443893 0 
+1 36.296296296296298 37.245251046848544 0 -0.50000000000000011 -0.8660254037844386 0 
+1 36.111111111111114 36.924500897298749 0 -1 0 0 
+1 35.74074074074074 36.924500897298749 0 -0.50000000000000011 0.8660254037844386 0 
+1 35.555555555555557 37.245251046848544 0 -0.49999999999999994 -0.86602540378443871 0 
+1 35.370370370370374 36.924500897298749 0 -1 0 0 
+1 35 36.924500897298749 0 0.49999999999999989 -0.86602540378443871 0 
+1 35.185185185185183 36.603750747748961 0 -0.5 -0.8660254037844386 0 
+1 35 36.283000598199166 0 1 0 0 
+1 35.370370370370374 36.283000598199166 0 0.49999999999999994 -0.86602540378443871 0 
+1 35.555555555555557 35.962250448649378 0 -0.50000000000000011 -0.8660254037844386 0 
+1 35.370370370370374 35.641500299099583 0 -1 0 0 
+1 35 35.641500299099583 0 0.49999999999999994 -0.86602540378443871 0 
+1 35.185185185185183 35.320750149549795 0 -0.50000000000000011 -0.8660254037844386 0 
+Polygon3D 0
+PolygonOnTriangulations 2304
+2 1 2 
+p 0.1 1 0 1.23456790123457 
+2 1 2 
+p 0.1 1 0 1.23456790123457 
+2 2 3 
+p 0.1 1 0 1.23456790123457 
+2 2 3 
+p 0.1 1 0 1.23456790123457 
+2 3 4 
+p 0.1 1 0 1.23456790123457 
+2 3 4 
+p 0.1 1 0 1.23456790123457 
+2 4 5 
+p 0.1 1 0 1.23456790123457 
+2 4 5 
+p 0.1 1 0 1.23456790123457 
+2 5 6 
+p 0.1 1 0 1.23456790123457 
+2 5 6 
+p 0.1 1 0 1.23456790123457 
+2 6 7 
+p 0.1 1 0 1.23456790123457 
+2 6 7 
+p 0.1 1 0 1.23456790123457 
+2 7 8 
+p 0.1 1 0 1.23456790123457 
+2 7 8 
+p 0.1 1 0 1.23456790123457 
+2 8 9 
+p 0.1 1 0 1.23456790123457 
+2 8 9 
+p 0.1 1 0 1.23456790123457 
+2 9 10 
+p 0.1 1 0 1.23456790123457 
+2 9 10 
+p 0.1 1 0 1.23456790123457 
+2 10 11 
+p 0.1 1 0 1.23456790123457 
+2 10 11 
+p 0.1 1 0 1.23456790123457 
+2 11 12 
+p 0.1 1 0 1.23456790123457 
+2 11 12 
+p 0.1 1 0 1.23456790123457 
+2 12 13 
+p 0.1 1 0 1.23456790123457 
+2 12 13 
+p 0.1 1 0 1.23456790123457 
+2 13 14 
+p 0.1 1 0 1.23456790123457 
+2 13 14 
+p 0.1 1 0 1.23456790123457 
+2 14 15 
+p 0.1 1 0 1.23456790123457 
+2 14 15 
+p 0.1 1 0 1.23456790123457 
+2 15 16 
+p 0.1 1 0 1.23456790123457 
+2 15 16 
+p 0.1 1 0 1.23456790123457 
+2 16 17 
+p 0.1 1 0 1.23456790123457 
+2 16 17 
+p 0.1 1 0 1.23456790123457 
+2 17 18 
+p 0.1 1 0 1.23456790123457 
+2 17 18 
+p 0.1 1 0 1.23456790123457 
+2 18 19 
+p 0.1 1 0 1.23456790123457 
+2 18 19 
+p 0.1 1 0 1.23456790123457 
+2 19 20 
+p 0.1 1 0 1.23456790123457 
+2 19 20 
+p 0.1 1 0 1.23456790123457 
+2 20 21 
+p 0.1 1 0 1.23456790123457 
+2 20 21 
+p 0.1 1 0 1.23456790123457 
+2 21 22 
+p 0.1 1 0 1.23456790123457 
+2 21 22 
+p 0.1 1 0 1.23456790123457 
+2 22 23 
+p 0.1 1 0 1.23456790123457 
+2 22 23 
+p 0.1 1 0 1.23456790123457 
+2 23 24 
+p 0.1 1 0 1.23456790123457 
+2 23 24 
+p 0.1 1 0 1.23456790123457 
+2 24 25 
+p 0.1 1 0 1.23456790123457 
+2 24 25 
+p 0.1 1 0 1.23456790123457 
+2 25 26 
+p 0.1 1 0 1.23456790123457 
+2 25 26 
+p 0.1 1 0 1.23456790123457 
+2 26 27 
+p 0.1 1 0 1.23456790123457 
+2 26 27 
+p 0.1 1 0 1.23456790123457 
+2 27 28 
+p 0.1 1 0 1.23456790123457 
+2 27 28 
+p 0.1 1 0 1.23456790123457 
+2 28 29 
+p 0.1 1 0 1.23456790123457 
+2 28 29 
+p 0.1 1 0 1.23456790123457 
+2 29 30 
+p 0.1 1 0 1.23456790123457 
+2 29 30 
+p 0.1 1 0 1.23456790123457 
+2 30 31 
+p 0.1 1 0 1.23456790123457 
+2 30 31 
+p 0.1 1 0 1.23456790123457 
+2 31 32 
+p 0.1 1 0 1.23456790123457 
+2 31 32 
+p 0.1 1 0 1.23456790123457 
+2 32 33 
+p 0.1 1 0 1.23456790123457 
+2 32 33 
+p 0.1 1 0 1.23456790123457 
+2 33 34 
+p 0.1 1 0 1.23456790123457 
+2 33 34 
+p 0.1 1 0 1.23456790123457 
+2 34 35 
+p 0.1 1 0 1.23456790123457 
+2 34 35 
+p 0.1 1 0 1.23456790123457 
+2 35 36 
+p 0.1 1 0 1.23456790123457 
+2 35 36 
+p 0.1 1 0 1.23456790123457 
+2 36 37 
+p 0.1 1 0 1.23456790123457 
+2 36 37 
+p 0.1 1 0 1.23456790123457 
+2 37 38 
+p 0.1 1 0 1.23456790123457 
+2 37 38 
+p 0.1 1 0 1.23456790123457 
+2 38 39 
+p 0.1 1 0 1.23456790123457 
+2 38 39 
+p 0.1 1 0 1.23456790123457 
+2 39 40 
+p 0.1 1 0 1.23456790123457 
+2 39 40 
+p 0.1 1 0 1.23456790123457 
+2 40 41 
+p 0.1 1 0 1.23456790123457 
+2 40 41 
+p 0.1 1 0 1.23456790123457 
+2 41 42 
+p 0.1 1 0 1.23456790123457 
+2 41 42 
+p 0.1 1 0 1.23456790123457 
+2 42 43 
+p 0.1 1 0 1.23456790123457 
+2 42 43 
+p 0.1 1 0 1.23456790123457 
+2 43 44 
+p 0.1 1 0 1.23456790123457 
+2 43 44 
+p 0.1 1 0 1.23456790123457 
+2 44 45 
+p 0.1 1 0 1.23456790123457 
+2 44 45 
+p 0.1 1 0 1.23456790123457 
+2 45 46 
+p 0.1 1 0 1.23456790123457 
+2 45 46 
+p 0.1 1 0 1.23456790123457 
+2 46 47 
+p 0.1 1 0 1.23456790123457 
+2 46 47 
+p 0.1 1 0 1.23456790123457 
+2 47 48 
+p 0.1 1 0 1.23456790123457 
+2 47 48 
+p 0.1 1 0 1.23456790123457 
+2 48 49 
+p 0.1 1 0 1.23456790123457 
+2 48 49 
+p 0.1 1 0 1.23456790123457 
+2 49 50 
+p 0.1 1 0 1.23456790123457 
+2 49 50 
+p 0.1 1 0 1.23456790123457 
+2 50 51 
+p 0.1 1 0 1.23456790123457 
+2 50 51 
+p 0.1 1 0 1.23456790123457 
+2 51 52 
+p 0.1 1 0 1.23456790123457 
+2 51 52 
+p 0.1 1 0 1.23456790123457 
+2 52 53 
+p 0.1 1 0 1.23456790123457 
+2 52 53 
+p 0.1 1 0 1.23456790123457 
+2 53 54 
+p 0.1 1 0 1.23456790123457 
+2 53 54 
+p 0.1 1 0 1.23456790123457 
+2 54 55 
+p 0.1 1 0 1.23456790123457 
+2 54 55 
+p 0.1 1 0 1.23456790123457 
+2 55 56 
+p 0.1 1 0 1.23456790123457 
+2 55 56 
+p 0.1 1 0 1.23456790123457 
+2 56 57 
+p 0.1 1 0 1.23456790123457 
+2 56 57 
+p 0.1 1 0 1.23456790123457 
+2 57 58 
+p 0.1 1 0 1.23456790123457 
+2 57 58 
+p 0.1 1 0 1.23456790123457 
+2 58 59 
+p 0.1 1 0 1.23456790123457 
+2 58 59 
+p 0.1 1 0 1.23456790123457 
+2 59 60 
+p 0.1 1 0 1.23456790123457 
+2 59 60 
+p 0.1 1 0 1.23456790123457 
+2 60 61 
+p 0.1 1 0 1.23456790123457 
+2 60 61 
+p 0.1 1 0 1.23456790123457 
+2 61 62 
+p 0.1 1 0 1.23456790123457 
+2 61 62 
+p 0.1 1 0 1.23456790123457 
+2 62 63 
+p 0.1 1 0 1.23456790123457 
+2 62 63 
+p 0.1 1 0 1.23456790123457 
+2 63 64 
+p 0.1 1 0 1.23456790123457 
+2 63 64 
+p 0.1 1 0 1.23456790123457 
+2 64 65 
+p 0.1 1 0 1.23456790123457 
+2 64 65 
+p 0.1 1 0 1.23456790123457 
+2 65 66 
+p 0.1 1 0 1.23456790123457 
+2 65 66 
+p 0.1 1 0 1.23456790123457 
+2 66 67 
+p 0.1 1 0 1.23456790123457 
+2 66 67 
+p 0.1 1 0 1.23456790123457 
+2 67 68 
+p 0.1 1 0 1.23456790123456 
+2 67 68 
+p 0.1 1 0 1.23456790123456 
+2 68 69 
+p 0.1 1 0 1.23456790123457 
+2 68 69 
+p 0.1 1 0 1.23456790123457 
+2 69 70 
+p 0.1 1 0 1.23456790123457 
+2 69 70 
+p 0.1 1 0 1.23456790123457 
+2 70 71 
+p 0.1 1 0 1.23456790123456 
+2 70 71 
+p 0.1 1 0 1.23456790123456 
+2 71 72 
+p 0.1 1 0 1.23456790123457 
+2 71 72 
+p 0.1 1 0 1.23456790123457 
+2 72 73 
+p 0.1 1 0 1.23456790123457 
+2 72 73 
+p 0.1 1 0 1.23456790123457 
+2 73 74 
+p 0.1 1 0 1.23456790123457 
+2 73 74 
+p 0.1 1 0 1.23456790123457 
+2 74 75 
+p 0.1 1 0 1.23456790123457 
+2 74 75 
+p 0.1 1 0 1.23456790123457 
+2 75 76 
+p 0.1 1 0 1.23456790123457 
+2 75 76 
+p 0.1 1 0 1.23456790123457 
+2 76 77 
+p 0.1 1 0 1.23456790123457 
+2 76 77 
+p 0.1 1 0 1.23456790123457 
+2 77 78 
+p 0.1 1 0 1.23456790123457 
+2 77 78 
+p 0.1 1 0 1.23456790123457 
+2 78 79 
+p 0.1 1 0 1.23456790123457 
+2 78 79 
+p 0.1 1 0 1.23456790123457 
+2 79 80 
+p 0.1 1 0 1.23456790123457 
+2 79 80 
+p 0.1 1 0 1.23456790123457 
+2 80 81 
+p 0.1 1 0 1.23456790123457 
+2 80 81 
+p 0.1 1 0 1.23456790123457 
+2 81 82 
+p 0.1 1 0 1.23456790123457 
+2 81 82 
+p 0.1 1 0 1.23456790123457 
+2 82 83 
+p 0.1 1 0 1.23456790123457 
+2 82 83 
+p 0.1 1 0 1.23456790123457 
+2 83 84 
+p 0.1 1 0 1.23456790123457 
+2 83 84 
+p 0.1 1 0 1.23456790123457 
+2 84 85 
+p 0.1 1 0 1.23456790123457 
+2 84 85 
+p 0.1 1 0 1.23456790123457 
+2 85 86 
+p 0.1 1 0 1.23456790123457 
+2 85 86 
+p 0.1 1 0 1.23456790123457 
+2 86 87 
+p 0.1 1 0 1.23456790123457 
+2 86 87 
+p 0.1 1 0 1.23456790123457 
+2 87 88 
+p 0.1 1 0 1.23456790123457 
+2 87 88 
+p 0.1 1 0 1.23456790123457 
+2 88 89 
+p 0.1 1 0 1.23456790123457 
+2 88 89 
+p 0.1 1 0 1.23456790123457 
+2 89 90 
+p 0.1 1 0 1.23456790123457 
+2 89 90 
+p 0.1 1 0 1.23456790123457 
+2 90 91 
+p 0.1 1 0 1.23456790123456 
+2 90 91 
+p 0.1 1 0 1.23456790123456 
+2 91 92 
+p 0.1 1 0 1.23456790123456 
+2 91 92 
+p 0.1 1 0 1.23456790123456 
+2 92 93 
+p 0.1 1 0 1.23456790123457 
+2 92 93 
+p 0.1 1 0 1.23456790123457 
+2 93 94 
+p 0.1 1 0 1.23456790123457 
+2 93 94 
+p 0.1 1 0 1.23456790123457 
+2 94 95 
+p 0.1 1 0 1.23456790123456 
+2 94 95 
+p 0.1 1 0 1.23456790123456 
+2 95 96 
+p 0.1 1 0 1.23456790123457 
+2 95 96 
+p 0.1 1 0 1.23456790123457 
+2 96 97 
+p 0.1 1 0 1.23456790123457 
+2 96 97 
+p 0.1 1 0 1.23456790123457 
+2 97 98 
+p 0.1 1 0 1.23456790123457 
+2 97 98 
+p 0.1 1 0 1.23456790123457 
+2 98 99 
+p 0.1 1 0 1.23456790123457 
+2 98 99 
+p 0.1 1 0 1.23456790123457 
+2 99 100 
+p 0.1 1 0 1.23456790123457 
+2 99 100 
+p 0.1 1 0 1.23456790123457 
+2 100 101 
+p 0.1 1 0 1.23456790123457 
+2 100 101 
+p 0.1 1 0 1.23456790123457 
+2 101 102 
+p 0.1 1 0 1.23456790123457 
+2 101 102 
+p 0.1 1 0 1.23456790123457 
+2 102 103 
+p 0.1 1 0 1.23456790123457 
+2 102 103 
+p 0.1 1 0 1.23456790123457 
+2 103 104 
+p 0.1 1 0 1.23456790123456 
+2 103 104 
+p 0.1 1 0 1.23456790123456 
+2 104 105 
+p 0.1 1 0 1.23456790123457 
+2 104 105 
+p 0.1 1 0 1.23456790123457 
+2 105 106 
+p 0.1 1 0 1.23456790123457 
+2 105 106 
+p 0.1 1 0 1.23456790123457 
+2 106 107 
+p 0.1 1 0 1.23456790123456 
+2 106 107 
+p 0.1 1 0 1.23456790123456 
+2 107 108 
+p 0.1 1 0 1.23456790123457 
+2 107 108 
+p 0.1 1 0 1.23456790123457 
+2 108 109 
+p 0.1 1 0 1.23456790123457 
+2 108 109 
+p 0.1 1 0 1.23456790123457 
+2 109 110 
+p 0.1 1 0 1.23456790123457 
+2 109 110 
+p 0.1 1 0 1.23456790123457 
+2 110 111 
+p 0.1 1 0 1.23456790123457 
+2 110 111 
+p 0.1 1 0 1.23456790123457 
+2 111 112 
+p 0.1 1 0 1.23456790123457 
+2 111 112 
+p 0.1 1 0 1.23456790123457 
+2 112 113 
+p 0.1 1 0 1.23456790123457 
+2 112 113 
+p 0.1 1 0 1.23456790123457 
+2 113 114 
+p 0.1 1 0 1.23456790123457 
+2 113 114 
+p 0.1 1 0 1.23456790123457 
+2 114 115 
+p 0.1 1 0 1.23456790123457 
+2 114 115 
+p 0.1 1 0 1.23456790123457 
+2 115 116 
+p 0.1 1 0 1.23456790123457 
+2 115 116 
+p 0.1 1 0 1.23456790123457 
+2 116 117 
+p 0.1 1 0 1.23456790123457 
+2 116 117 
+p 0.1 1 0 1.23456790123457 
+2 117 118 
+p 0.1 1 0 1.23456790123457 
+2 117 118 
+p 0.1 1 0 1.23456790123457 
+2 118 119 
+p 0.1 1 0 1.23456790123457 
+2 118 119 
+p 0.1 1 0 1.23456790123457 
+2 119 120 
+p 0.1 1 0 1.23456790123457 
+2 119 120 
+p 0.1 1 0 1.23456790123457 
+2 120 121 
+p 0.1 1 0 1.23456790123457 
+2 120 121 
+p 0.1 1 0 1.23456790123457 
+2 121 122 
+p 0.1 1 0 1.23456790123457 
+2 121 122 
+p 0.1 1 0 1.23456790123457 
+2 122 123 
+p 0.1 1 0 1.23456790123457 
+2 122 123 
+p 0.1 1 0 1.23456790123457 
+2 123 124 
+p 0.1 1 0 1.23456790123457 
+2 123 124 
+p 0.1 1 0 1.23456790123457 
+2 124 125 
+p 0.1 1 0 1.23456790123457 
+2 124 125 
+p 0.1 1 0 1.23456790123457 
+2 125 126 
+p 0.1 1 0 1.23456790123457 
+2 125 126 
+p 0.1 1 0 1.23456790123457 
+2 126 127 
+p 0.1 1 0 1.23456790123457 
+2 126 127 
+p 0.1 1 0 1.23456790123457 
+2 127 128 
+p 0.1 1 0 1.23456790123456 
+2 127 128 
+p 0.1 1 0 1.23456790123456 
+2 128 129 
+p 0.1 1 0 1.23456790123457 
+2 128 129 
+p 0.1 1 0 1.23456790123457 
+2 129 130 
+p 0.1 1 0 1.23456790123457 
+2 129 130 
+p 0.1 1 0 1.23456790123457 
+2 130 131 
+p 0.1 1 0 1.23456790123456 
+2 130 131 
+p 0.1 1 0 1.23456790123456 
+2 131 132 
+p 0.1 1 0 1.23456790123457 
+2 131 132 
+p 0.1 1 0 1.23456790123457 
+2 132 133 
+p 0.1 1 0 1.23456790123457 
+2 132 133 
+p 0.1 1 0 1.23456790123457 
+2 133 134 
+p 0.1 1 0 1.23456790123457 
+2 133 134 
+p 0.1 1 0 1.23456790123457 
+2 134 135 
+p 0.1 1 0 1.23456790123457 
+2 134 135 
+p 0.1 1 0 1.23456790123457 
+2 135 136 
+p 0.1 1 0 1.23456790123457 
+2 135 136 
+p 0.1 1 0 1.23456790123457 
+2 136 137 
+p 0.1 1 0 1.23456790123457 
+2 136 137 
+p 0.1 1 0 1.23456790123457 
+2 137 138 
+p 0.1 1 0 1.23456790123457 
+2 137 138 
+p 0.1 1 0 1.23456790123457 
+2 138 139 
+p 0.1 1 0 1.23456790123457 
+2 138 139 
+p 0.1 1 0 1.23456790123457 
+2 139 140 
+p 0.1 1 0 1.23456790123457 
+2 139 140 
+p 0.1 1 0 1.23456790123457 
+2 140 141 
+p 0.1 1 0 1.23456790123457 
+2 140 141 
+p 0.1 1 0 1.23456790123457 
+2 141 142 
+p 0.1 1 0 1.23456790123457 
+2 141 142 
+p 0.1 1 0 1.23456790123457 
+2 142 143 
+p 0.1 1 0 1.23456790123457 
+2 142 143 
+p 0.1 1 0 1.23456790123457 
+2 143 144 
+p 0.1 1 0 1.23456790123457 
+2 143 144 
+p 0.1 1 0 1.23456790123457 
+2 144 145 
+p 0.1 1 0 1.23456790123457 
+2 144 145 
+p 0.1 1 0 1.23456790123457 
+2 145 146 
+p 0.1 1 0 1.23456790123457 
+2 145 146 
+p 0.1 1 0 1.23456790123457 
+2 146 147 
+p 0.1 1 0 1.23456790123457 
+2 146 147 
+p 0.1 1 0 1.23456790123457 
+2 147 148 
+p 0.1 1 0 1.23456790123457 
+2 147 148 
+p 0.1 1 0 1.23456790123457 
+2 148 149 
+p 0.1 1 0 1.23456790123457 
+2 148 149 
+p 0.1 1 0 1.23456790123457 
+2 149 150 
+p 0.1 1 0 1.23456790123457 
+2 149 150 
+p 0.1 1 0 1.23456790123457 
+2 150 151 
+p 0.1 1 0 1.23456790123457 
+2 150 151 
+p 0.1 1 0 1.23456790123457 
+2 151 152 
+p 0.1 1 0 1.23456790123456 
+2 151 152 
+p 0.1 1 0 1.23456790123456 
+2 152 153 
+p 0.1 1 0 1.23456790123457 
+2 152 153 
+p 0.1 1 0 1.23456790123457 
+2 153 154 
+p 0.1 1 0 1.23456790123457 
+2 153 154 
+p 0.1 1 0 1.23456790123457 
+2 154 155 
+p 0.1 1 0 1.23456790123456 
+2 154 155 
+p 0.1 1 0 1.23456790123456 
+2 155 156 
+p 0.1 1 0 1.23456790123457 
+2 155 156 
+p 0.1 1 0 1.23456790123457 
+2 156 157 
+p 0.1 1 0 1.23456790123457 
+2 156 157 
+p 0.1 1 0 1.23456790123457 
+2 157 158 
+p 0.1 1 0 1.23456790123456 
+2 157 158 
+p 0.1 1 0 1.23456790123456 
+2 158 159 
+p 0.1 1 0 1.23456790123457 
+2 158 159 
+p 0.1 1 0 1.23456790123457 
+2 159 160 
+p 0.1 1 0 1.23456790123456 
+2 159 160 
+p 0.1 1 0 1.23456790123456 
+2 160 161 
+p 0.1 1 0 1.23456790123457 
+2 160 161 
+p 0.1 1 0 1.23456790123457 
+2 161 162 
+p 0.1 1 0 1.23456790123457 
+2 161 162 
+p 0.1 1 0 1.23456790123457 
+2 162 163 
+p 0.1 1 0 1.23456790123456 
+2 162 163 
+p 0.1 1 0 1.23456790123456 
+2 163 164 
+p 0.1 1 0 1.23456790123457 
+2 163 164 
+p 0.1 1 0 1.23456790123457 
+2 164 165 
+p 0.1 1 0 1.23456790123457 
+2 164 165 
+p 0.1 1 0 1.23456790123457 
+2 165 166 
+p 0.1 1 0 1.23456790123456 
+2 165 166 
+p 0.1 1 0 1.23456790123456 
+2 166 167 
+p 0.1 1 0 1.23456790123457 
+2 166 167 
+p 0.1 1 0 1.23456790123457 
+2 167 168 
+p 0.1 1 0 1.23456790123456 
+2 167 168 
+p 0.1 1 0 1.23456790123456 
+2 168 169 
+p 0.1 1 0 1.23456790123456 
+2 168 169 
+p 0.1 1 0 1.23456790123456 
+2 169 170 
+p 0.1 1 0 1.23456790123457 
+2 169 170 
+p 0.1 1 0 1.23456790123457 
+2 170 171 
+p 0.1 1 0 1.23456790123457 
+2 170 171 
+p 0.1 1 0 1.23456790123457 
+2 171 172 
+p 0.1 1 0 1.23456790123457 
+2 171 172 
+p 0.1 1 0 1.23456790123457 
+2 172 173 
+p 0.1 1 0 1.23456790123456 
+2 172 173 
+p 0.1 1 0 1.23456790123456 
+2 173 174 
+p 0.1 1 0 1.23456790123457 
+2 173 174 
+p 0.1 1 0 1.23456790123457 
+2 174 175 
+p 0.1 1 0 1.23456790123456 
+2 174 175 
+p 0.1 1 0 1.23456790123456 
+2 175 176 
+p 0.1 1 0 1.23456790123456 
+2 175 176 
+p 0.1 1 0 1.23456790123456 
+2 176 177 
+p 0.1 1 0 1.23456790123457 
+2 176 177 
+p 0.1 1 0 1.23456790123457 
+2 177 178 
+p 0.1 1 0 1.23456790123457 
+2 177 178 
+p 0.1 1 0 1.23456790123457 
+2 178 179 
+p 0.1 1 0 1.23456790123456 
+2 178 179 
+p 0.1 1 0 1.23456790123456 
+2 179 180 
+p 0.1 1 0 1.23456790123457 
+2 179 180 
+p 0.1 1 0 1.23456790123457 
+2 180 181 
+p 0.1 1 0 1.23456790123457 
+2 180 181 
+p 0.1 1 0 1.23456790123457 
+2 181 182 
+p 0.1 1 0 1.23456790123456 
+2 181 182 
+p 0.1 1 0 1.23456790123456 
+2 182 183 
+p 0.1 1 0 1.23456790123457 
+2 182 183 
+p 0.1 1 0 1.23456790123457 
+2 183 184 
+p 0.1 1 0 1.23456790123456 
+2 183 184 
+p 0.1 1 0 1.23456790123456 
+2 184 185 
+p 0.1 1 0 1.23456790123457 
+2 184 185 
+p 0.1 1 0 1.23456790123457 
+2 185 186 
+p 0.1 1 0 1.23456790123456 
+2 185 186 
+p 0.1 1 0 1.23456790123456 
+2 186 187 
+p 0.1 1 0 1.23456790123456 
+2 186 187 
+p 0.1 1 0 1.23456790123456 
+2 187 188 
+p 0.1 1 0 1.23456790123457 
+2 187 188 
+p 0.1 1 0 1.23456790123457 
+2 188 189 
+p 0.1 1 0 1.23456790123457 
+2 188 189 
+p 0.1 1 0 1.23456790123457 
+2 189 190 
+p 0.1 1 0 1.23456790123456 
+2 189 190 
+p 0.1 1 0 1.23456790123456 
+2 190 191 
+p 0.1 1 0 1.23456790123457 
+2 190 191 
+p 0.1 1 0 1.23456790123457 
+2 191 192 
+p 0.1 1 0 1.23456790123456 
+2 191 192 
+p 0.1 1 0 1.23456790123456 
+2 192 193 
+p 0.1 1 0 1.23456790123456 
+2 192 193 
+p 0.1 1 0 1.23456790123456 
+2 193 194 
+p 0.1 1 0 1.23456790123457 
+2 193 194 
+p 0.1 1 0 1.23456790123457 
+2 194 195 
+p 0.1 1 0 1.23456790123457 
+2 194 195 
+p 0.1 1 0 1.23456790123457 
+2 195 196 
+p 0.1 1 0 1.23456790123457 
+2 195 196 
+p 0.1 1 0 1.23456790123457 
+2 196 197 
+p 0.1 1 0 1.23456790123457 
+2 196 197 
+p 0.1 1 0 1.23456790123457 
+2 197 198 
+p 0.1 1 0 1.23456790123457 
+2 197 198 
+p 0.1 1 0 1.23456790123457 
+2 198 199 
+p 0.1 1 0 1.23456790123456 
+2 198 199 
+p 0.1 1 0 1.23456790123456 
+2 199 200 
+p 0.1 1 0 1.23456790123457 
+2 199 200 
+p 0.1 1 0 1.23456790123457 
+2 200 201 
+p 0.1 1 0 1.23456790123457 
+2 200 201 
+p 0.1 1 0 1.23456790123457 
+2 201 202 
+p 0.1 1 0 1.23456790123457 
+2 201 202 
+p 0.1 1 0 1.23456790123457 
+2 202 203 
+p 0.1 1 0 1.23456790123457 
+2 202 203 
+p 0.1 1 0 1.23456790123457 
+2 203 204 
+p 0.1 1 0 1.23456790123456 
+2 203 204 
+p 0.1 1 0 1.23456790123456 
+2 204 205 
+p 0.1 1 0 1.23456790123457 
+2 204 205 
+p 0.1 1 0 1.23456790123457 
+2 205 206 
+p 0.1 1 0 1.23456790123457 
+2 205 206 
+p 0.1 1 0 1.23456790123457 
+2 206 207 
+p 0.1 1 0 1.23456790123457 
+2 206 207 
+p 0.1 1 0 1.23456790123457 
+2 207 208 
+p 0.1 1 0 1.23456790123457 
+2 207 208 
+p 0.1 1 0 1.23456790123457 
+2 208 209 
+p 0.1 1 0 1.23456790123457 
+2 208 209 
+p 0.1 1 0 1.23456790123457 
+2 209 210 
+p 0.1 1 0 1.23456790123457 
+2 209 210 
+p 0.1 1 0 1.23456790123457 
+2 210 211 
+p 0.1 1 0 1.23456790123456 
+2 210 211 
+p 0.1 1 0 1.23456790123456 
+2 211 212 
+p 0.1 1 0 1.23456790123457 
+2 211 212 
+p 0.1 1 0 1.23456790123457 
+2 212 213 
+p 0.1 1 0 1.23456790123457 
+2 212 213 
+p 0.1 1 0 1.23456790123457 
+2 213 214 
+p 0.1 1 0 1.23456790123457 
+2 213 214 
+p 0.1 1 0 1.23456790123457 
+2 214 215 
+p 0.1 1 0 1.23456790123456 
+2 214 215 
+p 0.1 1 0 1.23456790123456 
+2 215 216 
+p 0.1 1 0 1.23456790123456 
+2 215 216 
+p 0.1 1 0 1.23456790123456 
+2 216 217 
+p 0.1 1 0 1.23456790123456 
+2 216 217 
+p 0.1 1 0 1.23456790123456 
+2 217 218 
+p 0.1 1 0 1.23456790123457 
+2 217 218 
+p 0.1 1 0 1.23456790123457 
+2 218 219 
+p 0.1 1 0 1.23456790123457 
+2 218 219 
+p 0.1 1 0 1.23456790123457 
+2 219 220 
+p 0.1 1 0 1.23456790123457 
+2 219 220 
+p 0.1 1 0 1.23456790123457 
+2 220 221 
+p 0.1 1 0 1.23456790123457 
+2 220 221 
+p 0.1 1 0 1.23456790123457 
+2 221 222 
+p 0.1 1 0 1.23456790123456 
+2 221 222 
+p 0.1 1 0 1.23456790123456 
+2 222 223 
+p 0.1 1 0 1.23456790123456 
+2 222 223 
+p 0.1 1 0 1.23456790123456 
+2 223 224 
+p 0.1 1 0 1.23456790123457 
+2 223 224 
+p 0.1 1 0 1.23456790123457 
+2 224 225 
+p 0.1 1 0 1.23456790123456 
+2 224 225 
+p 0.1 1 0 1.23456790123456 
+2 225 226 
+p 0.1 1 0 1.23456790123456 
+2 225 226 
+p 0.1 1 0 1.23456790123456 
+2 226 227 
+p 0.1 1 0 1.23456790123457 
+2 226 227 
+p 0.1 1 0 1.23456790123457 
+2 227 228 
+p 0.1 1 0 1.23456790123456 
+2 227 228 
+p 0.1 1 0 1.23456790123456 
+2 228 229 
+p 0.1 1 0 1.23456790123456 
+2 228 229 
+p 0.1 1 0 1.23456790123456 
+2 229 230 
+p 0.1 1 0 1.23456790123457 
+2 229 230 
+p 0.1 1 0 1.23456790123457 
+2 230 231 
+p 0.1 1 0 1.23456790123457 
+2 230 231 
+p 0.1 1 0 1.23456790123457 
+2 231 232 
+p 0.1 1 0 1.23456790123457 
+2 231 232 
+p 0.1 1 0 1.23456790123457 
+2 232 233 
+p 0.1 1 0 1.23456790123457 
+2 232 233 
+p 0.1 1 0 1.23456790123457 
+2 233 234 
+p 0.1 1 0 1.23456790123456 
+2 233 234 
+p 0.1 1 0 1.23456790123456 
+2 234 235 
+p 0.1 1 0 1.23456790123456 
+2 234 235 
+p 0.1 1 0 1.23456790123456 
+2 235 236 
+p 0.1 1 0 1.23456790123457 
+2 235 236 
+p 0.1 1 0 1.23456790123457 
+2 236 237 
+p 0.1 1 0 1.23456790123456 
+2 236 237 
+p 0.1 1 0 1.23456790123456 
+2 237 238 
+p 0.1 1 0 1.23456790123457 
+2 237 238 
+p 0.1 1 0 1.23456790123457 
+2 238 239 
+p 0.1 1 0 1.23456790123457 
+2 238 239 
+p 0.1 1 0 1.23456790123457 
+2 239 240 
+p 0.1 1 0 1.23456790123456 
+2 239 240 
+p 0.1 1 0 1.23456790123456 
+2 240 241 
+p 0.1 1 0 1.23456790123457 
+2 240 241 
+p 0.1 1 0 1.23456790123457 
+2 241 242 
+p 0.1 1 0 1.23456790123457 
+2 241 242 
+p 0.1 1 0 1.23456790123457 
+2 242 243 
+p 0.1 1 0 1.23456790123457 
+2 242 243 
+p 0.1 1 0 1.23456790123457 
+2 243 244 
+p 0.1 1 0 1.23456790123457 
+2 243 244 
+p 0.1 1 0 1.23456790123457 
+2 244 245 
+p 0.1 1 0 1.23456790123457 
+2 244 245 
+p 0.1 1 0 1.23456790123457 
+2 245 246 
+p 0.1 1 0 1.23456790123457 
+2 245 246 
+p 0.1 1 0 1.23456790123457 
+2 246 247 
+p 0.1 1 0 1.23456790123456 
+2 246 247 
+p 0.1 1 0 1.23456790123456 
+2 247 248 
+p 0.1 1 0 1.23456790123457 
+2 247 248 
+p 0.1 1 0 1.23456790123457 
+2 248 249 
+p 0.1 1 0 1.23456790123457 
+2 248 249 
+p 0.1 1 0 1.23456790123457 
+2 249 250 
+p 0.1 1 0 1.23456790123457 
+2 249 250 
+p 0.1 1 0 1.23456790123457 
+2 250 251 
+p 0.1 1 0 1.23456790123457 
+2 250 251 
+p 0.1 1 0 1.23456790123457 
+2 251 252 
+p 0.1 1 0 1.23456790123456 
+2 251 252 
+p 0.1 1 0 1.23456790123456 
+2 252 253 
+p 0.1 1 0 1.23456790123457 
+2 252 253 
+p 0.1 1 0 1.23456790123457 
+2 253 254 
+p 0.1 1 0 1.23456790123457 
+2 253 254 
+p 0.1 1 0 1.23456790123457 
+2 254 255 
+p 0.1 1 0 1.23456790123457 
+2 254 255 
+p 0.1 1 0 1.23456790123457 
+2 255 256 
+p 0.1 1 0 1.23456790123457 
+2 255 256 
+p 0.1 1 0 1.23456790123457 
+2 256 257 
+p 0.1 1 0 1.23456790123457 
+2 256 257 
+p 0.1 1 0 1.23456790123457 
+2 257 258 
+p 0.1 1 0 1.23456790123456 
+2 257 258 
+p 0.1 1 0 1.23456790123456 
+2 258 259 
+p 0.1 1 0 1.23456790123456 
+2 258 259 
+p 0.1 1 0 1.23456790123456 
+2 259 260 
+p 0.1 1 0 1.23456790123457 
+2 259 260 
+p 0.1 1 0 1.23456790123457 
+2 260 261 
+p 0.1 1 0 1.23456790123456 
+2 260 261 
+p 0.1 1 0 1.23456790123456 
+2 261 262 
+p 0.1 1 0 1.23456790123456 
+2 261 262 
+p 0.1 1 0 1.23456790123456 
+2 262 263 
+p 0.1 1 0 1.23456790123457 
+2 262 263 
+p 0.1 1 0 1.23456790123457 
+2 263 264 
+p 0.1 1 0 1.23456790123456 
+2 263 264 
+p 0.1 1 0 1.23456790123456 
+2 264 265 
+p 0.1 1 0 1.23456790123456 
+2 264 265 
+p 0.1 1 0 1.23456790123456 
+2 265 266 
+p 0.1 1 0 1.23456790123457 
+2 265 266 
+p 0.1 1 0 1.23456790123457 
+2 266 267 
+p 0.1 1 0 1.23456790123457 
+2 266 267 
+p 0.1 1 0 1.23456790123457 
+2 267 268 
+p 0.1 1 0 1.23456790123457 
+2 267 268 
+p 0.1 1 0 1.23456790123457 
+2 268 269 
+p 0.1 1 0 1.23456790123457 
+2 268 269 
+p 0.1 1 0 1.23456790123457 
+2 269 270 
+p 0.1 1 0 1.23456790123456 
+2 269 270 
+p 0.1 1 0 1.23456790123456 
+2 270 271 
+p 0.1 1 0 1.23456790123456 
+2 270 271 
+p 0.1 1 0 1.23456790123456 
+2 271 272 
+p 0.1 1 0 1.23456790123457 
+2 271 272 
+p 0.1 1 0 1.23456790123457 
+2 272 273 
+p 0.1 1 0 1.23456790123456 
+2 272 273 
+p 0.1 1 0 1.23456790123456 
+2 273 274 
+p 0.1 1 0 1.23456790123456 
+2 273 274 
+p 0.1 1 0 1.23456790123456 
+2 274 275 
+p 0.1 1 0 1.23456790123457 
+2 274 275 
+p 0.1 1 0 1.23456790123457 
+2 275 276 
+p 0.1 1 0 1.23456790123456 
+2 275 276 
+p 0.1 1 0 1.23456790123456 
+2 276 277 
+p 0.1 1 0 1.23456790123456 
+2 276 277 
+p 0.1 1 0 1.23456790123456 
+2 277 278 
+p 0.1 1 0 1.23456790123457 
+2 277 278 
+p 0.1 1 0 1.23456790123457 
+2 278 279 
+p 0.1 1 0 1.23456790123457 
+2 278 279 
+p 0.1 1 0 1.23456790123457 
+2 279 280 
+p 0.1 1 0 1.23456790123457 
+2 279 280 
+p 0.1 1 0 1.23456790123457 
+2 280 281 
+p 0.1 1 0 1.23456790123457 
+2 280 281 
+p 0.1 1 0 1.23456790123457 
+2 281 282 
+p 0.1 1 0 1.23456790123457 
+2 281 282 
+p 0.1 1 0 1.23456790123457 
+2 282 283 
+p 0.1 1 0 1.23456790123457 
+2 282 283 
+p 0.1 1 0 1.23456790123457 
+2 283 284 
+p 0.1 1 0 1.23456790123457 
+2 283 284 
+p 0.1 1 0 1.23456790123457 
+2 284 285 
+p 0.1 1 0 1.23456790123457 
+2 284 285 
+p 0.1 1 0 1.23456790123457 
+2 285 286 
+p 0.1 1 0 1.23456790123457 
+2 285 286 
+p 0.1 1 0 1.23456790123457 
+2 286 287 
+p 0.1 1 0 1.23456790123457 
+2 286 287 
+p 0.1 1 0 1.23456790123457 
+2 287 288 
+p 0.1 1 0 1.23456790123456 
+2 287 288 
+p 0.1 1 0 1.23456790123456 
+2 288 289 
+p 0.1 1 0 1.23456790123457 
+2 288 289 
+p 0.1 1 0 1.23456790123457 
+2 289 290 
+p 0.1 1 0 1.23456790123457 
+2 289 290 
+p 0.1 1 0 1.23456790123457 
+2 290 291 
+p 0.1 1 0 1.23456790123457 
+2 290 291 
+p 0.1 1 0 1.23456790123457 
+2 291 292 
+p 0.1 1 0 1.23456790123457 
+2 291 292 
+p 0.1 1 0 1.23456790123457 
+2 292 293 
+p 0.1 1 0 1.23456790123457 
+2 292 293 
+p 0.1 1 0 1.23456790123457 
+2 293 294 
+p 0.1 1 0 1.23456790123457 
+2 293 294 
+p 0.1 1 0 1.23456790123457 
+2 294 295 
+p 0.1 1 0 1.23456790123457 
+2 294 295 
+p 0.1 1 0 1.23456790123457 
+2 295 296 
+p 0.1 1 0 1.23456790123456 
+2 295 296 
+p 0.1 1 0 1.23456790123456 
+2 296 297 
+p 0.1 1 0 1.23456790123457 
+2 296 297 
+p 0.1 1 0 1.23456790123457 
+2 297 298 
+p 0.1 1 0 1.23456790123456 
+2 297 298 
+p 0.1 1 0 1.23456790123456 
+2 298 299 
+p 0.1 1 0 1.23456790123457 
+2 298 299 
+p 0.1 1 0 1.23456790123457 
+2 299 300 
+p 0.1 1 0 1.23456790123456 
+2 299 300 
+p 0.1 1 0 1.23456790123456 
+2 300 301 
+p 0.1 1 0 1.23456790123456 
+2 300 301 
+p 0.1 1 0 1.23456790123456 
+2 301 302 
+p 0.1 1 0 1.23456790123457 
+2 301 302 
+p 0.1 1 0 1.23456790123457 
+2 302 303 
+p 0.1 1 0 1.23456790123457 
+2 302 303 
+p 0.1 1 0 1.23456790123457 
+2 303 304 
+p 0.1 1 0 1.23456790123457 
+2 303 304 
+p 0.1 1 0 1.23456790123457 
+2 304 305 
+p 0.1 1 0 1.23456790123457 
+2 304 305 
+p 0.1 1 0 1.23456790123457 
+2 305 306 
+p 0.1 1 0 1.23456790123457 
+2 305 306 
+p 0.1 1 0 1.23456790123457 
+2 306 307 
+p 0.1 1 0 1.23456790123456 
+2 306 307 
+p 0.1 1 0 1.23456790123456 
+2 307 308 
+p 0.1 1 0 1.23456790123457 
+2 307 308 
+p 0.1 1 0 1.23456790123457 
+2 308 309 
+p 0.1 1 0 1.23456790123457 
+2 308 309 
+p 0.1 1 0 1.23456790123457 
+2 309 310 
+p 0.1 1 0 1.23456790123456 
+2 309 310 
+p 0.1 1 0 1.23456790123456 
+2 310 311 
+p 0.1 1 0 1.23456790123457 
+2 310 311 
+p 0.1 1 0 1.23456790123457 
+2 311 312 
+p 0.1 1 0 1.23456790123456 
+2 311 312 
+p 0.1 1 0 1.23456790123456 
+2 312 313 
+p 0.1 1 0 1.23456790123456 
+2 312 313 
+p 0.1 1 0 1.23456790123456 
+2 313 314 
+p 0.1 1 0 1.23456790123457 
+2 313 314 
+p 0.1 1 0 1.23456790123457 
+2 314 315 
+p 0.1 1 0 1.23456790123457 
+2 314 315 
+p 0.1 1 0 1.23456790123457 
+2 315 316 
+p 0.1 1 0 1.23456790123457 
+2 315 316 
+p 0.1 1 0 1.23456790123457 
+2 316 317 
+p 0.1 1 0 1.23456790123457 
+2 316 317 
+p 0.1 1 0 1.23456790123457 
+2 317 318 
+p 0.1 1 0 1.23456790123457 
+2 317 318 
+p 0.1 1 0 1.23456790123457 
+2 318 319 
+p 0.1 1 0 1.23456790123456 
+2 318 319 
+p 0.1 1 0 1.23456790123456 
+2 319 320 
+p 0.1 1 0 1.23456790123457 
+2 319 320 
+p 0.1 1 0 1.23456790123457 
+2 320 321 
+p 0.1 1 0 1.23456790123457 
+2 320 321 
+p 0.1 1 0 1.23456790123457 
+2 321 322 
+p 0.1 1 0 1.23456790123457 
+2 321 322 
+p 0.1 1 0 1.23456790123457 
+2 322 323 
+p 0.1 1 0 1.23456790123457 
+2 322 323 
+p 0.1 1 0 1.23456790123457 
+2 323 324 
+p 0.1 1 0 1.23456790123456 
+2 323 324 
+p 0.1 1 0 1.23456790123456 
+2 324 325 
+p 0.1 1 0 1.23456790123457 
+2 324 325 
+p 0.1 1 0 1.23456790123457 
+2 325 326 
+p 0.1 1 0 1.23456790123457 
+2 325 326 
+p 0.1 1 0 1.23456790123457 
+2 326 327 
+p 0.1 1 0 1.23456790123457 
+2 326 327 
+p 0.1 1 0 1.23456790123457 
+2 327 328 
+p 0.1 1 0 1.23456790123457 
+2 327 328 
+p 0.1 1 0 1.23456790123457 
+2 328 329 
+p 0.1 1 0 1.23456790123457 
+2 328 329 
+p 0.1 1 0 1.23456790123457 
+2 329 330 
+p 0.1 1 0 1.23456790123456 
+2 329 330 
+p 0.1 1 0 1.23456790123456 
+2 330 331 
+p 0.1 1 0 1.23456790123456 
+2 330 331 
+p 0.1 1 0 1.23456790123456 
+2 331 332 
+p 0.1 1 0 1.23456790123457 
+2 331 332 
+p 0.1 1 0 1.23456790123457 
+2 332 333 
+p 0.1 1 0 1.23456790123456 
+2 332 333 
+p 0.1 1 0 1.23456790123456 
+2 333 334 
+p 0.1 1 0 1.23456790123456 
+2 333 334 
+p 0.1 1 0 1.23456790123456 
+2 334 335 
+p 0.1 1 0 1.23456790123457 
+2 334 335 
+p 0.1 1 0 1.23456790123457 
+2 335 336 
+p 0.1 1 0 1.23456790123456 
+2 335 336 
+p 0.1 1 0 1.23456790123456 
+2 336 337 
+p 0.1 1 0 1.23456790123456 
+2 336 337 
+p 0.1 1 0 1.23456790123456 
+2 337 338 
+p 0.1 1 0 1.23456790123457 
+2 337 338 
+p 0.1 1 0 1.23456790123457 
+2 338 339 
+p 0.1 1 0 1.23456790123456 
+2 338 339 
+p 0.1 1 0 1.23456790123456 
+2 339 340 
+p 0.1 1 0 1.23456790123456 
+2 339 340 
+p 0.1 1 0 1.23456790123456 
+2 340 341 
+p 0.1 1 0 1.23456790123457 
+2 340 341 
+p 0.1 1 0 1.23456790123457 
+2 341 342 
+p 0.1 1 0 1.23456790123456 
+2 341 342 
+p 0.1 1 0 1.23456790123456 
+2 342 343 
+p 0.1 1 0 1.23456790123456 
+2 342 343 
+p 0.1 1 0 1.23456790123456 
+2 343 344 
+p 0.1 1 0 1.23456790123457 
+2 343 344 
+p 0.1 1 0 1.23456790123457 
+2 344 345 
+p 0.1 1 0 1.23456790123456 
+2 344 345 
+p 0.1 1 0 1.23456790123456 
+2 345 346 
+p 0.1 1 0 1.23456790123457 
+2 345 346 
+p 0.1 1 0 1.23456790123457 
+2 346 347 
+p 0.1 1 0 1.23456790123456 
+2 346 347 
+p 0.1 1 0 1.23456790123456 
+2 347 348 
+p 0.1 1 0 1.23456790123456 
+2 347 348 
+p 0.1 1 0 1.23456790123456 
+2 348 349 
+p 0.1 1 0 1.23456790123457 
+2 348 349 
+p 0.1 1 0 1.23456790123457 
+2 349 350 
+p 0.1 1 0 1.23456790123457 
+2 349 350 
+p 0.1 1 0 1.23456790123457 
+2 350 351 
+p 0.1 1 0 1.23456790123456 
+2 350 351 
+p 0.1 1 0 1.23456790123456 
+2 351 352 
+p 0.1 1 0 1.23456790123456 
+2 351 352 
+p 0.1 1 0 1.23456790123456 
+2 352 353 
+p 0.1 1 0 1.23456790123457 
+2 352 353 
+p 0.1 1 0 1.23456790123457 
+2 353 354 
+p 0.1 1 0 1.23456790123456 
+2 353 354 
+p 0.1 1 0 1.23456790123456 
+2 354 355 
+p 0.1 1 0 1.23456790123456 
+2 354 355 
+p 0.1 1 0 1.23456790123456 
+2 355 356 
+p 0.1 1 0 1.23456790123457 
+2 355 356 
+p 0.1 1 0 1.23456790123457 
+2 356 357 
+p 0.1 1 0 1.23456790123456 
+2 356 357 
+p 0.1 1 0 1.23456790123456 
+2 357 358 
+p 0.1 1 0 1.23456790123457 
+2 357 358 
+p 0.1 1 0 1.23456790123457 
+2 358 359 
+p 0.1 1 0 1.23456790123457 
+2 358 359 
+p 0.1 1 0 1.23456790123457 
+2 359 360 
+p 0.1 1 0 1.23456790123458 
+2 359 360 
+p 0.1 1 0 1.23456790123458 
+2 360 361 
+p 0.1 1 0 1.23456790123457 
+2 360 361 
+p 0.1 1 0 1.23456790123457 
+2 361 362 
+p 0.1 1 0 1.23456790123457 
+2 361 362 
+p 0.1 1 0 1.23456790123457 
+2 362 363 
+p 0.1 1 0 1.23456790123457 
+2 362 363 
+p 0.1 1 0 1.23456790123457 
+2 363 364 
+p 0.1 1 0 1.23456790123457 
+2 363 364 
+p 0.1 1 0 1.23456790123457 
+2 364 365 
+p 0.1 1 0 1.23456790123457 
+2 364 365 
+p 0.1 1 0 1.23456790123457 
+2 365 366 
+p 0.1 1 0 1.23456790123456 
+2 365 366 
+p 0.1 1 0 1.23456790123456 
+2 366 367 
+p 0.1 1 0 1.23456790123456 
+2 366 367 
+p 0.1 1 0 1.23456790123456 
+2 367 368 
+p 0.1 1 0 1.23456790123457 
+2 367 368 
+p 0.1 1 0 1.23456790123457 
+2 368 369 
+p 0.1 1 0 1.23456790123456 
+2 368 369 
+p 0.1 1 0 1.23456790123456 
+2 369 370 
+p 0.1 1 0 1.23456790123456 
+2 369 370 
+p 0.1 1 0 1.23456790123456 
+2 370 371 
+p 0.1 1 0 1.23456790123457 
+2 370 371 
+p 0.1 1 0 1.23456790123457 
+2 371 372 
+p 0.1 1 0 1.23456790123456 
+2 371 372 
+p 0.1 1 0 1.23456790123456 
+2 372 373 
+p 0.1 1 0 1.23456790123456 
+2 372 373 
+p 0.1 1 0 1.23456790123456 
+2 373 374 
+p 0.1 1 0 1.23456790123457 
+2 373 374 
+p 0.1 1 0 1.23456790123457 
+2 374 375 
+p 0.1 1 0 1.23456790123458 
+2 374 375 
+p 0.1 1 0 1.23456790123458 
+2 375 376 
+p 0.1 1 0 1.23456790123457 
+2 375 376 
+p 0.1 1 0 1.23456790123457 
+2 376 377 
+p 0.1 1 0 1.23456790123457 
+2 376 377 
+p 0.1 1 0 1.23456790123457 
+2 377 378 
+p 0.1 1 0 1.23456790123456 
+2 377 378 
+p 0.1 1 0 1.23456790123456 
+2 378 379 
+p 0.1 1 0 1.23456790123456 
+2 378 379 
+p 0.1 1 0 1.23456790123456 
+2 379 380 
+p 0.1 1 0 1.23456790123457 
+2 379 380 
+p 0.1 1 0 1.23456790123457 
+2 380 381 
+p 0.1 1 0 1.23456790123456 
+2 380 381 
+p 0.1 1 0 1.23456790123456 
+2 381 382 
+p 0.1 1 0 1.23456790123456 
+2 381 382 
+p 0.1 1 0 1.23456790123456 
+2 382 383 
+p 0.1 1 0 1.23456790123457 
+2 382 383 
+p 0.1 1 0 1.23456790123457 
+2 383 384 
+p 0.1 1 0 1.23456790123456 
+2 383 384 
+p 0.1 1 0 1.23456790123456 
+2 384 385 
+p 0.1 1 0 1.23456790123456 
+2 384 385 
+p 0.1 1 0 1.23456790123456 
+2 385 386 
+p 0.1 1 0 1.23456790123457 
+2 385 386 
+p 0.1 1 0 1.23456790123457 
+2 386 387 
+p 0.1 1 0 1.23456790123457 
+2 386 387 
+p 0.1 1 0 1.23456790123457 
+2 387 388 
+p 0.1 1 0 1.23456790123458 
+2 387 388 
+p 0.1 1 0 1.23456790123458 
+2 388 389 
+p 0.1 1 0 1.23456790123457 
+2 388 389 
+p 0.1 1 0 1.23456790123457 
+2 389 390 
+p 0.1 1 0 1.23456790123456 
+2 389 390 
+p 0.1 1 0 1.23456790123456 
+2 390 391 
+p 0.1 1 0 1.23456790123456 
+2 390 391 
+p 0.1 1 0 1.23456790123456 
+2 391 392 
+p 0.1 1 0 1.23456790123457 
+2 391 392 
+p 0.1 1 0 1.23456790123457 
+2 392 393 
+p 0.1 1 0 1.23456790123456 
+2 392 393 
+p 0.1 1 0 1.23456790123456 
+2 393 394 
+p 0.1 1 0 1.23456790123456 
+2 393 394 
+p 0.1 1 0 1.23456790123456 
+2 394 395 
+p 0.1 1 0 1.23456790123457 
+2 394 395 
+p 0.1 1 0 1.23456790123457 
+2 395 396 
+p 0.1 1 0 1.23456790123456 
+2 395 396 
+p 0.1 1 0 1.23456790123456 
+2 396 397 
+p 0.1 1 0 1.23456790123456 
+2 396 397 
+p 0.1 1 0 1.23456790123456 
+2 397 398 
+p 0.1 1 0 1.23456790123457 
+2 397 398 
+p 0.1 1 0 1.23456790123457 
+2 398 399 
+p 0.1 1 0 1.23456790123458 
+2 398 399 
+p 0.1 1 0 1.23456790123458 
+2 399 400 
+p 0.1 1 0 1.23456790123457 
+2 399 400 
+p 0.1 1 0 1.23456790123457 
+2 400 401 
+p 0.1 1 0 1.23456790123457 
+2 400 401 
+p 0.1 1 0 1.23456790123457 
+2 401 402 
+p 0.1 1 0 1.23456790123456 
+2 401 402 
+p 0.1 1 0 1.23456790123456 
+2 402 403 
+p 0.1 1 0 1.23456790123456 
+2 402 403 
+p 0.1 1 0 1.23456790123456 
+2 403 404 
+p 0.1 1 0 1.23456790123457 
+2 403 404 
+p 0.1 1 0 1.23456790123457 
+2 404 405 
+p 0.1 1 0 1.23456790123456 
+2 404 405 
+p 0.1 1 0 1.23456790123456 
+2 405 406 
+p 0.1 1 0 1.23456790123457 
+2 405 406 
+p 0.1 1 0 1.23456790123457 
+2 406 407 
+p 0.1 1 0 1.23456790123456 
+2 406 407 
+p 0.1 1 0 1.23456790123456 
+2 407 408 
+p 0.1 1 0 1.23456790123457 
+2 407 408 
+p 0.1 1 0 1.23456790123457 
+2 408 409 
+p 0.1 1 0 1.23456790123457 
+2 408 409 
+p 0.1 1 0 1.23456790123457 
+2 409 410 
+p 0.1 1 0 1.23456790123457 
+2 409 410 
+p 0.1 1 0 1.23456790123457 
+2 410 411 
+p 0.1 1 0 1.23456790123458 
+2 410 411 
+p 0.1 1 0 1.23456790123458 
+2 411 412 
+p 0.1 1 0 1.23456790123457 
+2 411 412 
+p 0.1 1 0 1.23456790123457 
+2 412 413 
+p 0.1 1 0 1.23456790123457 
+2 412 413 
+p 0.1 1 0 1.23456790123457 
+2 413 414 
+p 0.1 1 0 1.23456790123457 
+2 413 414 
+p 0.1 1 0 1.23456790123457 
+2 414 415 
+p 0.1 1 0 1.23456790123456 
+2 414 415 
+p 0.1 1 0 1.23456790123456 
+2 415 416 
+p 0.1 1 0 1.23456790123457 
+2 415 416 
+p 0.1 1 0 1.23456790123457 
+2 416 417 
+p 0.1 1 0 1.23456790123457 
+2 416 417 
+p 0.1 1 0 1.23456790123457 
+2 417 418 
+p 0.1 1 0 1.23456790123457 
+2 417 418 
+p 0.1 1 0 1.23456790123457 
+2 418 419 
+p 0.1 1 0 1.23456790123457 
+2 418 419 
+p 0.1 1 0 1.23456790123457 
+2 419 420 
+p 0.1 1 0 1.23456790123456 
+2 419 420 
+p 0.1 1 0 1.23456790123456 
+2 420 421 
+p 0.1 1 0 1.23456790123457 
+2 420 421 
+p 0.1 1 0 1.23456790123457 
+2 421 422 
+p 0.1 1 0 1.23456790123457 
+2 421 422 
+p 0.1 1 0 1.23456790123457 
+2 422 423 
+p 0.1 1 0 1.23456790123457 
+2 422 423 
+p 0.1 1 0 1.23456790123457 
+2 423 424 
+p 0.1 1 0 1.23456790123457 
+2 423 424 
+p 0.1 1 0 1.23456790123457 
+2 424 425 
+p 0.1 1 0 1.23456790123457 
+2 424 425 
+p 0.1 1 0 1.23456790123457 
+2 425 426 
+p 0.1 1 0 1.23456790123456 
+2 425 426 
+p 0.1 1 0 1.23456790123456 
+2 426 427 
+p 0.1 1 0 1.23456790123456 
+2 426 427 
+p 0.1 1 0 1.23456790123456 
+2 427 428 
+p 0.1 1 0 1.23456790123456 
+2 427 428 
+p 0.1 1 0 1.23456790123456 
+2 428 429 
+p 0.1 1 0 1.23456790123456 
+2 428 429 
+p 0.1 1 0 1.23456790123456 
+2 429 430 
+p 0.1 1 0 1.23456790123456 
+2 429 430 
+p 0.1 1 0 1.23456790123456 
+2 430 431 
+p 0.1 1 0 1.23456790123457 
+2 430 431 
+p 0.1 1 0 1.23456790123457 
+2 431 432 
+p 0.1 1 0 1.23456790123456 
+2 431 432 
+p 0.1 1 0 1.23456790123456 
+2 432 433 
+p 0.1 1 0 1.23456790123456 
+2 432 433 
+p 0.1 1 0 1.23456790123456 
+2 433 434 
+p 0.1 1 0 1.23456790123457 
+2 433 434 
+p 0.1 1 0 1.23456790123457 
+2 434 435 
+p 0.1 1 0 1.23456790123458 
+2 434 435 
+p 0.1 1 0 1.23456790123458 
+2 435 436 
+p 0.1 1 0 1.23456790123457 
+2 435 436 
+p 0.1 1 0 1.23456790123457 
+2 436 437 
+p 0.1 1 0 1.23456790123457 
+2 436 437 
+p 0.1 1 0 1.23456790123457 
+2 437 438 
+p 0.1 1 0 1.23456790123456 
+2 437 438 
+p 0.1 1 0 1.23456790123456 
+2 438 439 
+p 0.1 1 0 1.23456790123456 
+2 438 439 
+p 0.1 1 0 1.23456790123456 
+2 439 440 
+p 0.1 1 0 1.23456790123457 
+2 439 440 
+p 0.1 1 0 1.23456790123457 
+2 440 441 
+p 0.1 1 0 1.23456790123456 
+2 440 441 
+p 0.1 1 0 1.23456790123456 
+2 441 442 
+p 0.1 1 0 1.23456790123456 
+2 441 442 
+p 0.1 1 0 1.23456790123456 
+2 442 443 
+p 0.1 1 0 1.23456790123457 
+2 442 443 
+p 0.1 1 0 1.23456790123457 
+2 443 444 
+p 0.1 1 0 1.23456790123456 
+2 443 444 
+p 0.1 1 0 1.23456790123456 
+2 444 445 
+p 0.1 1 0 1.23456790123456 
+2 444 445 
+p 0.1 1 0 1.23456790123456 
+2 445 446 
+p 0.1 1 0 1.23456790123457 
+2 445 446 
+p 0.1 1 0 1.23456790123457 
+2 446 447 
+p 0.1 1 0 1.23456790123457 
+2 446 447 
+p 0.1 1 0 1.23456790123457 
+2 447 448 
+p 0.1 1 0 1.23456790123458 
+2 447 448 
+p 0.1 1 0 1.23456790123458 
+2 448 449 
+p 0.1 1 0 1.23456790123457 
+2 448 449 
+p 0.1 1 0 1.23456790123457 
+2 449 450 
+p 0.1 1 0 1.23456790123456 
+2 449 450 
+p 0.1 1 0 1.23456790123456 
+2 450 451 
+p 0.1 1 0 1.23456790123456 
+2 450 451 
+p 0.1 1 0 1.23456790123456 
+2 451 452 
+p 0.1 1 0 1.23456790123457 
+2 451 452 
+p 0.1 1 0 1.23456790123457 
+2 452 453 
+p 0.1 1 0 1.23456790123456 
+2 452 453 
+p 0.1 1 0 1.23456790123456 
+2 453 454 
+p 0.1 1 0 1.23456790123456 
+2 453 454 
+p 0.1 1 0 1.23456790123456 
+2 454 455 
+p 0.1 1 0 1.23456790123457 
+2 454 455 
+p 0.1 1 0 1.23456790123457 
+2 455 456 
+p 0.1 1 0 1.23456790123456 
+2 455 456 
+p 0.1 1 0 1.23456790123456 
+2 456 457 
+p 0.1 1 0 1.23456790123456 
+2 456 457 
+p 0.1 1 0 1.23456790123456 
+2 457 458 
+p 0.1 1 0 1.23456790123457 
+2 457 458 
+p 0.1 1 0 1.23456790123457 
+2 458 459 
+p 0.1 1 0 1.23456790123457 
+2 458 459 
+p 0.1 1 0 1.23456790123457 
+2 459 460 
+p 0.1 1 0 1.23456790123458 
+2 459 460 
+p 0.1 1 0 1.23456790123458 
+2 460 461 
+p 0.1 1 0 1.23456790123456 
+2 460 461 
+p 0.1 1 0 1.23456790123456 
+2 461 462 
+p 0.1 1 0 1.23456790123457 
+2 461 462 
+p 0.1 1 0 1.23456790123457 
+2 462 463 
+p 0.1 1 0 1.23456790123457 
+2 462 463 
+p 0.1 1 0 1.23456790123457 
+2 463 464 
+p 0.1 1 0 1.23456790123457 
+2 463 464 
+p 0.1 1 0 1.23456790123457 
+2 464 465 
+p 0.1 1 0 1.23456790123457 
+2 464 465 
+p 0.1 1 0 1.23456790123457 
+2 465 466 
+p 0.1 1 0 1.23456790123457 
+2 465 466 
+p 0.1 1 0 1.23456790123457 
+2 466 467 
+p 0.1 1 0 1.23456790123457 
+2 466 467 
+p 0.1 1 0 1.23456790123457 
+2 467 468 
+p 0.1 1 0 1.23456790123457 
+2 467 468 
+p 0.1 1 0 1.23456790123457 
+2 468 469 
+p 0.1 1 0 1.23456790123457 
+2 468 469 
+p 0.1 1 0 1.23456790123457 
+2 469 470 
+p 0.1 1 0 1.23456790123456 
+2 469 470 
+p 0.1 1 0 1.23456790123456 
+2 470 471 
+p 0.1 1 0 1.23456790123456 
+2 470 471 
+p 0.1 1 0 1.23456790123456 
+2 471 472 
+p 0.1 1 0 1.23456790123456 
+2 471 472 
+p 0.1 1 0 1.23456790123456 
+2 472 473 
+p 0.1 1 0 1.23456790123457 
+2 472 473 
+p 0.1 1 0 1.23456790123457 
+2 473 474 
+p 0.1 1 0 1.23456790123457 
+2 473 474 
+p 0.1 1 0 1.23456790123457 
+2 474 475 
+p 0.1 1 0 1.23456790123456 
+2 474 475 
+p 0.1 1 0 1.23456790123456 
+2 475 476 
+p 0.1 1 0 1.23456790123457 
+2 475 476 
+p 0.1 1 0 1.23456790123457 
+2 476 477 
+p 0.1 1 0 1.23456790123457 
+2 476 477 
+p 0.1 1 0 1.23456790123457 
+2 477 478 
+p 0.1 1 0 1.23456790123457 
+2 477 478 
+p 0.1 1 0 1.23456790123457 
+2 478 479 
+p 0.1 1 0 1.23456790123457 
+2 478 479 
+p 0.1 1 0 1.23456790123457 
+2 479 480 
+p 0.1 1 0 1.23456790123456 
+2 479 480 
+p 0.1 1 0 1.23456790123456 
+2 480 481 
+p 0.1 1 0 1.23456790123457 
+2 480 481 
+p 0.1 1 0 1.23456790123457 
+2 481 482 
+p 0.1 1 0 1.23456790123457 
+2 481 482 
+p 0.1 1 0 1.23456790123457 
+2 482 483 
+p 0.1 1 0 1.23456790123457 
+2 482 483 
+p 0.1 1 0 1.23456790123457 
+2 483 484 
+p 0.1 1 0 1.23456790123458 
+2 483 484 
+p 0.1 1 0 1.23456790123458 
+2 484 485 
+p 0.1 1 0 1.23456790123456 
+2 484 485 
+p 0.1 1 0 1.23456790123456 
+2 485 486 
+p 0.1 1 0 1.23456790123457 
+2 485 486 
+p 0.1 1 0 1.23456790123457 
+2 486 487 
+p 0.1 1 0 1.23456790123457 
+2 486 487 
+p 0.1 1 0 1.23456790123457 
+2 487 488 
+p 0.1 1 0 1.23456790123458 
+2 487 488 
+p 0.1 1 0 1.23456790123458 
+2 488 489 
+p 0.1 1 0 1.23456790123457 
+2 488 489 
+p 0.1 1 0 1.23456790123457 
+2 489 490 
+p 0.1 1 0 1.23456790123457 
+2 489 490 
+p 0.1 1 0 1.23456790123457 
+2 490 491 
+p 0.1 1 0 1.23456790123457 
+2 490 491 
+p 0.1 1 0 1.23456790123457 
+2 491 492 
+p 0.1 1 0 1.23456790123458 
+2 491 492 
+p 0.1 1 0 1.23456790123458 
+2 492 493 
+p 0.1 1 0 1.23456790123457 
+2 492 493 
+p 0.1 1 0 1.23456790123457 
+2 493 494 
+p 0.1 1 0 1.23456790123457 
+2 493 494 
+p 0.1 1 0 1.23456790123457 
+2 494 495 
+p 0.1 1 0 1.23456790123457 
+2 494 495 
+p 0.1 1 0 1.23456790123457 
+2 495 496 
+p 0.1 1 0 1.23456790123457 
+2 495 496 
+p 0.1 1 0 1.23456790123457 
+2 496 497 
+p 0.1 1 0 1.23456790123457 
+2 496 497 
+p 0.1 1 0 1.23456790123457 
+2 497 498 
+p 0.1 1 0 1.23456790123457 
+2 497 498 
+p 0.1 1 0 1.23456790123457 
+2 498 499 
+p 0.1 1 0 1.23456790123456 
+2 498 499 
+p 0.1 1 0 1.23456790123456 
+2 499 500 
+p 0.1 1 0 1.23456790123458 
+2 499 500 
+p 0.1 1 0 1.23456790123458 
+2 500 501 
+p 0.1 1 0 1.23456790123457 
+2 500 501 
+p 0.1 1 0 1.23456790123457 
+2 501 502 
+p 0.1 1 0 1.23456790123457 
+2 501 502 
+p 0.1 1 0 1.23456790123457 
+2 502 503 
+p 0.1 1 0 1.23456790123458 
+2 502 503 
+p 0.1 1 0 1.23456790123458 
+2 503 504 
+p 0.1 1 0 1.23456790123456 
+2 503 504 
+p 0.1 1 0 1.23456790123456 
+2 504 505 
+p 0.1 1 0 1.23456790123457 
+2 504 505 
+p 0.1 1 0 1.23456790123457 
+2 505 506 
+p 0.1 1 0 1.23456790123457 
+2 505 506 
+p 0.1 1 0 1.23456790123457 
+2 506 507 
+p 0.1 1 0 1.23456790123457 
+2 506 507 
+p 0.1 1 0 1.23456790123457 
+2 507 508 
+p 0.1 1 0 1.23456790123457 
+2 507 508 
+p 0.1 1 0 1.23456790123457 
+2 508 509 
+p 0.1 1 0 1.23456790123457 
+2 508 509 
+p 0.1 1 0 1.23456790123457 
+2 509 510 
+p 0.1 1 0 1.23456790123457 
+2 509 510 
+p 0.1 1 0 1.23456790123457 
+2 510 511 
+p 0.1 1 0 1.23456790123456 
+2 510 511 
+p 0.1 1 0 1.23456790123456 
+2 511 512 
+p 0.1 1 0 1.23456790123457 
+2 511 512 
+p 0.1 1 0 1.23456790123457 
+2 512 513 
+p 0.1 1 0 1.23456790123457 
+2 512 513 
+p 0.1 1 0 1.23456790123457 
+2 513 514 
+p 0.1 1 0 1.23456790123457 
+2 513 514 
+p 0.1 1 0 1.23456790123457 
+2 514 515 
+p 0.1 1 0 1.23456790123457 
+2 514 515 
+p 0.1 1 0 1.23456790123457 
+2 515 516 
+p 0.1 1 0 1.23456790123456 
+2 515 516 
+p 0.1 1 0 1.23456790123456 
+2 516 517 
+p 0.1 1 0 1.23456790123457 
+2 516 517 
+p 0.1 1 0 1.23456790123457 
+2 517 518 
+p 0.1 1 0 1.23456790123457 
+2 517 518 
+p 0.1 1 0 1.23456790123457 
+2 518 519 
+p 0.1 1 0 1.23456790123457 
+2 518 519 
+p 0.1 1 0 1.23456790123457 
+2 519 520 
+p 0.1 1 0 1.23456790123457 
+2 519 520 
+p 0.1 1 0 1.23456790123457 
+2 520 521 
+p 0.1 1 0 1.23456790123457 
+2 520 521 
+p 0.1 1 0 1.23456790123457 
+2 521 522 
+p 0.1 1 0 1.23456790123457 
+2 521 522 
+p 0.1 1 0 1.23456790123457 
+2 522 523 
+p 0.1 1 0 1.23456790123456 
+2 522 523 
+p 0.1 1 0 1.23456790123456 
+2 523 524 
+p 0.1 1 0 1.23456790123458 
+2 523 524 
+p 0.1 1 0 1.23456790123458 
+2 524 525 
+p 0.1 1 0 1.23456790123457 
+2 524 525 
+p 0.1 1 0 1.23456790123457 
+2 525 526 
+p 0.1 1 0 1.23456790123457 
+2 525 526 
+p 0.1 1 0 1.23456790123457 
+2 526 527 
+p 0.1 1 0 1.23456790123458 
+2 526 527 
+p 0.1 1 0 1.23456790123458 
+2 527 528 
+p 0.1 1 0 1.23456790123456 
+2 527 528 
+p 0.1 1 0 1.23456790123456 
+2 528 529 
+p 0.1 1 0 1.23456790123457 
+2 528 529 
+p 0.1 1 0 1.23456790123457 
+2 529 530 
+p 0.1 1 0 1.23456790123457 
+2 529 530 
+p 0.1 1 0 1.23456790123457 
+2 530 531 
+p 0.1 1 0 1.23456790123457 
+2 530 531 
+p 0.1 1 0 1.23456790123457 
+2 531 532 
+p 0.1 1 0 1.23456790123457 
+2 531 532 
+p 0.1 1 0 1.23456790123457 
+2 532 533 
+p 0.1 1 0 1.23456790123457 
+2 532 533 
+p 0.1 1 0 1.23456790123457 
+2 533 534 
+p 0.1 1 0 1.23456790123457 
+2 533 534 
+p 0.1 1 0 1.23456790123457 
+2 534 535 
+p 0.1 1 0 1.23456790123458 
+2 534 535 
+p 0.1 1 0 1.23456790123458 
+2 535 536 
+p 0.1 1 0 1.23456790123457 
+2 535 536 
+p 0.1 1 0 1.23456790123457 
+2 536 537 
+p 0.1 1 0 1.23456790123457 
+2 536 537 
+p 0.1 1 0 1.23456790123457 
+2 537 538 
+p 0.1 1 0 1.23456790123457 
+2 537 538 
+p 0.1 1 0 1.23456790123457 
+2 538 539 
+p 0.1 1 0 1.23456790123458 
+2 538 539 
+p 0.1 1 0 1.23456790123458 
+2 539 540 
+p 0.1 1 0 1.23456790123458 
+2 539 540 
+p 0.1 1 0 1.23456790123458 
+2 540 541 
+p 0.1 1 0 1.23456790123457 
+2 540 541 
+p 0.1 1 0 1.23456790123457 
+2 541 542 
+p 0.1 1 0 1.23456790123457 
+2 541 542 
+p 0.1 1 0 1.23456790123457 
+2 542 543 
+p 0.1 1 0 1.23456790123457 
+2 542 543 
+p 0.1 1 0 1.23456790123457 
+2 543 544 
+p 0.1 1 0 1.23456790123457 
+2 543 544 
+p 0.1 1 0 1.23456790123457 
+2 544 545 
+p 0.1 1 0 1.23456790123457 
+2 544 545 
+p 0.1 1 0 1.23456790123457 
+2 545 546 
+p 0.1 1 0 1.23456790123457 
+2 545 546 
+p 0.1 1 0 1.23456790123457 
+2 546 547 
+p 0.1 1 0 1.23456790123457 
+2 546 547 
+p 0.1 1 0 1.23456790123457 
+2 547 548 
+p 0.1 1 0 1.23456790123457 
+2 547 548 
+p 0.1 1 0 1.23456790123457 
+2 548 549 
+p 0.1 1 0 1.23456790123457 
+2 548 549 
+p 0.1 1 0 1.23456790123457 
+2 549 550 
+p 0.1 1 0 1.23456790123457 
+2 549 550 
+p 0.1 1 0 1.23456790123457 
+2 550 551 
+p 0.1 1 0 1.23456790123457 
+2 550 551 
+p 0.1 1 0 1.23456790123457 
+2 551 552 
+p 0.1 1 0 1.23456790123457 
+2 551 552 
+p 0.1 1 0 1.23456790123457 
+2 552 553 
+p 0.1 1 0 1.23456790123457 
+2 552 553 
+p 0.1 1 0 1.23456790123457 
+2 553 554 
+p 0.1 1 0 1.23456790123457 
+2 553 554 
+p 0.1 1 0 1.23456790123457 
+2 554 555 
+p 0.1 1 0 1.23456790123457 
+2 554 555 
+p 0.1 1 0 1.23456790123457 
+2 555 556 
+p 0.1 1 0 1.23456790123457 
+2 555 556 
+p 0.1 1 0 1.23456790123457 
+2 556 557 
+p 0.1 1 0 1.23456790123457 
+2 556 557 
+p 0.1 1 0 1.23456790123457 
+2 557 558 
+p 0.1 1 0 1.23456790123457 
+2 557 558 
+p 0.1 1 0 1.23456790123457 
+2 558 559 
+p 0.1 1 0 1.23456790123458 
+2 558 559 
+p 0.1 1 0 1.23456790123458 
+2 559 560 
+p 0.1 1 0 1.23456790123458 
+2 559 560 
+p 0.1 1 0 1.23456790123458 
+2 560 561 
+p 0.1 1 0 1.23456790123457 
+2 560 561 
+p 0.1 1 0 1.23456790123457 
+2 561 562 
+p 0.1 1 0 1.23456790123457 
+2 561 562 
+p 0.1 1 0 1.23456790123457 
+2 562 563 
+p 0.1 1 0 1.23456790123458 
+2 562 563 
+p 0.1 1 0 1.23456790123458 
+2 563 564 
+p 0.1 1 0 1.23456790123458 
+2 563 564 
+p 0.1 1 0 1.23456790123458 
+2 564 565 
+p 0.1 1 0 1.23456790123457 
+2 564 565 
+p 0.1 1 0 1.23456790123457 
+2 565 566 
+p 0.1 1 0 1.23456790123457 
+2 565 566 
+p 0.1 1 0 1.23456790123457 
+2 566 567 
+p 0.1 1 0 1.23456790123457 
+2 566 567 
+p 0.1 1 0 1.23456790123457 
+2 567 568 
+p 0.1 1 0 1.23456790123457 
+2 567 568 
+p 0.1 1 0 1.23456790123457 
+2 568 569 
+p 0.1 1 0 1.23456790123457 
+2 568 569 
+p 0.1 1 0 1.23456790123457 
+2 569 570 
+p 0.1 1 0 1.23456790123457 
+2 569 570 
+p 0.1 1 0 1.23456790123457 
+2 570 571 
+p 0.1 1 0 1.23456790123457 
+2 570 571 
+p 0.1 1 0 1.23456790123457 
+2 571 572 
+p 0.1 1 0 1.23456790123456 
+2 571 572 
+p 0.1 1 0 1.23456790123456 
+2 572 573 
+p 0.1 1 0 1.23456790123457 
+2 572 573 
+p 0.1 1 0 1.23456790123457 
+2 573 574 
+p 0.1 1 0 1.23456790123457 
+2 573 574 
+p 0.1 1 0 1.23456790123457 
+2 574 575 
+p 0.1 1 0 1.23456790123456 
+2 574 575 
+p 0.1 1 0 1.23456790123456 
+2 575 576 
+p 0.1 1 0 1.23456790123457 
+2 575 576 
+p 0.1 1 0 1.23456790123457 
+2 576 577 
+p 0.1 1 0 1.23456790123457 
+2 576 577 
+p 0.1 1 0 1.23456790123457 
+2 577 578 
+p 0.1 1 0 1.23456790123457 
+2 577 578 
+p 0.1 1 0 1.23456790123457 
+2 578 579 
+p 0.1 1 0 1.23456790123457 
+2 578 579 
+p 0.1 1 0 1.23456790123457 
+2 579 580 
+p 0.1 1 0 1.23456790123457 
+2 579 580 
+p 0.1 1 0 1.23456790123457 
+2 580 581 
+p 0.1 1 0 1.23456790123457 
+2 580 581 
+p 0.1 1 0 1.23456790123457 
+2 581 582 
+p 0.1 1 0 1.23456790123457 
+2 581 582 
+p 0.1 1 0 1.23456790123457 
+2 582 583 
+p 0.1 1 0 1.23456790123457 
+2 582 583 
+p 0.1 1 0 1.23456790123457 
+2 583 584 
+p 0.1 1 0 1.23456790123457 
+2 583 584 
+p 0.1 1 0 1.23456790123457 
+2 584 585 
+p 0.1 1 0 1.23456790123457 
+2 584 585 
+p 0.1 1 0 1.23456790123457 
+2 585 586 
+p 0.1 1 0 1.23456790123457 
+2 585 586 
+p 0.1 1 0 1.23456790123457 
+2 586 587 
+p 0.1 1 0 1.23456790123456 
+2 586 587 
+p 0.1 1 0 1.23456790123456 
+2 587 588 
+p 0.1 1 0 1.23456790123456 
+2 587 588 
+p 0.1 1 0 1.23456790123456 
+2 588 589 
+p 0.1 1 0 1.23456790123457 
+2 588 589 
+p 0.1 1 0 1.23456790123457 
+2 589 590 
+p 0.1 1 0 1.23456790123457 
+2 589 590 
+p 0.1 1 0 1.23456790123457 
+2 590 591 
+p 0.1 1 0 1.23456790123457 
+2 590 591 
+p 0.1 1 0 1.23456790123457 
+2 591 592 
+p 0.1 1 0 1.23456790123457 
+2 591 592 
+p 0.1 1 0 1.23456790123457 
+2 592 593 
+p 0.1 1 0 1.23456790123457 
+2 592 593 
+p 0.1 1 0 1.23456790123457 
+2 593 594 
+p 0.1 1 0 1.23456790123457 
+2 593 594 
+p 0.1 1 0 1.23456790123457 
+2 594 595 
+p 0.1 1 0 1.23456790123457 
+2 594 595 
+p 0.1 1 0 1.23456790123457 
+2 595 596 
+p 0.1 1 0 1.23456790123456 
+2 595 596 
+p 0.1 1 0 1.23456790123456 
+2 596 597 
+p 0.1 1 0 1.23456790123457 
+2 596 597 
+p 0.1 1 0 1.23456790123457 
+2 597 598 
+p 0.1 1 0 1.23456790123457 
+2 597 598 
+p 0.1 1 0 1.23456790123457 
+2 598 599 
+p 0.1 1 0 1.23456790123457 
+2 598 599 
+p 0.1 1 0 1.23456790123457 
+2 599 600 
+p 0.1 1 0 1.23456790123457 
+2 599 600 
+p 0.1 1 0 1.23456790123457 
+2 600 601 
+p 0.1 1 0 1.23456790123457 
+2 600 601 
+p 0.1 1 0 1.23456790123457 
+2 601 602 
+p 0.1 1 0 1.23456790123457 
+2 601 602 
+p 0.1 1 0 1.23456790123457 
+2 602 603 
+p 0.1 1 0 1.23456790123457 
+2 602 603 
+p 0.1 1 0 1.23456790123457 
+2 603 604 
+p 0.1 1 0 1.23456790123457 
+2 603 604 
+p 0.1 1 0 1.23456790123457 
+2 604 605 
+p 0.1 1 0 1.23456790123457 
+2 604 605 
+p 0.1 1 0 1.23456790123457 
+2 605 606 
+p 0.1 1 0 1.23456790123457 
+2 605 606 
+p 0.1 1 0 1.23456790123457 
+2 606 607 
+p 0.1 1 0 1.23456790123456 
+2 606 607 
+p 0.1 1 0 1.23456790123456 
+2 607 608 
+p 0.1 1 0 1.23456790123457 
+2 607 608 
+p 0.1 1 0 1.23456790123457 
+2 608 609 
+p 0.1 1 0 1.23456790123457 
+2 608 609 
+p 0.1 1 0 1.23456790123457 
+2 609 610 
+p 0.1 1 0 1.23456790123457 
+2 609 610 
+p 0.1 1 0 1.23456790123457 
+2 610 611 
+p 0.1 1 0 1.23456790123457 
+2 610 611 
+p 0.1 1 0 1.23456790123457 
+2 611 612 
+p 0.1 1 0 1.23456790123456 
+2 611 612 
+p 0.1 1 0 1.23456790123456 
+2 612 613 
+p 0.1 1 0 1.23456790123457 
+2 612 613 
+p 0.1 1 0 1.23456790123457 
+2 613 614 
+p 0.1 1 0 1.23456790123457 
+2 613 614 
+p 0.1 1 0 1.23456790123457 
+2 614 615 
+p 0.1 1 0 1.23456790123457 
+2 614 615 
+p 0.1 1 0 1.23456790123457 
+2 615 616 
+p 0.1 1 0 1.23456790123457 
+2 615 616 
+p 0.1 1 0 1.23456790123457 
+2 616 617 
+p 0.1 1 0 1.23456790123457 
+2 616 617 
+p 0.1 1 0 1.23456790123457 
+2 617 618 
+p 0.1 1 0 1.23456790123457 
+2 617 618 
+p 0.1 1 0 1.23456790123457 
+2 618 619 
+p 0.1 1 0 1.23456790123457 
+2 618 619 
+p 0.1 1 0 1.23456790123457 
+2 619 620 
+p 0.1 1 0 1.23456790123457 
+2 619 620 
+p 0.1 1 0 1.23456790123457 
+2 620 621 
+p 0.1 1 0 1.23456790123457 
+2 620 621 
+p 0.1 1 0 1.23456790123457 
+2 621 622 
+p 0.1 1 0 1.23456790123457 
+2 621 622 
+p 0.1 1 0 1.23456790123457 
+2 622 623 
+p 0.1 1 0 1.23456790123457 
+2 622 623 
+p 0.1 1 0 1.23456790123457 
+2 623 624 
+p 0.1 1 0 1.23456790123457 
+2 623 624 
+p 0.1 1 0 1.23456790123457 
+2 624 625 
+p 0.1 1 0 1.23456790123457 
+2 624 625 
+p 0.1 1 0 1.23456790123457 
+2 625 626 
+p 0.1 1 0 1.23456790123457 
+2 625 626 
+p 0.1 1 0 1.23456790123457 
+2 626 627 
+p 0.1 1 0 1.23456790123457 
+2 626 627 
+p 0.1 1 0 1.23456790123457 
+2 627 628 
+p 0.1 1 0 1.23456790123457 
+2 627 628 
+p 0.1 1 0 1.23456790123457 
+2 628 629 
+p 0.1 1 0 1.23456790123457 
+2 628 629 
+p 0.1 1 0 1.23456790123457 
+2 629 630 
+p 0.1 1 0 1.23456790123457 
+2 629 630 
+p 0.1 1 0 1.23456790123457 
+2 630 631 
+p 0.1 1 0 1.23456790123457 
+2 630 631 
+p 0.1 1 0 1.23456790123457 
+2 631 632 
+p 0.1 1 0 1.23456790123457 
+2 631 632 
+p 0.1 1 0 1.23456790123457 
+2 632 633 
+p 0.1 1 0 1.23456790123457 
+2 632 633 
+p 0.1 1 0 1.23456790123457 
+2 633 634 
+p 0.1 1 0 1.23456790123457 
+2 633 634 
+p 0.1 1 0 1.23456790123457 
+2 634 635 
+p 0.1 1 0 1.23456790123457 
+2 634 635 
+p 0.1 1 0 1.23456790123457 
+2 635 636 
+p 0.1 1 0 1.23456790123457 
+2 635 636 
+p 0.1 1 0 1.23456790123457 
+2 636 637 
+p 0.1 1 0 1.23456790123457 
+2 636 637 
+p 0.1 1 0 1.23456790123457 
+2 637 638 
+p 0.1 1 0 1.23456790123457 
+2 637 638 
+p 0.1 1 0 1.23456790123457 
+2 638 639 
+p 0.1 1 0 1.23456790123457 
+2 638 639 
+p 0.1 1 0 1.23456790123457 
+2 639 640 
+p 0.1 1 0 1.23456790123457 
+2 639 640 
+p 0.1 1 0 1.23456790123457 
+2 640 641 
+p 0.1 1 0 1.23456790123457 
+2 640 641 
+p 0.1 1 0 1.23456790123457 
+2 641 642 
+p 0.1 1 0 1.23456790123457 
+2 641 642 
+p 0.1 1 0 1.23456790123457 
+2 642 643 
+p 0.1 1 0 1.23456790123457 
+2 642 643 
+p 0.1 1 0 1.23456790123457 
+2 643 644 
+p 0.1 1 0 1.23456790123457 
+2 643 644 
+p 0.1 1 0 1.23456790123457 
+2 644 645 
+p 0.1 1 0 1.23456790123457 
+2 644 645 
+p 0.1 1 0 1.23456790123457 
+2 645 646 
+p 0.1 1 0 1.23456790123457 
+2 645 646 
+p 0.1 1 0 1.23456790123457 
+2 646 647 
+p 0.1 1 0 1.23456790123457 
+2 646 647 
+p 0.1 1 0 1.23456790123457 
+2 647 648 
+p 0.1 1 0 1.23456790123457 
+2 647 648 
+p 0.1 1 0 1.23456790123457 
+2 648 649 
+p 0.1 1 0 1.23456790123457 
+2 648 649 
+p 0.1 1 0 1.23456790123457 
+2 649 650 
+p 0.1 1 0 1.23456790123457 
+2 649 650 
+p 0.1 1 0 1.23456790123457 
+2 650 651 
+p 0.1 1 0 1.23456790123457 
+2 650 651 
+p 0.1 1 0 1.23456790123457 
+2 651 652 
+p 0.1 1 0 1.23456790123457 
+2 651 652 
+p 0.1 1 0 1.23456790123457 
+2 652 653 
+p 0.1 1 0 1.23456790123457 
+2 652 653 
+p 0.1 1 0 1.23456790123457 
+2 653 654 
+p 0.1 1 0 1.23456790123457 
+2 653 654 
+p 0.1 1 0 1.23456790123457 
+2 654 655 
+p 0.1 1 0 1.23456790123457 
+2 654 655 
+p 0.1 1 0 1.23456790123457 
+2 655 656 
+p 0.1 1 0 1.23456790123457 
+2 655 656 
+p 0.1 1 0 1.23456790123457 
+2 656 657 
+p 0.1 1 0 1.23456790123457 
+2 656 657 
+p 0.1 1 0 1.23456790123457 
+2 657 658 
+p 0.1 1 0 1.23456790123457 
+2 657 658 
+p 0.1 1 0 1.23456790123457 
+2 658 659 
+p 0.1 1 0 1.23456790123457 
+2 658 659 
+p 0.1 1 0 1.23456790123457 
+2 659 660 
+p 0.1 1 0 1.23456790123457 
+2 659 660 
+p 0.1 1 0 1.23456790123457 
+2 660 661 
+p 0.1 1 0 1.23456790123457 
+2 660 661 
+p 0.1 1 0 1.23456790123457 
+2 661 662 
+p 0.1 1 0 1.23456790123457 
+2 661 662 
+p 0.1 1 0 1.23456790123457 
+2 662 663 
+p 0.1 1 0 1.23456790123457 
+2 662 663 
+p 0.1 1 0 1.23456790123457 
+2 663 664 
+p 0.1 1 0 1.23456790123457 
+2 663 664 
+p 0.1 1 0 1.23456790123457 
+2 664 665 
+p 0.1 1 0 1.23456790123457 
+2 664 665 
+p 0.1 1 0 1.23456790123457 
+2 665 666 
+p 0.1 1 0 1.23456790123457 
+2 665 666 
+p 0.1 1 0 1.23456790123457 
+2 666 667 
+p 0.1 1 0 1.23456790123457 
+2 666 667 
+p 0.1 1 0 1.23456790123457 
+2 667 668 
+p 0.1 1 0 1.23456790123457 
+2 667 668 
+p 0.1 1 0 1.23456790123457 
+2 668 669 
+p 0.1 1 0 1.23456790123457 
+2 668 669 
+p 0.1 1 0 1.23456790123457 
+2 669 670 
+p 0.1 1 0 1.23456790123457 
+2 669 670 
+p 0.1 1 0 1.23456790123457 
+2 670 671 
+p 0.1 1 0 1.23456790123457 
+2 670 671 
+p 0.1 1 0 1.23456790123457 
+2 671 672 
+p 0.1 1 0 1.23456790123457 
+2 671 672 
+p 0.1 1 0 1.23456790123457 
+2 672 673 
+p 0.1 1 0 1.23456790123457 
+2 672 673 
+p 0.1 1 0 1.23456790123457 
+2 673 674 
+p 0.1 1 0 1.23456790123457 
+2 673 674 
+p 0.1 1 0 1.23456790123457 
+2 674 675 
+p 0.1 1 0 1.23456790123457 
+2 674 675 
+p 0.1 1 0 1.23456790123457 
+2 675 676 
+p 0.1 1 0 1.23456790123457 
+2 675 676 
+p 0.1 1 0 1.23456790123457 
+2 676 677 
+p 0.1 1 0 1.23456790123457 
+2 676 677 
+p 0.1 1 0 1.23456790123457 
+2 677 678 
+p 0.1 1 0 1.23456790123457 
+2 677 678 
+p 0.1 1 0 1.23456790123457 
+2 678 679 
+p 0.1 1 0 1.23456790123457 
+2 678 679 
+p 0.1 1 0 1.23456790123457 
+2 679 680 
+p 0.1 1 0 1.23456790123457 
+2 679 680 
+p 0.1 1 0 1.23456790123457 
+2 680 681 
+p 0.1 1 0 1.23456790123457 
+2 680 681 
+p 0.1 1 0 1.23456790123457 
+2 681 682 
+p 0.1 1 0 1.23456790123457 
+2 681 682 
+p 0.1 1 0 1.23456790123457 
+2 682 683 
+p 0.1 1 0 1.23456790123457 
+2 682 683 
+p 0.1 1 0 1.23456790123457 
+2 683 684 
+p 0.1 1 0 1.23456790123456 
+2 683 684 
+p 0.1 1 0 1.23456790123456 
+2 684 685 
+p 0.1 1 0 1.23456790123457 
+2 684 685 
+p 0.1 1 0 1.23456790123457 
+2 685 686 
+p 0.1 1 0 1.23456790123457 
+2 685 686 
+p 0.1 1 0 1.23456790123457 
+2 686 687 
+p 0.1 1 0 1.23456790123457 
+2 686 687 
+p 0.1 1 0 1.23456790123457 
+2 687 688 
+p 0.1 1 0 1.23456790123457 
+2 687 688 
+p 0.1 1 0 1.23456790123457 
+2 688 689 
+p 0.1 1 0 1.23456790123457 
+2 688 689 
+p 0.1 1 0 1.23456790123457 
+2 689 690 
+p 0.1 1 0 1.23456790123457 
+2 689 690 
+p 0.1 1 0 1.23456790123457 
+2 690 691 
+p 0.1 1 0 1.23456790123456 
+2 690 691 
+p 0.1 1 0 1.23456790123456 
+2 691 692 
+p 0.1 1 0 1.23456790123457 
+2 691 692 
+p 0.1 1 0 1.23456790123457 
+2 692 693 
+p 0.1 1 0 1.23456790123457 
+2 692 693 
+p 0.1 1 0 1.23456790123457 
+2 693 694 
+p 0.1 1 0 1.23456790123457 
+2 693 694 
+p 0.1 1 0 1.23456790123457 
+2 694 695 
+p 0.1 1 0 1.23456790123456 
+2 694 695 
+p 0.1 1 0 1.23456790123456 
+2 695 696 
+p 0.1 1 0 1.23456790123457 
+2 695 696 
+p 0.1 1 0 1.23456790123457 
+2 696 697 
+p 0.1 1 0 1.23456790123457 
+2 696 697 
+p 0.1 1 0 1.23456790123457 
+2 697 698 
+p 0.1 1 0 1.23456790123457 
+2 697 698 
+p 0.1 1 0 1.23456790123457 
+2 698 699 
+p 0.1 1 0 1.23456790123457 
+2 698 699 
+p 0.1 1 0 1.23456790123457 
+2 699 700 
+p 0.1 1 0 1.23456790123457 
+2 699 700 
+p 0.1 1 0 1.23456790123457 
+2 700 701 
+p 0.1 1 0 1.23456790123457 
+2 700 701 
+p 0.1 1 0 1.23456790123457 
+2 701 702 
+p 0.1 1 0 1.23456790123457 
+2 701 702 
+p 0.1 1 0 1.23456790123457 
+2 702 703 
+p 0.1 1 0 1.23456790123457 
+2 702 703 
+p 0.1 1 0 1.23456790123457 
+2 703 704 
+p 0.1 1 0 1.23456790123457 
+2 703 704 
+p 0.1 1 0 1.23456790123457 
+2 704 705 
+p 0.1 1 0 1.23456790123457 
+2 704 705 
+p 0.1 1 0 1.23456790123457 
+2 705 706 
+p 0.1 1 0 1.23456790123457 
+2 705 706 
+p 0.1 1 0 1.23456790123457 
+2 706 707 
+p 0.1 1 0 1.23456790123457 
+2 706 707 
+p 0.1 1 0 1.23456790123457 
+2 707 708 
+p 0.1 1 0 1.23456790123457 
+2 707 708 
+p 0.1 1 0 1.23456790123457 
+2 708 709 
+p 0.1 1 0 1.23456790123457 
+2 708 709 
+p 0.1 1 0 1.23456790123457 
+2 709 710 
+p 0.1 1 0 1.23456790123457 
+2 709 710 
+p 0.1 1 0 1.23456790123457 
+2 710 711 
+p 0.1 1 0 1.23456790123457 
+2 710 711 
+p 0.1 1 0 1.23456790123457 
+2 711 712 
+p 0.1 1 0 1.23456790123457 
+2 711 712 
+p 0.1 1 0 1.23456790123457 
+2 712 713 
+p 0.1 1 0 1.23456790123457 
+2 712 713 
+p 0.1 1 0 1.23456790123457 
+2 713 714 
+p 0.1 1 0 1.23456790123457 
+2 713 714 
+p 0.1 1 0 1.23456790123457 
+2 714 715 
+p 0.1 1 0 1.23456790123457 
+2 714 715 
+p 0.1 1 0 1.23456790123457 
+2 715 716 
+p 0.1 1 0 1.23456790123456 
+2 715 716 
+p 0.1 1 0 1.23456790123456 
+2 716 717 
+p 0.1 1 0 1.23456790123457 
+2 716 717 
+p 0.1 1 0 1.23456790123457 
+2 717 718 
+p 0.1 1 0 1.23456790123457 
+2 717 718 
+p 0.1 1 0 1.23456790123457 
+2 718 719 
+p 0.1 1 0 1.23456790123457 
+2 718 719 
+p 0.1 1 0 1.23456790123457 
+2 719 720 
+p 0.1 1 0 1.23456790123457 
+2 719 720 
+p 0.1 1 0 1.23456790123457 
+2 720 721 
+p 0.1 1 0 1.23456790123457 
+2 720 721 
+p 0.1 1 0 1.23456790123457 
+2 721 722 
+p 0.1 1 0 1.23456790123457 
+2 721 722 
+p 0.1 1 0 1.23456790123457 
+2 722 723 
+p 0.1 1 0 1.23456790123457 
+2 722 723 
+p 0.1 1 0 1.23456790123457 
+2 723 724 
+p 0.1 1 0 1.23456790123457 
+2 723 724 
+p 0.1 1 0 1.23456790123457 
+2 724 725 
+p 0.1 1 0 1.23456790123457 
+2 724 725 
+p 0.1 1 0 1.23456790123457 
+2 725 726 
+p 0.1 1 0 1.23456790123457 
+2 725 726 
+p 0.1 1 0 1.23456790123457 
+2 726 727 
+p 0.1 1 0 1.23456790123457 
+2 726 727 
+p 0.1 1 0 1.23456790123457 
+2 727 728 
+p 0.1 1 0 1.23456790123457 
+2 727 728 
+p 0.1 1 0 1.23456790123457 
+2 728 729 
+p 0.1 1 0 1.23456790123457 
+2 728 729 
+p 0.1 1 0 1.23456790123457 
+2 729 730 
+p 0.1 1 0 1.23456790123457 
+2 729 730 
+p 0.1 1 0 1.23456790123457 
+2 730 731 
+p 0.1 1 0 1.23456790123457 
+2 730 731 
+p 0.1 1 0 1.23456790123457 
+2 731 732 
+p 0.1 1 0 1.23456790123457 
+2 731 732 
+p 0.1 1 0 1.23456790123457 
+2 732 733 
+p 0.1 1 0 1.23456790123457 
+2 732 733 
+p 0.1 1 0 1.23456790123457 
+2 733 734 
+p 0.1 1 0 1.23456790123457 
+2 733 734 
+p 0.1 1 0 1.23456790123457 
+2 734 735 
+p 0.1 1 0 1.23456790123457 
+2 734 735 
+p 0.1 1 0 1.23456790123457 
+2 735 736 
+p 0.1 1 0 1.23456790123457 
+2 735 736 
+p 0.1 1 0 1.23456790123457 
+2 736 737 
+p 0.1 1 0 1.23456790123457 
+2 736 737 
+p 0.1 1 0 1.23456790123457 
+2 737 738 
+p 0.1 1 0 1.23456790123457 
+2 737 738 
+p 0.1 1 0 1.23456790123457 
+2 738 739 
+p 0.1 1 0 1.23456790123457 
+2 738 739 
+p 0.1 1 0 1.23456790123457 
+2 739 740 
+p 0.1 1 0 1.23456790123457 
+2 739 740 
+p 0.1 1 0 1.23456790123457 
+2 740 741 
+p 0.1 1 0 1.23456790123457 
+2 740 741 
+p 0.1 1 0 1.23456790123457 
+2 741 742 
+p 0.1 1 0 1.23456790123457 
+2 741 742 
+p 0.1 1 0 1.23456790123457 
+2 742 743 
+p 0.1 1 0 1.23456790123457 
+2 742 743 
+p 0.1 1 0 1.23456790123457 
+2 743 744 
+p 0.1 1 0 1.23456790123457 
+2 743 744 
+p 0.1 1 0 1.23456790123457 
+2 744 745 
+p 0.1 1 0 1.23456790123457 
+2 744 745 
+p 0.1 1 0 1.23456790123457 
+2 745 746 
+p 0.1 1 0 1.23456790123457 
+2 745 746 
+p 0.1 1 0 1.23456790123457 
+2 746 747 
+p 0.1 1 0 1.23456790123457 
+2 746 747 
+p 0.1 1 0 1.23456790123457 
+2 747 748 
+p 0.1 1 0 1.23456790123457 
+2 747 748 
+p 0.1 1 0 1.23456790123457 
+2 748 749 
+p 0.1 1 0 1.23456790123457 
+2 748 749 
+p 0.1 1 0 1.23456790123457 
+2 749 750 
+p 0.1 1 0 1.23456790123457 
+2 749 750 
+p 0.1 1 0 1.23456790123457 
+2 750 751 
+p 0.1 1 0 1.23456790123457 
+2 750 751 
+p 0.1 1 0 1.23456790123457 
+2 751 752 
+p 0.1 1 0 1.23456790123457 
+2 751 752 
+p 0.1 1 0 1.23456790123457 
+2 752 753 
+p 0.1 1 0 1.23456790123457 
+2 752 753 
+p 0.1 1 0 1.23456790123457 
+2 753 754 
+p 0.1 1 0 1.23456790123457 
+2 753 754 
+p 0.1 1 0 1.23456790123457 
+2 754 755 
+p 0.1 1 0 1.23456790123457 
+2 754 755 
+p 0.1 1 0 1.23456790123457 
+2 755 756 
+p 0.1 1 0 1.23456790123457 
+2 755 756 
+p 0.1 1 0 1.23456790123457 
+2 756 757 
+p 0.1 1 0 1.23456790123457 
+2 756 757 
+p 0.1 1 0 1.23456790123457 
+2 757 758 
+p 0.1 1 0 1.23456790123457 
+2 757 758 
+p 0.1 1 0 1.23456790123457 
+2 758 759 
+p 0.1 1 0 1.23456790123457 
+2 758 759 
+p 0.1 1 0 1.23456790123457 
+2 759 760 
+p 0.1 1 0 1.23456790123457 
+2 759 760 
+p 0.1 1 0 1.23456790123457 
+2 760 761 
+p 0.1 1 0 1.23456790123457 
+2 760 761 
+p 0.1 1 0 1.23456790123457 
+2 761 762 
+p 0.1 1 0 1.23456790123457 
+2 761 762 
+p 0.1 1 0 1.23456790123457 
+2 762 763 
+p 0.1 1 0 1.23456790123457 
+2 762 763 
+p 0.1 1 0 1.23456790123457 
+2 763 764 
+p 0.1 1 0 1.23456790123457 
+2 763 764 
+p 0.1 1 0 1.23456790123457 
+2 764 765 
+p 0.1 1 0 1.23456790123457 
+2 764 765 
+p 0.1 1 0 1.23456790123457 
+2 765 766 
+p 0.1 1 0 1.23456790123457 
+2 765 766 
+p 0.1 1 0 1.23456790123457 
+2 766 767 
+p 0.1 1 0 1.23456790123457 
+2 766 767 
+p 0.1 1 0 1.23456790123457 
+2 767 768 
+p 0.1 1 0 1.23456790123457 
+2 767 768 
+p 0.1 1 0 1.23456790123457 
+2 768 1 
+p 0.1 1 0 1.23456790123457 
+2 768 1 
+p 0.1 1 0 1.23456790123457 
+2 769 770 
+p 0.1 1 0 0.37037037037037 
+2 770 771 
+p 0.1 1 0 0.37037037037037 
+2 771 772 
+p 0.1 1 0 0.37037037037037 
+2 772 773 
+p 0.1 1 0 0.37037037037037 
+2 773 774 
+p 0.1 1 0 0.37037037037037 
+2 774 775 
+p 0.1 1 0 0.37037037037037 
+2 775 776 
+p 0.1 1 0 0.370370370370371 
+2 776 777 
+p 0.1 1 0 0.37037037037037 
+2 777 778 
+p 0.1 1 0 0.37037037037037 
+2 778 779 
+p 0.1 1 0 0.37037037037037 
+2 779 780 
+p 0.1 1 0 0.37037037037037 
+2 780 781 
+p 0.1 1 0 0.37037037037037 
+2 781 782 
+p 0.1 1 0 0.37037037037037 
+2 782 783 
+p 0.1 1 0 0.37037037037037 
+2 783 784 
+p 0.1 1 0 0.370370370370371 
+2 784 785 
+p 0.1 1 0 0.37037037037037 
+2 785 786 
+p 0.1 1 0 0.37037037037037 
+2 786 787 
+p 0.1 1 0 0.37037037037037 
+2 787 788 
+p 0.1 1 0 0.37037037037037 
+2 788 789 
+p 0.1 1 0 0.37037037037037 
+2 789 790 
+p 0.1 1 0 0.370370370370371 
+2 790 791 
+p 0.1 1 0 0.37037037037037 
+2 791 792 
+p 0.1 1 0 0.37037037037037 
+2 792 793 
+p 0.1 1 0 0.37037037037037 
+2 793 794 
+p 0.1 1 0 0.37037037037037 
+2 794 795 
+p 0.1 1 0 0.37037037037037 
+2 795 796 
+p 0.1 1 0 0.37037037037037 
+2 796 797 
+p 0.1 1 0 0.37037037037037 
+2 797 798 
+p 0.1 1 0 0.37037037037037 
+2 798 799 
+p 0.1 1 0 0.37037037037037 
+2 799 800 
+p 0.1 1 0 0.37037037037037 
+2 800 801 
+p 0.1 1 0 0.37037037037037 
+2 801 802 
+p 0.1 1 0 0.37037037037037 
+2 802 803 
+p 0.1 1 0 0.370370370370371 
+2 803 804 
+p 0.1 1 0 0.370370370370371 
+2 804 805 
+p 0.1 1 0 0.37037037037037 
+2 805 806 
+p 0.1 1 0 0.370370370370371 
+2 806 807 
+p 0.1 1 0 0.370370370370371 
+2 807 808 
+p 0.1 1 0 0.37037037037037 
+2 808 809 
+p 0.1 1 0 0.370370370370371 
+2 809 810 
+p 0.1 1 0 0.37037037037037 
+2 810 811 
+p 0.1 1 0 0.370370370370371 
+2 811 812 
+p 0.1 1 0 0.37037037037037 
+2 812 813 
+p 0.1 1 0 0.370370370370371 
+2 813 814 
+p 0.1 1 0 0.37037037037037 
+2 814 815 
+p 0.1 1 0 0.37037037037037 
+2 815 816 
+p 0.1 1 0 0.37037037037037 
+2 816 817 
+p 0.1 1 0 0.370370370370371 
+2 817 818 
+p 0.1 1 0 0.37037037037037 
+2 818 819 
+p 0.1 1 0 0.37037037037037 
+2 819 820 
+p 0.1 1 0 0.37037037037037 
+2 820 821 
+p 0.1 1 0 0.37037037037037 
+2 821 822 
+p 0.1 1 0 0.37037037037037 
+2 822 823 
+p 0.1 1 0 0.37037037037037 
+2 823 824 
+p 0.1 1 0 0.37037037037037 
+2 824 825 
+p 0.1 1 0 0.37037037037037 
+2 825 826 
+p 0.1 1 0 0.37037037037037 
+2 826 827 
+p 0.1 1 0 0.37037037037037 
+2 827 828 
+p 0.1 1 0 0.37037037037037 
+2 828 829 
+p 0.1 1 0 0.37037037037037 
+2 829 830 
+p 0.1 1 0 0.37037037037037 
+2 830 831 
+p 0.1 1 0 0.37037037037037 
+2 831 832 
+p 0.1 1 0 0.37037037037037 
+2 832 833 
+p 0.1 1 0 0.370370370370371 
+2 833 834 
+p 0.1 1 0 0.370370370370371 
+2 834 835 
+p 0.1 1 0 0.37037037037037 
+2 835 836 
+p 0.1 1 0 0.370370370370369 
+2 836 837 
+p 0.1 1 0 0.37037037037037 
+2 837 838 
+p 0.1 1 0 0.370370370370371 
+2 838 839 
+p 0.1 1 0 0.370370370370369 
+2 839 840 
+p 0.1 1 0 0.37037037037037 
+2 840 841 
+p 0.1 1 0 0.37037037037037 
+2 841 842 
+p 0.1 1 0 0.370370370370371 
+2 842 843 
+p 0.1 1 0 0.370370370370371 
+2 843 844 
+p 0.1 1 0 0.37037037037037 
+2 844 845 
+p 0.1 1 0 0.370370370370371 
+2 845 846 
+p 0.1 1 0 0.37037037037037 
+2 846 847 
+p 0.1 1 0 0.370370370370371 
+2 847 848 
+p 0.1 1 0 0.370370370370371 
+2 848 849 
+p 0.1 1 0 0.37037037037037 
+2 849 850 
+p 0.1 1 0 0.37037037037037 
+2 850 851 
+p 0.1 1 0 0.370370370370371 
+2 851 852 
+p 0.1 1 0 0.37037037037037 
+2 852 853 
+p 0.1 1 0 0.37037037037037 
+2 853 854 
+p 0.1 1 0 0.370370370370371 
+2 854 855 
+p 0.1 1 0 0.37037037037037 
+2 855 856 
+p 0.1 1 0 0.370370370370371 
+2 856 857 
+p 0.1 1 0 0.370370370370371 
+2 857 858 
+p 0.1 1 0 0.37037037037037 
+2 858 859 
+p 0.1 1 0 0.370370370370369 
+2 859 860 
+p 0.1 1 0 0.370370370370369 
+2 860 861 
+p 0.1 1 0 0.37037037037037 
+2 861 862 
+p 0.1 1 0 0.370370370370371 
+2 862 863 
+p 0.1 1 0 0.370370370370369 
+2 863 864 
+p 0.1 1 0 0.37037037037037 
+2 864 865 
+p 0.1 1 0 0.370370370370371 
+2 865 866 
+p 0.1 1 0 0.370370370370371 
+2 866 867 
+p 0.1 1 0 0.370370370370371 
+2 867 868 
+p 0.1 1 0 0.37037037037037 
+2 868 869 
+p 0.1 1 0 0.370370370370371 
+2 869 870 
+p 0.1 1 0 0.37037037037037 
+2 870 871 
+p 0.1 1 0 0.370370370370371 
+2 871 872 
+p 0.1 1 0 0.370370370370369 
+2 872 873 
+p 0.1 1 0 0.37037037037037 
+2 873 874 
+p 0.1 1 0 0.37037037037037 
+2 874 875 
+p 0.1 1 0 0.370370370370369 
+2 875 876 
+p 0.1 1 0 0.37037037037037 
+2 876 877 
+p 0.1 1 0 0.37037037037037 
+2 877 878 
+p 0.1 1 0 0.370370370370371 
+2 878 879 
+p 0.1 1 0 0.370370370370371 
+2 879 880 
+p 0.1 1 0 0.37037037037037 
+2 880 881 
+p 0.1 1 0 0.370370370370371 
+2 881 882 
+p 0.1 1 0 0.370370370370371 
+2 882 883 
+p 0.1 1 0 0.370370370370371 
+2 883 884 
+p 0.1 1 0 0.370370370370371 
+2 884 885 
+p 0.1 1 0 0.370370370370371 
+2 885 886 
+p 0.1 1 0 0.370370370370371 
+2 886 887 
+p 0.1 1 0 0.370370370370371 
+2 887 888 
+p 0.1 1 0 0.370370370370371 
+2 888 889 
+p 0.1 1 0 0.370370370370371 
+2 889 890 
+p 0.1 1 0 0.370370370370371 
+2 890 891 
+p 0.1 1 0 0.37037037037037 
+2 891 892 
+p 0.1 1 0 0.370370370370372 
+2 892 893 
+p 0.1 1 0 0.370370370370371 
+2 893 894 
+p 0.1 1 0 0.370370370370371 
+2 894 895 
+p 0.1 1 0 0.37037037037037 
+2 895 896 
+p 0.1 1 0 0.370370370370369 
+2 896 897 
+p 0.1 1 0 0.370370370370371 
+2 897 898 
+p 0.1 1 0 0.370370370370371 
+2 898 899 
+p 0.1 1 0 0.370370370370369 
+2 899 900 
+p 0.1 1 0 0.37037037037037 
+2 900 901 
+p 0.1 1 0 0.370370370370371 
+2 901 902 
+p 0.1 1 0 0.370370370370371 
+2 902 903 
+p 0.1 1 0 0.370370370370372 
+2 903 904 
+p 0.1 1 0 0.37037037037037 
+2 904 905 
+p 0.1 1 0 0.370370370370371 
+2 905 906 
+p 0.1 1 0 0.370370370370371 
+2 906 907 
+p 0.1 1 0 0.370370370370371 
+2 907 908 
+p 0.1 1 0 0.370370370370371 
+2 908 909 
+p 0.1 1 0 0.370370370370371 
+2 909 910 
+p 0.1 1 0 0.370370370370371 
+2 910 911 
+p 0.1 1 0 0.370370370370371 
+2 911 912 
+p 0.1 1 0 0.370370370370371 
+2 912 913 
+p 0.1 1 0 0.370370370370371 
+2 913 914 
+p 0.1 1 0 0.370370370370371 
+2 914 915 
+p 0.1 1 0 0.37037037037037 
+2 915 916 
+p 0.1 1 0 0.370370370370371 
+2 916 917 
+p 0.1 1 0 0.370370370370371 
+2 917 918 
+p 0.1 1 0 0.37037037037037 
+2 918 919 
+p 0.1 1 0 0.37037037037037 
+2 919 920 
+p 0.1 1 0 0.370370370370369 
+2 920 921 
+p 0.1 1 0 0.37037037037037 
+2 921 922 
+p 0.1 1 0 0.37037037037037 
+2 922 923 
+p 0.1 1 0 0.370370370370369 
+2 923 924 
+p 0.1 1 0 0.37037037037037 
+2 924 925 
+p 0.1 1 0 0.37037037037037 
+2 925 926 
+p 0.1 1 0 0.370370370370369 
+2 926 927 
+p 0.1 1 0 0.37037037037037 
+2 927 928 
+p 0.1 1 0 0.370370370370368 
+2 928 929 
+p 0.1 1 0 0.370370370370371 
+2 929 930 
+p 0.1 1 0 0.37037037037037 
+2 930 931 
+p 0.1 1 0 0.370370370370369 
+2 931 932 
+p 0.1 1 0 0.370370370370371 
+2 932 933 
+p 0.1 1 0 0.37037037037037 
+2 933 934 
+p 0.1 1 0 0.370370370370369 
+2 934 935 
+p 0.1 1 0 0.370370370370371 
+2 935 936 
+p 0.1 1 0 0.370370370370368 
+2 936 937 
+p 0.1 1 0 0.370370370370369 
+2 937 938 
+p 0.1 1 0 0.370370370370371 
+2 938 939 
+p 0.1 1 0 0.37037037037037 
+2 939 940 
+p 0.1 1 0 0.370370370370372 
+2 940 941 
+p 0.1 1 0 0.370370370370369 
+2 941 942 
+p 0.1 1 0 0.37037037037037 
+2 942 943 
+p 0.1 1 0 0.370370370370369 
+2 943 944 
+p 0.1 1 0 0.370370370370369 
+2 944 945 
+p 0.1 1 0 0.37037037037037 
+2 945 946 
+p 0.1 1 0 0.37037037037037 
+2 946 947 
+p 0.1 1 0 0.370370370370369 
+2 947 948 
+p 0.1 1 0 0.37037037037037 
+2 948 949 
+p 0.1 1 0 0.37037037037037 
+2 949 950 
+p 0.1 1 0 0.370370370370369 
+2 950 951 
+p 0.1 1 0 0.370370370370371 
+2 951 952 
+p 0.1 1 0 0.370370370370368 
+2 952 953 
+p 0.1 1 0 0.370370370370371 
+2 953 954 
+p 0.1 1 0 0.370370370370369 
+2 954 955 
+p 0.1 1 0 0.370370370370369 
+2 955 956 
+p 0.1 1 0 0.370370370370371 
+2 956 957 
+p 0.1 1 0 0.37037037037037 
+2 957 958 
+p 0.1 1 0 0.370370370370369 
+2 958 959 
+p 0.1 1 0 0.370370370370371 
+2 959 960 
+p 0.1 1 0 0.370370370370369 
+2 960 961 
+p 0.1 1 0 0.370370370370369 
+2 961 962 
+p 0.1 1 0 0.370370370370371 
+2 962 963 
+p 0.1 1 0 0.370370370370372 
+2 963 964 
+p 0.1 1 0 0.37037037037037 
+2 964 965 
+p 0.1 1 0 0.370370370370371 
+2 965 966 
+p 0.1 1 0 0.37037037037037 
+2 966 967 
+p 0.1 1 0 0.370370370370369 
+2 967 968 
+p 0.1 1 0 0.370370370370371 
+2 968 969 
+p 0.1 1 0 0.37037037037037 
+2 969 970 
+p 0.1 1 0 0.37037037037037 
+2 970 971 
+p 0.1 1 0 0.370370370370371 
+2 971 972 
+p 0.1 1 0 0.370370370370369 
+2 972 973 
+p 0.1 1 0 0.37037037037037 
+2 973 974 
+p 0.1 1 0 0.370370370370371 
+2 974 975 
+p 0.1 1 0 0.37037037037037 
+2 975 976 
+p 0.1 1 0 0.370370370370372 
+2 976 977 
+p 0.1 1 0 0.370370370370371 
+2 977 978 
+p 0.1 1 0 0.37037037037037 
+2 978 979 
+p 0.1 1 0 0.370370370370369 
+2 979 980 
+p 0.1 1 0 0.370370370370371 
+2 980 981 
+p 0.1 1 0 0.37037037037037 
+2 981 982 
+p 0.1 1 0 0.37037037037037 
+2 982 983 
+p 0.1 1 0 0.370370370370367 
+2 983 984 
+p 0.1 1 0 0.370370370370368 
+2 984 985 
+p 0.1 1 0 0.370370370370369 
+2 985 986 
+p 0.1 1 0 0.370370370370371 
+2 986 987 
+p 0.1 1 0 0.37037037037037 
+2 987 988 
+p 0.1 1 0 0.37037037037037 
+2 988 989 
+p 0.1 1 0 0.370370370370371 
+2 989 990 
+p 0.1 1 0 0.370370370370369 
+2 990 991 
+p 0.1 1 0 0.370370370370369 
+2 991 992 
+p 0.1 1 0 0.370370370370371 
+2 992 993 
+p 0.1 1 0 0.370370370370369 
+2 993 994 
+p 0.1 1 0 0.370370370370369 
+2 994 995 
+p 0.1 1 0 0.370370370370371 
+2 995 996 
+p 0.1 1 0 0.370370370370369 
+2 996 997 
+p 0.1 1 0 0.370370370370369 
+2 997 998 
+p 0.1 1 0 0.370370370370371 
+2 998 999 
+p 0.1 1 0 0.37037037037037 
+2 999 1000 
+p 0.1 1 0 0.37037037037037 
+2 1000 1001 
+p 0.1 1 0 0.370370370370371 
+2 1001 1002 
+p 0.1 1 0 0.370370370370369 
+2 1002 1003 
+p 0.1 1 0 0.370370370370369 
+2 1003 1004 
+p 0.1 1 0 0.370370370370371 
+2 1004 1005 
+p 0.1 1 0 0.370370370370369 
+2 1005 1006 
+p 0.1 1 0 0.37037037037037 
+2 1006 1007 
+p 0.1 1 0 0.370370370370371 
+2 1007 1008 
+p 0.1 1 0 0.370370370370369 
+2 1008 1009 
+p 0.1 1 0 0.37037037037037 
+2 1009 1010 
+p 0.1 1 0 0.370370370370371 
+2 1010 1011 
+p 0.1 1 0 0.37037037037037 
+2 1011 1012 
+p 0.1 1 0 0.370370370370372 
+2 1012 1013 
+p 0.1 1 0 0.370370370370371 
+2 1013 1014 
+p 0.1 1 0 0.37037037037037 
+2 1014 1015 
+p 0.1 1 0 0.370370370370369 
+2 1015 1016 
+p 0.1 1 0 0.370370370370371 
+2 1016 1017 
+p 0.1 1 0 0.37037037037037 
+2 1017 1018 
+p 0.1 1 0 0.37037037037037 
+2 1018 1019 
+p 0.1 1 0 0.370370370370371 
+2 1019 1020 
+p 0.1 1 0 0.370370370370369 
+2 1020 1021 
+p 0.1 1 0 0.37037037037037 
+2 1021 1022 
+p 0.1 1 0 0.370370370370371 
+2 1022 1023 
+p 0.1 1 0 0.370370370370372 
+2 1023 1024 
+p 0.1 1 0 0.37037037037037 
+2 1024 1025 
+p 0.1 1 0 0.370370370370371 
+2 1025 1026 
+p 0.1 1 0 0.370370370370369 
+2 1026 1027 
+p 0.1 1 0 0.370370370370369 
+2 1027 1028 
+p 0.1 1 0 0.370370370370371 
+2 1028 1029 
+p 0.1 1 0 0.370370370370369 
+2 1029 1030 
+p 0.1 1 0 0.370370370370369 
+2 1030 1031 
+p 0.1 1 0 0.370370370370371 
+2 1031 1032 
+p 0.1 1 0 0.370370370370369 
+2 1032 1033 
+p 0.1 1 0 0.370370370370369 
+2 1033 1034 
+p 0.1 1 0 0.370370370370371 
+2 1034 1035 
+p 0.1 1 0 0.37037037037037 
+2 1035 1036 
+p 0.1 1 0 0.370370370370372 
+2 1036 1037 
+p 0.1 1 0 0.370370370370371 
+2 1037 1038 
+p 0.1 1 0 0.370370370370369 
+2 1038 1039 
+p 0.1 1 0 0.370370370370369 
+2 1039 1040 
+p 0.1 1 0 0.370370370370371 
+2 1040 1041 
+p 0.1 1 0 0.370370370370369 
+2 1041 1042 
+p 0.1 1 0 0.370370370370369 
+2 1042 1043 
+p 0.1 1 0 0.370370370370371 
+2 1043 1044 
+p 0.1 1 0 0.370370370370369 
+2 1044 1045 
+p 0.1 1 0 0.370370370370369 
+2 1045 1046 
+p 0.1 1 0 0.370370370370371 
+2 1046 1047 
+p 0.1 1 0 0.370370370370372 
+2 1047 1048 
+p 0.1 1 0 0.37037037037037 
+2 1048 1049 
+p 0.1 1 0 0.370370370370371 
+2 1049 1050 
+p 0.1 1 0 0.370370370370372 
+2 1050 1051 
+p 0.1 1 0 0.370370370370372 
+2 1051 1052 
+p 0.1 1 0 0.370370370370371 
+2 1052 1053 
+p 0.1 1 0 0.370370370370372 
+2 1053 1054 
+p 0.1 1 0 0.37037037037037 
+2 1054 1055 
+p 0.1 1 0 0.370370370370371 
+2 1055 1056 
+p 0.1 1 0 0.370370370370369 
+2 1056 1057 
+p 0.1 1 0 0.37037037037037 
+2 1057 1058 
+p 0.1 1 0 0.370370370370371 
+2 1058 1059 
+p 0.1 1 0 0.37037037037037 
+2 1059 1060 
+p 0.1 1 0 0.37037037037037 
+2 1060 1061 
+p 0.1 1 0 0.370370370370371 
+2 1061 1062 
+p 0.1 1 0 0.370370370370371 
+2 1062 1063 
+p 0.1 1 0 0.37037037037037 
+2 1063 1064 
+p 0.1 1 0 0.370370370370367 
+2 1064 1065 
+p 0.1 1 0 0.370370370370371 
+2 1065 1066 
+p 0.1 1 0 0.370370370370369 
+2 1066 1067 
+p 0.1 1 0 0.370370370370371 
+2 1067 1068 
+p 0.1 1 0 0.370370370370368 
+2 1068 1069 
+p 0.1 1 0 0.370370370370369 
+2 1069 1070 
+p 0.1 1 0 0.370370370370371 
+2 1070 1071 
+p 0.1 1 0 0.37037037037037 
+2 1071 1072 
+p 0.1 1 0 0.37037037037037 
+2 1072 1073 
+p 0.1 1 0 0.370370370370371 
+2 1073 1074 
+p 0.1 1 0 0.37037037037037 
+2 1074 1075 
+p 0.1 1 0 0.370370370370369 
+2 1075 1076 
+p 0.1 1 0 0.370370370370371 
+2 1076 1077 
+p 0.1 1 0 0.37037037037037 
+2 1077 1078 
+p 0.1 1 0 0.370370370370369 
+2 1078 1079 
+p 0.1 1 0 0.370370370370371 
+2 1079 1080 
+p 0.1 1 0 0.370370370370369 
+2 1080 1081 
+p 0.1 1 0 0.370370370370369 
+2 1081 1082 
+p 0.1 1 0 0.370370370370371 
+2 1082 1083 
+p 0.1 1 0 0.37037037037037 
+2 1083 1084 
+p 0.1 1 0 0.370370370370372 
+2 1084 1085 
+p 0.1 1 0 0.370370370370371 
+2 1085 1086 
+p 0.1 1 0 0.37037037037037 
+2 1086 1087 
+p 0.1 1 0 0.370370370370369 
+2 1087 1088 
+p 0.1 1 0 0.370370370370371 
+2 1088 1089 
+p 0.1 1 0 0.37037037037037 
+2 1089 1090 
+p 0.1 1 0 0.37037037037037 
+2 1090 1091 
+p 0.1 1 0 0.370370370370371 
+2 1091 1092 
+p 0.1 1 0 0.370370370370369 
+2 1092 1093 
+p 0.1 1 0 0.37037037037037 
+2 1093 1094 
+p 0.1 1 0 0.370370370370371 
+2 1094 1095 
+p 0.1 1 0 0.370370370370372 
+2 1095 1096 
+p 0.1 1 0 0.37037037037037 
+2 1096 1097 
+p 0.1 1 0 0.370370370370371 
+2 1097 1098 
+p 0.1 1 0 0.370370370370369 
+2 1098 1099 
+p 0.1 1 0 0.370370370370369 
+2 1099 1100 
+p 0.1 1 0 0.370370370370371 
+2 1100 1101 
+p 0.1 1 0 0.370370370370369 
+2 1101 1102 
+p 0.1 1 0 0.370370370370369 
+2 1102 1103 
+p 0.1 1 0 0.370370370370371 
+2 1103 1104 
+p 0.1 1 0 0.370370370370369 
+2 1104 1105 
+p 0.1 1 0 0.370370370370369 
+2 1105 1106 
+p 0.1 1 0 0.370370370370371 
+2 1106 1107 
+p 0.1 1 0 0.370370370370369 
+2 1107 1108 
+p 0.1 1 0 0.370370370370369 
+2 1108 1109 
+p 0.1 1 0 0.370370370370371 
+2 1109 1110 
+p 0.1 1 0 0.370370370370369 
+2 1110 1111 
+p 0.1 1 0 0.370370370370367 
+2 1111 1112 
+p 0.1 1 0 0.370370370370371 
+2 1112 1113 
+p 0.1 1 0 0.370370370370369 
+2 1113 1114 
+p 0.1 1 0 0.370370370370371 
+2 1114 1115 
+p 0.1 1 0 0.370370370370367 
+2 1115 1116 
+p 0.1 1 0 0.370370370370369 
+2 1116 1117 
+p 0.1 1 0 0.370370370370371 
+2 1117 1118 
+p 0.1 1 0 0.370370370370371 
+2 1118 1119 
+p 0.1 1 0 0.370370370370369 
+2 1119 1120 
+p 0.1 1 0 0.370370370370369 
+2 1120 1121 
+p 0.1 1 0 0.370370370370371 
+2 1121 1122 
+p 0.1 1 0 0.370370370370369 
+2 1122 1123 
+p 0.1 1 0 0.370370370370369 
+2 1123 1124 
+p 0.1 1 0 0.370370370370371 
+2 1124 1125 
+p 0.1 1 0 0.370370370370369 
+2 1125 1126 
+p 0.1 1 0 0.370370370370371 
+2 1126 1127 
+p 0.1 1 0 0.370370370370371 
+2 1127 1128 
+p 0.1 1 0 0.370370370370373 
+2 1128 1129 
+p 0.1 1 0 0.370370370370371 
+2 1129 1130 
+p 0.1 1 0 0.370370370370371 
+2 1130 1131 
+p 0.1 1 0 0.370370370370371 
+2 1131 1132 
+p 0.1 1 0 0.370370370370371 
+2 1132 1133 
+p 0.1 1 0 0.370370370370371 
+2 1133 1134 
+p 0.1 1 0 0.370370370370369 
+2 1134 1135 
+p 0.1 1 0 0.370370370370369 
+2 1135 1136 
+p 0.1 1 0 0.370370370370371 
+2 1136 1137 
+p 0.1 1 0 0.370370370370369 
+2 1137 1138 
+p 0.1 1 0 0.370370370370369 
+2 1138 1139 
+p 0.1 1 0 0.370370370370371 
+2 1139 1140 
+p 0.1 1 0 0.370370370370369 
+2 1140 1141 
+p 0.1 1 0 0.370370370370369 
+2 1141 1142 
+p 0.1 1 0 0.370370370370371 
+2 1142 1143 
+p 0.1 1 0 0.370370370370375 
+2 1143 1144 
+p 0.1 1 0 0.370370370370371 
+2 1144 1145 
+p 0.1 1 0 0.370370370370371 
+2 1145 1146 
+p 0.1 1 0 0.370370370370369 
+2 1146 1147 
+p 0.1 1 0 0.370370370370369 
+2 1147 1148 
+p 0.1 1 0 0.370370370370371 
+2 1148 1149 
+p 0.1 1 0 0.370370370370369 
+2 1149 1150 
+p 0.1 1 0 0.370370370370369 
+2 1150 1151 
+p 0.1 1 0 0.370370370370371 
+2 1151 1152 
+p 0.1 1 0 0.370370370370369 
+2 1152 1153 
+p 0.1 1 0 0.370370370370369 
+2 1153 1154 
+p 0.1 1 0 0.370370370370371 
+2 1154 1155 
+p 0.1 1 0 0.370370370370371 
+2 1155 1156 
+p 0.1 1 0 0.370370370370373 
+2 1156 1157 
+p 0.1 1 0 0.370370370370371 
+2 1157 1158 
+p 0.1 1 0 0.370370370370369 
+2 1158 1159 
+p 0.1 1 0 0.370370370370369 
+2 1159 1160 
+p 0.1 1 0 0.370370370370371 
+2 1160 1161 
+p 0.1 1 0 0.370370370370369 
+2 1161 1162 
+p 0.1 1 0 0.370370370370369 
+2 1162 1163 
+p 0.1 1 0 0.370370370370371 
+2 1163 1164 
+p 0.1 1 0 0.370370370370369 
+2 1164 1165 
+p 0.1 1 0 0.370370370370369 
+2 1165 1166 
+p 0.1 1 0 0.370370370370371 
+2 1166 1167 
+p 0.1 1 0 0.370370370370373 
+2 1167 1168 
+p 0.1 1 0 0.370370370370371 
+2 1168 1169 
+p 0.1 1 0 0.370370370370371 
+2 1169 1170 
+p 0.1 1 0 0.370370370370369 
+2 1170 1171 
+p 0.1 1 0 0.370370370370369 
+2 1171 1172 
+p 0.1 1 0 0.370370370370371 
+2 1172 1173 
+p 0.1 1 0 0.370370370370369 
+2 1173 1174 
+p 0.1 1 0 0.370370370370371 
+2 1174 1175 
+p 0.1 1 0 0.370370370370367 
+2 1175 1176 
+p 0.1 1 0 0.370370370370371 
+2 1176 1177 
+p 0.1 1 0 0.370370370370371 
+2 1177 1178 
+p 0.1 1 0 0.370370370370371 
+2 1178 1179 
+p 0.1 1 0 0.370370370370373 
+2 1179 1180 
+p 0.1 1 0 0.370370370370371 
+2 1180 1181 
+p 0.1 1 0 0.370370370370371 
+2 1181 1182 
+p 0.1 1 0 0.370370370370371 
+2 1182 1183 
+p 0.1 1 0 0.370370370370367 
+2 1183 1184 
+p 0.1 1 0 0.370370370370371 
+2 1184 1185 
+p 0.1 1 0 0.370370370370371 
+2 1185 1186 
+p 0.1 1 0 0.370370370370371 
+2 1186 1187 
+p 0.1 1 0 0.370370370370371 
+2 1187 1188 
+p 0.1 1 0 0.370370370370367 
+2 1188 1189 
+p 0.1 1 0 0.370370370370371 
+2 1189 1190 
+p 0.1 1 0 0.370370370370371 
+2 1190 1191 
+p 0.1 1 0 0.370370370370371 
+2 1191 1192 
+p 0.1 1 0 0.370370370370371 
+2 1192 1193 
+p 0.1 1 0 0.370370370370371 
+2 1193 1194 
+p 0.1 1 0 0.370370370370369 
+2 1194 1195 
+p 0.1 1 0 0.370370370370369 
+2 1195 1196 
+p 0.1 1 0 0.370370370370367 
+2 1196 1197 
+p 0.1 1 0 0.370370370370369 
+2 1197 1198 
+p 0.1 1 0 0.370370370370369 
+2 1198 1199 
+p 0.1 1 0 0.370370370370371 
+2 1199 1200 
+p 0.1 1 0 0.370370370370369 
+2 1200 1201 
+p 0.1 1 0 0.370370370370369 
+2 1201 1202 
+p 0.1 1 0 0.370370370370371 
+2 1202 1203 
+p 0.1 1 0 0.370370370370373 
+2 1203 1204 
+p 0.1 1 0 0.370370370370371 
+2 1204 1205 
+p 0.1 1 0 0.370370370370371 
+2 1205 1206 
+p 0.1 1 0 0.370370370370369 
+2 1206 1207 
+p 0.1 1 0 0.370370370370369 
+2 1207 1208 
+p 0.1 1 0 0.370370370370371 
+2 1208 1209 
+p 0.1 1 0 0.370370370370369 
+2 1209 1210 
+p 0.1 1 0 0.370370370370369 
+2 1210 1211 
+p 0.1 1 0 0.370370370370371 
+2 1211 1212 
+p 0.1 1 0 0.370370370370369 
+2 1212 1213 
+p 0.1 1 0 0.370370370370369 
+2 1213 1214 
+p 0.1 1 0 0.370370370370371 
+2 1214 1215 
+p 0.1 1 0 0.370370370370371 
+2 1215 1216 
+p 0.1 1 0 0.370370370370373 
+2 1216 1217 
+p 0.1 1 0 0.370370370370371 
+2 1217 1218 
+p 0.1 1 0 0.370370370370369 
+2 1218 1219 
+p 0.1 1 0 0.370370370370369 
+2 1219 1220 
+p 0.1 1 0 0.370370370370371 
+2 1220 1221 
+p 0.1 1 0 0.370370370370369 
+2 1221 1222 
+p 0.1 1 0 0.370370370370369 
+2 1222 1223 
+p 0.1 1 0 0.370370370370371 
+2 1223 1224 
+p 0.1 1 0 0.370370370370369 
+2 1224 1225 
+p 0.1 1 0 0.370370370370369 
+2 1225 1226 
+p 0.1 1 0 0.370370370370371 
+2 1226 1227 
+p 0.1 1 0 0.370370370370371 
+2 1227 1228 
+p 0.1 1 0 0.370370370370373 
+2 1228 1229 
+p 0.1 1 0 0.370370370370369 
+2 1229 1230 
+p 0.1 1 0 0.370370370370372 
+2 1230 1231 
+p 0.1 1 0 0.370370370370372 
+2 1231 1232 
+p 0.1 1 0 0.370370370370371 
+2 1232 1233 
+p 0.1 1 0 0.370370370370372 
+2 1233 1234 
+p 0.1 1 0 0.370370370370372 
+2 1234 1235 
+p 0.1 1 0 0.370370370370371 
+2 1235 1236 
+p 0.1 1 0 0.370370370370372 
+2 1236 1237 
+p 0.1 1 0 0.370370370370372 
+2 1237 1238 
+p 0.1 1 0 0.370370370370369 
+2 1238 1239 
+p 0.1 1 0 0.370370370370369 
+2 1239 1240 
+p 0.1 1 0 0.370370370370367 
+2 1240 1241 
+p 0.1 1 0 0.370370370370371 
+2 1241 1242 
+p 0.1 1 0 0.370370370370371 
+2 1242 1243 
+p 0.1 1 0 0.370370370370367 
+2 1243 1244 
+p 0.1 1 0 0.370370370370371 
+2 1244 1245 
+p 0.1 1 0 0.370370370370371 
+2 1245 1246 
+p 0.1 1 0 0.370370370370371 
+2 1246 1247 
+p 0.1 1 0 0.370370370370371 
+2 1247 1248 
+p 0.1 1 0 0.370370370370367 
+2 1248 1249 
+p 0.1 1 0 0.370370370370371 
+2 1249 1250 
+p 0.1 1 0 0.370370370370371 
+2 1250 1251 
+p 0.1 1 0 0.370370370370371 
+2 1251 1252 
+p 0.1 1 0 0.370370370370373 
+2 1252 1253 
+p 0.1 1 0 0.370370370370369 
+2 1253 1254 
+p 0.1 1 0 0.370370370370372 
+2 1254 1255 
+p 0.1 1 0 0.370370370370372 
+2 1255 1256 
+p 0.1 1 0 0.370370370370373 
+2 1256 1257 
+p 0.1 1 0 0.370370370370372 
+2 1257 1258 
+p 0.1 1 0 0.370370370370372 
+2 1258 1259 
+p 0.1 1 0 0.370370370370371 
+2 1259 1260 
+p 0.1 1 0 0.370370370370373 
+2 1260 1261 
+p 0.1 1 0 0.370370370370372 
+2 1261 1262 
+p 0.1 1 0 0.370370370370371 
+2 1262 1263 
+p 0.1 1 0 0.370370370370372 
+2 1263 1264 
+p 0.1 1 0 0.370370370370371 
+2 1264 1265 
+p 0.1 1 0 0.370370370370371 
+2 1265 1266 
+p 0.1 1 0 0.370370370370372 
+2 1266 1267 
+p 0.1 1 0 0.370370370370369 
+2 1267 1268 
+p 0.1 1 0 0.370370370370373 
+2 1268 1269 
+p 0.1 1 0 0.370370370370372 
+2 1269 1270 
+p 0.1 1 0 0.370370370370372 
+2 1270 1271 
+p 0.1 1 0 0.370370370370373 
+2 1271 1272 
+p 0.1 1 0 0.370370370370369 
+2 1272 1273 
+p 0.1 1 0 0.370370370370372 
+2 1273 1274 
+p 0.1 1 0 0.370370370370371 
+2 1274 1275 
+p 0.1 1 0 0.370370370370371 
+2 1275 1276 
+p 0.1 1 0 0.370370370370372 
+2 1276 1277 
+p 0.1 1 0 0.370370370370371 
+2 1277 1278 
+p 0.1 1 0 0.370370370370372 
+2 1278 1279 
+p 0.1 1 0 0.370370370370368 
+2 1279 1280 
+p 0.1 1 0 0.370370370370371 
+2 1280 1281 
+p 0.1 1 0 0.370370370370372 
+2 1281 1282 
+p 0.1 1 0 0.370370370370372 
+2 1282 1283 
+p 0.1 1 0 0.370370370370371 
+2 1283 1284 
+p 0.1 1 0 0.370370370370368 
+2 1284 1285 
+p 0.1 1 0 0.370370370370372 
+2 1285 1286 
+p 0.1 1 0 0.370370370370371 
+2 1286 1287 
+p 0.1 1 0 0.370370370370372 
+2 1287 1288 
+p 0.1 1 0 0.370370370370371 
+2 1288 1289 
+p 0.1 1 0 0.370370370370371 
+2 1289 1290 
+p 0.1 1 0 0.370370370370372 
+2 1290 1291 
+p 0.1 1 0 0.370370370370369 
+2 1291 1292 
+p 0.1 1 0 0.370370370370373 
+2 1292 1293 
+p 0.1 1 0 0.370370370370372 
+2 1293 1294 
+p 0.1 1 0 0.370370370370372 
+2 1294 1295 
+p 0.1 1 0 0.370370370370373 
+2 1295 1296 
+p 0.1 1 0 0.370370370370369 
+2 1296 1297 
+p 0.1 1 0 0.370370370370372 
+2 1297 1298 
+p 0.1 1 0 0.370370370370371 
+2 1298 1299 
+p 0.1 1 0 0.370370370370371 
+2 1299 1300 
+p 0.1 1 0 0.370370370370372 
+2 1300 1301 
+p 0.1 1 0 0.370370370370371 
+2 1301 1302 
+p 0.1 1 0 0.370370370370372 
+2 1302 1303 
+p 0.1 1 0 0.370370370370373 
+2 1303 1304 
+p 0.1 1 0 0.370370370370371 
+2 1304 1305 
+p 0.1 1 0 0.370370370370372 
+2 1305 1306 
+p 0.1 1 0 0.370370370370372 
+2 1306 1307 
+p 0.1 1 0 0.370370370370373 
+2 1307 1308 
+p 0.1 1 0 0.370370370370373 
+2 1308 1309 
+p 0.1 1 0 0.370370370370372 
+2 1309 1310 
+p 0.1 1 0 0.370370370370371 
+2 1310 1311 
+p 0.1 1 0 0.370370370370371 
+2 1311 1312 
+p 0.1 1 0 0.370370370370372 
+2 1312 1313 
+p 0.1 1 0 0.370370370370371 
+2 1313 1314 
+p 0.1 1 0 0.370370370370372 
+2 1314 1315 
+p 0.1 1 0 0.370370370370372 
+2 1315 1316 
+p 0.1 1 0 0.370370370370371 
+2 1316 1317 
+p 0.1 1 0 0.370370370370372 
+2 1317 1318 
+p 0.1 1 0 0.370370370370372 
+2 1318 1319 
+p 0.1 1 0 0.370370370370371 
+2 1319 1320 
+p 0.1 1 0 0.370370370370372 
+2 1320 1321 
+p 0.1 1 0 0.370370370370372 
+2 1321 1322 
+p 0.1 1 0 0.370370370370371 
+2 1322 1323 
+p 0.1 1 0 0.370370370370372 
+2 1323 1324 
+p 0.1 1 0 0.370370370370371 
+2 1324 1325 
+p 0.1 1 0 0.370370370370371 
+2 1325 1326 
+p 0.1 1 0 0.370370370370372 
+2 1326 1327 
+p 0.1 1 0 0.370370370370373 
+2 1327 1328 
+p 0.1 1 0 0.370370370370373 
+2 1328 1329 
+p 0.1 1 0 0.370370370370372 
+2 1329 1330 
+p 0.1 1 0 0.370370370370372 
+2 1330 1331 
+p 0.1 1 0 0.370370370370373 
+2 1331 1332 
+p 0.1 1 0 0.370370370370373 
+2 1332 1333 
+p 0.1 1 0 0.370370370370372 
+2 1333 1334 
+p 0.1 1 0 0.370370370370371 
+2 1334 1335 
+p 0.1 1 0 0.370370370370371 
+2 1335 1336 
+p 0.1 1 0 0.370370370370372 
+2 1336 1337 
+p 0.1 1 0 0.370370370370371 
+2 1337 1338 
+p 0.1 1 0 0.37037037037037 
+2 1338 1339 
+p 0.1 1 0 0.370370370370371 
+2 1339 1340 
+p 0.1 1 0 0.370370370370369 
+2 1340 1341 
+p 0.1 1 0 0.37037037037037 
+2 1341 1342 
+p 0.1 1 0 0.37037037037037 
+2 1342 1343 
+p 0.1 1 0 0.370370370370369 
+2 1343 1344 
+p 0.1 1 0 0.370370370370371 
+2 1344 1345 
+p 0.1 1 0 0.37037037037037 
+2 1345 1346 
+p 0.1 1 0 0.370370370370371 
+2 1346 1347 
+p 0.1 1 0 0.370370370370371 
+2 1347 1348 
+p 0.1 1 0 0.370370370370372 
+2 1348 1349 
+p 0.1 1 0 0.37037037037037 
+2 1349 1350 
+p 0.1 1 0 0.37037037037037 
+2 1350 1351 
+p 0.1 1 0 0.370370370370371 
+2 1351 1352 
+p 0.1 1 0 0.37037037037037 
+2 1352 1353 
+p 0.1 1 0 0.37037037037037 
+2 1353 1354 
+p 0.1 1 0 0.37037037037037 
+2 1354 1355 
+p 0.1 1 0 0.370370370370369 
+2 1355 1356 
+p 0.1 1 0 0.370370370370369 
+2 1356 1357 
+p 0.1 1 0 0.37037037037037 
+2 1357 1358 
+p 0.1 1 0 0.37037037037037 
+2 1358 1359 
+p 0.1 1 0 0.37037037037037 
+2 1359 1360 
+p 0.1 1 0 0.37037037037037 
+2 1360 1361 
+p 0.1 1 0 0.37037037037037 
+2 1361 1362 
+p 0.1 1 0 0.37037037037037 
+2 1362 1363 
+p 0.1 1 0 0.370370370370371 
+2 1363 1364 
+p 0.1 1 0 0.370370370370369 
+2 1364 1365 
+p 0.1 1 0 0.37037037037037 
+2 1365 1366 
+p 0.1 1 0 0.37037037037037 
+2 1366 1367 
+p 0.1 1 0 0.37037037037037 
+2 1367 1368 
+p 0.1 1 0 0.370370370370371 
+2 1368 1369 
+p 0.1 1 0 0.37037037037037 
+2 1369 1370 
+p 0.1 1 0 0.370370370370371 
+2 1370 1371 
+p 0.1 1 0 0.370370370370372 
+2 1371 1372 
+p 0.1 1 0 0.370370370370371 
+2 1372 1373 
+p 0.1 1 0 0.370370370370371 
+2 1373 1374 
+p 0.1 1 0 0.370370370370372 
+2 1374 1375 
+p 0.1 1 0 0.370370370370369 
+2 1375 1376 
+p 0.1 1 0 0.370370370370371 
+2 1376 1377 
+p 0.1 1 0 0.370370370370372 
+2 1377 1378 
+p 0.1 1 0 0.370370370370372 
+2 1378 1379 
+p 0.1 1 0 0.370370370370371 
+2 1379 1380 
+p 0.1 1 0 0.370370370370369 
+2 1380 1381 
+p 0.1 1 0 0.370370370370372 
+2 1381 1382 
+p 0.1 1 0 0.37037037037037 
+2 1382 1383 
+p 0.1 1 0 0.370370370370372 
+2 1383 1384 
+p 0.1 1 0 0.370370370370372 
+2 1384 1385 
+p 0.1 1 0 0.37037037037037 
+2 1385 1386 
+p 0.1 1 0 0.37037037037037 
+2 1386 1387 
+p 0.1 1 0 0.370370370370372 
+2 1387 1388 
+p 0.1 1 0 0.37037037037037 
+2 1388 1389 
+p 0.1 1 0 0.37037037037037 
+2 1389 1390 
+p 0.1 1 0 0.37037037037037 
+2 1390 1391 
+p 0.1 1 0 0.37037037037037 
+2 1391 1392 
+p 0.1 1 0 0.370370370370372 
+2 1392 1393 
+p 0.1 1 0 0.37037037037037 
+2 1393 1394 
+p 0.1 1 0 0.37037037037037 
+2 1394 1395 
+p 0.1 1 0 0.37037037037037 
+2 1395 1396 
+p 0.1 1 0 0.37037037037037 
+2 1396 1397 
+p 0.1 1 0 0.37037037037037 
+2 1397 1398 
+p 0.1 1 0 0.37037037037037 
+2 1398 1399 
+p 0.1 1 0 0.370370370370371 
+2 1399 1400 
+p 0.1 1 0 0.37037037037037 
+2 1400 1401 
+p 0.1 1 0 0.37037037037037 
+2 1401 1402 
+p 0.1 1 0 0.37037037037037 
+2 1402 1403 
+p 0.1 1 0 0.37037037037037 
+2 1403 1404 
+p 0.1 1 0 0.37037037037037 
+2 1404 1405 
+p 0.1 1 0 0.37037037037037 
+2 1405 1406 
+p 0.1 1 0 0.37037037037037 
+2 1406 1407 
+p 0.1 1 0 0.37037037037037 
+2 1407 1408 
+p 0.1 1 0 0.37037037037037 
+2 1408 1409 
+p 0.1 1 0 0.37037037037037 
+2 1409 1410 
+p 0.1 1 0 0.37037037037037 
+2 1410 1411 
+p 0.1 1 0 0.37037037037037 
+2 1411 1412 
+p 0.1 1 0 0.37037037037037 
+2 1412 1413 
+p 0.1 1 0 0.37037037037037 
+2 1413 1414 
+p 0.1 1 0 0.37037037037037 
+2 1414 1415 
+p 0.1 1 0 0.37037037037037 
+2 1415 1416 
+p 0.1 1 0 0.370370370370372 
+2 1416 1417 
+p 0.1 1 0 0.37037037037037 
+2 1417 1418 
+p 0.1 1 0 0.37037037037037 
+2 1418 1419 
+p 0.1 1 0 0.37037037037037 
+2 1419 1420 
+p 0.1 1 0 0.370370370370371 
+2 1420 1421 
+p 0.1 1 0 0.37037037037037 
+2 1421 1422 
+p 0.1 1 0 0.37037037037037 
+2 1422 1423 
+p 0.1 1 0 0.370370370370371 
+2 1423 1424 
+p 0.1 1 0 0.37037037037037 
+2 1424 1425 
+p 0.1 1 0 0.37037037037037 
+2 1425 1426 
+p 0.1 1 0 0.37037037037037 
+2 1426 1427 
+p 0.1 1 0 0.37037037037037 
+2 1427 1428 
+p 0.1 1 0 0.37037037037037 
+2 1428 1429 
+p 0.1 1 0 0.37037037037037 
+2 1429 1430 
+p 0.1 1 0 0.37037037037037 
+2 1430 1431 
+p 0.1 1 0 0.370370370370371 
+2 1431 1432 
+p 0.1 1 0 0.37037037037037 
+2 1432 1433 
+p 0.1 1 0 0.37037037037037 
+2 1433 1434 
+p 0.1 1 0 0.37037037037037 
+2 1434 1435 
+p 0.1 1 0 0.370370370370372 
+2 1435 1436 
+p 0.1 1 0 0.37037037037037 
+2 1436 1437 
+p 0.1 1 0 0.37037037037037 
+2 1437 1438 
+p 0.1 1 0 0.37037037037037 
+2 1438 1439 
+p 0.1 1 0 0.37037037037037 
+2 1439 1440 
+p 0.1 1 0 0.37037037037037 
+2 1440 1441 
+p 0.1 1 0 0.37037037037037 
+2 1441 1442 
+p 0.1 1 0 0.37037037037037 
+2 1442 1443 
+p 0.1 1 0 0.37037037037037 
+2 1443 1444 
+p 0.1 1 0 0.37037037037037 
+2 1444 1445 
+p 0.1 1 0 0.37037037037037 
+2 1445 1446 
+p 0.1 1 0 0.37037037037037 
+2 1446 1447 
+p 0.1 1 0 0.37037037037037 
+2 1447 1448 
+p 0.1 1 0 0.37037037037037 
+2 1448 1449 
+p 0.1 1 0 0.37037037037037 
+2 1449 1450 
+p 0.1 1 0 0.37037037037037 
+2 1450 1451 
+p 0.1 1 0 0.37037037037037 
+2 1451 1452 
+p 0.1 1 0 0.370370370370369 
+2 1452 1453 
+p 0.1 1 0 0.37037037037037 
+2 1453 1454 
+p 0.1 1 0 0.37037037037037 
+2 1454 1455 
+p 0.1 1 0 0.37037037037037 
+2 1455 1456 
+p 0.1 1 0 0.37037037037037 
+2 1456 1457 
+p 0.1 1 0 0.37037037037037 
+2 1457 1458 
+p 0.1 1 0 0.37037037037037 
+2 1458 1459 
+p 0.1 1 0 0.370370370370369 
+2 1459 1460 
+p 0.1 1 0 0.37037037037037 
+2 1460 1461 
+p 0.1 1 0 0.37037037037037 
+2 1461 1462 
+p 0.1 1 0 0.37037037037037 
+2 1462 1463 
+p 0.1 1 0 0.370370370370369 
+2 1463 1464 
+p 0.1 1 0 0.370370370370371 
+2 1464 1465 
+p 0.1 1 0 0.37037037037037 
+2 1465 1466 
+p 0.1 1 0 0.37037037037037 
+2 1466 1467 
+p 0.1 1 0 0.370370370370371 
+2 1467 1468 
+p 0.1 1 0 0.370370370370371 
+2 1468 1469 
+p 0.1 1 0 0.37037037037037 
+2 1469 1470 
+p 0.1 1 0 0.370370370370371 
+2 1470 1471 
+p 0.1 1 0 0.37037037037037 
+2 1471 1472 
+p 0.1 1 0 0.37037037037037 
+2 1472 1473 
+p 0.1 1 0 0.370370370370371 
+2 1473 1474 
+p 0.1 1 0 0.370370370370371 
+2 1474 1475 
+p 0.1 1 0 0.37037037037037 
+2 1475 1476 
+p 0.1 1 0 0.37037037037037 
+2 1476 1477 
+p 0.1 1 0 0.370370370370371 
+2 1477 1478 
+p 0.1 1 0 0.37037037037037 
+2 1478 1479 
+p 0.1 1 0 0.370370370370371 
+2 1479 1480 
+p 0.1 1 0 0.370370370370371 
+2 1480 1481 
+p 0.1 1 0 0.37037037037037 
+2 1481 1482 
+p 0.1 1 0 0.37037037037037 
+2 1482 1483 
+p 0.1 1 0 0.37037037037037 
+2 1483 1484 
+p 0.1 1 0 0.370370370370369 
+2 1484 1485 
+p 0.1 1 0 0.37037037037037 
+2 1485 1486 
+p 0.1 1 0 0.370370370370371 
+2 1486 1487 
+p 0.1 1 0 0.370370370370371 
+2 1487 1488 
+p 0.1 1 0 0.37037037037037 
+2 1488 1489 
+p 0.1 1 0 0.370370370370371 
+2 1489 1490 
+p 0.1 1 0 0.37037037037037 
+2 1490 1491 
+p 0.1 1 0 0.370370370370371 
+2 1491 1492 
+p 0.1 1 0 0.370370370370371 
+2 1492 1493 
+p 0.1 1 0 0.37037037037037 
+2 1493 1494 
+p 0.1 1 0 0.370370370370371 
+2 1494 1495 
+p 0.1 1 0 0.37037037037037 
+2 1495 1496 
+p 0.1 1 0 0.370370370370371 
+2 1496 1497 
+p 0.1 1 0 0.370370370370371 
+2 1497 1498 
+p 0.1 1 0 0.370370370370371 
+2 1498 1499 
+p 0.1 1 0 0.370370370370371 
+2 1499 1500 
+p 0.1 1 0 0.37037037037037 
+2 1500 1501 
+p 0.1 1 0 0.370370370370371 
+2 1501 1502 
+p 0.1 1 0 0.37037037037037 
+2 1502 1503 
+p 0.1 1 0 0.370370370370371 
+2 1503 1504 
+p 0.1 1 0 0.370370370370371 
+2 1504 1505 
+p 0.1 1 0 0.37037037037037 
+2 1505 1506 
+p 0.1 1 0 0.37037037037037 
+2 1506 1507 
+p 0.1 1 0 0.37037037037037 
+2 1507 1508 
+p 0.1 1 0 0.37037037037037 
+2 1508 1509 
+p 0.1 1 0 0.37037037037037 
+2 1509 1510 
+p 0.1 1 0 0.37037037037037 
+2 1510 1511 
+p 0.1 1 0 0.37037037037037 
+2 1511 1512 
+p 0.1 1 0 0.37037037037037 
+2 1512 1513 
+p 0.1 1 0 0.37037037037037 
+2 1513 1514 
+p 0.1 1 0 0.37037037037037 
+2 1514 1515 
+p 0.1 1 0 0.370370370370371 
+2 1515 1516 
+p 0.1 1 0 0.37037037037037 
+2 1516 1517 
+p 0.1 1 0 0.37037037037037 
+2 1517 1518 
+p 0.1 1 0 0.37037037037037 
+2 1518 1519 
+p 0.1 1 0 0.370370370370371 
+2 1519 1520 
+p 0.1 1 0 0.37037037037037 
+2 1520 1521 
+p 0.1 1 0 0.37037037037037 
+2 1521 1522 
+p 0.1 1 0 0.37037037037037 
+2 1522 1523 
+p 0.1 1 0 0.37037037037037 
+2 1523 1524 
+p 0.1 1 0 0.370370370370371 
+2 1524 1525 
+p 0.1 1 0 0.37037037037037 
+2 1525 1526 
+p 0.1 1 0 0.37037037037037 
+2 1526 1527 
+p 0.1 1 0 0.37037037037037 
+2 1527 1528 
+p 0.1 1 0 0.37037037037037 
+2 1528 1529 
+p 0.1 1 0 0.37037037037037 
+2 1529 1530 
+p 0.1 1 0 0.37037037037037 
+2 1530 1531 
+p 0.1 1 0 0.37037037037037 
+2 1531 1532 
+p 0.1 1 0 0.37037037037037 
+2 1532 1533 
+p 0.1 1 0 0.37037037037037 
+2 1533 1534 
+p 0.1 1 0 0.37037037037037 
+2 1534 1535 
+p 0.1 1 0 0.37037037037037 
+2 1535 1536 
+p 0.1 1 0 0.37037037037037 
+2 1536 769 
+p 0.1 1 0 0.37037037037037 
+Surfaces 2
+1 1.2345679012345681 0 0 0 0 -1 1 0 0 0 -1 0 
+1 1.2345679012345681 0 0 0 0 -1 1 0 0 0 -1 0 
+Triangulations 2
+1536 1536 1 0.1
+0 0 0 1.23456790123457 0 0 1.85185185185185 -1.06916716516597 0 2.46913580246914 0 0 3.7037037037037 0 0 4.32098765432099 -1.06916716516597 0 3.7037037037037 -2.13833433033195 0 4.93827160493827 -2.13833433033195 0 5.55555555555556 -3.20750149549792 0 6.17283950617284 -2.13833433033195 0 7.40740740740741 -2.13833433033195 0 6.79012345679012 -1.06916716516597 0 7.40740740740741 0 0 8.64197530864198 0 0 9.25925925925926 -1.06916716516597 0 9.87654320987654 0 0 11.1111111111111 0 0 11.7283950617284 -1.06916716516597 0 11.1111111111111 -2.13833433033195 0 12.3456790123457 -2.13833433033195 0 12.962962962963 -3.20750149549792 0 12.3456790123457 -4.2766686606639 0 11.1111111111111 -4.27666866066389 0 11.7283950617284 -5.34583582582987 0 11.1111111111111 -6.41500299099584 0 12.3456790123457 -6.41500299099584 0 12.962962962963 -7.48417015616182 0 13.5802469135802 -6.41500299099584 0 14.8148148148148 -6.41500299099584 0 15.4320987654321 -7.48417015616182 0 14.8148148148148 -8.55333732132779 0 16.0493827160494 -8.55333732132779 0 16.6666666666667 -9.62250448649376 0 17.283950617284 -8.55333732132779 0 18.5185185185185 -8.55333732132779 0 17.9012345679012 -7.48417015616182 0 18.5185185185185 -6.41500299099584 0 19.7530864197531 -6.41500299099584 0 20.3703703703704 -7.48417015616182 0 20.9876543209877 -6.41500299099584 0 22.2222222222222 -6.41500299099584 0 21.6049382716049 -5.34583582582987 0 22.2222222222222 -4.2766686606639 0 20.9876543209877 -4.2766686606639 0 20.3703703703704 -3.20750149549792 0 20.9876543209877 -2.13833433033195 0 22.2222222222222 -2.13833433033195 0 21.6049382716049 -1.06916716516597 0 22.2222222222222 0 0 23.4567901234568 0 0 24.0740740740741 -1.06916716516597 0 24.6913580246914 0 0 25.9259259259259 0 0 26.5432098765432 -1.06916716516597 0 25.9259259259259 -2.13833433033195 0 27.1604938271605 -2.13833433033195 0 27.7777777777778 -3.20750149549792 0 28.3950617283951 -2.13833433033195 0 29.6296296296296 -2.13833433033195 0 29.0123456790123 -1.06916716516597 0 29.6296296296296 0 0 30.8641975308642 0 0 31.4814814814815 -1.06916716516597 0 32.0987654320988 0 0 33.3333333333333 0 0 33.9506172839506 -1.06916716516597 0 33.3333333333333 -2.13833433033195 0 34.5679012345679 -2.13833433033195 0 35.1851851851852 -3.20750149549792 0 34.5679012345679 -4.2766686606639 0 33.3333333333333 -4.27666866066389 0 33.9506172839506 -5.34583582582987 0 33.3333333333333 -6.41500299099584 0 34.5679012345679 -6.41500299099584 0 35.1851851851852 -7.48417015616182 0 35.8024691358025 -6.41500299099584 0 37.037037037037 -6.41500299099584 0 37.6543209876543 -7.48417015616182 0 37.037037037037 -8.55333732132779 0 38.2716049382716 -8.55333732132779 0 38.8888888888889 -9.62250448649376 0 38.2716049382716 -10.6916716516597 0 37.037037037037 -10.6916716516597 0 37.6543209876543 -11.7608388168257 0 37.037037037037 -12.8300059819917 0 35.8024691358025 -12.8300059819917 0 35.1851851851852 -11.7608388168257 0 34.5679012345679 -12.8300059819917 0 33.3333333333333 -12.8300059819917 0 33.9506172839506 -13.8991731471577 0 33.3333333333333 -14.9683403123236 0 34.5679012345679 -14.9683403123236 0 35.1851851851852 -16.0375074774896 0 34.5679012345679 -17.1066746426556 0 33.3333333333333 -17.1066746426556 0 33.9506172839506 -18.1758418078216 0 33.3333333333333 -19.2450089729875 0 34.5679012345679 -19.2450089729875 0 35.1851851851852 -20.3141761381535 0 35.8024691358025 -19.2450089729875 0 37.037037037037 -19.2450089729875 0 37.6543209876543 -20.3141761381535 0 37.037037037037 -21.3833433033195 0 38.2716049382716 -21.3833433033195 0 38.8888888888889 -22.4525104684854 0 39.5061728395062 -21.3833433033195 0 40.7407407407407 -21.3833433033195 0 40.1234567901235 -20.3141761381535 0 40.7407407407407 -19.2450089729875 0 41.9753086419753 -19.2450089729875 0 42.5925925925926 -20.3141761381535 0 43.2098765432099 -19.2450089729875 0 44.4444444444444 -19.2450089729875 0 45.0617283950617 -20.3141761381535 0 44.4444444444444 -21.3833433033195 0 45.679012345679 -21.3833433033195 0 46.2962962962963 -22.4525104684854 0 45.679012345679 -23.5216776336514 0 44.4444444444444 -23.5216776336514 0 45.0617283950617 -24.5908447988174 0 44.4444444444444 -25.6600119639834 0 45.679012345679 -25.6600119639834 0 46.2962962962963 -26.7291791291493 0 46.9135802469136 -25.6600119639834 0 48.1481481481481 -25.6600119639834 0 48.7654320987654 -26.7291791291493 0 48.1481481481482 -27.7983462943153 0 49.3827160493827 -27.7983462943153 0 50 -28.8675134594813 0 50.6172839506173 -27.7983462943153 0 51.8518518518518 -27.7983462943153 0 51.2345679012346 -26.7291791291493 0 51.8518518518519 -25.6600119639834 0 53.0864197530864 -25.6600119639834 0 53.7037037037037 -26.7291791291493 0 54.320987654321 -25.6600119639834 0 55.5555555555556 -25.6600119639834 0 54.9382716049383 -24.5908447988174 0 55.5555555555556 -23.5216776336514 0 54.320987654321 -23.5216776336514 0 53.7037037037037 -22.4525104684854 0 54.320987654321 -21.3833433033195 0 55.5555555555556 -21.3833433033195 0 54.9382716049383 -20.3141761381535 0 55.5555555555556 -19.2450089729875 0 56.7901234567901 -19.2450089729875 0 57.4074074074074 -20.3141761381535 0 58.0246913580247 -19.2450089729875 0 59.2592592592593 -19.2450089729875 0 59.8765432098765 -20.3141761381535 0 59.2592592592593 -21.3833433033195 0 60.4938271604938 -21.3833433033195 0 61.1111111111111 -22.4525104684854 0 61.7283950617284 -21.3833433033195 0 62.962962962963 -21.3833433033195 0 62.3456790123457 -20.3141761381535 0 62.962962962963 -19.2450089729875 0 64.1975308641975 -19.2450089729875 0 64.8148148148148 -20.3141761381535 0 65.4320987654321 -19.2450089729875 0 66.6666666666667 -19.2450089729875 0 66.0493827160494 -18.1758418078216 0 66.6666666666667 -17.1066746426556 0 65.4320987654321 -17.1066746426556 0 64.8148148148148 -16.0375074774896 0 65.4320987654321 -14.9683403123236 0 66.6666666666667 -14.9683403123236 0 66.0493827160494 -13.8991731471577 0 66.6666666666667 -12.8300059819917 0 65.4320987654321 -12.8300059819917 0 64.8148148148148 -11.7608388168257 0 64.1975308641975 -12.8300059819917 0 62.962962962963 -12.8300059819917 0 62.3456790123457 -11.7608388168257 0 62.962962962963 -10.6916716516597 0 61.7283950617284 -10.6916716516597 0 61.1111111111111 -9.62250448649376 0 61.7283950617284 -8.55333732132779 0 62.962962962963 -8.55333732132779 0 62.3456790123457 -7.48417015616182 0 62.962962962963 -6.41500299099584 0 64.1975308641975 -6.41500299099584 0 64.8148148148148 -7.48417015616181 0 65.4320987654321 -6.41500299099584 0 66.6666666666667 -6.41500299099584 0 66.0493827160494 -5.34583582582987 0 66.6666666666667 -4.2766686606639 0 65.4320987654321 -4.2766686606639 0 64.8148148148148 -3.20750149549792 0 65.4320987654321 -2.13833433033195 0 66.6666666666667 -2.13833433033194 0 66.0493827160494 -1.06916716516597 0 66.6666666666667 0 0 67.9012345679012 0 0 68.5185185185185 -1.06916716516598 0 69.1358024691358 0 0 70.3703703703704 0 0 70.9876543209877 -1.06916716516598 0 70.3703703703704 -2.13833433033195 0 71.604938271605 -2.13833433033195 0 72.2222222222222 -3.20750149549793 0 72.8395061728395 -2.13833433033195 0 74.0740740740741 -2.13833433033195 0 73.4567901234568 -1.06916716516598 0 74.0740740740741 0 0 75.3086419753086 0 0 75.9259259259259 -1.06916716516598 0 76.5432098765432 0 0 77.7777777777778 0 0 78.3950617283951 -1.06916716516597 0 77.7777777777778 -2.13833433033195 0 79.0123456790124 -2.13833433033195 0 79.6296296296296 -3.20750149549792 0 79.0123456790124 -4.2766686606639 0 77.7777777777778 -4.2766686606639 0 78.3950617283951 -5.34583582582987 0 77.7777777777778 -6.41500299099584 0 79.0123456790124 -6.41500299099584 0 79.6296296296296 -7.48417015616182 0 80.2469135802469 -6.41500299099584 0 81.4814814814815 -6.41500299099584 0 82.0987654320988 -7.48417015616182 0 81.4814814814815 -8.55333732132779 0 82.7160493827161 -8.55333732132779 0 83.3333333333333 -9.62250448649377 0 83.9506172839506 -8.55333732132779 0 85.1851851851852 -8.55333732132779 0 84.5679012345679 -7.48417015616182 0 85.1851851851852 -6.41500299099584 0 86.4197530864198 -6.41500299099584 0 87.037037037037 -7.48417015616182 0 87.6543209876543 -6.41500299099584 0 88.8888888888889 -6.41500299099584 0 88.2716049382716 -5.34583582582987 0 88.8888888888889 -4.2766686606639 0 87.6543209876543 -4.27666866066389 0 87.037037037037 -3.20750149549792 0 87.6543209876543 -2.13833433033195 0 88.8888888888889 -2.13833433033195 0 88.2716049382716 -1.06916716516597 0 88.8888888888889 0 0 90.1234567901235 0 0 90.7407407407407 -1.06916716516598 0 91.358024691358 0 0 92.5925925925926 0 0 93.2098765432099 -1.06916716516598 0 92.5925925925926 -2.13833433033195 0 93.8271604938272 -2.13833433033195 0 94.4444444444444 -3.20750149549793 0 95.0617283950617 -2.13833433033195 0 96.2962962962963 -2.13833433033195 0 95.679012345679 -1.06916716516598 0 96.2962962962963 0 0 97.5308641975309 0 0 98.1481481481482 -1.06916716516598 0 98.7654320987654 0 0 100 0 0 99.3827160493827 1.06916716516597 0 100 2.13833433033194 0 98.7654320987654 2.13833433033195 0 98.1481481481482 3.20750149549792 0 98.7654320987654 4.27666866066389 0 100 4.2766686606639 0 99.3827160493827 5.34583582582987 0 100 6.41500299099584 0 98.7654320987654 6.41500299099584 0 98.1481481481482 7.48417015616182 0 97.5308641975309 6.41500299099584 0 96.2962962962963 6.41500299099584 0 95.679012345679 7.48417015616181 0 96.2962962962963 8.55333732132779 0 95.0617283950617 8.55333732132779 0 94.4444444444444 9.62250448649376 0 95.0617283950617 10.6916716516597 0 96.2962962962963 10.6916716516597 0 95.679012345679 11.7608388168257 0 96.2962962962963 12.8300059819917 0 97.5308641975309 12.8300059819917 0 98.1481481481482 11.7608388168257 0 98.7654320987654 12.8300059819917 0 100 12.8300059819917 0 99.3827160493827 13.8991731471577 0 100 14.9683403123236 0 98.7654320987654 14.9683403123236 0 98.1481481481481 16.0375074774896 0 98.7654320987654 17.1066746426556 0 100 17.1066746426556 0 99.3827160493827 18.1758418078216 0 100 19.2450089729875 0 98.7654320987654 19.2450089729875 0 98.1481481481481 20.3141761381535 0 97.5308641975309 19.2450089729875 0 96.2962962962963 19.2450089729875 0 95.679012345679 20.3141761381535 0 96.2962962962963 21.3833433033195 0 95.0617283950617 21.3833433033195 0 94.4444444444444 22.4525104684854 0 93.8271604938272 21.3833433033195 0 92.5925925925926 21.3833433033195 0 93.2098765432099 20.3141761381535 0 92.5925925925926 19.2450089729875 0 91.358024691358 19.2450089729875 0 90.7407407407407 20.3141761381535 0 90.1234567901235 19.2450089729875 0 88.8888888888889 19.2450089729875 0 88.2716049382716 20.3141761381535 0 88.8888888888889 21.3833433033195 0 87.6543209876543 21.3833433033195 0 87.037037037037 22.4525104684854 0 87.6543209876543 23.5216776336514 0 88.8888888888889 23.5216776336514 0 88.2716049382716 24.5908447988174 0 88.8888888888889 25.6600119639834 0 87.6543209876543 25.6600119639834 0 87.037037037037 26.7291791291493 0 86.4197530864197 25.6600119639834 0 85.1851851851852 25.6600119639834 0 84.5679012345679 26.7291791291493 0 85.1851851851852 27.7983462943153 0 83.9506172839506 27.7983462943153 0 83.3333333333333 28.8675134594813 0 83.9506172839506 29.9366806246473 0 85.1851851851852 29.9366806246473 0 84.5679012345679 31.0058477898132 0 85.1851851851852 32.0750149549792 0 86.4197530864197 32.0750149549792 0 87.037037037037 31.0058477898132 0 87.6543209876543 32.0750149549792 0 88.8888888888889 32.0750149549792 0 88.2716049382716 33.1441821201452 0 88.8888888888889 34.2133492853112 0 87.6543209876543 34.2133492853112 0 87.037037037037 35.2825164504771 0 87.6543209876543 36.3516836156431 0 88.8888888888889 36.3516836156431 0 88.2716049382716 37.4208507808091 0 88.8888888888889 38.490017945975 0 90.1234567901235 38.490017945975 0 90.7407407407407 37.4208507808091 0 91.358024691358 38.490017945975 0 92.5925925925926 38.490017945975 0 93.2098765432099 37.4208507808091 0 92.5925925925926 36.3516836156431 0 93.8271604938272 36.3516836156431 0 94.4444444444444 35.2825164504771 0 95.0617283950617 36.3516836156431 0 96.2962962962963 36.3516836156431 0 95.679012345679 37.4208507808091 0 96.2962962962963 38.490017945975 0 97.5308641975309 38.490017945975 0 98.1481481481481 37.4208507808091 0 98.7654320987654 38.490017945975 0 100 38.490017945975 0 99.3827160493827 39.559185111141 0 100 40.628352276307 0 98.7654320987654 40.628352276307 0 98.1481481481481 41.697519441473 0 98.7654320987654 42.7666866066389 0 100 42.7666866066389 0 99.3827160493827 43.8358537718049 0 100 44.9050209369709 0 98.7654320987654 44.9050209369709 0 98.1481481481482 45.9741881021369 0 97.5308641975309 44.9050209369709 0 96.2962962962963 44.9050209369709 0 95.679012345679 45.9741881021369 0 96.2962962962963 47.0433552673028 0 95.0617283950617 47.0433552673028 0 94.4444444444444 48.1125224324688 0 95.0617283950617 49.1816895976348 0 96.2962962962963 49.1816895976348 0 95.679012345679 50.2508567628008 0 96.2962962962963 51.3200239279667 0 97.5308641975309 51.3200239279667 0 98.1481481481482 50.2508567628008 0 98.7654320987654 51.3200239279667 0 100 51.3200239279667 0 99.3827160493827 52.3891910931327 0 100 53.4583582582987 0 98.7654320987654 53.4583582582987 0 98.1481481481482 54.5275254234647 0 98.7654320987654 55.5966925886306 0 100 55.5966925886306 0 99.3827160493827 56.6658597537966 0 100 57.7350269189626 0 98.7654320987654 57.7350269189626 0 98.1481481481482 58.8041940841286 0 97.5308641975309 57.7350269189626 0 96.2962962962963 57.7350269189626 0 95.679012345679 58.8041940841285 0 96.2962962962963 59.8733612492945 0 95.0617283950617 59.8733612492945 0 94.4444444444444 60.9425284144605 0 93.8271604938272 59.8733612492945 0 92.5925925925926 59.8733612492945 0 93.2098765432099 58.8041940841285 0 92.5925925925926 57.7350269189626 0 91.358024691358 57.7350269189626 0 90.7407407407407 58.8041940841286 0 90.1234567901235 57.7350269189626 0 88.8888888888889 57.7350269189626 0 88.2716049382716 58.8041940841285 0 88.8888888888889 59.8733612492945 0 87.6543209876543 59.8733612492945 0 87.037037037037 60.9425284144605 0 87.6543209876543 62.0116955796265 0 88.8888888888889 62.0116955796265 0 88.2716049382716 63.0808627447924 0 88.8888888888889 64.1500299099584 0 87.6543209876543 64.1500299099584 0 87.037037037037 65.2191970751244 0 86.4197530864198 64.1500299099584 0 85.1851851851852 64.1500299099584 0 84.5679012345679 65.2191970751244 0 85.1851851851852 66.2883642402904 0 83.9506172839506 66.2883642402904 0 83.3333333333333 67.3575314054563 0 82.7160493827161 66.2883642402904 0 81.4814814814815 66.2883642402904 0 82.0987654320988 65.2191970751244 0 81.4814814814815 64.1500299099584 0 80.2469135802469 64.1500299099584 0 79.6296296296296 65.2191970751244 0 79.0123456790124 64.1500299099584 0 77.7777777777778 64.1500299099584 0 78.3950617283951 63.0808627447924 0 77.7777777777778 62.0116955796265 0 79.0123456790124 62.0116955796265 0 79.6296296296296 60.9425284144605 0 79.0123456790124 59.8733612492945 0 77.7777777777778 59.8733612492945 0 78.3950617283951 58.8041940841285 0 77.7777777777778 57.7350269189626 0 76.5432098765432 57.7350269189626 0 75.9259259259259 58.8041940841286 0 75.3086419753086 57.7350269189626 0 74.0740740740741 57.7350269189626 0 73.4567901234568 58.8041940841285 0 74.0740740740741 59.8733612492945 0 72.8395061728395 59.8733612492945 0 72.2222222222222 60.9425284144605 0 71.604938271605 59.8733612492945 0 70.3703703703704 59.8733612492945 0 70.9876543209877 58.8041940841285 0 70.3703703703704 57.7350269189626 0 69.1358024691358 57.7350269189626 0 68.5185185185185 58.8041940841286 0 67.9012345679012 57.7350269189626 0 66.6666666666667 57.7350269189626 0 66.0493827160494 58.8041940841285 0 66.6666666666667 59.8733612492945 0 65.4320987654321 59.8733612492945 0 64.8148148148148 60.9425284144605 0 65.4320987654321 62.0116955796265 0 66.6666666666667 62.0116955796265 0 66.0493827160494 63.0808627447924 0 66.6666666666667 64.1500299099584 0 65.4320987654321 64.1500299099584 0 64.8148148148148 65.2191970751244 0 64.1975308641975 64.1500299099584 0 62.962962962963 64.1500299099584 0 62.3456790123457 65.2191970751244 0 62.962962962963 66.2883642402904 0 61.7283950617284 66.2883642402904 0 61.1111111111111 67.3575314054563 0 61.7283950617284 68.4266985706223 0 62.962962962963 68.4266985706223 0 62.3456790123457 69.4958657357883 0 62.962962962963 70.5650329009543 0 64.1975308641975 70.5650329009543 0 64.8148148148148 69.4958657357883 0 65.4320987654321 70.5650329009543 0 66.6666666666667 70.5650329009543 0 66.0493827160494 71.6342000661202 0 66.6666666666667 72.7033672312862 0 65.4320987654321 72.7033672312862 0 64.8148148148148 73.7725343964522 0 65.4320987654321 74.8417015616182 0 66.6666666666667 74.8417015616182 0 66.0493827160494 75.9108687267841 0 66.6666666666667 76.9800358919501 0 65.4320987654321 76.9800358919501 0 64.8148148148148 78.0492030571161 0 64.1975308641975 76.9800358919501 0 62.962962962963 76.9800358919501 0 62.3456790123457 78.0492030571161 0 62.962962962963 79.1183702222821 0 61.7283950617284 79.1183702222821 0 61.1111111111111 80.187537387448 0 60.4938271604938 79.1183702222821 0 59.2592592592593 79.1183702222821 0 59.8765432098765 78.0492030571161 0 59.2592592592593 76.9800358919501 0 58.0246913580247 76.9800358919501 0 57.4074074074074 78.0492030571161 0 56.7901234567901 76.9800358919501 0 55.5555555555556 76.9800358919501 0 54.9382716049383 78.0492030571161 0 55.5555555555556 79.118370222282 0 54.320987654321 79.118370222282 0 53.7037037037037 80.187537387448 0 54.320987654321 81.256704552614 0 55.5555555555556 81.256704552614 0 54.9382716049383 82.32587171778 0 55.5555555555556 83.3950388829459 0 54.320987654321 83.3950388829459 0 53.7037037037037 84.4642060481119 0 53.0864197530864 83.3950388829459 0 51.8518518518519 83.3950388829459 0 51.2345679012346 84.4642060481119 0 51.8518518518519 85.5333732132779 0 50.6172839506173 85.5333732132779 0 50 86.6025403784439 0 49.3827160493827 85.5333732132779 0 48.1481481481481 85.5333732132779 0 48.7654320987654 84.4642060481119 0 48.1481481481481 83.3950388829459 0 46.9135802469136 83.3950388829459 0 46.2962962962963 84.4642060481119 0 45.679012345679 83.3950388829459 0 44.4444444444444 83.3950388829459 0 45.0617283950617 82.32587171778 0 44.4444444444444 81.256704552614 0 45.679012345679 81.256704552614 0 46.2962962962963 80.187537387448 0 45.679012345679 79.118370222282 0 44.4444444444444 79.118370222282 0 45.0617283950617 78.0492030571161 0 44.4444444444444 76.9800358919501 0 43.2098765432099 76.9800358919501 0 42.5925925925926 78.0492030571161 0 41.9753086419753 76.9800358919501 0 40.7407407407407 76.9800358919501 0 40.1234567901235 78.0492030571161 0 40.7407407407407 79.1183702222821 0 39.5061728395062 79.1183702222821 0 38.8888888888889 80.187537387448 0 38.2716049382716 79.1183702222821 0 37.037037037037 79.1183702222821 0 37.6543209876543 78.0492030571161 0 37.037037037037 76.9800358919501 0 35.8024691358025 76.9800358919501 0 35.1851851851852 78.0492030571161 0 34.5679012345679 76.9800358919501 0 33.3333333333333 76.9800358919501 0 33.9506172839506 75.9108687267841 0 33.3333333333333 74.8417015616182 0 34.5679012345679 74.8417015616182 0 35.1851851851852 73.7725343964522 0 34.5679012345679 72.7033672312862 0 33.3333333333333 72.7033672312862 0 33.9506172839506 71.6342000661202 0 33.3333333333333 70.5650329009543 0 34.5679012345679 70.5650329009543 0 35.1851851851852 69.4958657357883 0 35.8024691358025 70.5650329009543 0 37.037037037037 70.5650329009543 0 37.6543209876543 69.4958657357883 0 37.037037037037 68.4266985706223 0 38.2716049382716 68.4266985706223 0 38.8888888888889 67.3575314054563 0 38.2716049382716 66.2883642402904 0 37.037037037037 66.2883642402904 0 37.6543209876543 65.2191970751244 0 37.037037037037 64.1500299099584 0 35.8024691358025 64.1500299099584 0 35.1851851851852 65.2191970751244 0 34.5679012345679 64.1500299099584 0 33.3333333333333 64.1500299099584 0 33.9506172839506 63.0808627447924 0 33.3333333333333 62.0116955796265 0 34.5679012345679 62.0116955796265 0 35.1851851851852 60.9425284144605 0 34.5679012345679 59.8733612492945 0 33.3333333333333 59.8733612492945 0 33.9506172839506 58.8041940841285 0 33.3333333333333 57.7350269189626 0 32.0987654320988 57.7350269189626 0 31.4814814814815 58.8041940841286 0 30.8641975308642 57.7350269189626 0 29.6296296296296 57.7350269189626 0 29.0123456790123 58.8041940841285 0 29.6296296296296 59.8733612492945 0 28.3950617283951 59.8733612492945 0 27.7777777777778 60.9425284144605 0 27.1604938271605 59.8733612492945 0 25.9259259259259 59.8733612492945 0 26.5432098765432 58.8041940841285 0 25.9259259259259 57.7350269189626 0 24.6913580246914 57.7350269189626 0 24.0740740740741 58.8041940841285 0 23.4567901234568 57.7350269189626 0 22.2222222222222 57.7350269189626 0 21.6049382716049 58.8041940841285 0 22.2222222222222 59.8733612492945 0 20.9876543209877 59.8733612492945 0 20.3703703703704 60.9425284144605 0 20.9876543209877 62.0116955796265 0 22.2222222222222 62.0116955796265 0 21.6049382716049 63.0808627447924 0 22.2222222222222 64.1500299099584 0 20.9876543209877 64.1500299099584 0 20.3703703703704 65.2191970751244 0 19.7530864197531 64.1500299099584 0 18.5185185185185 64.1500299099584 0 17.9012345679012 65.2191970751244 0 18.5185185185185 66.2883642402904 0 17.283950617284 66.2883642402904 0 16.6666666666667 67.3575314054563 0 16.0493827160494 66.2883642402904 0 14.8148148148148 66.2883642402904 0 15.4320987654321 65.2191970751244 0 14.8148148148148 64.1500299099584 0 13.5802469135803 64.1500299099584 0 12.962962962963 65.2191970751244 0 12.3456790123457 64.1500299099584 0 11.1111111111111 64.1500299099584 0 11.7283950617284 63.0808627447924 0 11.1111111111111 62.0116955796265 0 12.3456790123457 62.0116955796265 0 12.962962962963 60.9425284144605 0 12.3456790123457 59.8733612492945 0 11.1111111111111 59.8733612492945 0 11.7283950617284 58.8041940841285 0 11.1111111111111 57.7350269189626 0 9.87654320987655 57.7350269189626 0 9.25925925925926 58.8041940841285 0 8.64197530864198 57.7350269189626 0 7.40740740740741 57.7350269189626 0 6.79012345679013 58.8041940841285 0 7.40740740740741 59.8733612492945 0 6.17283950617284 59.8733612492945 0 5.55555555555556 60.9425284144605 0 4.93827160493827 59.8733612492945 0 3.70370370370371 59.8733612492945 0 4.32098765432099 58.8041940841285 0 3.70370370370371 57.7350269189626 0 2.46913580246914 57.7350269189626 0 1.85185185185186 58.8041940841285 0 1.23456790123457 57.7350269189626 0 3.5527136788005e-15 57.7350269189626 0 0.617283950617287 56.6658597537966 0 4.44089209850063e-15 55.5966925886306 0 1.23456790123457 55.5966925886306 0 1.85185185185185 54.5275254234647 0 1.23456790123457 53.4583582582987 0 3.88578058618805e-15 53.4583582582987 0 0.617283950617286 52.3891910931327 0 2.22044604925031e-15 51.3200239279667 0 1.23456790123457 51.3200239279667 0 1.85185185185186 50.2508567628008 0 2.46913580246914 51.3200239279667 0 3.70370370370371 51.3200239279667 0 4.32098765432099 50.2508567628008 0 3.70370370370371 49.1816895976348 0 4.93827160493827 49.1816895976348 0 5.55555555555556 48.1125224324688 0 4.93827160493827 47.0433552673028 0 3.70370370370371 47.0433552673028 0 4.32098765432099 45.9741881021369 0 3.70370370370371 44.9050209369709 0 2.46913580246914 44.9050209369709 0 1.85185185185186 45.9741881021369 0 1.23456790123457 44.9050209369709 0 2.22044604925031e-15 44.9050209369709 0 0.617283950617286 43.8358537718049 0 3.88578058618805e-15 42.7666866066389 0 1.23456790123457 42.7666866066389 0 1.85185185185185 41.697519441473 0 1.23456790123457 40.628352276307 0 4.44089209850063e-15 40.628352276307 0 0.617283950617287 39.559185111141 0 3.5527136788005e-15 38.4900179459751 0 1.23456790123457 38.4900179459751 0 1.85185185185185 37.4208507808091 0 2.46913580246914 38.4900179459751 0 3.70370370370371 38.4900179459751 0 4.32098765432099 37.4208507808091 0 3.70370370370371 36.3516836156431 0 4.93827160493827 36.3516836156431 0 5.55555555555556 35.2825164504771 0 6.17283950617284 36.3516836156431 0 7.40740740740741 36.3516836156431 0 6.79012345679013 37.4208507808091 0 7.40740740740741 38.490017945975 0 8.64197530864198 38.490017945975 0 9.25925925925926 37.4208507808091 0 9.87654320987654 38.490017945975 0 11.1111111111111 38.490017945975 0 11.7283950617284 37.4208507808091 0 11.1111111111111 36.3516836156431 0 12.3456790123457 36.3516836156431 0 12.962962962963 35.2825164504771 0 12.3456790123457 34.2133492853112 0 11.1111111111111 34.2133492853112 0 11.7283950617284 33.1441821201452 0 11.1111111111111 32.0750149549792 0 12.3456790123457 32.0750149549792 0 12.962962962963 31.0058477898132 0 13.5802469135802 32.0750149549792 0 14.8148148148148 32.0750149549792 0 15.4320987654321 31.0058477898132 0 14.8148148148148 29.9366806246473 0 16.0493827160494 29.9366806246473 0 16.6666666666667 28.8675134594813 0 16.0493827160494 27.7983462943153 0 14.8148148148148 27.7983462943153 0 15.4320987654321 26.7291791291493 0 14.8148148148148 25.6600119639834 0 13.5802469135802 25.6600119639834 0 12.962962962963 26.7291791291493 0 12.3456790123457 25.6600119639834 0 11.1111111111111 25.6600119639834 0 11.7283950617284 24.5908447988174 0 11.1111111111111 23.5216776336514 0 12.3456790123457 23.5216776336514 0 12.962962962963 22.4525104684854 0 12.3456790123457 21.3833433033195 0 11.1111111111111 21.3833433033195 0 11.7283950617284 20.3141761381535 0 11.1111111111111 19.2450089729875 0 9.87654320987654 19.2450089729875 0 9.25925925925926 20.3141761381535 0 8.64197530864198 19.2450089729875 0 7.40740740740741 19.2450089729875 0 6.79012345679012 20.3141761381535 0 7.40740740740741 21.3833433033195 0 6.17283950617284 21.3833433033195 0 5.55555555555556 22.4525104684854 0 4.93827160493827 21.3833433033195 0 3.7037037037037 21.3833433033195 0 4.32098765432099 20.3141761381535 0 3.7037037037037 19.2450089729875 0 2.46913580246914 19.2450089729875 0 1.85185185185185 20.3141761381535 0 1.23456790123457 19.2450089729875 0 0 19.2450089729875 0 0.617283950617284 18.1758418078216 0 1.4432899320127e-15 17.1066746426556 0 1.23456790123457 17.1066746426556 0 1.85185185185185 16.0375074774896 0 1.23456790123457 14.9683403123236 0 1.11022302462516e-15 14.9683403123236 0 0.617283950617285 13.8991731471577 0 1.77635683940025e-15 12.8300059819917 0 1.23456790123457 12.8300059819917 0 1.85185185185185 11.7608388168257 0 2.46913580246914 12.8300059819917 0 3.7037037037037 12.8300059819917 0 4.32098765432099 11.7608388168257 0 3.7037037037037 10.6916716516597 0 4.93827160493827 10.6916716516597 0 5.55555555555556 9.62250448649376 0 4.93827160493827 8.55333732132779 0 3.7037037037037 8.55333732132779 0 4.32098765432099 7.48417015616181 0 3.7037037037037 6.41500299099584 0 2.46913580246914 6.41500299099584 0 1.85185185185185 7.48417015616181 0 1.23456790123457 6.41500299099584 0 8.88178419700125e-16 6.41500299099584 0 0.617283950617285 5.34583582582987 0 6.66133814775094e-16 4.27666866066389 0 1.23456790123457 4.27666866066389 0 1.85185185185185 3.20750149549792 0 1.23456790123457 2.13833433033195 0 2.22044604925031e-16 2.13833433033195 0 0.617283950617284 1.06916716516597 0 35 35 0 35.3703703703704 35 0 35.5555555555556 34.6792498504502 0 35.7407407407407 35 0 36.1111111111111 35 0 36.2962962962963 34.6792498504502 0 36.1111111111111 34.3584997009004 0 36.4814814814815 34.3584997009004 0 36.6666666666667 34.0377495513506 0 36.8518518518519 34.3584997009004 0 37.2222222222222 34.3584997009004 0 37.037037037037 34.6792498504502 0 37.2222222222222 35 0 37.5925925925926 35 0 37.7777777777778 34.6792498504502 0 37.962962962963 35 0 38.3333333333333 35 0 38.5185185185185 34.6792498504502 0 38.3333333333333 34.3584997009004 0 38.7037037037037 34.3584997009004 0 38.8888888888889 34.0377495513506 0 38.7037037037037 33.7169994018008 0 38.3333333333333 33.7169994018008 0 38.5185185185185 33.396249252251 0 38.3333333333333 33.0754991027013 0 38.7037037037037 33.0754991027013 0 38.8888888888889 32.7547489531515 0 39.0740740740741 33.0754991027013 0 39.4444444444444 33.0754991027013 0 39.6296296296296 32.7547489531515 0 39.4444444444444 32.4339988036017 0 39.8148148148148 32.4339988036017 0 40 32.1132486540519 0 40.1851851851852 32.4339988036017 0 40.5555555555556 32.4339988036017 0 40.3703703703704 32.7547489531515 0 40.5555555555556 33.0754991027013 0 40.9259259259259 33.0754991027013 0 41.1111111111111 32.7547489531515 0 41.2962962962963 33.0754991027012 0 41.6666666666667 33.0754991027012 0 41.4814814814815 33.396249252251 0 41.6666666666667 33.7169994018008 0 41.2962962962963 33.7169994018008 0 41.1111111111111 34.0377495513506 0 41.2962962962963 34.3584997009004 0 41.6666666666667 34.3584997009004 0 41.4814814814815 34.6792498504502 0 41.6666666666667 35 0 42.037037037037 35 0 42.2222222222222 34.6792498504502 0 42.4074074074074 35 0 42.7777777777778 35 0 42.962962962963 34.6792498504502 0 42.7777777777778 34.3584997009004 0 43.1481481481481 34.3584997009004 0 43.3333333333333 34.0377495513506 0 43.5185185185185 34.3584997009004 0 43.8888888888889 34.3584997009004 0 43.7037037037037 34.6792498504502 0 43.8888888888889 35 0 44.2592592592593 35 0 44.4444444444444 34.6792498504502 0 44.6296296296296 35 0 45 35 0 45.1851851851852 34.6792498504502 0 45 34.3584997009004 0 45.3703703703704 34.3584997009004 0 45.5555555555556 34.0377495513506 0 45.3703703703704 33.7169994018008 0 45 33.7169994018008 0 45.1851851851852 33.396249252251 0 45 33.0754991027012 0 45.3703703703704 33.0754991027012 0 45.5555555555556 32.7547489531515 0 45.7407407407407 33.0754991027013 0 46.1111111111111 33.0754991027013 0 46.2962962962963 32.7547489531515 0 46.1111111111111 32.4339988036017 0 46.4814814814815 32.4339988036017 0 46.6666666666667 32.1132486540519 0 46.4814814814815 31.7924985045021 0 46.1111111111111 31.7924985045021 0 46.2962962962963 31.4717483549523 0 46.1111111111111 31.1509982054025 0 45.7407407407407 31.1509982054025 0 45.5555555555556 31.4717483549523 0 45.3703703703704 31.1509982054025 0 45 31.1509982054025 0 45.1851851851852 30.8302480558527 0 45 30.5094979063029 0 45.3703703703704 30.5094979063029 0 45.5555555555556 30.1887477567531 0 45.3703703703704 29.8679976072033 0 45 29.8679976072033 0 45.1851851851852 29.5472474576535 0 45 29.2264973081037 0 45.3703703703704 29.2264973081037 0 45.5555555555556 28.905747158554 0 45.7407407407407 29.2264973081037 0 46.1111111111111 29.2264973081037 0 46.2962962962963 28.905747158554 0 46.1111111111111 28.5849970090042 0 46.4814814814815 28.5849970090042 0 46.6666666666667 28.2642468594544 0 46.8518518518518 28.5849970090042 0 47.2222222222222 28.5849970090042 0 47.037037037037 28.905747158554 0 47.2222222222222 29.2264973081037 0 47.5925925925926 29.2264973081037 0 47.7777777777778 28.905747158554 0 47.962962962963 29.2264973081037 0 48.3333333333333 29.2264973081037 0 48.5185185185185 28.905747158554 0 48.3333333333333 28.5849970090042 0 48.7037037037037 28.5849970090042 0 48.8888888888889 28.2642468594544 0 48.7037037037037 27.9434967099046 0 48.3333333333333 27.9434967099046 0 48.5185185185185 27.6227465603548 0 48.3333333333333 27.301996410805 0 48.7037037037037 27.301996410805 0 48.8888888888889 26.9812462612552 0 49.0740740740741 27.301996410805 0 49.4444444444444 27.301996410805 0 49.6296296296296 26.9812462612552 0 49.4444444444444 26.6604961117054 0 49.8148148148148 26.6604961117054 0 50 26.3397459621556 0 50.1851851851852 26.6604961117054 0 50.5555555555556 26.6604961117054 0 50.3703703703704 26.9812462612552 0 50.5555555555556 27.301996410805 0 50.9259259259259 27.301996410805 0 51.1111111111111 26.9812462612552 0 51.2962962962963 27.301996410805 0 51.6666666666667 27.301996410805 0 51.4814814814815 27.6227465603548 0 51.6666666666667 27.9434967099046 0 51.2962962962963 27.9434967099046 0 51.1111111111111 28.2642468594544 0 51.2962962962963 28.5849970090042 0 51.6666666666667 28.5849970090042 0 51.4814814814815 28.905747158554 0 51.6666666666667 29.2264973081037 0 52.037037037037 29.2264973081037 0 52.2222222222222 28.905747158554 0 52.4074074074074 29.2264973081037 0 52.7777777777778 29.2264973081037 0 52.962962962963 28.905747158554 0 52.7777777777778 28.5849970090042 0 53.1481481481481 28.5849970090042 0 53.3333333333333 28.2642468594544 0 53.5185185185185 28.5849970090042 0 53.8888888888889 28.5849970090042 0 53.7037037037037 28.905747158554 0 53.8888888888889 29.2264973081037 0 54.2592592592593 29.2264973081037 0 54.4444444444444 28.905747158554 0 54.6296296296296 29.2264973081037 0 55 29.2264973081037 0 54.8148148148148 29.5472474576535 0 55 29.8679976072033 0 54.6296296296296 29.8679976072033 0 54.4444444444444 30.1887477567531 0 54.6296296296296 30.5094979063029 0 55 30.5094979063029 0 54.8148148148148 30.8302480558527 0 55 31.1509982054025 0 54.6296296296296 31.1509982054025 0 54.4444444444444 31.4717483549523 0 54.2592592592593 31.1509982054025 0 53.8888888888889 31.1509982054025 0 53.7037037037037 31.4717483549523 0 53.8888888888889 31.7924985045021 0 53.5185185185185 31.7924985045021 0 53.3333333333333 32.1132486540519 0 53.5185185185185 32.4339988036017 0 53.8888888888889 32.4339988036017 0 53.7037037037037 32.7547489531515 0 53.8888888888889 33.0754991027013 0 54.2592592592593 33.0754991027013 0 54.4444444444444 32.7547489531515 0 54.6296296296296 33.0754991027012 0 55 33.0754991027012 0 54.8148148148148 33.396249252251 0 55 33.7169994018008 0 54.6296296296296 33.7169994018008 0 54.4444444444444 34.0377495513506 0 54.6296296296296 34.3584997009004 0 55 34.3584997009004 0 54.8148148148148 34.6792498504502 0 55 35 0 55.3703703703704 35 0 55.5555555555556 34.6792498504502 0 55.7407407407407 35 0 56.1111111111111 35 0 56.2962962962963 34.6792498504502 0 56.1111111111111 34.3584997009004 0 56.4814814814815 34.3584997009004 0 56.6666666666667 34.0377495513506 0 56.8518518518518 34.3584997009004 0 57.2222222222222 34.3584997009004 0 57.037037037037 34.6792498504502 0 57.2222222222222 35 0 57.5925925925926 35 0 57.7777777777778 34.6792498504502 0 57.962962962963 35 0 58.3333333333333 35 0 58.5185185185185 34.6792498504502 0 58.3333333333333 34.3584997009004 0 58.7037037037037 34.3584997009004 0 58.8888888888889 34.0377495513506 0 58.7037037037037 33.7169994018008 0 58.3333333333333 33.7169994018008 0 58.5185185185185 33.396249252251 0 58.3333333333333 33.0754991027012 0 58.7037037037037 33.0754991027012 0 58.8888888888889 32.7547489531515 0 59.0740740740741 33.0754991027012 0 59.4444444444444 33.0754991027012 0 59.6296296296296 32.7547489531515 0 59.4444444444444 32.4339988036017 0 59.8148148148148 32.4339988036017 0 60 32.1132486540519 0 60.1851851851852 32.4339988036017 0 60.5555555555556 32.4339988036017 0 60.3703703703704 32.7547489531515 0 60.5555555555556 33.0754991027012 0 60.9259259259259 33.0754991027013 0 61.1111111111111 32.7547489531515 0 61.2962962962963 33.0754991027013 0 61.6666666666667 33.0754991027013 0 61.4814814814815 33.396249252251 0 61.6666666666667 33.7169994018008 0 61.2962962962963 33.7169994018008 0 61.1111111111111 34.0377495513506 0 61.2962962962963 34.3584997009004 0 61.6666666666667 34.3584997009004 0 61.4814814814815 34.6792498504502 0 61.6666666666667 35 0 62.037037037037 35 0 62.2222222222222 34.6792498504502 0 62.4074074074074 35 0 62.7777777777778 35 0 62.962962962963 34.6792498504502 0 62.7777777777778 34.3584997009004 0 63.1481481481481 34.3584997009004 0 63.3333333333333 34.0377495513506 0 63.5185185185185 34.3584997009004 0 63.8888888888889 34.3584997009004 0 63.7037037037037 34.6792498504502 0 63.8888888888889 35 0 64.2592592592593 35 0 64.4444444444444 34.6792498504502 0 64.6296296296296 35 0 65 35 0 64.8148148148148 35.3207501495498 0 65 35.6415002990996 0 64.6296296296296 35.6415002990996 0 64.4444444444444 35.9622504486494 0 64.6296296296296 36.2830005981992 0 65 36.2830005981992 0 64.8148148148148 36.603750747749 0 65 36.9245008972987 0 64.6296296296296 36.9245008972987 0 64.4444444444444 37.2452510468485 0 64.2592592592593 36.9245008972987 0 63.8888888888889 36.9245008972987 0 63.7037037037037 37.2452510468485 0 63.8888888888889 37.5660011963983 0 63.5185185185185 37.5660011963983 0 63.3333333333333 37.8867513459481 0 63.5185185185185 38.2075014954979 0 63.8888888888889 38.2075014954979 0 63.7037037037037 38.5282516450477 0 63.8888888888889 38.8490017945975 0 64.2592592592593 38.8490017945975 0 64.4444444444444 38.5282516450477 0 64.6296296296296 38.8490017945975 0 65 38.8490017945975 0 64.8148148148148 39.1697519441473 0 65 39.4905020936971 0 64.6296296296296 39.4905020936971 0 64.4444444444444 39.8112522432469 0 64.6296296296296 40.1320023927967 0 65 40.1320023927967 0 64.8148148148148 40.4527525423465 0 65 40.7735026918963 0 64.6296296296296 40.7735026918963 0 64.4444444444444 41.094252841446 0 64.2592592592593 40.7735026918963 0 63.8888888888889 40.7735026918963 0 63.7037037037037 41.094252841446 0 63.8888888888889 41.4150029909958 0 63.5185185185185 41.4150029909958 0 63.3333333333333 41.7357531405456 0 63.1481481481481 41.4150029909958 0 62.7777777777778 41.4150029909958 0 62.962962962963 41.094252841446 0 62.7777777777778 40.7735026918963 0 62.4074074074074 40.7735026918963 0 62.2222222222222 41.094252841446 0 62.037037037037 40.7735026918963 0 61.6666666666667 40.7735026918963 0 61.4814814814815 41.094252841446 0 61.6666666666667 41.4150029909958 0 61.2962962962963 41.4150029909958 0 61.1111111111111 41.7357531405456 0 61.2962962962963 42.0565032900954 0 61.6666666666667 42.0565032900954 0 61.4814814814815 42.3772534396452 0 61.6666666666667 42.698003589195 0 61.2962962962963 42.698003589195 0 61.1111111111111 43.0187537387448 0 60.9259259259259 42.698003589195 0 60.5555555555556 42.698003589195 0 60.3703703703704 43.0187537387448 0 60.5555555555556 43.3395038882946 0 60.1851851851852 43.3395038882946 0 60 43.6602540378444 0 60.1851851851852 43.9810041873942 0 60.5555555555556 43.9810041873942 0 60.3703703703704 44.301754336944 0 60.5555555555556 44.6225044864938 0 60.9259259259259 44.6225044864938 0 61.1111111111111 44.301754336944 0 61.2962962962963 44.6225044864938 0 61.6666666666667 44.6225044864938 0 61.4814814814815 44.9432546360436 0 61.6666666666667 45.2640047855933 0 61.2962962962963 45.2640047855933 0 61.1111111111111 45.5847549351431 0 61.2962962962963 45.9055050846929 0 61.6666666666667 45.9055050846929 0 61.4814814814815 46.2262552342427 0 61.6666666666667 46.5470053837925 0 62.037037037037 46.5470053837925 0 62.2222222222222 46.2262552342427 0 62.4074074074074 46.5470053837925 0 62.7777777777778 46.5470053837925 0 62.962962962963 46.2262552342427 0 62.7777777777778 45.9055050846929 0 63.1481481481481 45.9055050846929 0 63.3333333333333 45.5847549351431 0 63.5185185185185 45.9055050846929 0 63.8888888888889 45.9055050846929 0 63.7037037037037 46.2262552342427 0 63.8888888888889 46.5470053837925 0 64.2592592592593 46.5470053837925 0 64.4444444444444 46.2262552342427 0 64.6296296296296 46.5470053837925 0 65 46.5470053837925 0 64.8148148148148 46.8677555333423 0 65 47.1885056828921 0 64.6296296296296 47.1885056828921 0 64.4444444444444 47.5092558324419 0 64.6296296296296 47.8300059819917 0 65 47.8300059819917 0 64.8148148148148 48.1507561315415 0 65 48.4715062810913 0 64.6296296296296 48.4715062810913 0 64.4444444444444 48.7922564306411 0 64.2592592592593 48.4715062810913 0 63.8888888888889 48.4715062810913 0 63.7037037037037 48.7922564306411 0 63.8888888888889 49.1130065801908 0 63.5185185185185 49.1130065801909 0 63.3333333333333 49.4337567297406 0 63.5185185185185 49.7545068792904 0 63.8888888888889 49.7545068792904 0 63.7037037037037 50.0752570288402 0 63.8888888888889 50.39600717839 0 64.2592592592593 50.39600717839 0 64.4444444444444 50.0752570288402 0 64.6296296296296 50.39600717839 0 65 50.39600717839 0 64.8148148148148 50.7167573279398 0 65 51.0375074774896 0 64.6296296296296 51.0375074774896 0 64.4444444444444 51.3582576270394 0 64.6296296296296 51.6790077765892 0 65 51.6790077765892 0 64.8148148148148 51.999757926139 0 65 52.3205080756888 0 64.6296296296296 52.3205080756888 0 64.4444444444444 52.6412582252386 0 64.2592592592593 52.3205080756888 0 63.8888888888889 52.3205080756888 0 63.7037037037037 52.6412582252386 0 63.8888888888889 52.9620083747884 0 63.5185185185185 52.9620083747884 0 63.3333333333333 53.2827585243381 0 63.1481481481481 52.9620083747884 0 62.7777777777778 52.9620083747884 0 62.962962962963 52.6412582252386 0 62.7777777777778 52.3205080756888 0 62.4074074074074 52.3205080756888 0 62.2222222222222 52.6412582252386 0 62.037037037037 52.3205080756888 0 61.6666666666667 52.3205080756888 0 61.4814814814815 52.6412582252386 0 61.6666666666667 52.9620083747884 0 61.2962962962963 52.9620083747884 0 61.1111111111111 53.2827585243381 0 61.2962962962963 53.6035086738879 0 61.6666666666667 53.6035086738879 0 61.4814814814815 53.9242588234377 0 61.6666666666667 54.2450089729875 0 61.2962962962963 54.2450089729875 0 61.1111111111111 54.5657591225373 0 60.9259259259259 54.2450089729875 0 60.5555555555556 54.2450089729875 0 60.3703703703704 54.5657591225373 0 60.5555555555556 54.8865092720871 0 60.1851851851852 54.8865092720871 0 60 55.2072594216369 0 59.8148148148148 54.8865092720871 0 59.4444444444444 54.8865092720871 0 59.6296296296296 54.5657591225373 0 59.4444444444444 54.2450089729875 0 59.0740740740741 54.2450089729875 0 58.8888888888889 54.5657591225373 0 58.7037037037037 54.2450089729875 0 58.3333333333333 54.2450089729875 0 58.5185185185185 53.9242588234377 0 58.3333333333333 53.6035086738879 0 58.7037037037037 53.6035086738879 0 58.8888888888889 53.2827585243381 0 58.7037037037037 52.9620083747884 0 58.3333333333333 52.9620083747884 0 58.5185185185185 52.6412582252386 0 58.3333333333333 52.3205080756888 0 57.962962962963 52.3205080756888 0 57.7777777777778 52.6412582252386 0 57.5925925925926 52.3205080756888 0 57.2222222222222 52.3205080756888 0 57.037037037037 52.6412582252386 0 57.2222222222222 52.9620083747884 0 56.8518518518518 52.9620083747884 0 56.6666666666667 53.2827585243381 0 56.4814814814815 52.9620083747884 0 56.1111111111111 52.9620083747884 0 56.2962962962963 52.6412582252386 0 56.1111111111111 52.3205080756888 0 55.7407407407407 52.3205080756888 0 55.5555555555556 52.6412582252386 0 55.3703703703704 52.3205080756888 0 55 52.3205080756888 0 54.8148148148148 52.6412582252386 0 55 52.9620083747884 0 54.6296296296296 52.9620083747884 0 54.4444444444444 53.2827585243381 0 54.6296296296296 53.6035086738879 0 55 53.6035086738879 0 54.8148148148148 53.9242588234377 0 55 54.2450089729875 0 54.6296296296296 54.2450089729875 0 54.4444444444444 54.5657591225373 0 54.2592592592593 54.2450089729875 0 53.8888888888889 54.2450089729875 0 53.7037037037037 54.5657591225373 0 53.8888888888889 54.8865092720871 0 53.5185185185185 54.8865092720871 0 53.3333333333333 55.2072594216369 0 53.5185185185185 55.5280095711867 0 53.8888888888889 55.5280095711867 0 53.7037037037037 55.8487597207365 0 53.8888888888889 56.1695098702863 0 54.2592592592593 56.1695098702863 0 54.4444444444444 55.8487597207365 0 54.6296296296296 56.1695098702863 0 55 56.1695098702863 0 54.8148148148148 56.4902600198361 0 55 56.8110101693859 0 54.6296296296296 56.8110101693859 0 54.4444444444444 57.1317603189357 0 54.6296296296296 57.4525104684854 0 55 57.4525104684854 0 54.8148148148148 57.7732606180352 0 55 58.094010767585 0 54.6296296296296 58.094010767585 0 54.4444444444444 58.4147609171348 0 54.2592592592593 58.094010767585 0 53.8888888888889 58.094010767585 0 53.7037037037037 58.4147609171348 0 53.8888888888889 58.7355110666846 0 53.5185185185185 58.7355110666846 0 53.3333333333333 59.0562612162344 0 53.1481481481481 58.7355110666846 0 52.7777777777778 58.7355110666846 0 52.962962962963 58.4147609171348 0 52.7777777777778 58.094010767585 0 52.4074074074074 58.094010767585 0 52.2222222222222 58.4147609171348 0 52.037037037037 58.094010767585 0 51.6666666666667 58.094010767585 0 51.4814814814815 58.4147609171348 0 51.6666666666667 58.7355110666846 0 51.2962962962963 58.7355110666846 0 51.1111111111111 59.0562612162344 0 51.2962962962963 59.3770113657842 0 51.6666666666667 59.3770113657842 0 51.4814814814815 59.697761515334 0 51.6666666666667 60.0185116648838 0 51.2962962962963 60.0185116648838 0 51.1111111111111 60.3392618144336 0 50.9259259259259 60.0185116648838 0 50.5555555555556 60.0185116648838 0 50.3703703703704 60.3392618144336 0 50.5555555555556 60.6600119639834 0 50.1851851851852 60.6600119639834 0 50 60.9807621135332 0 49.8148148148148 60.6600119639834 0 49.4444444444444 60.6600119639834 0 49.6296296296296 60.3392618144336 0 49.4444444444444 60.0185116648838 0 49.0740740740741 60.0185116648838 0 48.8888888888889 60.3392618144336 0 48.7037037037037 60.0185116648838 0 48.3333333333333 60.0185116648838 0 48.5185185185185 59.697761515334 0 48.3333333333333 59.3770113657842 0 48.7037037037037 59.3770113657842 0 48.8888888888889 59.0562612162344 0 48.7037037037037 58.7355110666846 0 48.3333333333333 58.7355110666846 0 48.5185185185185 58.4147609171348 0 48.3333333333333 58.094010767585 0 47.962962962963 58.094010767585 0 47.7777777777778 58.4147609171348 0 47.5925925925926 58.094010767585 0 47.2222222222222 58.094010767585 0 47.037037037037 58.4147609171348 0 47.2222222222222 58.7355110666846 0 46.8518518518519 58.7355110666846 0 46.6666666666667 59.0562612162344 0 46.4814814814815 58.7355110666846 0 46.1111111111111 58.7355110666846 0 46.2962962962963 58.4147609171348 0 46.1111111111111 58.094010767585 0 45.7407407407407 58.094010767585 0 45.5555555555556 58.4147609171348 0 45.3703703703704 58.094010767585 0 45 58.094010767585 0 45.1851851851852 57.7732606180352 0 45 57.4525104684854 0 45.3703703703704 57.4525104684854 0 45.5555555555556 57.1317603189357 0 45.3703703703704 56.8110101693859 0 45 56.8110101693859 0 45.1851851851852 56.4902600198361 0 45 56.1695098702863 0 45.3703703703704 56.1695098702863 0 45.5555555555556 55.8487597207365 0 45.7407407407407 56.1695098702863 0 46.1111111111111 56.1695098702863 0 46.2962962962963 55.8487597207365 0 46.1111111111111 55.5280095711867 0 46.4814814814815 55.5280095711867 0 46.6666666666667 55.2072594216369 0 46.4814814814815 54.8865092720871 0 46.1111111111111 54.8865092720871 0 46.2962962962963 54.5657591225373 0 46.1111111111111 54.2450089729875 0 45.7407407407407 54.2450089729875 0 45.5555555555556 54.5657591225373 0 45.3703703703704 54.2450089729875 0 45 54.2450089729875 0 45.1851851851852 53.9242588234377 0 45 53.6035086738879 0 45.3703703703704 53.6035086738879 0 45.5555555555556 53.2827585243381 0 45.3703703703704 52.9620083747884 0 45 52.9620083747884 0 45.1851851851852 52.6412582252386 0 45 52.3205080756888 0 44.6296296296296 52.3205080756888 0 44.4444444444444 52.6412582252386 0 44.2592592592593 52.3205080756888 0 43.8888888888889 52.3205080756888 0 43.7037037037037 52.6412582252386 0 43.8888888888889 52.9620083747884 0 43.5185185185185 52.9620083747884 0 43.3333333333333 53.2827585243381 0 43.1481481481481 52.9620083747884 0 42.7777777777778 52.9620083747884 0 42.962962962963 52.6412582252386 0 42.7777777777778 52.3205080756888 0 42.4074074074074 52.3205080756888 0 42.2222222222222 52.6412582252386 0 42.037037037037 52.3205080756888 0 41.6666666666667 52.3205080756888 0 41.4814814814815 52.6412582252386 0 41.6666666666667 52.9620083747884 0 41.2962962962963 52.9620083747884 0 41.1111111111111 53.2827585243381 0 41.2962962962963 53.6035086738879 0 41.6666666666667 53.6035086738879 0 41.4814814814815 53.9242588234377 0 41.6666666666667 54.2450089729875 0 41.2962962962963 54.2450089729875 0 41.1111111111111 54.5657591225373 0 40.9259259259259 54.2450089729875 0 40.5555555555556 54.2450089729875 0 40.3703703703704 54.5657591225373 0 40.5555555555556 54.8865092720871 0 40.1851851851852 54.8865092720871 0 40 55.2072594216369 0 39.8148148148148 54.8865092720871 0 39.4444444444444 54.8865092720871 0 39.6296296296296 54.5657591225373 0 39.4444444444444 54.2450089729875 0 39.0740740740741 54.2450089729875 0 38.8888888888889 54.5657591225373 0 38.7037037037037 54.2450089729875 0 38.3333333333333 54.2450089729875 0 38.5185185185185 53.9242588234377 0 38.3333333333333 53.6035086738879 0 38.7037037037037 53.6035086738879 0 38.8888888888889 53.2827585243381 0 38.7037037037037 52.9620083747884 0 38.3333333333333 52.9620083747884 0 38.5185185185185 52.6412582252386 0 38.3333333333333 52.3205080756888 0 37.962962962963 52.3205080756888 0 37.7777777777778 52.6412582252386 0 37.5925925925926 52.3205080756888 0 37.2222222222222 52.3205080756888 0 37.037037037037 52.6412582252386 0 37.2222222222222 52.9620083747884 0 36.8518518518519 52.9620083747884 0 36.6666666666667 53.2827585243381 0 36.4814814814815 52.9620083747884 0 36.1111111111111 52.9620083747884 0 36.2962962962963 52.6412582252386 0 36.1111111111111 52.3205080756888 0 35.7407407407407 52.3205080756888 0 35.5555555555556 52.6412582252386 0 35.3703703703704 52.3205080756888 0 35 52.3205080756888 0 35.1851851851852 51.999757926139 0 35 51.6790077765892 0 35.3703703703704 51.6790077765892 0 35.5555555555556 51.3582576270394 0 35.3703703703704 51.0375074774896 0 35 51.0375074774896 0 35.1851851851852 50.7167573279398 0 35 50.39600717839 0 35.3703703703704 50.39600717839 0 35.5555555555556 50.0752570288402 0 35.7407407407407 50.39600717839 0 36.1111111111111 50.39600717839 0 36.2962962962963 50.0752570288402 0 36.1111111111111 49.7545068792904 0 36.4814814814815 49.7545068792904 0 36.6666666666667 49.4337567297406 0 36.4814814814815 49.1130065801909 0 36.1111111111111 49.1130065801908 0 36.2962962962963 48.7922564306411 0 36.1111111111111 48.4715062810913 0 35.7407407407407 48.4715062810913 0 35.5555555555556 48.7922564306411 0 35.3703703703704 48.4715062810913 0 35 48.4715062810913 0 35.1851851851852 48.1507561315415 0 35 47.8300059819917 0 35.3703703703704 47.8300059819917 0 35.5555555555556 47.5092558324419 0 35.3703703703704 47.1885056828921 0 35 47.1885056828921 0 35.1851851851852 46.8677555333423 0 35 46.5470053837925 0 35.3703703703704 46.5470053837925 0 35.5555555555556 46.2262552342427 0 35.7407407407407 46.5470053837925 0 36.1111111111111 46.5470053837925 0 36.2962962962963 46.2262552342427 0 36.1111111111111 45.9055050846929 0 36.4814814814815 45.9055050846929 0 36.6666666666667 45.5847549351431 0 36.8518518518519 45.9055050846929 0 37.2222222222222 45.9055050846929 0 37.037037037037 46.2262552342427 0 37.2222222222222 46.5470053837925 0 37.5925925925926 46.5470053837925 0 37.7777777777778 46.2262552342427 0 37.962962962963 46.5470053837925 0 38.3333333333333 46.5470053837925 0 38.5185185185185 46.2262552342427 0 38.3333333333333 45.9055050846929 0 38.7037037037037 45.9055050846929 0 38.8888888888889 45.5847549351431 0 38.7037037037037 45.2640047855933 0 38.3333333333333 45.2640047855934 0 38.5185185185185 44.9432546360436 0 38.3333333333333 44.6225044864938 0 38.7037037037037 44.6225044864938 0 38.8888888888889 44.301754336944 0 39.0740740740741 44.6225044864938 0 39.4444444444444 44.6225044864938 0 39.6296296296296 44.301754336944 0 39.4444444444444 43.9810041873942 0 39.8148148148148 43.9810041873942 0 40 43.6602540378444 0 39.8148148148148 43.3395038882946 0 39.4444444444444 43.3395038882946 0 39.6296296296296 43.0187537387448 0 39.4444444444444 42.698003589195 0 39.0740740740741 42.698003589195 0 38.8888888888889 43.0187537387448 0 38.7037037037037 42.698003589195 0 38.3333333333333 42.698003589195 0 38.5185185185185 42.3772534396452 0 38.3333333333333 42.0565032900954 0 38.7037037037037 42.0565032900954 0 38.8888888888889 41.7357531405456 0 38.7037037037037 41.4150029909958 0 38.3333333333333 41.4150029909958 0 38.5185185185185 41.094252841446 0 38.3333333333333 40.7735026918963 0 37.962962962963 40.7735026918963 0 37.7777777777778 41.094252841446 0 37.5925925925926 40.7735026918963 0 37.2222222222222 40.7735026918963 0 37.037037037037 41.094252841446 0 37.2222222222222 41.4150029909958 0 36.8518518518519 41.4150029909958 0 36.6666666666667 41.7357531405456 0 36.4814814814815 41.4150029909958 0 36.1111111111111 41.4150029909958 0 36.2962962962963 41.094252841446 0 36.1111111111111 40.7735026918963 0 35.7407407407407 40.7735026918963 0 35.5555555555556 41.094252841446 0 35.3703703703704 40.7735026918963 0 35 40.7735026918963 0 35.1851851851852 40.4527525423465 0 35 40.1320023927967 0 35.3703703703704 40.1320023927967 0 35.5555555555556 39.8112522432469 0 35.3703703703704 39.4905020936971 0 35 39.4905020936971 0 35.1851851851852 39.1697519441473 0 35 38.8490017945975 0 35.3703703703704 38.8490017945975 0 35.5555555555556 38.5282516450477 0 35.7407407407407 38.8490017945975 0 36.1111111111111 38.8490017945975 0 36.2962962962963 38.5282516450477 0 36.1111111111111 38.2075014954979 0 36.4814814814815 38.2075014954979 0 36.6666666666667 37.8867513459481 0 36.4814814814815 37.5660011963983 0 36.1111111111111 37.5660011963983 0 36.2962962962963 37.2452510468485 0 36.1111111111111 36.9245008972987 0 35.7407407407407 36.9245008972987 0 35.5555555555556 37.2452510468485 0 35.3703703703704 36.9245008972987 0 35 36.9245008972987 0 35.1851851851852 36.603750747749 0 35 36.2830005981992 0 35.3703703703704 36.2830005981992 0 35.5555555555556 35.9622504486494 0 35.3703703703704 35.6415002990996 0 35 35.6415002990996 0 35.1851851851852 35.3207501495498 0 -1.23456790123457 5.01682029252493e-15 0 5.01682029252493e-15 0.617283950617284 1.06916716516597 1.23456790123457 5.01682029252493e-15 2.46913580246914 5.01682029252493e-15 3.08641975308642 1.06916716516597 2.46913580246914 2.13833433033195 3.7037037037037 2.13833433033195 4.32098765432099 3.20750149549793 4.93827160493827 2.13833433033195 6.17283950617284 2.13833433033195 5.55555555555556 1.06916716516597 6.17283950617284 5.01682029252493e-15 7.40740740740741 5.01682029252493e-15 8.02469135802469 1.06916716516597 8.64197530864198 5.01682029252493e-15 9.87654320987654 5.01682029252493e-15 10.4938271604938 1.06916716516597 9.87654320987654 2.13833433033195 11.1111111111111 2.13833433033195 11.7283950617284 3.20750149549793 11.1111111111111 4.27666866066389 9.87654320987654 4.27666866066389 10.4938271604938 5.34583582582987 9.87654320987654 6.41500299099584 11.1111111111111 6.41500299099584 11.7283950617284 7.48417015616182 12.3456790123457 6.41500299099584 13.5802469135802 6.41500299099584 14.1975308641975 7.48417015616182 13.5802469135802 8.5533373213278 14.8148148148148 8.5533373213278 15.4320987654321 9.62250448649376 16.0493827160494 8.5533373213278 17.283950617284 8.5533373213278 16.6666666666667 7.48417015616182 17.2839506172839 6.41500299099584 18.5185185185185 6.41500299099584 19.1358024691358 7.48417015616182 19.7530864197531 6.41500299099584 20.9876543209877 6.41500299099584 20.3703703703704 5.34583582582987 20.9876543209877 4.27666866066389 19.7530864197531 4.27666866066389 19.1358024691358 3.20750149549793 19.7530864197531 2.13833433033195 20.9876543209877 2.13833433033195 20.3703703703704 1.06916716516597 20.9876543209877 5.01682029252493e-15 22.2222222222222 5.01682029252493e-15 22.8395061728395 1.06916716516597 23.4567901234568 5.01682029252493e-15 24.6913580246914 5.01682029252493e-15 25.3086419753086 1.06916716516597 24.6913580246914 2.13833433033195 25.9259259259259 2.13833433033195 26.5432098765432 3.20750149549791 27.1604938271605 2.13833433033195 28.3950617283951 2.13833433033195 27.7777777777778 1.06916716516597 28.3950617283951 5.01682029252493e-15 29.6296296296296 5.01682029252493e-15 30.2469135802469 1.06916716516597 30.8641975308642 5.01682029252493e-15 32.0987654320988 5.01682029252493e-15 32.7160493827161 1.06916716516597 32.0987654320988 2.13833433033195 33.3333333333333 2.13833433033195 33.9506172839506 3.20750149549793 33.3333333333333 4.27666866066389 32.0987654320988 4.27666866066389 32.7160493827161 5.34583582582987 32.0987654320988 6.41500299099584 33.3333333333333 6.41500299099584 33.9506172839506 7.48417015616182 34.5679012345679 6.41500299099584 35.8024691358025 6.41500299099584 36.4197530864198 7.48417015616182 35.8024691358025 8.5533373213278 37.037037037037 8.5533373213278 37.6543209876543 9.62250448649376 37.037037037037 10.6916716516597 35.8024691358025 10.6916716516597 36.4197530864198 11.7608388168257 35.8024691358025 12.8300059819917 34.5679012345679 12.8300059819917 33.9506172839506 11.7608388168257 33.3333333333333 12.8300059819917 32.0987654320988 12.8300059819917 32.7160493827161 13.8991731471577 32.0987654320988 14.9683403123236 33.3333333333333 14.9683403123236 33.9506172839506 16.0375074774896 33.3333333333333 17.1066746426556 32.0987654320988 17.1066746426556 32.7160493827161 18.1758418078216 32.0987654320988 19.2450089729875 33.3333333333333 19.2450089729875 33.9506172839506 20.3141761381535 34.5679012345679 19.2450089729875 35.8024691358025 19.2450089729875 36.4197530864198 20.3141761381535 35.8024691358025 21.3833433033195 37.037037037037 21.3833433033195 37.6543209876543 22.4525104684855 38.2716049382716 21.3833433033195 39.5061728395062 21.3833433033195 38.8888888888889 20.3141761381535 39.5061728395062 19.2450089729875 40.7407407407407 19.2450089729875 41.358024691358 20.3141761381535 41.9753086419753 19.2450089729875 43.2098765432099 19.2450089729875 43.8271604938272 20.3141761381535 43.2098765432099 21.3833433033195 44.4444444444444 21.3833433033195 45.0617283950617 22.4525104684855 44.4444444444444 23.5216776336514 43.2098765432099 23.5216776336514 43.8271604938272 24.5908447988174 43.2098765432099 25.6600119639834 44.4444444444444 25.6600119639834 45.0617283950617 26.7291791291493 45.679012345679 25.6600119639834 46.9135802469136 25.6600119639834 47.5308641975309 26.7291791291493 46.9135802469136 27.7983462943153 48.1481481481481 27.7983462943153 48.7654320987654 28.8675134594813 49.3827160493827 27.7983462943153 50.6172839506173 27.7983462943153 50 26.7291791291493 50.6172839506173 25.6600119639834 51.8518518518519 25.6600119639834 52.4691358024691 26.7291791291493 53.0864197530864 25.6600119639834 54.320987654321 25.6600119639834 53.7037037037037 24.5908447988174 54.320987654321 23.5216776336514 53.0864197530864 23.5216776336514 52.4691358024691 22.4525104684855 53.0864197530864 21.3833433033195 54.320987654321 21.3833433033195 53.7037037037037 20.3141761381535 54.320987654321 19.2450089729875 55.5555555555556 19.2450089729875 56.1728395061728 20.3141761381535 56.7901234567901 19.2450089729875 58.0246913580247 19.2450089729875 58.641975308642 20.3141761381535 58.0246913580247 21.3833433033195 59.2592592592593 21.3833433033195 59.8765432098765 22.4525104684855 60.4938271604938 21.3833433033195 61.7283950617284 21.3833433033195 61.1111111111111 20.3141761381535 61.7283950617284 19.2450089729875 62.962962962963 19.2450089729875 63.5802469135803 20.3141761381535 64.1975308641975 19.2450089729875 65.4320987654321 19.2450089729875 64.8148148148148 18.1758418078216 65.4320987654321 17.1066746426556 64.1975308641975 17.1066746426556 63.5802469135803 16.0375074774896 64.1975308641975 14.9683403123236 65.4320987654321 14.9683403123236 64.8148148148148 13.8991731471577 65.4320987654321 12.8300059819917 64.1975308641975 12.8300059819917 63.5802469135803 11.7608388168257 62.962962962963 12.8300059819917 61.7283950617284 12.8300059819917 61.1111111111111 11.7608388168257 61.7283950617284 10.6916716516597 60.4938271604938 10.6916716516597 59.8765432098765 9.62250448649376 60.4938271604938 8.5533373213278 61.7283950617284 8.5533373213278 61.1111111111111 7.48417015616182 61.7283950617284 6.41500299099584 62.962962962963 6.41500299099584 63.5802469135803 7.48417015616182 64.1975308641975 6.41500299099584 65.4320987654321 6.41500299099584 64.8148148148148 5.34583582582987 65.4320987654321 4.27666866066389 64.1975308641975 4.27666866066389 63.5802469135803 3.20750149549793 64.1975308641975 2.13833433033195 65.4320987654321 2.13833433033195 64.8148148148148 1.06916716516597 65.4320987654321 5.01682029252493e-15 66.6666666666667 5.01682029252493e-15 67.283950617284 1.06916716516597 67.9012345679012 5.01682029252493e-15 69.1358024691358 5.01682029252493e-15 69.7530864197531 1.06916716516597 69.1358024691358 2.13833433033195 70.3703703703704 2.13833433033195 70.9876543209877 3.20750149549793 71.6049382716049 2.13833433033195 72.8395061728395 2.13833433033195 72.2222222222222 1.06916716516597 72.8395061728395 5.01682029252493e-15 74.0740740740741 5.01682029252493e-15 74.6913580246914 1.06916716516597 75.3086419753086 5.01682029252493e-15 76.5432098765432 5.01682029252493e-15 77.1604938271605 1.06916716516597 76.5432098765432 2.13833433033195 77.7777777777778 2.13833433033195 78.3950617283951 3.20750149549793 77.7777777777778 4.27666866066389 76.5432098765432 4.27666866066391 77.1604938271605 5.34583582582987 76.5432098765432 6.41500299099584 77.7777777777778 6.41500299099584 78.3950617283951 7.48417015616182 79.0123456790124 6.41500299099584 80.2469135802469 6.41500299099584 80.8641975308642 7.48417015616182 80.2469135802469 8.5533373213278 81.4814814814815 8.5533373213278 82.0987654320988 9.62250448649376 82.7160493827161 8.5533373213278 83.9506172839506 8.5533373213278 83.3333333333333 7.48417015616182 83.9506172839506 6.41500299099584 85.1851851851852 6.41500299099584 85.8024691358025 7.48417015616182 86.4197530864197 6.41500299099584 87.6543209876543 6.41500299099584 87.037037037037 5.34583582582987 87.6543209876543 4.27666866066389 86.4197530864197 4.27666866066389 85.8024691358025 3.20750149549793 86.4197530864197 2.13833433033195 87.6543209876543 2.13833433033195 87.037037037037 1.06916716516597 87.6543209876543 5.01682029252493e-15 88.8888888888889 5.01682029252493e-15 89.5061728395062 1.06916716516597 90.1234567901235 5.01682029252493e-15 91.358024691358 5.01682029252493e-15 91.9753086419753 1.06916716516597 91.358024691358 2.13833433033195 92.5925925925926 2.13833433033195 93.2098765432099 3.20750149549793 93.8271604938272 2.13833433033195 95.0617283950617 2.13833433033195 94.4444444444444 1.06916716516597 95.0617283950617 5.01682029252493e-15 96.2962962962963 5.01682029252493e-15 96.9135802469136 1.06916716516597 97.5308641975309 5.01682029252493e-15 98.7654320987654 5.01682029252493e-15 98.1481481481482 -1.06916716516597 98.7654320987654 -2.13833433033194 97.5308641975309 -2.13833433033195 96.9135802469136 -3.20750149549792 97.5308641975309 -4.2766686606639 98.7654320987654 -4.2766686606639 98.1481481481482 -5.34583582582986 98.7654320987654 -6.41500299099584 97.5308641975309 -6.41500299099584 96.9135802469136 -7.48417015616182 96.2962962962963 -6.41500299099584 95.0617283950617 -6.41500299099584 94.4444444444444 -7.48417015616182 95.0617283950617 -8.55333732132778 93.8271604938272 -8.55333732132778 93.2098765432099 -9.62250448649376 93.8271604938272 -10.6916716516597 95.0617283950617 -10.6916716516597 94.4444444444444 -11.7608388168257 95.0617283950617 -12.8300059819917 96.2962962962963 -12.8300059819917 96.9135802469136 -11.7608388168257 97.5308641975309 -12.8300059819917 98.7654320987654 -12.8300059819917 98.1481481481481 -13.8991731471577 98.7654320987654 -14.9683403123236 97.5308641975309 -14.9683403123236 96.9135802469136 -16.0375074774896 97.5308641975308 -17.1066746426556 98.7654320987654 -17.1066746426556 98.1481481481481 -18.1758418078216 98.7654320987654 -19.2450089729875 97.5308641975308 -19.2450089729875 96.9135802469136 -20.3141761381535 96.2962962962963 -19.2450089729875 95.0617283950617 -19.2450089729875 94.4444444444444 -20.3141761381535 95.0617283950617 -21.3833433033195 93.8271604938272 -21.3833433033195 93.2098765432099 -22.4525104684854 92.5925925925926 -21.3833433033195 91.358024691358 -21.3833433033195 91.9753086419753 -20.3141761381535 91.358024691358 -19.2450089729875 90.1234567901234 -19.2450089729875 89.5061728395062 -20.3141761381535 88.8888888888889 -19.2450089729875 87.6543209876543 -19.2450089729875 87.037037037037 -20.3141761381535 87.6543209876543 -21.3833433033195 86.4197530864197 -21.3833433033195 85.8024691358025 -22.4525104684854 86.4197530864197 -23.5216776336514 87.6543209876543 -23.5216776336514 87.037037037037 -24.5908447988174 87.6543209876543 -25.6600119639834 86.4197530864197 -25.6600119639834 85.8024691358025 -26.7291791291493 85.1851851851852 -25.6600119639834 83.9506172839506 -25.6600119639834 83.3333333333333 -26.7291791291493 83.9506172839506 -27.7983462943153 82.716049382716 -27.7983462943153 82.0987654320988 -28.8675134594813 82.716049382716 -29.9366806246473 83.9506172839506 -29.9366806246473 83.3333333333333 -31.0058477898132 83.9506172839506 -32.0750149549792 85.1851851851852 -32.0750149549792 85.8024691358025 -31.0058477898132 86.4197530864197 -32.0750149549792 87.6543209876543 -32.0750149549792 87.037037037037 -33.1441821201452 87.6543209876543 -34.2133492853112 86.4197530864197 -34.2133492853112 85.8024691358025 -35.2825164504771 86.4197530864197 -36.3516836156431 87.6543209876543 -36.3516836156431 87.037037037037 -37.4208507808091 87.6543209876543 -38.490017945975 88.8888888888889 -38.490017945975 89.5061728395062 -37.4208507808091 90.1234567901234 -38.490017945975 91.358024691358 -38.490017945975 91.9753086419753 -37.4208507808091 91.358024691358 -36.3516836156431 92.5925925925926 -36.3516836156431 93.2098765432099 -35.2825164504771 93.8271604938272 -36.3516836156431 95.0617283950617 -36.3516836156431 94.4444444444444 -37.4208507808091 95.0617283950617 -38.490017945975 96.2962962962963 -38.490017945975 96.9135802469136 -37.4208507808091 97.5308641975308 -38.490017945975 98.7654320987654 -38.490017945975 98.1481481481481 -39.559185111141 98.7654320987654 -40.628352276307 97.5308641975308 -40.628352276307 96.9135802469136 -41.697519441473 97.5308641975309 -42.7666866066389 98.7654320987654 -42.7666866066389 98.1481481481481 -43.8358537718049 98.7654320987654 -44.9050209369709 97.5308641975309 -44.9050209369709 96.9135802469136 -45.9741881021369 96.2962962962963 -44.9050209369709 95.0617283950617 -44.9050209369709 94.4444444444444 -45.9741881021369 95.0617283950617 -47.0433552673028 93.8271604938272 -47.0433552673028 93.2098765432099 -48.1125224324688 93.8271604938272 -49.1816895976348 95.0617283950617 -49.1816895976348 94.4444444444444 -50.2508567628008 95.0617283950617 -51.3200239279667 96.2962962962963 -51.3200239279667 96.9135802469136 -50.2508567628008 97.5308641975309 -51.3200239279667 98.7654320987654 -51.3200239279667 98.1481481481482 -52.3891910931327 98.7654320987654 -53.4583582582987 97.5308641975309 -53.4583582582987 96.9135802469136 -54.5275254234647 97.5308641975309 -55.5966925886306 98.7654320987654 -55.5966925886306 98.1481481481482 -56.6658597537966 98.7654320987654 -57.7350269189626 97.5308641975309 -57.7350269189626 96.9135802469136 -58.8041940841286 96.2962962962963 -57.7350269189626 95.0617283950617 -57.7350269189626 94.4444444444444 -58.8041940841285 95.0617283950617 -59.8733612492945 93.8271604938272 -59.8733612492945 93.2098765432099 -60.9425284144605 92.5925925925926 -59.8733612492945 91.358024691358 -59.8733612492945 91.9753086419753 -58.8041940841285 91.358024691358 -57.7350269189626 90.1234567901235 -57.7350269189626 89.5061728395062 -58.8041940841286 88.8888888888889 -57.7350269189626 87.6543209876543 -57.7350269189626 87.037037037037 -58.8041940841285 87.6543209876543 -59.8733612492945 86.4197530864197 -59.8733612492945 85.8024691358025 -60.9425284144605 86.4197530864198 -62.0116955796265 87.6543209876543 -62.0116955796265 87.037037037037 -63.0808627447924 87.6543209876543 -64.1500299099584 86.4197530864198 -64.1500299099584 85.8024691358025 -65.2191970751244 85.1851851851852 -64.1500299099584 83.9506172839506 -64.1500299099584 83.3333333333333 -65.2191970751244 83.9506172839506 -66.2883642402904 82.7160493827161 -66.2883642402904 82.0987654320988 -67.3575314054563 81.4814814814815 -66.2883642402904 80.2469135802469 -66.2883642402904 80.8641975308642 -65.2191970751244 80.2469135802469 -64.1500299099584 79.0123456790124 -64.1500299099584 78.3950617283951 -65.2191970751244 77.7777777777778 -64.1500299099584 76.5432098765432 -64.1500299099584 77.1604938271605 -63.0808627447924 76.5432098765432 -62.0116955796265 77.7777777777778 -62.0116955796265 78.3950617283951 -60.9425284144605 77.7777777777778 -59.8733612492945 76.5432098765432 -59.8733612492945 77.1604938271605 -58.8041940841285 76.5432098765432 -57.7350269189626 75.3086419753086 -57.7350269189626 74.6913580246914 -58.8041940841286 74.0740740740741 -57.7350269189626 72.8395061728395 -57.7350269189626 72.2222222222222 -58.8041940841285 72.8395061728395 -59.8733612492945 71.6049382716049 -59.8733612492945 70.9876543209877 -60.9425284144605 70.3703703703704 -59.8733612492945 69.1358024691358 -59.8733612492945 69.7530864197531 -58.8041940841285 69.1358024691358 -57.7350269189626 67.9012345679012 -57.7350269189626 67.283950617284 -58.8041940841286 66.6666666666667 -57.7350269189626 65.4320987654321 -57.7350269189626 64.8148148148148 -58.8041940841285 65.4320987654321 -59.8733612492945 64.1975308641975 -59.8733612492945 63.5802469135803 -60.9425284144605 64.1975308641975 -62.0116955796265 65.4320987654321 -62.0116955796265 64.8148148148148 -63.0808627447924 65.4320987654321 -64.1500299099584 64.1975308641975 -64.1500299099584 63.5802469135803 -65.2191970751244 62.962962962963 -64.1500299099584 61.7283950617284 -64.1500299099584 61.1111111111111 -65.2191970751244 61.7283950617284 -66.2883642402904 60.4938271604938 -66.2883642402904 59.8765432098765 -67.3575314054563 60.4938271604938 -68.4266985706223 61.7283950617284 -68.4266985706223 61.1111111111111 -69.4958657357883 61.7283950617284 -70.5650329009543 62.962962962963 -70.5650329009543 63.5802469135803 -69.4958657357883 64.1975308641975 -70.5650329009543 65.4320987654321 -70.5650329009543 64.8148148148148 -71.6342000661202 65.4320987654321 -72.7033672312862 64.1975308641975 -72.7033672312862 63.5802469135803 -73.7725343964522 64.1975308641975 -74.8417015616182 65.4320987654321 -74.8417015616182 64.8148148148148 -75.9108687267841 65.4320987654321 -76.9800358919501 64.1975308641975 -76.9800358919501 63.5802469135803 -78.0492030571161 62.962962962963 -76.9800358919501 61.7283950617284 -76.9800358919501 61.1111111111111 -78.0492030571161 61.7283950617284 -79.1183702222821 60.4938271604938 -79.1183702222821 59.8765432098765 -80.187537387448 59.2592592592593 -79.1183702222821 58.0246913580247 -79.1183702222821 58.641975308642 -78.0492030571161 58.0246913580247 -76.9800358919501 56.7901234567901 -76.9800358919501 56.1728395061728 -78.0492030571161 55.5555555555556 -76.9800358919501 54.320987654321 -76.9800358919501 53.7037037037037 -78.0492030571161 54.320987654321 -79.118370222282 53.0864197530864 -79.118370222282 52.4691358024691 -80.187537387448 53.0864197530864 -81.256704552614 54.320987654321 -81.256704552614 53.7037037037037 -82.32587171778 54.320987654321 -83.3950388829459 53.0864197530864 -83.3950388829459 52.4691358024691 -84.4642060481119 51.8518518518519 -83.3950388829459 50.6172839506173 -83.3950388829459 50 -84.4642060481119 50.6172839506173 -85.5333732132779 49.3827160493827 -85.5333732132779 48.7654320987654 -86.6025403784439 48.1481481481481 -85.5333732132779 46.9135802469136 -85.5333732132779 47.5308641975309 -84.4642060481119 46.9135802469136 -83.3950388829459 45.679012345679 -83.3950388829459 45.0617283950617 -84.4642060481119 44.4444444444444 -83.3950388829459 43.2098765432099 -83.3950388829459 43.8271604938272 -82.32587171778 43.2098765432099 -81.256704552614 44.4444444444444 -81.256704552614 45.0617283950617 -80.187537387448 44.4444444444444 -79.118370222282 43.2098765432099 -79.118370222282 43.8271604938272 -78.0492030571161 43.2098765432099 -76.9800358919501 41.9753086419753 -76.9800358919501 41.358024691358 -78.0492030571161 40.7407407407407 -76.9800358919501 39.5061728395062 -76.9800358919501 38.8888888888889 -78.0492030571161 39.5061728395062 -79.1183702222821 38.2716049382716 -79.1183702222821 37.6543209876543 -80.187537387448 37.037037037037 -79.1183702222821 35.8024691358025 -79.1183702222821 36.4197530864198 -78.0492030571161 35.8024691358025 -76.9800358919501 34.5679012345679 -76.9800358919501 33.9506172839506 -78.0492030571161 33.3333333333333 -76.9800358919501 32.0987654320988 -76.9800358919501 32.7160493827161 -75.9108687267841 32.0987654320988 -74.8417015616182 33.3333333333333 -74.8417015616182 33.9506172839506 -73.7725343964522 33.3333333333333 -72.7033672312862 32.0987654320988 -72.7033672312862 32.7160493827161 -71.6342000661202 32.0987654320988 -70.5650329009543 33.3333333333333 -70.5650329009543 33.9506172839506 -69.4958657357883 34.5679012345679 -70.5650329009543 35.8024691358025 -70.5650329009543 36.4197530864198 -69.4958657357883 35.8024691358025 -68.4266985706223 37.037037037037 -68.4266985706223 37.6543209876543 -67.3575314054563 37.037037037037 -66.2883642402904 35.8024691358025 -66.2883642402904 36.4197530864198 -65.2191970751244 35.8024691358025 -64.1500299099584 34.5679012345679 -64.1500299099584 33.9506172839506 -65.2191970751244 33.3333333333333 -64.1500299099584 32.0987654320988 -64.1500299099584 32.7160493827161 -63.0808627447924 32.0987654320988 -62.0116955796265 33.3333333333333 -62.0116955796265 33.9506172839506 -60.9425284144605 33.3333333333333 -59.8733612492945 32.0987654320988 -59.8733612492945 32.7160493827161 -58.8041940841285 32.0987654320988 -57.7350269189626 30.8641975308642 -57.7350269189626 30.2469135802469 -58.8041940841286 29.6296296296296 -57.7350269189626 28.3950617283951 -57.7350269189626 27.7777777777778 -58.8041940841285 28.3950617283951 -59.8733612492945 27.1604938271605 -59.8733612492945 26.5432098765432 -60.9425284144605 25.9259259259259 -59.8733612492945 24.6913580246914 -59.8733612492945 25.3086419753086 -58.8041940841285 24.6913580246914 -57.7350269189626 23.4567901234568 -57.7350269189626 22.8395061728395 -58.8041940841285 22.2222222222222 -57.7350269189626 20.9876543209877 -57.7350269189626 20.3703703703704 -58.8041940841285 20.9876543209877 -59.8733612492945 19.7530864197531 -59.8733612492945 19.1358024691358 -60.9425284144605 19.7530864197531 -62.0116955796265 20.9876543209877 -62.0116955796265 20.3703703703704 -63.0808627447924 20.9876543209877 -64.1500299099584 19.7530864197531 -64.1500299099584 19.1358024691358 -65.2191970751244 18.5185185185185 -64.1500299099584 17.283950617284 -64.1500299099584 16.6666666666667 -65.2191970751244 17.283950617284 -66.2883642402904 16.0493827160494 -66.2883642402904 15.4320987654321 -67.3575314054563 14.8148148148148 -66.2883642402904 13.5802469135802 -66.2883642402904 14.1975308641975 -65.2191970751244 13.5802469135803 -64.1500299099584 12.3456790123457 -64.1500299099584 11.7283950617284 -65.2191970751244 11.1111111111111 -64.1500299099584 9.87654320987655 -64.1500299099584 10.4938271604938 -63.0808627447924 9.87654320987655 -62.0116955796265 11.1111111111111 -62.0116955796265 11.7283950617284 -60.9425284144605 11.1111111111111 -59.8733612492945 9.87654320987655 -59.8733612492945 10.4938271604938 -58.8041940841285 9.87654320987655 -57.7350269189626 8.64197530864198 -57.7350269189626 8.0246913580247 -58.8041940841285 7.40740740740741 -57.7350269189626 6.17283950617284 -57.7350269189626 5.55555555555556 -58.8041940841285 6.17283950617284 -59.8733612492945 4.93827160493827 -59.8733612492945 4.32098765432099 -60.9425284144605 3.70370370370371 -59.8733612492945 2.46913580246914 -59.8733612492945 3.08641975308642 -58.8041940841285 2.46913580246914 -57.7350269189626 1.23456790123457 -57.7350269189626 0.617283950617287 -58.8041940841285 3.33066907387547e-15 -57.7350269189626 -1.23456790123456 -57.7350269189626 -0.617283950617281 -56.6658597537966 -1.23456790123456 -55.5966925886306 3.10862446895044e-15 -55.5966925886306 0.617283950617287 -54.5275254234647 2.66453525910038e-15 -53.4583582582987 -1.23456790123456 -53.4583582582987 -0.617283950617282 -52.3891910931327 -1.23456790123457 -51.3200239279667 2.22044604925031e-15 -51.3200239279667 0.617283950617288 -50.2508567628008 1.23456790123457 -51.3200239279667 2.46913580246914 -51.3200239279667 3.08641975308642 -50.2508567628008 2.46913580246914 -49.1816895976348 3.70370370370371 -49.1816895976348 4.32098765432099 -48.1125224324688 3.70370370370371 -47.0433552673028 2.46913580246914 -47.0433552673028 3.08641975308642 -45.9741881021369 2.46913580246914 -44.9050209369709 1.23456790123457 -44.9050209369709 0.617283950617288 -45.9741881021369 2.22044604925031e-15 -44.9050209369709 -1.23456790123457 -44.9050209369709 -0.617283950617282 -43.8358537718049 -1.23456790123456 -42.7666866066389 2.66453525910038e-15 -42.7666866066389 0.617283950617287 -41.697519441473 3.10862446895044e-15 -40.628352276307 -1.23456790123456 -40.628352276307 -0.617283950617281 -39.559185111141 -1.23456790123456 -38.4900179459751 3.10862446895044e-15 -38.4900179459751 0.617283950617287 -37.4208507808091 1.23456790123457 -38.4900179459751 2.46913580246914 -38.4900179459751 3.08641975308642 -37.4208507808091 2.46913580246914 -36.3516836156431 3.70370370370371 -36.3516836156431 4.32098765432099 -35.2825164504771 4.93827160493827 -36.3516836156431 6.17283950617284 -36.3516836156431 5.55555555555556 -37.4208507808091 6.17283950617284 -38.490017945975 7.40740740740741 -38.490017945975 8.02469135802469 -37.4208507808091 8.64197530864198 -38.490017945975 9.87654320987654 -38.490017945975 10.4938271604938 -37.4208507808091 9.87654320987655 -36.3516836156431 11.1111111111111 -36.3516836156431 11.7283950617284 -35.2825164504771 11.1111111111111 -34.2133492853112 9.87654320987655 -34.2133492853112 10.4938271604938 -33.1441821201452 9.87654320987654 -32.0750149549792 11.1111111111111 -32.0750149549792 11.7283950617284 -31.0058477898132 12.3456790123457 -32.0750149549792 13.5802469135802 -32.0750149549792 14.1975308641975 -31.0058477898132 13.5802469135802 -29.9366806246473 14.8148148148148 -29.9366806246473 15.4320987654321 -28.8675134594813 14.8148148148148 -27.7983462943153 13.5802469135802 -27.7983462943153 14.1975308641975 -26.7291791291493 13.5802469135802 -25.6600119639834 12.3456790123457 -25.6600119639834 11.7283950617284 -26.7291791291493 11.1111111111111 -25.6600119639834 9.87654320987654 -25.6600119639834 10.4938271604938 -24.5908447988174 9.87654320987655 -23.5216776336514 11.1111111111111 -23.5216776336514 11.7283950617284 -22.4525104684854 11.1111111111111 -21.3833433033195 9.87654320987654 -21.3833433033195 10.4938271604938 -20.3141761381535 9.87654320987654 -19.2450089729875 8.64197530864198 -19.2450089729875 8.02469135802469 -20.3141761381535 7.40740740740741 -19.2450089729875 6.17283950617284 -19.2450089729875 5.55555555555556 -20.3141761381535 6.17283950617284 -21.3833433033195 4.93827160493827 -21.3833433033195 4.32098765432099 -22.4525104684854 3.7037037037037 -21.3833433033195 2.46913580246913 -21.3833433033195 3.08641975308642 -20.3141761381535 2.46913580246914 -19.2450089729875 1.23456790123457 -19.2450089729875 0.617283950617284 -20.3141761381535 0 -19.2450089729875 -1.23456790123457 -19.2450089729875 -0.617283950617284 -18.1758418078216 -1.23456790123457 -17.1066746426556 0 -17.1066746426556 0.617283950617284 -16.0375074774896 6.66133814775094e-16 -14.9683403123236 -1.23456790123457 -14.9683403123236 -0.617283950617283 -13.8991731471577 -1.23456790123457 -12.8300059819917 1.11022302462516e-15 -12.8300059819917 0.617283950617284 -11.7608388168257 1.23456790123457 -12.8300059819917 2.46913580246914 -12.8300059819917 3.08641975308642 -11.7608388168257 2.46913580246914 -10.6916716516597 3.7037037037037 -10.6916716516597 4.32098765432099 -9.62250448649376 3.7037037037037 -8.55333732132778 2.46913580246914 -8.55333732132778 3.08641975308642 -7.48417015616182 2.46913580246914 -6.41500299099584 1.23456790123457 -6.41500299099584 0.617283950617284 -7.48417015616182 6.66133814775094e-16 -6.41500299099584 -1.23456790123457 -6.41500299099584 -0.617283950617283 -5.34583582582986 -1.23456790123457 -4.2766686606639 2.22044604925031e-16 -4.2766686606639 0.617283950617284 -3.20750149549792 0 -2.13833433033195 -1.23456790123457 -2.13833433033195 -0.617283950617284 -1.06916716516597 33.7654320987654 -35 34.1358024691358 -35 34.320987654321 -34.6792498504502 34.5061728395062 -35 34.8765432098765 -35 35.0617283950617 -34.6792498504502 34.8765432098765 -34.3584997009004 35.2469135802469 -34.3584997009004 35.4320987654321 -34.0377495513506 35.6172839506173 -34.3584997009004 35.9876543209877 -34.3584997009004 35.8024691358025 -34.6792498504502 35.9876543209877 -35 36.358024691358 -35 36.5432098765432 -34.6792498504502 36.7283950617284 -35 37.0987654320988 -35 37.2839506172839 -34.6792498504502 37.0987654320988 -34.3584997009004 37.4691358024691 -34.3584997009004 37.6543209876543 -34.0377495513506 37.4691358024691 -33.7169994018008 37.0987654320988 -33.7169994018008 37.2839506172839 -33.396249252251 37.0987654320988 -33.0754991027013 37.4691358024691 -33.0754991027013 37.6543209876543 -32.7547489531515 37.8395061728395 -33.0754991027013 38.2098765432099 -33.0754991027013 38.3950617283951 -32.7547489531515 38.2098765432099 -32.4339988036017 38.5802469135802 -32.4339988036017 38.7654320987654 -32.1132486540519 38.9506172839506 -32.4339988036017 39.320987654321 -32.4339988036017 39.1358024691358 -32.7547489531515 39.320987654321 -33.0754991027013 39.6913580246914 -33.0754991027013 39.8765432098765 -32.7547489531515 40.0617283950617 -33.0754991027012 40.4320987654321 -33.0754991027012 40.2469135802469 -33.396249252251 40.4320987654321 -33.7169994018008 40.0617283950617 -33.7169994018008 39.8765432098765 -34.0377495513506 40.0617283950617 -34.3584997009004 40.4320987654321 -34.3584997009004 40.2469135802469 -34.6792498504502 40.4320987654321 -35 40.8024691358025 -35 40.9876543209877 -34.6792498504502 41.1728395061728 -35 41.5432098765432 -35 41.7283950617284 -34.6792498504502 41.5432098765432 -34.3584997009004 41.9135802469136 -34.3584997009004 42.0987654320988 -34.0377495513506 42.2839506172839 -34.3584997009004 42.6543209876543 -34.3584997009004 42.4691358024691 -34.6792498504502 42.6543209876543 -35 43.0246913580247 -35 43.2098765432099 -34.6792498504502 43.3950617283951 -35 43.7654320987654 -35 43.9506172839506 -34.6792498504502 43.7654320987654 -34.3584997009004 44.1358024691358 -34.3584997009004 44.320987654321 -34.0377495513506 44.1358024691358 -33.7169994018008 43.7654320987654 -33.7169994018008 43.9506172839506 -33.396249252251 43.7654320987654 -33.0754991027012 44.1358024691358 -33.0754991027012 44.320987654321 -32.7547489531515 44.5061728395062 -33.0754991027013 44.8765432098765 -33.0754991027013 45.0617283950617 -32.7547489531515 44.8765432098765 -32.4339988036017 45.2469135802469 -32.4339988036017 45.4320987654321 -32.1132486540519 45.2469135802469 -31.7924985045021 44.8765432098765 -31.7924985045021 45.0617283950617 -31.4717483549523 44.8765432098765 -31.1509982054025 44.5061728395062 -31.1509982054025 44.320987654321 -31.4717483549523 44.1358024691358 -31.1509982054025 43.7654320987654 -31.1509982054025 43.9506172839506 -30.8302480558527 43.7654320987654 -30.5094979063029 44.1358024691358 -30.5094979063029 44.320987654321 -30.1887477567531 44.1358024691358 -29.8679976072033 43.7654320987654 -29.8679976072033 43.9506172839506 -29.5472474576535 43.7654320987654 -29.2264973081037 44.1358024691358 -29.2264973081037 44.320987654321 -28.905747158554 44.5061728395062 -29.2264973081037 44.8765432098765 -29.2264973081037 45.0617283950617 -28.905747158554 44.8765432098765 -28.5849970090042 45.2469135802469 -28.5849970090042 45.4320987654321 -28.2642468594544 45.6172839506173 -28.5849970090042 45.9876543209877 -28.5849970090042 45.8024691358025 -28.905747158554 45.9876543209877 -29.2264973081037 46.358024691358 -29.2264973081037 46.5432098765432 -28.905747158554 46.7283950617284 -29.2264973081037 47.0987654320988 -29.2264973081037 47.2839506172839 -28.905747158554 47.0987654320988 -28.5849970090042 47.4691358024691 -28.5849970090042 47.6543209876543 -28.2642468594544 47.4691358024691 -27.9434967099046 47.0987654320988 -27.9434967099046 47.2839506172839 -27.6227465603548 47.0987654320988 -27.301996410805 47.4691358024691 -27.301996410805 47.6543209876543 -26.9812462612552 47.8395061728395 -27.301996410805 48.2098765432099 -27.301996410805 48.3950617283951 -26.9812462612552 48.2098765432099 -26.6604961117054 48.5802469135802 -26.6604961117054 48.7654320987654 -26.3397459621556 48.9506172839506 -26.6604961117054 49.320987654321 -26.6604961117054 49.1358024691358 -26.9812462612552 49.320987654321 -27.301996410805 49.6913580246914 -27.301996410805 49.8765432098765 -26.9812462612552 50.0617283950617 -27.301996410805 50.4320987654321 -27.301996410805 50.2469135802469 -27.6227465603548 50.4320987654321 -27.9434967099046 50.0617283950617 -27.9434967099046 49.8765432098765 -28.2642468594544 50.0617283950617 -28.5849970090042 50.4320987654321 -28.5849970090042 50.2469135802469 -28.905747158554 50.4320987654321 -29.2264973081037 50.8024691358025 -29.2264973081037 50.9876543209877 -28.905747158554 51.1728395061728 -29.2264973081037 51.5432098765432 -29.2264973081037 51.7283950617284 -28.905747158554 51.5432098765432 -28.5849970090042 51.9135802469136 -28.5849970090042 52.0987654320988 -28.2642468594544 52.2839506172839 -28.5849970090042 52.6543209876543 -28.5849970090042 52.4691358024691 -28.905747158554 52.6543209876543 -29.2264973081037 53.0246913580247 -29.2264973081037 53.2098765432099 -28.905747158554 53.3950617283951 -29.2264973081037 53.7654320987654 -29.2264973081037 53.5802469135802 -29.5472474576535 53.7654320987654 -29.8679976072033 53.3950617283951 -29.8679976072033 53.2098765432099 -30.1887477567531 53.3950617283951 -30.5094979063029 53.7654320987654 -30.5094979063029 53.5802469135802 -30.8302480558527 53.7654320987654 -31.1509982054025 53.3950617283951 -31.1509982054025 53.2098765432099 -31.4717483549523 53.0246913580247 -31.1509982054025 52.6543209876543 -31.1509982054025 52.4691358024691 -31.4717483549523 52.6543209876543 -31.7924985045021 52.2839506172839 -31.7924985045021 52.0987654320988 -32.1132486540519 52.2839506172839 -32.4339988036017 52.6543209876543 -32.4339988036017 52.4691358024691 -32.7547489531515 52.6543209876543 -33.0754991027013 53.0246913580247 -33.0754991027013 53.2098765432099 -32.7547489531515 53.3950617283951 -33.0754991027012 53.7654320987654 -33.0754991027012 53.5802469135802 -33.396249252251 53.7654320987654 -33.7169994018008 53.3950617283951 -33.7169994018008 53.2098765432099 -34.0377495513506 53.3950617283951 -34.3584997009004 53.7654320987654 -34.3584997009004 53.5802469135802 -34.6792498504502 53.7654320987654 -35 54.1358024691358 -35 54.320987654321 -34.6792498504502 54.5061728395062 -35 54.8765432098765 -35 55.0617283950617 -34.6792498504502 54.8765432098765 -34.3584997009004 55.2469135802469 -34.3584997009004 55.4320987654321 -34.0377495513506 55.6172839506173 -34.3584997009004 55.9876543209877 -34.3584997009004 55.8024691358025 -34.6792498504502 55.9876543209877 -35 56.358024691358 -35 56.5432098765432 -34.6792498504502 56.7283950617284 -35 57.0987654320988 -35 57.2839506172839 -34.6792498504502 57.0987654320988 -34.3584997009004 57.4691358024691 -34.3584997009004 57.6543209876543 -34.0377495513506 57.4691358024691 -33.7169994018008 57.0987654320988 -33.7169994018008 57.2839506172839 -33.396249252251 57.0987654320988 -33.0754991027012 57.4691358024691 -33.0754991027012 57.6543209876543 -32.7547489531515 57.8395061728395 -33.0754991027012 58.2098765432099 -33.0754991027012 58.3950617283951 -32.7547489531515 58.2098765432099 -32.4339988036017 58.5802469135802 -32.4339988036017 58.7654320987654 -32.1132486540519 58.9506172839506 -32.4339988036017 59.320987654321 -32.4339988036017 59.1358024691358 -32.7547489531515 59.320987654321 -33.0754991027012 59.6913580246914 -33.0754991027013 59.8765432098765 -32.7547489531515 60.0617283950617 -33.0754991027013 60.4320987654321 -33.0754991027013 60.2469135802469 -33.396249252251 60.4320987654321 -33.7169994018008 60.0617283950617 -33.7169994018008 59.8765432098765 -34.0377495513506 60.0617283950617 -34.3584997009004 60.4320987654321 -34.3584997009004 60.2469135802469 -34.6792498504502 60.4320987654321 -35 60.8024691358025 -35 60.9876543209877 -34.6792498504502 61.1728395061728 -35 61.5432098765432 -35 61.7283950617284 -34.6792498504502 61.5432098765432 -34.3584997009004 61.9135802469136 -34.3584997009004 62.0987654320988 -34.0377495513506 62.2839506172839 -34.3584997009004 62.6543209876543 -34.3584997009004 62.4691358024691 -34.6792498504502 62.6543209876543 -35 63.0246913580247 -35 63.2098765432099 -34.6792498504502 63.3950617283951 -35 63.7654320987654 -35 63.5802469135802 -35.3207501495498 63.7654320987654 -35.6415002990996 63.3950617283951 -35.6415002990996 63.2098765432099 -35.9622504486494 63.3950617283951 -36.2830005981992 63.7654320987654 -36.2830005981992 63.5802469135802 -36.603750747749 63.7654320987654 -36.9245008972987 63.3950617283951 -36.9245008972987 63.2098765432099 -37.2452510468485 63.0246913580247 -36.9245008972987 62.6543209876543 -36.9245008972987 62.4691358024691 -37.2452510468485 62.6543209876543 -37.5660011963983 62.2839506172839 -37.5660011963983 62.0987654320988 -37.8867513459481 62.2839506172839 -38.2075014954979 62.6543209876543 -38.2075014954979 62.4691358024691 -38.5282516450477 62.6543209876543 -38.8490017945975 63.0246913580247 -38.8490017945975 63.2098765432099 -38.5282516450477 63.3950617283951 -38.8490017945975 63.7654320987654 -38.8490017945975 63.5802469135802 -39.1697519441473 63.7654320987654 -39.4905020936971 63.3950617283951 -39.4905020936971 63.2098765432099 -39.8112522432469 63.395061728395 -40.1320023927967 63.7654320987654 -40.1320023927967 63.5802469135802 -40.4527525423465 63.7654320987654 -40.7735026918963 63.395061728395 -40.7735026918963 63.2098765432099 -41.094252841446 63.0246913580247 -40.7735026918963 62.6543209876543 -40.7735026918963 62.4691358024691 -41.094252841446 62.6543209876543 -41.4150029909958 62.2839506172839 -41.4150029909958 62.0987654320988 -41.7357531405456 61.9135802469136 -41.4150029909958 61.5432098765432 -41.4150029909958 61.7283950617284 -41.094252841446 61.5432098765432 -40.7735026918963 61.1728395061728 -40.7735026918963 60.9876543209877 -41.094252841446 60.8024691358025 -40.7735026918963 60.4320987654321 -40.7735026918963 60.2469135802469 -41.094252841446 60.4320987654321 -41.4150029909958 60.0617283950617 -41.4150029909958 59.8765432098765 -41.7357531405456 60.0617283950617 -42.0565032900954 60.4320987654321 -42.0565032900954 60.2469135802469 -42.3772534396452 60.4320987654321 -42.698003589195 60.0617283950617 -42.698003589195 59.8765432098765 -43.0187537387448 59.6913580246914 -42.698003589195 59.320987654321 -42.698003589195 59.1358024691358 -43.0187537387448 59.320987654321 -43.3395038882946 58.9506172839506 -43.3395038882946 58.7654320987654 -43.6602540378444 58.9506172839506 -43.9810041873942 59.320987654321 -43.9810041873942 59.1358024691358 -44.301754336944 59.320987654321 -44.6225044864938 59.6913580246914 -44.6225044864938 59.8765432098765 -44.301754336944 60.0617283950617 -44.6225044864938 60.4320987654321 -44.6225044864938 60.2469135802469 -44.9432546360436 60.4320987654321 -45.2640047855933 60.0617283950617 -45.2640047855933 59.8765432098765 -45.5847549351431 60.0617283950617 -45.9055050846929 60.4320987654321 -45.9055050846929 60.2469135802469 -46.2262552342427 60.4320987654321 -46.5470053837925 60.8024691358025 -46.5470053837925 60.9876543209877 -46.2262552342427 61.1728395061728 -46.5470053837925 61.5432098765432 -46.5470053837925 61.7283950617284 -46.2262552342427 61.5432098765432 -45.9055050846929 61.9135802469136 -45.9055050846929 62.0987654320988 -45.5847549351431 62.2839506172839 -45.9055050846929 62.6543209876543 -45.9055050846929 62.4691358024691 -46.2262552342427 62.6543209876543 -46.5470053837925 63.0246913580247 -46.5470053837925 63.2098765432099 -46.2262552342427 63.395061728395 -46.5470053837925 63.7654320987654 -46.5470053837925 63.5802469135802 -46.8677555333423 63.7654320987654 -47.1885056828921 63.395061728395 -47.1885056828921 63.2098765432099 -47.5092558324419 63.3950617283951 -47.8300059819917 63.7654320987654 -47.8300059819917 63.5802469135802 -48.1507561315415 63.7654320987654 -48.4715062810913 63.3950617283951 -48.4715062810913 63.2098765432099 -48.7922564306411 63.0246913580247 -48.4715062810913 62.6543209876543 -48.4715062810913 62.4691358024691 -48.7922564306411 62.6543209876543 -49.1130065801908 62.2839506172839 -49.1130065801909 62.0987654320988 -49.4337567297406 62.2839506172839 -49.7545068792904 62.6543209876543 -49.7545068792904 62.4691358024691 -50.0752570288402 62.6543209876543 -50.39600717839 63.0246913580247 -50.39600717839 63.2098765432099 -50.0752570288402 63.3950617283951 -50.39600717839 63.7654320987654 -50.39600717839 63.5802469135802 -50.7167573279398 63.7654320987654 -51.0375074774896 63.3950617283951 -51.0375074774896 63.2098765432099 -51.3582576270394 63.3950617283951 -51.6790077765892 63.7654320987654 -51.6790077765892 63.5802469135802 -51.999757926139 63.7654320987654 -52.3205080756888 63.3950617283951 -52.3205080756888 63.2098765432099 -52.6412582252386 63.0246913580247 -52.3205080756888 62.6543209876543 -52.3205080756888 62.4691358024691 -52.6412582252386 62.6543209876543 -52.9620083747884 62.2839506172839 -52.9620083747884 62.0987654320988 -53.2827585243381 61.9135802469136 -52.9620083747884 61.5432098765432 -52.9620083747884 61.7283950617284 -52.6412582252386 61.5432098765432 -52.3205080756888 61.1728395061728 -52.3205080756888 60.9876543209877 -52.6412582252386 60.8024691358025 -52.3205080756888 60.4320987654321 -52.3205080756888 60.2469135802469 -52.6412582252386 60.4320987654321 -52.9620083747884 60.0617283950617 -52.9620083747884 59.8765432098765 -53.2827585243381 60.0617283950617 -53.6035086738879 60.4320987654321 -53.6035086738879 60.2469135802469 -53.9242588234377 60.4320987654321 -54.2450089729875 60.0617283950617 -54.2450089729875 59.8765432098765 -54.5657591225373 59.6913580246914 -54.2450089729875 59.320987654321 -54.2450089729875 59.1358024691358 -54.5657591225373 59.320987654321 -54.8865092720871 58.9506172839506 -54.8865092720871 58.7654320987654 -55.2072594216369 58.5802469135802 -54.8865092720871 58.2098765432099 -54.8865092720871 58.3950617283951 -54.5657591225373 58.2098765432099 -54.2450089729875 57.8395061728395 -54.2450089729875 57.6543209876543 -54.5657591225373 57.4691358024691 -54.2450089729875 57.0987654320988 -54.2450089729875 57.2839506172839 -53.9242588234377 57.0987654320988 -53.6035086738879 57.4691358024691 -53.6035086738879 57.6543209876543 -53.2827585243381 57.4691358024691 -52.9620083747884 57.0987654320988 -52.9620083747884 57.2839506172839 -52.6412582252386 57.0987654320988 -52.3205080756888 56.7283950617284 -52.3205080756888 56.5432098765432 -52.6412582252386 56.358024691358 -52.3205080756888 55.9876543209877 -52.3205080756888 55.8024691358025 -52.6412582252386 55.9876543209877 -52.9620083747884 55.6172839506173 -52.9620083747884 55.4320987654321 -53.2827585243381 55.2469135802469 -52.9620083747884 54.8765432098765 -52.9620083747884 55.0617283950617 -52.6412582252386 54.8765432098765 -52.3205080756888 54.5061728395062 -52.3205080756888 54.320987654321 -52.6412582252386 54.1358024691358 -52.3205080756888 53.7654320987654 -52.3205080756888 53.5802469135802 -52.6412582252386 53.7654320987654 -52.9620083747884 53.3950617283951 -52.9620083747884 53.2098765432099 -53.2827585243381 53.3950617283951 -53.6035086738879 53.7654320987654 -53.6035086738879 53.5802469135802 -53.9242588234377 53.7654320987654 -54.2450089729875 53.3950617283951 -54.2450089729875 53.2098765432099 -54.5657591225373 53.0246913580247 -54.2450089729875 52.6543209876543 -54.2450089729875 52.4691358024691 -54.5657591225373 52.6543209876543 -54.8865092720871 52.2839506172839 -54.8865092720871 52.0987654320988 -55.2072594216369 52.2839506172839 -55.5280095711867 52.6543209876543 -55.5280095711867 52.4691358024691 -55.8487597207365 52.6543209876543 -56.1695098702863 53.0246913580247 -56.1695098702863 53.2098765432099 -55.8487597207365 53.3950617283951 -56.1695098702863 53.7654320987654 -56.1695098702863 53.5802469135802 -56.4902600198361 53.7654320987654 -56.8110101693859 53.3950617283951 -56.8110101693859 53.2098765432099 -57.1317603189357 53.3950617283951 -57.4525104684854 53.7654320987654 -57.4525104684854 53.5802469135802 -57.7732606180352 53.7654320987654 -58.094010767585 53.3950617283951 -58.094010767585 53.2098765432099 -58.4147609171348 53.0246913580247 -58.094010767585 52.6543209876543 -58.094010767585 52.4691358024691 -58.4147609171348 52.6543209876543 -58.7355110666846 52.2839506172839 -58.7355110666846 52.0987654320988 -59.0562612162344 51.9135802469136 -58.7355110666846 51.5432098765432 -58.7355110666846 51.7283950617284 -58.4147609171348 51.5432098765432 -58.094010767585 51.1728395061728 -58.094010767585 50.9876543209877 -58.4147609171348 50.8024691358025 -58.094010767585 50.4320987654321 -58.094010767585 50.2469135802469 -58.4147609171348 50.4320987654321 -58.7355110666846 50.0617283950617 -58.7355110666846 49.8765432098765 -59.0562612162344 50.0617283950617 -59.3770113657842 50.4320987654321 -59.3770113657842 50.2469135802469 -59.697761515334 50.4320987654321 -60.0185116648838 50.0617283950617 -60.0185116648838 49.8765432098765 -60.3392618144336 49.6913580246914 -60.0185116648838 49.320987654321 -60.0185116648838 49.1358024691358 -60.3392618144336 49.320987654321 -60.6600119639834 48.9506172839506 -60.6600119639834 48.7654320987654 -60.9807621135332 48.5802469135802 -60.6600119639834 48.2098765432099 -60.6600119639834 48.3950617283951 -60.3392618144336 48.2098765432099 -60.0185116648838 47.8395061728395 -60.0185116648838 47.6543209876543 -60.3392618144336 47.4691358024691 -60.0185116648838 47.0987654320988 -60.0185116648838 47.2839506172839 -59.697761515334 47.0987654320988 -59.3770113657842 47.4691358024691 -59.3770113657842 47.6543209876543 -59.0562612162344 47.4691358024691 -58.7355110666846 47.0987654320988 -58.7355110666846 47.2839506172839 -58.4147609171348 47.0987654320988 -58.094010767585 46.7283950617284 -58.094010767585 46.5432098765432 -58.4147609171348 46.358024691358 -58.094010767585 45.9876543209877 -58.094010767585 45.8024691358025 -58.4147609171348 45.9876543209877 -58.7355110666846 45.6172839506173 -58.7355110666846 45.4320987654321 -59.0562612162344 45.2469135802469 -58.7355110666846 44.8765432098765 -58.7355110666846 45.0617283950617 -58.4147609171348 44.8765432098765 -58.094010767585 44.5061728395062 -58.094010767585 44.320987654321 -58.4147609171348 44.1358024691358 -58.094010767585 43.7654320987654 -58.094010767585 43.9506172839506 -57.7732606180352 43.7654320987654 -57.4525104684854 44.1358024691358 -57.4525104684854 44.320987654321 -57.1317603189357 44.1358024691358 -56.8110101693859 43.7654320987654 -56.8110101693859 43.9506172839506 -56.4902600198361 43.7654320987654 -56.1695098702863 44.1358024691358 -56.1695098702863 44.320987654321 -55.8487597207365 44.5061728395062 -56.1695098702863 44.8765432098765 -56.1695098702863 45.0617283950617 -55.8487597207365 44.8765432098765 -55.5280095711867 45.2469135802469 -55.5280095711867 45.4320987654321 -55.2072594216369 45.2469135802469 -54.8865092720871 44.8765432098765 -54.8865092720871 45.0617283950617 -54.5657591225373 44.8765432098765 -54.2450089729875 44.5061728395062 -54.2450089729875 44.320987654321 -54.5657591225373 44.1358024691358 -54.2450089729875 43.7654320987654 -54.2450089729875 43.9506172839506 -53.9242588234377 43.7654320987654 -53.6035086738879 44.1358024691358 -53.6035086738879 44.320987654321 -53.2827585243381 44.1358024691358 -52.9620083747884 43.7654320987654 -52.9620083747884 43.9506172839506 -52.6412582252386 43.7654320987654 -52.3205080756888 43.3950617283951 -52.3205080756888 43.2098765432099 -52.6412582252386 43.0246913580247 -52.3205080756888 42.6543209876543 -52.3205080756888 42.4691358024691 -52.6412582252386 42.6543209876543 -52.9620083747884 42.2839506172839 -52.9620083747884 42.0987654320988 -53.2827585243381 41.9135802469136 -52.9620083747884 41.5432098765432 -52.9620083747884 41.7283950617284 -52.6412582252386 41.5432098765432 -52.3205080756888 41.1728395061728 -52.3205080756888 40.9876543209877 -52.6412582252386 40.8024691358025 -52.3205080756888 40.4320987654321 -52.3205080756888 40.2469135802469 -52.6412582252386 40.4320987654321 -52.9620083747884 40.0617283950617 -52.9620083747884 39.8765432098765 -53.2827585243381 40.0617283950617 -53.6035086738879 40.4320987654321 -53.6035086738879 40.2469135802469 -53.9242588234377 40.4320987654321 -54.2450089729875 40.0617283950617 -54.2450089729875 39.8765432098765 -54.5657591225373 39.6913580246914 -54.2450089729875 39.320987654321 -54.2450089729875 39.1358024691358 -54.5657591225373 39.320987654321 -54.8865092720871 38.9506172839506 -54.8865092720871 38.7654320987654 -55.2072594216369 38.5802469135802 -54.8865092720871 38.2098765432099 -54.8865092720871 38.3950617283951 -54.5657591225373 38.2098765432099 -54.2450089729875 37.8395061728395 -54.2450089729875 37.6543209876543 -54.5657591225373 37.4691358024691 -54.2450089729875 37.0987654320988 -54.2450089729875 37.2839506172839 -53.9242588234377 37.0987654320988 -53.6035086738879 37.4691358024691 -53.6035086738879 37.6543209876543 -53.2827585243381 37.4691358024691 -52.9620083747884 37.0987654320988 -52.9620083747884 37.2839506172839 -52.6412582252386 37.0987654320988 -52.3205080756888 36.7283950617284 -52.3205080756888 36.5432098765432 -52.6412582252386 36.358024691358 -52.3205080756888 35.9876543209877 -52.3205080756888 35.8024691358025 -52.6412582252386 35.9876543209877 -52.9620083747884 35.6172839506173 -52.9620083747884 35.4320987654321 -53.2827585243381 35.2469135802469 -52.9620083747884 34.8765432098765 -52.9620083747884 35.0617283950617 -52.6412582252386 34.8765432098765 -52.3205080756888 34.5061728395062 -52.3205080756888 34.320987654321 -52.6412582252386 34.1358024691358 -52.3205080756888 33.7654320987654 -52.3205080756888 33.9506172839506 -51.999757926139 33.7654320987654 -51.6790077765892 34.1358024691358 -51.6790077765892 34.320987654321 -51.3582576270394 34.1358024691358 -51.0375074774896 33.7654320987654 -51.0375074774896 33.9506172839506 -50.7167573279398 33.7654320987654 -50.39600717839 34.1358024691358 -50.39600717839 34.320987654321 -50.0752570288402 34.5061728395062 -50.39600717839 34.8765432098765 -50.39600717839 35.0617283950617 -50.0752570288402 34.8765432098765 -49.7545068792904 35.2469135802469 -49.7545068792904 35.4320987654321 -49.4337567297406 35.2469135802469 -49.1130065801909 34.8765432098765 -49.1130065801908 35.0617283950617 -48.7922564306411 34.8765432098765 -48.4715062810913 34.5061728395062 -48.4715062810913 34.320987654321 -48.7922564306411 34.1358024691358 -48.4715062810913 33.7654320987654 -48.4715062810913 33.9506172839506 -48.1507561315415 33.7654320987654 -47.8300059819917 34.1358024691358 -47.8300059819917 34.320987654321 -47.5092558324419 34.1358024691358 -47.1885056828921 33.7654320987654 -47.1885056828921 33.9506172839506 -46.8677555333423 33.7654320987654 -46.5470053837925 34.1358024691358 -46.5470053837925 34.320987654321 -46.2262552342427 34.5061728395062 -46.5470053837925 34.8765432098765 -46.5470053837925 35.0617283950617 -46.2262552342427 34.8765432098765 -45.9055050846929 35.2469135802469 -45.9055050846929 35.4320987654321 -45.5847549351431 35.6172839506173 -45.9055050846929 35.9876543209877 -45.9055050846929 35.8024691358025 -46.2262552342427 35.9876543209877 -46.5470053837925 36.358024691358 -46.5470053837925 36.5432098765432 -46.2262552342427 36.7283950617284 -46.5470053837925 37.0987654320988 -46.5470053837925 37.2839506172839 -46.2262552342427 37.0987654320988 -45.9055050846929 37.4691358024691 -45.9055050846929 37.6543209876543 -45.5847549351431 37.4691358024691 -45.2640047855933 37.0987654320988 -45.2640047855934 37.2839506172839 -44.9432546360436 37.0987654320988 -44.6225044864938 37.4691358024691 -44.6225044864938 37.6543209876543 -44.301754336944 37.8395061728395 -44.6225044864938 38.2098765432099 -44.6225044864938 38.3950617283951 -44.301754336944 38.2098765432099 -43.9810041873942 38.5802469135802 -43.9810041873942 38.7654320987654 -43.6602540378444 38.5802469135802 -43.3395038882946 38.2098765432099 -43.3395038882946 38.3950617283951 -43.0187537387448 38.2098765432099 -42.698003589195 37.8395061728395 -42.698003589195 37.6543209876543 -43.0187537387448 37.4691358024691 -42.698003589195 37.0987654320988 -42.698003589195 37.2839506172839 -42.3772534396452 37.0987654320988 -42.0565032900954 37.4691358024691 -42.0565032900954 37.6543209876543 -41.7357531405456 37.4691358024691 -41.4150029909958 37.0987654320988 -41.4150029909958 37.2839506172839 -41.094252841446 37.0987654320988 -40.7735026918963 36.7283950617284 -40.7735026918963 36.5432098765432 -41.094252841446 36.358024691358 -40.7735026918963 35.9876543209877 -40.7735026918963 35.8024691358025 -41.094252841446 35.9876543209877 -41.4150029909958 35.6172839506173 -41.4150029909958 35.4320987654321 -41.7357531405456 35.2469135802469 -41.4150029909958 34.8765432098765 -41.4150029909958 35.0617283950617 -41.094252841446 34.8765432098765 -40.7735026918963 34.5061728395062 -40.7735026918963 34.320987654321 -41.094252841446 34.1358024691358 -40.7735026918963 33.7654320987654 -40.7735026918963 33.9506172839506 -40.4527525423465 33.7654320987654 -40.1320023927967 34.1358024691358 -40.1320023927967 34.320987654321 -39.8112522432469 34.1358024691358 -39.4905020936971 33.7654320987654 -39.4905020936971 33.9506172839506 -39.1697519441473 33.7654320987654 -38.8490017945975 34.1358024691358 -38.8490017945975 34.320987654321 -38.5282516450477 34.5061728395062 -38.8490017945975 34.8765432098765 -38.8490017945975 35.0617283950617 -38.5282516450477 34.8765432098765 -38.2075014954979 35.2469135802469 -38.2075014954979 35.4320987654321 -37.8867513459481 35.2469135802469 -37.5660011963983 34.8765432098765 -37.5660011963983 35.0617283950617 -37.2452510468485 34.8765432098765 -36.9245008972987 34.5061728395062 -36.9245008972987 34.320987654321 -37.2452510468485 34.1358024691358 -36.9245008972987 33.7654320987654 -36.9245008972987 33.9506172839506 -36.603750747749 33.7654320987654 -36.2830005981992 34.1358024691358 -36.2830005981992 34.320987654321 -35.9622504486494 34.1358024691358 -35.6415002990996 33.7654320987654 -35.6415002990996 33.9506172839506 -35.3207501495498 614 616 615 617 616 618 611 610 612 613 612 606 619 618 620 621 620 614 614 620 618 613 621 614 616 614 618 612 610 608 608 607 606 606 605 613 609 608 610 606 612 608 598 604 600 602 604 603 600 604 602 604 598 605 601 600 602 600 599 598 605 598 597 613 605 597 636 635 634 636 634 630 634 633 632 630 634 632 630 632 631 641 640 642 640 639 638 640 638 642 637 630 629 637 629 653 637 636 630 638 637 644 622 621 596 623 622 624 596 595 594 597 596 621 621 613 597 622 596 624 628 627 626 628 626 654 625 624 594 594 624 596 625 594 593 626 625 657 629 628 654 546 544 548 544 546 545 548 544 542 546 548 547 554 553 552 550 554 552 554 550 556 552 551 550 569 568 570 541 548 542 548 541 549 542 544 543 550 557 556 541 533 549 533 557 549 556 555 554 567 566 568 1377 573 565 550 549 557 568 566 570 586 588 587 588 586 584 585 584 586 582 584 583 593 592 1441 592 591 590 592 590 1441 589 588 582 582 588 584 589 582 581 590 589 1435 572 571 570 572 565 573 572 570 566 573 1377 574 566 565 572 580 579 578 581 580 1409 576 1385 577 575 574 576 580 578 1409 1383 576 574 589 581 1415 657 625 689 644 643 642 645 644 637 646 645 652 637 653 645 647 646 648 649 648 650 650 648 652 652 651 650 652 648 646 645 653 652 644 642 638 1409 1411 581 1408 1409 1407 1411 1409 1410 1411 1415 581 1409 577 1407 1413 1415 1411 589 1415 1417 656 654 626 1417 1415 1416 589 1417 1433 1414 1415 1413 1419 1433 1417 1411 1412 1413 654 653 629 1409 578 577 664 663 662 666 665 664 662 661 669 666 664 662 668 667 666 668 666 662 676 670 669 662 669 668 671 670 672 669 661 677 657 656 626 1433 1435 589 1435 1439 590 1439 1435 1437 1434 1435 1433 1441 590 1439 593 1441 689 659 658 660 688 660 658 1505 1441 1503 593 689 625 657 689 658 1439 1440 1441 661 660 685 655 654 656 1505 690 1441 1417 1418 1419 1406 1407 1405 1404 1405 1407 1404 1407 1403 577 1403 1407 1433 1431 1432 1433 1419 1431 1427 1431 1419 1430 1431 1428 1422 1423 1419 1422 1419 1421 1423 1427 1419 1419 1420 1421 1402 1403 1401 1399 1400 1401 1401 577 1385 1424 1425 1423 1427 1428 1431 1425 1426 1423 1426 1427 1423 577 1401 1403 1430 1428 1429 1437 1435 1436 1439 1437 1438 1505 1503 1504 1441 1443 1503 1499 1503 1443 1502 1503 1500 1446 1447 1443 1446 1443 1445 1447 1499 1443 1443 1444 1445 1443 1441 1442 1447 1448 1449 1499 1447 1449 1495 1496 1497 1449 1481 1497 1449 1450 1451 1497 1499 1449 1500 1501 1502 1500 1503 1499 1499 1497 1498 1399 1395 1398 1401 1387 1399 539 538 540 538 537 536 540 538 534 536 535 534 536 534 538 534 533 541 563 562 564 532 560 558 565 564 1313 529 561 560 532 558 557 1311 562 1307 533 532 557 564 562 1311 558 560 559 522 520 524 520 522 521 524 520 518 522 524 523 528 527 526 532 531 530 529 560 530 1281 561 529 529 497 1281 561 1305 562 530 560 532 564 1311 1313 1379 1377 1378 574 1377 1379 1377 1375 1376 1375 1377 1313 1371 1375 1319 1313 1377 565 1385 1383 1384 576 1383 1385 1380 1381 1379 1371 1374 1375 1381 1383 1379 1371 1372 1374 1375 1313 1315 574 1379 1383 1319 1315 1317 1314 1315 1313 1315 1319 1375 1316 1317 1315 1319 1317 1318 1320 1321 1319 1321 1323 1337 1331 1335 1323 1323 1321 1322 1369 1319 1321 1371 1319 1369 1313 1311 1312 1337 1323 1335 1401 1385 1387 520 519 518 518 517 524 1287 1289 561 525 500 526 517 525 524 528 526 500 1305 1306 1307 1307 562 1305 1291 1305 1289 1291 1303 1305 1287 1288 1289 1289 1290 1291 561 1289 1305 1307 1310 1311 1281 1283 561 516 515 514 516 509 517 1287 561 1283 1283 1281 1282 514 512 516 512 514 513 1292 1293 1291 1286 1284 1285 1284 1286 1287 1287 1283 1284 525 517 509 1293 1295 1291 1310 1307 1309 1309 1307 1308 1324 1325 1327 1329 1331 1327 1326 1327 1325 1331 1323 1327 1329 1330 1331 1328 1329 1327 1335 1331 1334 1327 1323 1324 1303 1304 1305 1302 1303 1299 1298 1299 1295 1295 1299 1303 1295 1303 1291 1293 1294 1295 1302 1299 1300 1301 1302 1300 1295 1297 1298 1297 1295 1296 528 498 529 1332 1333 1331 1397 1395 1396 1398 1395 1397 1394 1395 1393 1391 1395 1387 1391 1387 1390 1392 1393 1395 1395 1399 1387 1452 1455 1451 1455 1453 1454 1455 1452 1453 1455 1456 1457 1463 1451 1455 1395 1391 1392 1388 1390 1387 1390 1388 1389 1381 1382 1383 1455 1458 1459 1458 1455 1457 1459 1460 1463 1463 1455 1459 1385 1386 1387 1461 1463 1460 1481 1449 1465 1449 1463 1465 1465 1463 1464 1481 1483 1497 1483 1481 1482 1465 1467 1481 1487 1483 1485 1483 1495 1497 1495 1483 1491 1493 1491 1492 1493 1494 1491 1491 1489 1490 1488 1489 1491 1487 1488 1491 1491 1483 1487 1491 1494 1495 1465 1466 1467 1467 1479 1481 1478 1479 1475 1467 1475 1479 1479 1480 1481 1483 1484 1485 1485 1486 1487 1471 1467 1468 1463 1461 1462 1449 1451 1463 1372 1373 1374 1367 1368 1369 1370 1371 1369 1364 1365 1363 1367 1365 1366 1363 1365 1367 1359 1367 1355 1367 1359 1363 1355 1367 1369 1355 1353 1354 1355 1369 1353 1337 1338 1339 1337 1339 1353 1333 1334 1331 1337 1335 1336 1353 1351 1352 1353 1339 1351 1339 1341 1343 1339 1347 1351 1343 1341 1342 1341 1339 1340 1347 1339 1343 1337 1353 1369 1369 1321 1337 1469 1470 1471 1469 1471 1468 1362 1360 1361 1360 1362 1359 1475 1476 1477 1475 1477 1478 1473 1474 1475 1475 1471 1473 1471 1472 1473 1471 1475 1467 1359 1356 1357 1359 1355 1356 1343 1344 1347 1349 1351 1347 1347 1344 1345 1362 1363 1359 1351 1349 1350 1357 1358 1359 1345 1346 1347 1349 1347 1348 540 534 541 673 672 674 672 670 674 676 675 674 674 670 676 677 676 669 731 730 732 678 680 679 677 685 678 678 682 680 678 684 682 682 684 683 680 682 681 677 661 685 678 685 684 730 729 728 728 727 726 726 732 728 728 732 730 686 685 660 725 732 726 740 739 738 740 734 741 734 740 736 736 740 738 738 737 736 744 743 742 744 742 746 745 744 746 748 746 742 746 748 747 749 742 741 749 741 733 742 749 748 733 741 734 749 725 724 725 749 733 749 724 750 733 732 725 752 751 750 722 752 750 17 754 753 752 722 753 722 750 724 736 735 734 756 755 754 688 687 686 660 688 686 691 690 692 692 1505 693 1441 690 689 696 695 694 697 696 698 698 694 700 700 694 693 694 698 696 690 1505 692 1511 701 693 1513 1511 1512 1511 1513 701 1507 1509 1511 1513 1527 1529 693 1507 1511 1513 1529 701 700 693 701 702 1529 1531 1531 1535 702 1535 1536 769 1531 1533 1535 769 771 705 1529 1530 1531 704 1535 769 693 1505 1507 689 688 658 698 700 699 714 713 712 715 714 716 710 714 712 714 710 716 723 722 724 52 720 718 718 720 719 717 52 718 722 721 753 1529 702 701 1535 704 702 702 704 703 769 705 704 710 717 716 717 710 709 710 712 711 708 62 709 706 793 708 707 706 708 53 717 709 706 705 777 721 720 50 721 17 753 1506 1507 1505 795 62 708 762 761 760 763 762 764 765 764 757 760 764 762 758 764 760 768 767 766 1 768 2 768 766 4 3 2 4 768 4 2 4 766 765 4 765 5 764 758 757 757 13 765 13 5 765 14 13 757 14 757 756 5 13 6 760 759 758 13 12 6 6 12 8 16 15 14 14 754 16 756 754 14 18 17 48 7 6 8 8 12 10 8 10 9 11 10 12 24 22 26 22 24 23 26 22 28 24 26 25 19 18 20 28 22 21 37 21 45 26 28 27 29 28 21 37 29 21 45 21 20 36 29 37 31 30 32 32 30 36 32 34 33 34 32 36 35 34 36 30 29 36 46 20 18 754 17 16 49 48 17 17 721 49 52 51 50 50 720 52 721 50 49 46 45 20 46 48 47 55 54 56 56 54 58 53 61 54 48 46 18 61 60 54 53 709 61 64 63 62 64 62 801 709 62 61 57 56 58 58 60 59 67 66 68 66 190 68 897 66 65 58 54 60 717 53 52 38 44 40 44 38 45 40 44 42 38 40 39 43 42 44 40 42 41 89 88 90 70 72 71 74 72 70 70 76 74 92 88 86 90 88 92 95 94 96 100 98 94 94 98 96 91 90 92 96 98 97 76 70 69 72 74 73 190 69 68 38 37 45 64 801 65 1511 1509 1510 1514 1515 1513 1527 1515 1523 1515 1527 1513 1531 1532 1533 1535 1533 1534 1529 1527 1528 771 769 770 1519 1515 1516 1523 1515 1519 1519 1517 1518 1523 1519 1521 1524 1527 1523 1520 1521 1519 1523 1521 1522 1525 1526 1524 1526 1527 1524 772 773 774 1519 1516 1517 771 774 775 771 772 774 781 782 780 780 782 783 775 776 777 777 705 775 777 779 793 778 779 777 779 780 783 791 779 783 784 785 783 777 793 706 786 783 785 783 786 787 791 787 789 787 791 783 788 789 787 791 789 790 791 792 793 795 796 799 794 795 793 795 708 793 791 793 779 62 795 799 705 771 775 816 817 818 816 818 819 819 820 821 819 821 822 816 819 815 813 814 815 811 813 815 819 811 815 819 823 811 822 823 819 825 823 824 829 827 828 831 829 830 831 832 833 831 833 834 827 829 831 825 826 827 839 825 827 831 839 827 835 839 831 834 835 831 837 835 836 811 823 825 806 803 805 798 799 797 799 800 801 805 803 804 803 806 807 808 809 807 797 799 796 825 841 809 825 839 841 840 841 839 837 838 839 812 813 811 857 809 841 811 825 809 841 842 843 843 845 846 843 855 841 843 844 845 809 859 807 811 809 810 837 839 835 847 843 846 799 801 62 74 76 75 69 77 76 77 181 78 865 867 65 803 801 802 78 180 80 865 65 801 81 80 178 82 81 113 79 78 80 84 83 82 801 803 865 857 858 859 859 803 807 855 856 857 857 841 855 859 860 861 863 864 865 863 865 803 861 862 863 145 113 81 863 859 861 65 867 871 859 863 803 809 857 859 867 865 866 94 101 100 92 86 85 93 92 85 100 99 98 109 102 101 93 85 109 93 109 101 103 102 104 104 106 105 106 104 102 106 102 108 85 84 110 94 93 101 109 108 102 110 109 85 112 111 110 110 82 112 84 82 110 118 120 119 115 114 116 121 120 122 144 114 113 108 107 106 82 113 112 86 88 87 851 852 855 855 843 851 850 851 849 855 852 854 847 849 851 849 847 848 854 852 853 867 868 869 870 871 867 870 867 869 65 873 889 876 877 878 876 878 879 882 880 881 874 875 873 879 882 883 882 879 880 879 883 875 879 875 876 875 883 887 871 872 873 116 141 117 889 891 65 891 895 65 887 888 889 141 125 117 889 873 875 887 889 875 65 895 897 122 124 123 122 120 124 120 118 124 124 118 117 117 125 124 887 883 885 887 885 886 892 893 894 130 128 126 69 181 77 116 114 144 126 128 127 894 895 891 125 132 126 891 892 894 896 897 895 891 889 890 884 885 883 65 871 873 851 843 847 1507 1508 1509 1281 1279 1280 1276 1278 1279 1275 1279 465 510 512 511 1274 1275 1273 516 510 509 516 512 510 1276 1279 1275 1276 1277 1278 1268 1269 1270 509 501 525 501 509 502 525 501 500 502 509 508 506 508 507 464 1255 1257 1275 465 1273 1271 1257 1259 1257 1271 1273 1267 1270 1271 1273 1271 1272 1257 1258 1259 1255 1256 1257 1257 1273 465 500 498 528 1267 1271 1259 1265 1266 1267 1259 1263 1267 1259 1260 1263 1264 1267 1263 1265 1267 1264 1270 1267 1268 1261 1263 1260 1261 1262 1263 1232 1233 1231 1235 1233 1234 1254 1255 1253 1252 1253 1251 1235 1237 1239 1251 1253 1255 1235 1236 1237 1233 1235 1231 1229 1227 1228 1231 1227 1229 1231 1229 1230 1239 1231 1235 1238 1239 1237 508 506 502 502 506 504 503 502 504 506 505 504 500 499 498 465 1279 1281 465 1281 497 1257 465 464 496 495 494 465 497 496 466 496 494 491 490 492 492 490 488 488 487 486 488 486 492 489 488 490 493 492 485 466 465 496 494 468 466 494 493 468 464 463 462 462 461 1249 464 462 1251 468 493 469 464 1251 1255 467 466 468 1251 462 1249 1245 1246 1247 1248 1249 1247 1247 1249 1185 1250 1251 1249 1244 1245 1243 1241 1227 1239 1227 1231 1239 1240 1241 1239 1227 1225 1226 1247 1243 1245 1193 1241 1243 1243 1247 1187 1191 1243 1187 1243 1241 1242 1185 1186 1187 1184 1185 1183 1247 1185 1187 1243 1191 1193 1193 1225 1241 1191 1187 1188 1188 1189 1191 1182 1183 1179 452 1179 1183 1180 1182 1179 1185 1249 461 1241 1225 1227 1185 452 1183 1179 450 1177 529 498 497 1220 1221 1219 1222 1219 1221 1225 1223 1224 1225 1209 1223 1219 1222 1223 1211 1223 1209 1215 1218 1219 1223 1215 1219 1223 1211 1215 1207 1208 1209 1211 1209 1210 1209 1195 1207 1192 1193 1191 1180 1181 1182 1190 1191 1189 1199 1195 1196 1194 1195 1193 1207 1195 1203 1197 1198 1199 1197 1199 1196 1199 1203 1195 1193 1195 1209 1225 1193 1209 1217 1215 1216 1215 1217 1218 1213 1215 1212 1203 1206 1207 1215 1211 1212 1204 1206 1203 1213 1214 1215 1201 1202 1203 1205 1206 1204 1203 1200 1201 1092 1095 1091 1083 1087 1091 1094 1092 1093 1090 1091 1089 1088 1089 1087 1084 1085 1086 1087 1083 1086 1083 1084 1086 1089 1091 1087 1095 1092 1094 1203 1199 1200 1172 1173 1174 1175 1176 1177 1172 1174 1171 1171 1174 1175 1167 1169 1170 1106 1104 1105 1104 1107 1103 1170 1171 1167 1175 1167 1171 1167 1168 1169 1175 1163 1167 1167 1165 1166 1164 1165 1167 1163 1177 1161 1107 1108 1110 1106 1107 1104 1110 1111 1107 1111 1113 1099 1110 1108 1109 1103 1107 1099 1163 1164 1167 1177 1163 1175 1178 1179 1177 1099 1107 1111 1099 1100 1101 1097 1083 1095 1099 1101 1102 1096 1097 1095 1082 1083 1081 1079 1077 1078 1077 1075 1076 1095 1083 1091 1081 1083 1097 1097 1099 1113 1065 1079 1081 1079 1080 1081 1075 1079 1071 1065 1067 1079 1071 1079 1067 1081 1097 1113 1075 1077 1079 1074 1072 1073 1072 1074 1071 1071 1069 1070 1068 1069 1071 1074 1075 1071 1068 1071 1067 1097 1098 1099 1102 1103 1099 492 486 485 493 485 477 493 477 469 478 485 484 482 484 483 485 478 477 470 469 476 461 453 1185 472 471 470 461 460 454 476 469 477 478 482 480 472 470 476 481 480 482 480 479 478 459 458 460 474 472 476 474 473 472 476 475 474 478 484 482 460 458 454 454 453 461 452 1185 453 456 454 458 456 455 454 458 457 456 451 450 452 449 1177 450 448 447 446 448 446 1153 449 448 1153 1177 449 1161 442 441 440 444 443 442 438 440 439 442 440 438 437 445 444 438 444 442 437 444 438 437 436 1127 436 434 1121 435 434 436 445 437 1147 446 445 1153 452 450 1179 422 424 423 425 424 426 419 418 420 421 420 413 427 426 428 426 424 428 428 421 429 421 428 422 405 429 421 424 422 428 420 418 414 416 415 414 414 413 420 417 416 418 414 418 416 406 412 408 410 412 411 408 412 410 413 412 405 409 408 410 408 407 406 406 405 412 405 421 413 430 429 405 430 405 404 432 431 430 402 404 403 430 404 432 433 432 402 402 432 404 433 402 401 401 400 370 400 398 370 399 398 400 337 433 401 394 393 392 396 395 394 390 392 391 394 392 390 389 397 396 390 396 394 389 396 390 389 388 382 388 386 382 387 386 388 397 389 373 398 397 373 434 433 1121 1163 1161 1162 1159 1160 1161 1157 1158 1156 449 1155 1159 1136 1137 1139 1138 1139 1137 1158 1159 1156 1155 1156 1159 1148 1150 1147 1150 1148 1149 1155 1153 1154 1142 1140 1141 1140 1142 1139 1135 1139 1131 1139 1135 1136 1143 1131 1139 1129 1131 1143 1143 1139 1142 1134 1135 1132 1161 449 1159 1132 1135 1131 1113 1114 1115 1113 1065 1081 1115 1116 1117 1063 1115 1119 1113 1115 1063 1067 1065 1066 1063 1064 1065 1062 1063 1059 1065 1113 1063 1113 1111 1112 1118 1119 1115 1125 1123 1124 1061 1062 1060 1063 1119 1059 1059 1060 1062 1057 1059 1119 1059 1057 1058 1120 1121 1119 1117 1118 1115 1133 1134 1132 1151 1147 1150 1151 1152 1153 1147 1151 445 1153 445 1151 1146 1147 1145 373 372 398 372 370 398 1129 1143 1145 1130 1131 1129 1145 1143 1144 370 372 371 437 1145 1147 1121 433 337 370 369 401 373 389 381 381 380 374 381 389 382 384 383 382 384 382 386 374 376 375 374 380 376 376 380 378 378 377 376 380 379 378 381 374 373 1155 449 1153 1127 1128 1129 436 1123 1127 1127 1129 437 436 1121 1123 1127 1123 1126 1145 437 1129 1057 1119 1121 1122 1123 1121 368 337 369 1057 1121 336 367 366 368 1055 1056 1057 337 401 369 368 366 340 1125 1126 1123 357 365 364 362 361 360 363 362 364 360 364 362 357 364 358 365 357 341 359 358 360 364 360 358 356 349 357 366 365 341 386 385 384 354 356 355 960 961 962 960 962 963 963 964 965 963 965 966 960 963 959 957 958 959 959 955 957 963 955 959 963 967 955 966 967 963 969 967 968 972 973 974 972 974 975 975 976 977 975 977 978 972 975 971 969 970 971 983 969 971 975 983 971 979 983 975 978 979 975 981 979 980 969 955 967 949 950 951 953 954 955 983 985 969 957 955 956 953 955 969 948 949 951 948 951 947 952 953 951 937 953 969 951 953 937 937 969 985 983 984 985 986 987 985 983 979 982 987 988 989 987 989 990 999 996 997 991 987 990 987 935 985 997 998 999 982 979 981 1043 1041 1042 1045 1046 1043 1039 1043 1047 1045 1043 1044 1041 1043 1039 1036 1037 1038 1039 1035 1038 1035 1036 1038 1040 1041 1039 1047 1043 1046 1049 1035 1047 1047 1035 1039 1034 1035 1033 1053 1055 1052 1049 1047 1048 1029 1030 1028 1030 1027 1028 1007 1008 1011 1007 1003 1005 1015 1003 1011 1010 1011 1008 1008 1009 1010 1007 1011 1003 999 1000 1001 1002 1003 1001 1017 1001 1003 1005 1003 1004 999 196 995 1011 1012 1013 1006 1007 1005 1014 1015 1011 1021 1022 1020 1020 1022 1019 1015 1016 1017 1015 1017 1003 320 1001 1017 1018 1019 1017 1019 1022 1023 1001 318 999 1019 1023 321 1014 1011 1013 1017 1019 321 1023 1024 1025 995 996 999 912 913 914 915 912 914 918 916 917 911 912 915 911 915 919 908 910 911 918 919 915 919 920 921 915 916 918 907 911 919 943 945 947 944 945 943 941 939 940 943 939 941 943 941 942 947 951 943 921 922 923 927 923 925 925 923 924 921 193 905 905 193 903 927 925 926 945 946 947 921 905 919 900 901 902 899 900 902 909 910 908 189 181 69 899 902 903 128 130 129 899 897 898 66 897 192 130 126 132 144 142 116 130 132 131 132 125 133 906 907 905 116 142 141 905 907 919 899 193 897 193 899 903 133 125 141 133 141 134 134 136 135 138 136 134 138 134 140 141 140 134 905 903 904 911 907 908 938 939 937 936 937 935 937 985 935 939 943 951 934 935 933 932 933 931 930 931 929 927 928 929 933 935 931 935 991 931 993 929 991 991 929 931 993 991 992 993 994 995 193 927 929 993 193 929 81 178 177 80 180 178 178 180 179 181 189 182 78 181 180 196 993 995 927 193 923 937 939 951 145 81 177 113 145 144 146 145 176 149 148 173 150 149 157 147 146 148 146 176 148 139 138 140 138 137 136 150 152 151 144 143 142 176 175 174 174 173 148 157 173 165 158 157 164 157 149 173 150 157 156 152 154 153 152 150 154 156 155 154 156 154 150 172 166 173 174 148 176 145 177 176 921 923 193 991 935 987 1049 1050 1051 333 1051 1055 325 1049 1051 1033 1035 1049 324 1031 1033 1049 325 1033 1055 1057 333 1027 1030 1031 334 333 1057 1031 1032 1033 1025 1027 322 324 1027 1031 1033 325 324 1023 1025 321 326 333 332 333 326 325 326 332 328 1051 333 325 1025 1026 1027 334 1057 336 338 337 368 340 339 338 341 340 366 338 368 340 330 328 332 332 331 330 328 330 329 334 336 335 337 336 1121 326 328 327 322 321 1025 320 1017 321 324 323 322 322 1027 324 319 318 320 196 999 318 310 317 316 314 316 315 317 310 309 205 317 309 317 196 318 314 310 316 310 314 312 313 312 314 312 311 310 307 306 308 308 306 208 304 303 302 304 302 274 305 304 274 308 205 309 320 318 1001 305 208 306 344 342 348 345 344 346 346 348 347 348 346 344 341 348 342 299 298 300 300 298 294 296 294 298 295 294 296 296 298 297 301 300 294 344 343 342 349 356 350 351 350 352 352 354 353 352 350 356 341 357 349 293 292 286 290 289 288 291 290 292 292 290 286 341 349 348 301 294 293 276 274 302 302 277 276 274 276 275 274 273 305 285 278 277 277 301 285 272 271 270 244 272 270 241 305 273 269 268 262 273 272 241 301 277 302 285 301 293 282 278 284 287 286 288 293 286 285 284 283 282 279 278 280 281 280 282 278 282 280 267 266 268 285 284 278 290 288 286 268 266 262 356 354 352 244 270 269 66 192 190 993 194 193 196 195 194 196 317 197 196 194 993 69 190 189 190 192 191 199 198 200 202 200 198 198 197 204 897 193 192 204 202 198 205 308 206 208 207 206 208 305 209 308 208 206 202 201 200 202 204 203 211 210 212 238 212 210 210 209 241 204 197 205 317 205 197 182 188 184 182 184 183 186 184 188 168 170 169 188 187 186 170 166 172 164 160 158 165 173 166 164 157 165 160 164 162 168 167 166 160 159 158 166 170 168 185 184 186 172 171 170 216 215 214 216 214 218 217 216 218 164 163 162 162 161 160 218 214 220 182 189 188 240 238 210 241 272 242 243 242 244 244 269 245 245 269 253 272 244 242 246 245 253 240 239 238 248 247 246 252 246 253 252 250 246 212 238 213 253 269 261 261 260 254 262 261 269 264 263 262 264 262 266 254 256 255 254 260 256 256 260 258 258 257 256 260 259 258 261 254 253 210 241 240 220 219 218 220 213 221 220 214 213 222 221 228 237 229 221 228 221 229 221 213 237 223 222 224 225 224 226 226 228 227 228 226 224 222 228 224 237 213 238 236 230 229 250 249 248 251 250 252 248 246 250 230 232 231 230 236 232 232 236 234 234 233 232 236 235 234 236 229 237 209 305 241 266 265 264 1051 1052 1055 1054 1055 1053 
+769 768 1 0.1
+0 0 0 1.23456790123457 0 0 1.85185185185185 -1.06916716516597 0 2.46913580246914 0 0 3.7037037037037 0 0 4.32098765432099 -1.06916716516597 0 3.7037037037037 -2.13833433033195 0 4.93827160493827 -2.13833433033195 0 5.55555555555556 -3.20750149549792 0 6.17283950617284 -2.13833433033195 0 7.40740740740741 -2.13833433033195 0 6.79012345679012 -1.06916716516597 0 7.40740740740741 0 0 8.64197530864198 0 0 9.25925925925926 -1.06916716516597 0 9.87654320987654 0 0 11.1111111111111 0 0 11.7283950617284 -1.06916716516597 0 11.1111111111111 -2.13833433033195 0 12.3456790123457 -2.13833433033195 0 12.962962962963 -3.20750149549792 0 12.3456790123457 -4.2766686606639 0 11.1111111111111 -4.27666866066389 0 11.7283950617284 -5.34583582582987 0 11.1111111111111 -6.41500299099584 0 12.3456790123457 -6.41500299099584 0 12.962962962963 -7.48417015616182 0 13.5802469135802 -6.41500299099584 0 14.8148148148148 -6.41500299099584 0 15.4320987654321 -7.48417015616182 0 14.8148148148148 -8.55333732132779 0 16.0493827160494 -8.55333732132779 0 16.6666666666667 -9.62250448649376 0 17.283950617284 -8.55333732132779 0 18.5185185185185 -8.55333732132779 0 17.9012345679012 -7.48417015616182 0 18.5185185185185 -6.41500299099584 0 19.7530864197531 -6.41500299099584 0 20.3703703703704 -7.48417015616182 0 20.9876543209877 -6.41500299099584 0 22.2222222222222 -6.41500299099584 0 21.6049382716049 -5.34583582582987 0 22.2222222222222 -4.2766686606639 0 20.9876543209877 -4.2766686606639 0 20.3703703703704 -3.20750149549792 0 20.9876543209877 -2.13833433033195 0 22.2222222222222 -2.13833433033195 0 21.6049382716049 -1.06916716516597 0 22.2222222222222 0 0 23.4567901234568 0 0 24.0740740740741 -1.06916716516597 0 24.6913580246914 0 0 25.9259259259259 0 0 26.5432098765432 -1.06916716516597 0 25.9259259259259 -2.13833433033195 0 27.1604938271605 -2.13833433033195 0 27.7777777777778 -3.20750149549792 0 28.3950617283951 -2.13833433033195 0 29.6296296296296 -2.13833433033195 0 29.0123456790123 -1.06916716516597 0 29.6296296296296 0 0 30.8641975308642 0 0 31.4814814814815 -1.06916716516597 0 32.0987654320988 0 0 33.3333333333333 0 0 33.9506172839506 -1.06916716516597 0 33.3333333333333 -2.13833433033195 0 34.5679012345679 -2.13833433033195 0 35.1851851851852 -3.20750149549792 0 34.5679012345679 -4.2766686606639 0 33.3333333333333 -4.27666866066389 0 33.9506172839506 -5.34583582582987 0 33.3333333333333 -6.41500299099584 0 34.5679012345679 -6.41500299099584 0 35.1851851851852 -7.48417015616182 0 35.8024691358025 -6.41500299099584 0 37.037037037037 -6.41500299099584 0 37.6543209876543 -7.48417015616182 0 37.037037037037 -8.55333732132779 0 38.2716049382716 -8.55333732132779 0 38.8888888888889 -9.62250448649376 0 38.2716049382716 -10.6916716516597 0 37.037037037037 -10.6916716516597 0 37.6543209876543 -11.7608388168257 0 37.037037037037 -12.8300059819917 0 35.8024691358025 -12.8300059819917 0 35.1851851851852 -11.7608388168257 0 34.5679012345679 -12.8300059819917 0 33.3333333333333 -12.8300059819917 0 33.9506172839506 -13.8991731471577 0 33.3333333333333 -14.9683403123236 0 34.5679012345679 -14.9683403123236 0 35.1851851851852 -16.0375074774896 0 34.5679012345679 -17.1066746426556 0 33.3333333333333 -17.1066746426556 0 33.9506172839506 -18.1758418078216 0 33.3333333333333 -19.2450089729875 0 34.5679012345679 -19.2450089729875 0 35.1851851851852 -20.3141761381535 0 35.8024691358025 -19.2450089729875 0 37.037037037037 -19.2450089729875 0 37.6543209876543 -20.3141761381535 0 37.037037037037 -21.3833433033195 0 38.2716049382716 -21.3833433033195 0 38.8888888888889 -22.4525104684854 0 39.5061728395062 -21.3833433033195 0 40.7407407407407 -21.3833433033195 0 40.1234567901235 -20.3141761381535 0 40.7407407407407 -19.2450089729875 0 41.9753086419753 -19.2450089729875 0 42.5925925925926 -20.3141761381535 0 43.2098765432099 -19.2450089729875 0 44.4444444444444 -19.2450089729875 0 45.0617283950617 -20.3141761381535 0 44.4444444444444 -21.3833433033195 0 45.679012345679 -21.3833433033195 0 46.2962962962963 -22.4525104684854 0 45.679012345679 -23.5216776336514 0 44.4444444444444 -23.5216776336514 0 45.0617283950617 -24.5908447988174 0 44.4444444444444 -25.6600119639834 0 45.679012345679 -25.6600119639834 0 46.2962962962963 -26.7291791291493 0 46.9135802469136 -25.6600119639834 0 48.1481481481481 -25.6600119639834 0 48.7654320987654 -26.7291791291493 0 48.1481481481482 -27.7983462943153 0 49.3827160493827 -27.7983462943153 0 50 -28.8675134594813 0 50.6172839506173 -27.7983462943153 0 51.8518518518518 -27.7983462943153 0 51.2345679012346 -26.7291791291493 0 51.8518518518519 -25.6600119639834 0 53.0864197530864 -25.6600119639834 0 53.7037037037037 -26.7291791291493 0 54.320987654321 -25.6600119639834 0 55.5555555555556 -25.6600119639834 0 54.9382716049383 -24.5908447988174 0 55.5555555555556 -23.5216776336514 0 54.320987654321 -23.5216776336514 0 53.7037037037037 -22.4525104684854 0 54.320987654321 -21.3833433033195 0 55.5555555555556 -21.3833433033195 0 54.9382716049383 -20.3141761381535 0 55.5555555555556 -19.2450089729875 0 56.7901234567901 -19.2450089729875 0 57.4074074074074 -20.3141761381535 0 58.0246913580247 -19.2450089729875 0 59.2592592592593 -19.2450089729875 0 59.8765432098765 -20.3141761381535 0 59.2592592592593 -21.3833433033195 0 60.4938271604938 -21.3833433033195 0 61.1111111111111 -22.4525104684854 0 61.7283950617284 -21.3833433033195 0 62.962962962963 -21.3833433033195 0 62.3456790123457 -20.3141761381535 0 62.962962962963 -19.2450089729875 0 64.1975308641975 -19.2450089729875 0 64.8148148148148 -20.3141761381535 0 65.4320987654321 -19.2450089729875 0 66.6666666666667 -19.2450089729875 0 66.0493827160494 -18.1758418078216 0 66.6666666666667 -17.1066746426556 0 65.4320987654321 -17.1066746426556 0 64.8148148148148 -16.0375074774896 0 65.4320987654321 -14.9683403123236 0 66.6666666666667 -14.9683403123236 0 66.0493827160494 -13.8991731471577 0 66.6666666666667 -12.8300059819917 0 65.4320987654321 -12.8300059819917 0 64.8148148148148 -11.7608388168257 0 64.1975308641975 -12.8300059819917 0 62.962962962963 -12.8300059819917 0 62.3456790123457 -11.7608388168257 0 62.962962962963 -10.6916716516597 0 61.7283950617284 -10.6916716516597 0 61.1111111111111 -9.62250448649376 0 61.7283950617284 -8.55333732132779 0 62.962962962963 -8.55333732132779 0 62.3456790123457 -7.48417015616182 0 62.962962962963 -6.41500299099584 0 64.1975308641975 -6.41500299099584 0 64.8148148148148 -7.48417015616181 0 65.4320987654321 -6.41500299099584 0 66.6666666666667 -6.41500299099584 0 66.0493827160494 -5.34583582582987 0 66.6666666666667 -4.2766686606639 0 65.4320987654321 -4.2766686606639 0 64.8148148148148 -3.20750149549792 0 65.4320987654321 -2.13833433033195 0 66.6666666666667 -2.13833433033194 0 66.0493827160494 -1.06916716516597 0 66.6666666666667 0 0 67.9012345679012 0 0 68.5185185185185 -1.06916716516598 0 69.1358024691358 0 0 70.3703703703704 0 0 70.9876543209877 -1.06916716516598 0 70.3703703703704 -2.13833433033195 0 71.604938271605 -2.13833433033195 0 72.2222222222222 -3.20750149549793 0 72.8395061728395 -2.13833433033195 0 74.0740740740741 -2.13833433033195 0 73.4567901234568 -1.06916716516598 0 74.0740740740741 0 0 75.3086419753086 0 0 75.9259259259259 -1.06916716516598 0 76.5432098765432 0 0 77.7777777777778 0 0 78.3950617283951 -1.06916716516597 0 77.7777777777778 -2.13833433033195 0 79.0123456790124 -2.13833433033195 0 79.6296296296296 -3.20750149549792 0 79.0123456790124 -4.2766686606639 0 77.7777777777778 -4.2766686606639 0 78.3950617283951 -5.34583582582987 0 77.7777777777778 -6.41500299099584 0 79.0123456790124 -6.41500299099584 0 79.6296296296296 -7.48417015616182 0 80.2469135802469 -6.41500299099584 0 81.4814814814815 -6.41500299099584 0 82.0987654320988 -7.48417015616182 0 81.4814814814815 -8.55333732132779 0 82.7160493827161 -8.55333732132779 0 83.3333333333333 -9.62250448649377 0 83.9506172839506 -8.55333732132779 0 85.1851851851852 -8.55333732132779 0 84.5679012345679 -7.48417015616182 0 85.1851851851852 -6.41500299099584 0 86.4197530864198 -6.41500299099584 0 87.037037037037 -7.48417015616182 0 87.6543209876543 -6.41500299099584 0 88.8888888888889 -6.41500299099584 0 88.2716049382716 -5.34583582582987 0 88.8888888888889 -4.2766686606639 0 87.6543209876543 -4.27666866066389 0 87.037037037037 -3.20750149549792 0 87.6543209876543 -2.13833433033195 0 88.8888888888889 -2.13833433033195 0 88.2716049382716 -1.06916716516597 0 88.8888888888889 0 0 90.1234567901235 0 0 90.7407407407407 -1.06916716516598 0 91.358024691358 0 0 92.5925925925926 0 0 93.2098765432099 -1.06916716516598 0 92.5925925925926 -2.13833433033195 0 93.8271604938272 -2.13833433033195 0 94.4444444444444 -3.20750149549793 0 95.0617283950617 -2.13833433033195 0 96.2962962962963 -2.13833433033195 0 95.679012345679 -1.06916716516598 0 96.2962962962963 0 0 97.5308641975309 0 0 98.1481481481482 -1.06916716516598 0 98.7654320987654 0 0 100 0 0 99.3827160493827 1.06916716516597 0 100 2.13833433033194 0 98.7654320987654 2.13833433033195 0 98.1481481481482 3.20750149549792 0 98.7654320987654 4.27666866066389 0 100 4.2766686606639 0 99.3827160493827 5.34583582582987 0 100 6.41500299099584 0 98.7654320987654 6.41500299099584 0 98.1481481481482 7.48417015616182 0 97.5308641975309 6.41500299099584 0 96.2962962962963 6.41500299099584 0 95.679012345679 7.48417015616181 0 96.2962962962963 8.55333732132779 0 95.0617283950617 8.55333732132779 0 94.4444444444444 9.62250448649376 0 95.0617283950617 10.6916716516597 0 96.2962962962963 10.6916716516597 0 95.679012345679 11.7608388168257 0 96.2962962962963 12.8300059819917 0 97.5308641975309 12.8300059819917 0 98.1481481481482 11.7608388168257 0 98.7654320987654 12.8300059819917 0 100 12.8300059819917 0 99.3827160493827 13.8991731471577 0 100 14.9683403123236 0 98.7654320987654 14.9683403123236 0 98.1481481481481 16.0375074774896 0 98.7654320987654 17.1066746426556 0 100 17.1066746426556 0 99.3827160493827 18.1758418078216 0 100 19.2450089729875 0 98.7654320987654 19.2450089729875 0 98.1481481481481 20.3141761381535 0 97.5308641975309 19.2450089729875 0 96.2962962962963 19.2450089729875 0 95.679012345679 20.3141761381535 0 96.2962962962963 21.3833433033195 0 95.0617283950617 21.3833433033195 0 94.4444444444444 22.4525104684854 0 93.8271604938272 21.3833433033195 0 92.5925925925926 21.3833433033195 0 93.2098765432099 20.3141761381535 0 92.5925925925926 19.2450089729875 0 91.358024691358 19.2450089729875 0 90.7407407407407 20.3141761381535 0 90.1234567901235 19.2450089729875 0 88.8888888888889 19.2450089729875 0 88.2716049382716 20.3141761381535 0 88.8888888888889 21.3833433033195 0 87.6543209876543 21.3833433033195 0 87.037037037037 22.4525104684854 0 87.6543209876543 23.5216776336514 0 88.8888888888889 23.5216776336514 0 88.2716049382716 24.5908447988174 0 88.8888888888889 25.6600119639834 0 87.6543209876543 25.6600119639834 0 87.037037037037 26.7291791291493 0 86.4197530864197 25.6600119639834 0 85.1851851851852 25.6600119639834 0 84.5679012345679 26.7291791291493 0 85.1851851851852 27.7983462943153 0 83.9506172839506 27.7983462943153 0 83.3333333333333 28.8675134594813 0 83.9506172839506 29.9366806246473 0 85.1851851851852 29.9366806246473 0 84.5679012345679 31.0058477898132 0 85.1851851851852 32.0750149549792 0 86.4197530864197 32.0750149549792 0 87.037037037037 31.0058477898132 0 87.6543209876543 32.0750149549792 0 88.8888888888889 32.0750149549792 0 88.2716049382716 33.1441821201452 0 88.8888888888889 34.2133492853112 0 87.6543209876543 34.2133492853112 0 87.037037037037 35.2825164504771 0 87.6543209876543 36.3516836156431 0 88.8888888888889 36.3516836156431 0 88.2716049382716 37.4208507808091 0 88.8888888888889 38.490017945975 0 90.1234567901235 38.490017945975 0 90.7407407407407 37.4208507808091 0 91.358024691358 38.490017945975 0 92.5925925925926 38.490017945975 0 93.2098765432099 37.4208507808091 0 92.5925925925926 36.3516836156431 0 93.8271604938272 36.3516836156431 0 94.4444444444444 35.2825164504771 0 95.0617283950617 36.3516836156431 0 96.2962962962963 36.3516836156431 0 95.679012345679 37.4208507808091 0 96.2962962962963 38.490017945975 0 97.5308641975309 38.490017945975 0 98.1481481481481 37.4208507808091 0 98.7654320987654 38.490017945975 0 100 38.490017945975 0 99.3827160493827 39.559185111141 0 100 40.628352276307 0 98.7654320987654 40.628352276307 0 98.1481481481481 41.697519441473 0 98.7654320987654 42.7666866066389 0 100 42.7666866066389 0 99.3827160493827 43.8358537718049 0 100 44.9050209369709 0 98.7654320987654 44.9050209369709 0 98.1481481481482 45.9741881021369 0 97.5308641975309 44.9050209369709 0 96.2962962962963 44.9050209369709 0 95.679012345679 45.9741881021369 0 96.2962962962963 47.0433552673028 0 95.0617283950617 47.0433552673028 0 94.4444444444444 48.1125224324688 0 95.0617283950617 49.1816895976348 0 96.2962962962963 49.1816895976348 0 95.679012345679 50.2508567628008 0 96.2962962962963 51.3200239279667 0 97.5308641975309 51.3200239279667 0 98.1481481481482 50.2508567628008 0 98.7654320987654 51.3200239279667 0 100 51.3200239279667 0 99.3827160493827 52.3891910931327 0 100 53.4583582582987 0 98.7654320987654 53.4583582582987 0 98.1481481481482 54.5275254234647 0 98.7654320987654 55.5966925886306 0 100 55.5966925886306 0 99.3827160493827 56.6658597537966 0 100 57.7350269189626 0 98.7654320987654 57.7350269189626 0 98.1481481481482 58.8041940841286 0 97.5308641975309 57.7350269189626 0 96.2962962962963 57.7350269189626 0 95.679012345679 58.8041940841285 0 96.2962962962963 59.8733612492945 0 95.0617283950617 59.8733612492945 0 94.4444444444444 60.9425284144605 0 93.8271604938272 59.8733612492945 0 92.5925925925926 59.8733612492945 0 93.2098765432099 58.8041940841285 0 92.5925925925926 57.7350269189626 0 91.358024691358 57.7350269189626 0 90.7407407407407 58.8041940841286 0 90.1234567901235 57.7350269189626 0 88.8888888888889 57.7350269189626 0 88.2716049382716 58.8041940841285 0 88.8888888888889 59.8733612492945 0 87.6543209876543 59.8733612492945 0 87.037037037037 60.9425284144605 0 87.6543209876543 62.0116955796265 0 88.8888888888889 62.0116955796265 0 88.2716049382716 63.0808627447924 0 88.8888888888889 64.1500299099584 0 87.6543209876543 64.1500299099584 0 87.037037037037 65.2191970751244 0 86.4197530864198 64.1500299099584 0 85.1851851851852 64.1500299099584 0 84.5679012345679 65.2191970751244 0 85.1851851851852 66.2883642402904 0 83.9506172839506 66.2883642402904 0 83.3333333333333 67.3575314054563 0 82.7160493827161 66.2883642402904 0 81.4814814814815 66.2883642402904 0 82.0987654320988 65.2191970751244 0 81.4814814814815 64.1500299099584 0 80.2469135802469 64.1500299099584 0 79.6296296296296 65.2191970751244 0 79.0123456790124 64.1500299099584 0 77.7777777777778 64.1500299099584 0 78.3950617283951 63.0808627447924 0 77.7777777777778 62.0116955796265 0 79.0123456790124 62.0116955796265 0 79.6296296296296 60.9425284144605 0 79.0123456790124 59.8733612492945 0 77.7777777777778 59.8733612492945 0 78.3950617283951 58.8041940841285 0 77.7777777777778 57.7350269189626 0 76.5432098765432 57.7350269189626 0 75.9259259259259 58.8041940841286 0 75.3086419753086 57.7350269189626 0 74.0740740740741 57.7350269189626 0 73.4567901234568 58.8041940841285 0 74.0740740740741 59.8733612492945 0 72.8395061728395 59.8733612492945 0 72.2222222222222 60.9425284144605 0 71.604938271605 59.8733612492945 0 70.3703703703704 59.8733612492945 0 70.9876543209877 58.8041940841285 0 70.3703703703704 57.7350269189626 0 69.1358024691358 57.7350269189626 0 68.5185185185185 58.8041940841286 0 67.9012345679012 57.7350269189626 0 66.6666666666667 57.7350269189626 0 66.0493827160494 58.8041940841285 0 66.6666666666667 59.8733612492945 0 65.4320987654321 59.8733612492945 0 64.8148148148148 60.9425284144605 0 65.4320987654321 62.0116955796265 0 66.6666666666667 62.0116955796265 0 66.0493827160494 63.0808627447924 0 66.6666666666667 64.1500299099584 0 65.4320987654321 64.1500299099584 0 64.8148148148148 65.2191970751244 0 64.1975308641975 64.1500299099584 0 62.962962962963 64.1500299099584 0 62.3456790123457 65.2191970751244 0 62.962962962963 66.2883642402904 0 61.7283950617284 66.2883642402904 0 61.1111111111111 67.3575314054563 0 61.7283950617284 68.4266985706223 0 62.962962962963 68.4266985706223 0 62.3456790123457 69.4958657357883 0 62.962962962963 70.5650329009543 0 64.1975308641975 70.5650329009543 0 64.8148148148148 69.4958657357883 0 65.4320987654321 70.5650329009543 0 66.6666666666667 70.5650329009543 0 66.0493827160494 71.6342000661202 0 66.6666666666667 72.7033672312862 0 65.4320987654321 72.7033672312862 0 64.8148148148148 73.7725343964522 0 65.4320987654321 74.8417015616182 0 66.6666666666667 74.8417015616182 0 66.0493827160494 75.9108687267841 0 66.6666666666667 76.9800358919501 0 65.4320987654321 76.9800358919501 0 64.8148148148148 78.0492030571161 0 64.1975308641975 76.9800358919501 0 62.962962962963 76.9800358919501 0 62.3456790123457 78.0492030571161 0 62.962962962963 79.1183702222821 0 61.7283950617284 79.1183702222821 0 61.1111111111111 80.187537387448 0 60.4938271604938 79.1183702222821 0 59.2592592592593 79.1183702222821 0 59.8765432098765 78.0492030571161 0 59.2592592592593 76.9800358919501 0 58.0246913580247 76.9800358919501 0 57.4074074074074 78.0492030571161 0 56.7901234567901 76.9800358919501 0 55.5555555555556 76.9800358919501 0 54.9382716049383 78.0492030571161 0 55.5555555555556 79.118370222282 0 54.320987654321 79.118370222282 0 53.7037037037037 80.187537387448 0 54.320987654321 81.256704552614 0 55.5555555555556 81.256704552614 0 54.9382716049383 82.32587171778 0 55.5555555555556 83.3950388829459 0 54.320987654321 83.3950388829459 0 53.7037037037037 84.4642060481119 0 53.0864197530864 83.3950388829459 0 51.8518518518519 83.3950388829459 0 51.2345679012346 84.4642060481119 0 51.8518518518519 85.5333732132779 0 50.6172839506173 85.5333732132779 0 50 86.6025403784439 0 49.3827160493827 85.5333732132779 0 48.1481481481481 85.5333732132779 0 48.7654320987654 84.4642060481119 0 48.1481481481481 83.3950388829459 0 46.9135802469136 83.3950388829459 0 46.2962962962963 84.4642060481119 0 45.679012345679 83.3950388829459 0 44.4444444444444 83.3950388829459 0 45.0617283950617 82.32587171778 0 44.4444444444444 81.256704552614 0 45.679012345679 81.256704552614 0 46.2962962962963 80.187537387448 0 45.679012345679 79.118370222282 0 44.4444444444444 79.118370222282 0 45.0617283950617 78.0492030571161 0 44.4444444444444 76.9800358919501 0 43.2098765432099 76.9800358919501 0 42.5925925925926 78.0492030571161 0 41.9753086419753 76.9800358919501 0 40.7407407407407 76.9800358919501 0 40.1234567901235 78.0492030571161 0 40.7407407407407 79.1183702222821 0 39.5061728395062 79.1183702222821 0 38.8888888888889 80.187537387448 0 38.2716049382716 79.1183702222821 0 37.037037037037 79.1183702222821 0 37.6543209876543 78.0492030571161 0 37.037037037037 76.9800358919501 0 35.8024691358025 76.9800358919501 0 35.1851851851852 78.0492030571161 0 34.5679012345679 76.9800358919501 0 33.3333333333333 76.9800358919501 0 33.9506172839506 75.9108687267841 0 33.3333333333333 74.8417015616182 0 34.5679012345679 74.8417015616182 0 35.1851851851852 73.7725343964522 0 34.5679012345679 72.7033672312862 0 33.3333333333333 72.7033672312862 0 33.9506172839506 71.6342000661202 0 33.3333333333333 70.5650329009543 0 34.5679012345679 70.5650329009543 0 35.1851851851852 69.4958657357883 0 35.8024691358025 70.5650329009543 0 37.037037037037 70.5650329009543 0 37.6543209876543 69.4958657357883 0 37.037037037037 68.4266985706223 0 38.2716049382716 68.4266985706223 0 38.8888888888889 67.3575314054563 0 38.2716049382716 66.2883642402904 0 37.037037037037 66.2883642402904 0 37.6543209876543 65.2191970751244 0 37.037037037037 64.1500299099584 0 35.8024691358025 64.1500299099584 0 35.1851851851852 65.2191970751244 0 34.5679012345679 64.1500299099584 0 33.3333333333333 64.1500299099584 0 33.9506172839506 63.0808627447924 0 33.3333333333333 62.0116955796265 0 34.5679012345679 62.0116955796265 0 35.1851851851852 60.9425284144605 0 34.5679012345679 59.8733612492945 0 33.3333333333333 59.8733612492945 0 33.9506172839506 58.8041940841285 0 33.3333333333333 57.7350269189626 0 32.0987654320988 57.7350269189626 0 31.4814814814815 58.8041940841286 0 30.8641975308642 57.7350269189626 0 29.6296296296296 57.7350269189626 0 29.0123456790123 58.8041940841285 0 29.6296296296296 59.8733612492945 0 28.3950617283951 59.8733612492945 0 27.7777777777778 60.9425284144605 0 27.1604938271605 59.8733612492945 0 25.9259259259259 59.8733612492945 0 26.5432098765432 58.8041940841285 0 25.9259259259259 57.7350269189626 0 24.6913580246914 57.7350269189626 0 24.0740740740741 58.8041940841285 0 23.4567901234568 57.7350269189626 0 22.2222222222222 57.7350269189626 0 21.6049382716049 58.8041940841285 0 22.2222222222222 59.8733612492945 0 20.9876543209877 59.8733612492945 0 20.3703703703704 60.9425284144605 0 20.9876543209877 62.0116955796265 0 22.2222222222222 62.0116955796265 0 21.6049382716049 63.0808627447924 0 22.2222222222222 64.1500299099584 0 20.9876543209877 64.1500299099584 0 20.3703703703704 65.2191970751244 0 19.7530864197531 64.1500299099584 0 18.5185185185185 64.1500299099584 0 17.9012345679012 65.2191970751244 0 18.5185185185185 66.2883642402904 0 17.283950617284 66.2883642402904 0 16.6666666666667 67.3575314054563 0 16.0493827160494 66.2883642402904 0 14.8148148148148 66.2883642402904 0 15.4320987654321 65.2191970751244 0 14.8148148148148 64.1500299099584 0 13.5802469135803 64.1500299099584 0 12.962962962963 65.2191970751244 0 12.3456790123457 64.1500299099584 0 11.1111111111111 64.1500299099584 0 11.7283950617284 63.0808627447924 0 11.1111111111111 62.0116955796265 0 12.3456790123457 62.0116955796265 0 12.962962962963 60.9425284144605 0 12.3456790123457 59.8733612492945 0 11.1111111111111 59.8733612492945 0 11.7283950617284 58.8041940841285 0 11.1111111111111 57.7350269189626 0 9.87654320987655 57.7350269189626 0 9.25925925925926 58.8041940841285 0 8.64197530864198 57.7350269189626 0 7.40740740740741 57.7350269189626 0 6.79012345679013 58.8041940841285 0 7.40740740740741 59.8733612492945 0 6.17283950617284 59.8733612492945 0 5.55555555555556 60.9425284144605 0 4.93827160493827 59.8733612492945 0 3.70370370370371 59.8733612492945 0 4.32098765432099 58.8041940841285 0 3.70370370370371 57.7350269189626 0 2.46913580246914 57.7350269189626 0 1.85185185185186 58.8041940841285 0 1.23456790123457 57.7350269189626 0 3.5527136788005e-15 57.7350269189626 0 0.617283950617287 56.6658597537966 0 4.44089209850063e-15 55.5966925886306 0 1.23456790123457 55.5966925886306 0 1.85185185185185 54.5275254234647 0 1.23456790123457 53.4583582582987 0 3.88578058618805e-15 53.4583582582987 0 0.617283950617286 52.3891910931327 0 2.22044604925031e-15 51.3200239279667 0 1.23456790123457 51.3200239279667 0 1.85185185185186 50.2508567628008 0 2.46913580246914 51.3200239279667 0 3.70370370370371 51.3200239279667 0 4.32098765432099 50.2508567628008 0 3.70370370370371 49.1816895976348 0 4.93827160493827 49.1816895976348 0 5.55555555555556 48.1125224324688 0 4.93827160493827 47.0433552673028 0 3.70370370370371 47.0433552673028 0 4.32098765432099 45.9741881021369 0 3.70370370370371 44.9050209369709 0 2.46913580246914 44.9050209369709 0 1.85185185185186 45.9741881021369 0 1.23456790123457 44.9050209369709 0 2.22044604925031e-15 44.9050209369709 0 0.617283950617286 43.8358537718049 0 3.88578058618805e-15 42.7666866066389 0 1.23456790123457 42.7666866066389 0 1.85185185185185 41.697519441473 0 1.23456790123457 40.628352276307 0 4.44089209850063e-15 40.628352276307 0 0.617283950617287 39.559185111141 0 3.5527136788005e-15 38.4900179459751 0 1.23456790123457 38.4900179459751 0 1.85185185185185 37.4208507808091 0 2.46913580246914 38.4900179459751 0 3.70370370370371 38.4900179459751 0 4.32098765432099 37.4208507808091 0 3.70370370370371 36.3516836156431 0 4.93827160493827 36.3516836156431 0 5.55555555555556 35.2825164504771 0 6.17283950617284 36.3516836156431 0 7.40740740740741 36.3516836156431 0 6.79012345679013 37.4208507808091 0 7.40740740740741 38.490017945975 0 8.64197530864198 38.490017945975 0 9.25925925925926 37.4208507808091 0 9.87654320987654 38.490017945975 0 11.1111111111111 38.490017945975 0 11.7283950617284 37.4208507808091 0 11.1111111111111 36.3516836156431 0 12.3456790123457 36.3516836156431 0 12.962962962963 35.2825164504771 0 12.3456790123457 34.2133492853112 0 11.1111111111111 34.2133492853112 0 11.7283950617284 33.1441821201452 0 11.1111111111111 32.0750149549792 0 12.3456790123457 32.0750149549792 0 12.962962962963 31.0058477898132 0 13.5802469135802 32.0750149549792 0 14.8148148148148 32.0750149549792 0 15.4320987654321 31.0058477898132 0 14.8148148148148 29.9366806246473 0 16.0493827160494 29.9366806246473 0 16.6666666666667 28.8675134594813 0 16.0493827160494 27.7983462943153 0 14.8148148148148 27.7983462943153 0 15.4320987654321 26.7291791291493 0 14.8148148148148 25.6600119639834 0 13.5802469135802 25.6600119639834 0 12.962962962963 26.7291791291493 0 12.3456790123457 25.6600119639834 0 11.1111111111111 25.6600119639834 0 11.7283950617284 24.5908447988174 0 11.1111111111111 23.5216776336514 0 12.3456790123457 23.5216776336514 0 12.962962962963 22.4525104684854 0 12.3456790123457 21.3833433033195 0 11.1111111111111 21.3833433033195 0 11.7283950617284 20.3141761381535 0 11.1111111111111 19.2450089729875 0 9.87654320987654 19.2450089729875 0 9.25925925925926 20.3141761381535 0 8.64197530864198 19.2450089729875 0 7.40740740740741 19.2450089729875 0 6.79012345679012 20.3141761381535 0 7.40740740740741 21.3833433033195 0 6.17283950617284 21.3833433033195 0 5.55555555555556 22.4525104684854 0 4.93827160493827 21.3833433033195 0 3.7037037037037 21.3833433033195 0 4.32098765432099 20.3141761381535 0 3.7037037037037 19.2450089729875 0 2.46913580246914 19.2450089729875 0 1.85185185185185 20.3141761381535 0 1.23456790123457 19.2450089729875 0 0 19.2450089729875 0 0.617283950617284 18.1758418078216 0 1.4432899320127e-15 17.1066746426556 0 1.23456790123457 17.1066746426556 0 1.85185185185185 16.0375074774896 0 1.23456790123457 14.9683403123236 0 1.11022302462516e-15 14.9683403123236 0 0.617283950617285 13.8991731471577 0 1.77635683940025e-15 12.8300059819917 0 1.23456790123457 12.8300059819917 0 1.85185185185185 11.7608388168257 0 2.46913580246914 12.8300059819917 0 3.7037037037037 12.8300059819917 0 4.32098765432099 11.7608388168257 0 3.7037037037037 10.6916716516597 0 4.93827160493827 10.6916716516597 0 5.55555555555556 9.62250448649376 0 4.93827160493827 8.55333732132779 0 3.7037037037037 8.55333732132779 0 4.32098765432099 7.48417015616181 0 3.7037037037037 6.41500299099584 0 2.46913580246914 6.41500299099584 0 1.85185185185185 7.48417015616181 0 1.23456790123457 6.41500299099584 0 8.88178419700125e-16 6.41500299099584 0 0.617283950617285 5.34583582582987 0 6.66133814775094e-16 4.27666866066389 0 1.23456790123457 4.27666866066389 0 1.85185185185185 3.20750149549792 0 1.23456790123457 2.13833433033195 0 2.22044604925031e-16 2.13833433033195 0 0.617283950617284 1.06916716516597 0 50 28.8675134594813 0 -1.23456790123457 5.01682029252493e-15 0 5.01682029252493e-15 0.617283950617284 1.06916716516597 1.23456790123457 5.01682029252493e-15 2.46913580246914 5.01682029252493e-15 3.08641975308642 1.06916716516597 2.46913580246914 2.13833433033195 3.7037037037037 2.13833433033195 4.32098765432099 3.20750149549793 4.93827160493827 2.13833433033195 6.17283950617284 2.13833433033195 5.55555555555556 1.06916716516597 6.17283950617284 5.01682029252493e-15 7.40740740740741 5.01682029252493e-15 8.02469135802469 1.06916716516597 8.64197530864198 5.01682029252493e-15 9.87654320987654 5.01682029252493e-15 10.4938271604938 1.06916716516597 9.87654320987654 2.13833433033195 11.1111111111111 2.13833433033195 11.7283950617284 3.20750149549793 11.1111111111111 4.27666866066389 9.87654320987654 4.27666866066389 10.4938271604938 5.34583582582987 9.87654320987654 6.41500299099584 11.1111111111111 6.41500299099584 11.7283950617284 7.48417015616182 12.3456790123457 6.41500299099584 13.5802469135802 6.41500299099584 14.1975308641975 7.48417015616182 13.5802469135802 8.5533373213278 14.8148148148148 8.5533373213278 15.4320987654321 9.62250448649376 16.0493827160494 8.5533373213278 17.283950617284 8.5533373213278 16.6666666666667 7.48417015616182 17.2839506172839 6.41500299099584 18.5185185185185 6.41500299099584 19.1358024691358 7.48417015616182 19.7530864197531 6.41500299099584 20.9876543209877 6.41500299099584 20.3703703703704 5.34583582582987 20.9876543209877 4.27666866066389 19.7530864197531 4.27666866066389 19.1358024691358 3.20750149549793 19.7530864197531 2.13833433033195 20.9876543209877 2.13833433033195 20.3703703703704 1.06916716516597 20.9876543209877 5.01682029252493e-15 22.2222222222222 5.01682029252493e-15 22.8395061728395 1.06916716516597 23.4567901234568 5.01682029252493e-15 24.6913580246914 5.01682029252493e-15 25.3086419753086 1.06916716516597 24.6913580246914 2.13833433033195 25.9259259259259 2.13833433033195 26.5432098765432 3.20750149549791 27.1604938271605 2.13833433033195 28.3950617283951 2.13833433033195 27.7777777777778 1.06916716516597 28.3950617283951 5.01682029252493e-15 29.6296296296296 5.01682029252493e-15 30.2469135802469 1.06916716516597 30.8641975308642 5.01682029252493e-15 32.0987654320988 5.01682029252493e-15 32.7160493827161 1.06916716516597 32.0987654320988 2.13833433033195 33.3333333333333 2.13833433033195 33.9506172839506 3.20750149549793 33.3333333333333 4.27666866066389 32.0987654320988 4.27666866066389 32.7160493827161 5.34583582582987 32.0987654320988 6.41500299099584 33.3333333333333 6.41500299099584 33.9506172839506 7.48417015616182 34.5679012345679 6.41500299099584 35.8024691358025 6.41500299099584 36.4197530864198 7.48417015616182 35.8024691358025 8.5533373213278 37.037037037037 8.5533373213278 37.6543209876543 9.62250448649376 37.037037037037 10.6916716516597 35.8024691358025 10.6916716516597 36.4197530864198 11.7608388168257 35.8024691358025 12.8300059819917 34.5679012345679 12.8300059819917 33.9506172839506 11.7608388168257 33.3333333333333 12.8300059819917 32.0987654320988 12.8300059819917 32.7160493827161 13.8991731471577 32.0987654320988 14.9683403123236 33.3333333333333 14.9683403123236 33.9506172839506 16.0375074774896 33.3333333333333 17.1066746426556 32.0987654320988 17.1066746426556 32.7160493827161 18.1758418078216 32.0987654320988 19.2450089729875 33.3333333333333 19.2450089729875 33.9506172839506 20.3141761381535 34.5679012345679 19.2450089729875 35.8024691358025 19.2450089729875 36.4197530864198 20.3141761381535 35.8024691358025 21.3833433033195 37.037037037037 21.3833433033195 37.6543209876543 22.4525104684855 38.2716049382716 21.3833433033195 39.5061728395062 21.3833433033195 38.8888888888889 20.3141761381535 39.5061728395062 19.2450089729875 40.7407407407407 19.2450089729875 41.358024691358 20.3141761381535 41.9753086419753 19.2450089729875 43.2098765432099 19.2450089729875 43.8271604938272 20.3141761381535 43.2098765432099 21.3833433033195 44.4444444444444 21.3833433033195 45.0617283950617 22.4525104684855 44.4444444444444 23.5216776336514 43.2098765432099 23.5216776336514 43.8271604938272 24.5908447988174 43.2098765432099 25.6600119639834 44.4444444444444 25.6600119639834 45.0617283950617 26.7291791291493 45.679012345679 25.6600119639834 46.9135802469136 25.6600119639834 47.5308641975309 26.7291791291493 46.9135802469136 27.7983462943153 48.1481481481481 27.7983462943153 48.7654320987654 28.8675134594813 49.3827160493827 27.7983462943153 50.6172839506173 27.7983462943153 50 26.7291791291493 50.6172839506173 25.6600119639834 51.8518518518519 25.6600119639834 52.4691358024691 26.7291791291493 53.0864197530864 25.6600119639834 54.320987654321 25.6600119639834 53.7037037037037 24.5908447988174 54.320987654321 23.5216776336514 53.0864197530864 23.5216776336514 52.4691358024691 22.4525104684855 53.0864197530864 21.3833433033195 54.320987654321 21.3833433033195 53.7037037037037 20.3141761381535 54.320987654321 19.2450089729875 55.5555555555556 19.2450089729875 56.1728395061728 20.3141761381535 56.7901234567901 19.2450089729875 58.0246913580247 19.2450089729875 58.641975308642 20.3141761381535 58.0246913580247 21.3833433033195 59.2592592592593 21.3833433033195 59.8765432098765 22.4525104684855 60.4938271604938 21.3833433033195 61.7283950617284 21.3833433033195 61.1111111111111 20.3141761381535 61.7283950617284 19.2450089729875 62.962962962963 19.2450089729875 63.5802469135803 20.3141761381535 64.1975308641975 19.2450089729875 65.4320987654321 19.2450089729875 64.8148148148148 18.1758418078216 65.4320987654321 17.1066746426556 64.1975308641975 17.1066746426556 63.5802469135803 16.0375074774896 64.1975308641975 14.9683403123236 65.4320987654321 14.9683403123236 64.8148148148148 13.8991731471577 65.4320987654321 12.8300059819917 64.1975308641975 12.8300059819917 63.5802469135803 11.7608388168257 62.962962962963 12.8300059819917 61.7283950617284 12.8300059819917 61.1111111111111 11.7608388168257 61.7283950617284 10.6916716516597 60.4938271604938 10.6916716516597 59.8765432098765 9.62250448649376 60.4938271604938 8.5533373213278 61.7283950617284 8.5533373213278 61.1111111111111 7.48417015616182 61.7283950617284 6.41500299099584 62.962962962963 6.41500299099584 63.5802469135803 7.48417015616182 64.1975308641975 6.41500299099584 65.4320987654321 6.41500299099584 64.8148148148148 5.34583582582987 65.4320987654321 4.27666866066389 64.1975308641975 4.27666866066389 63.5802469135803 3.20750149549793 64.1975308641975 2.13833433033195 65.4320987654321 2.13833433033195 64.8148148148148 1.06916716516597 65.4320987654321 5.01682029252493e-15 66.6666666666667 5.01682029252493e-15 67.283950617284 1.06916716516597 67.9012345679012 5.01682029252493e-15 69.1358024691358 5.01682029252493e-15 69.7530864197531 1.06916716516597 69.1358024691358 2.13833433033195 70.3703703703704 2.13833433033195 70.9876543209877 3.20750149549793 71.6049382716049 2.13833433033195 72.8395061728395 2.13833433033195 72.2222222222222 1.06916716516597 72.8395061728395 5.01682029252493e-15 74.0740740740741 5.01682029252493e-15 74.6913580246914 1.06916716516597 75.3086419753086 5.01682029252493e-15 76.5432098765432 5.01682029252493e-15 77.1604938271605 1.06916716516597 76.5432098765432 2.13833433033195 77.7777777777778 2.13833433033195 78.3950617283951 3.20750149549793 77.7777777777778 4.27666866066389 76.5432098765432 4.27666866066391 77.1604938271605 5.34583582582987 76.5432098765432 6.41500299099584 77.7777777777778 6.41500299099584 78.3950617283951 7.48417015616182 79.0123456790124 6.41500299099584 80.2469135802469 6.41500299099584 80.8641975308642 7.48417015616182 80.2469135802469 8.5533373213278 81.4814814814815 8.5533373213278 82.0987654320988 9.62250448649376 82.7160493827161 8.5533373213278 83.9506172839506 8.5533373213278 83.3333333333333 7.48417015616182 83.9506172839506 6.41500299099584 85.1851851851852 6.41500299099584 85.8024691358025 7.48417015616182 86.4197530864197 6.41500299099584 87.6543209876543 6.41500299099584 87.037037037037 5.34583582582987 87.6543209876543 4.27666866066389 86.4197530864197 4.27666866066389 85.8024691358025 3.20750149549793 86.4197530864197 2.13833433033195 87.6543209876543 2.13833433033195 87.037037037037 1.06916716516597 87.6543209876543 5.01682029252493e-15 88.8888888888889 5.01682029252493e-15 89.5061728395062 1.06916716516597 90.1234567901235 5.01682029252493e-15 91.358024691358 5.01682029252493e-15 91.9753086419753 1.06916716516597 91.358024691358 2.13833433033195 92.5925925925926 2.13833433033195 93.2098765432099 3.20750149549793 93.8271604938272 2.13833433033195 95.0617283950617 2.13833433033195 94.4444444444444 1.06916716516597 95.0617283950617 5.01682029252493e-15 96.2962962962963 5.01682029252493e-15 96.9135802469136 1.06916716516597 97.5308641975309 5.01682029252493e-15 98.7654320987654 5.01682029252493e-15 98.1481481481482 -1.06916716516597 98.7654320987654 -2.13833433033194 97.5308641975309 -2.13833433033195 96.9135802469136 -3.20750149549792 97.5308641975309 -4.2766686606639 98.7654320987654 -4.2766686606639 98.1481481481482 -5.34583582582986 98.7654320987654 -6.41500299099584 97.5308641975309 -6.41500299099584 96.9135802469136 -7.48417015616182 96.2962962962963 -6.41500299099584 95.0617283950617 -6.41500299099584 94.4444444444444 -7.48417015616182 95.0617283950617 -8.55333732132778 93.8271604938272 -8.55333732132778 93.2098765432099 -9.62250448649376 93.8271604938272 -10.6916716516597 95.0617283950617 -10.6916716516597 94.4444444444444 -11.7608388168257 95.0617283950617 -12.8300059819917 96.2962962962963 -12.8300059819917 96.9135802469136 -11.7608388168257 97.5308641975309 -12.8300059819917 98.7654320987654 -12.8300059819917 98.1481481481481 -13.8991731471577 98.7654320987654 -14.9683403123236 97.5308641975309 -14.9683403123236 96.9135802469136 -16.0375074774896 97.5308641975308 -17.1066746426556 98.7654320987654 -17.1066746426556 98.1481481481481 -18.1758418078216 98.7654320987654 -19.2450089729875 97.5308641975308 -19.2450089729875 96.9135802469136 -20.3141761381535 96.2962962962963 -19.2450089729875 95.0617283950617 -19.2450089729875 94.4444444444444 -20.3141761381535 95.0617283950617 -21.3833433033195 93.8271604938272 -21.3833433033195 93.2098765432099 -22.4525104684854 92.5925925925926 -21.3833433033195 91.358024691358 -21.3833433033195 91.9753086419753 -20.3141761381535 91.358024691358 -19.2450089729875 90.1234567901234 -19.2450089729875 89.5061728395062 -20.3141761381535 88.8888888888889 -19.2450089729875 87.6543209876543 -19.2450089729875 87.037037037037 -20.3141761381535 87.6543209876543 -21.3833433033195 86.4197530864197 -21.3833433033195 85.8024691358025 -22.4525104684854 86.4197530864197 -23.5216776336514 87.6543209876543 -23.5216776336514 87.037037037037 -24.5908447988174 87.6543209876543 -25.6600119639834 86.4197530864197 -25.6600119639834 85.8024691358025 -26.7291791291493 85.1851851851852 -25.6600119639834 83.9506172839506 -25.6600119639834 83.3333333333333 -26.7291791291493 83.9506172839506 -27.7983462943153 82.716049382716 -27.7983462943153 82.0987654320988 -28.8675134594813 82.716049382716 -29.9366806246473 83.9506172839506 -29.9366806246473 83.3333333333333 -31.0058477898132 83.9506172839506 -32.0750149549792 85.1851851851852 -32.0750149549792 85.8024691358025 -31.0058477898132 86.4197530864197 -32.0750149549792 87.6543209876543 -32.0750149549792 87.037037037037 -33.1441821201452 87.6543209876543 -34.2133492853112 86.4197530864197 -34.2133492853112 85.8024691358025 -35.2825164504771 86.4197530864197 -36.3516836156431 87.6543209876543 -36.3516836156431 87.037037037037 -37.4208507808091 87.6543209876543 -38.490017945975 88.8888888888889 -38.490017945975 89.5061728395062 -37.4208507808091 90.1234567901234 -38.490017945975 91.358024691358 -38.490017945975 91.9753086419753 -37.4208507808091 91.358024691358 -36.3516836156431 92.5925925925926 -36.3516836156431 93.2098765432099 -35.2825164504771 93.8271604938272 -36.3516836156431 95.0617283950617 -36.3516836156431 94.4444444444444 -37.4208507808091 95.0617283950617 -38.490017945975 96.2962962962963 -38.490017945975 96.9135802469136 -37.4208507808091 97.5308641975308 -38.490017945975 98.7654320987654 -38.490017945975 98.1481481481481 -39.559185111141 98.7654320987654 -40.628352276307 97.5308641975308 -40.628352276307 96.9135802469136 -41.697519441473 97.5308641975309 -42.7666866066389 98.7654320987654 -42.7666866066389 98.1481481481481 -43.8358537718049 98.7654320987654 -44.9050209369709 97.5308641975309 -44.9050209369709 96.9135802469136 -45.9741881021369 96.2962962962963 -44.9050209369709 95.0617283950617 -44.9050209369709 94.4444444444444 -45.9741881021369 95.0617283950617 -47.0433552673028 93.8271604938272 -47.0433552673028 93.2098765432099 -48.1125224324688 93.8271604938272 -49.1816895976348 95.0617283950617 -49.1816895976348 94.4444444444444 -50.2508567628008 95.0617283950617 -51.3200239279667 96.2962962962963 -51.3200239279667 96.9135802469136 -50.2508567628008 97.5308641975309 -51.3200239279667 98.7654320987654 -51.3200239279667 98.1481481481482 -52.3891910931327 98.7654320987654 -53.4583582582987 97.5308641975309 -53.4583582582987 96.9135802469136 -54.5275254234647 97.5308641975309 -55.5966925886306 98.7654320987654 -55.5966925886306 98.1481481481482 -56.6658597537966 98.7654320987654 -57.7350269189626 97.5308641975309 -57.7350269189626 96.9135802469136 -58.8041940841286 96.2962962962963 -57.7350269189626 95.0617283950617 -57.7350269189626 94.4444444444444 -58.8041940841285 95.0617283950617 -59.8733612492945 93.8271604938272 -59.8733612492945 93.2098765432099 -60.9425284144605 92.5925925925926 -59.8733612492945 91.358024691358 -59.8733612492945 91.9753086419753 -58.8041940841285 91.358024691358 -57.7350269189626 90.1234567901235 -57.7350269189626 89.5061728395062 -58.8041940841286 88.8888888888889 -57.7350269189626 87.6543209876543 -57.7350269189626 87.037037037037 -58.8041940841285 87.6543209876543 -59.8733612492945 86.4197530864197 -59.8733612492945 85.8024691358025 -60.9425284144605 86.4197530864198 -62.0116955796265 87.6543209876543 -62.0116955796265 87.037037037037 -63.0808627447924 87.6543209876543 -64.1500299099584 86.4197530864198 -64.1500299099584 85.8024691358025 -65.2191970751244 85.1851851851852 -64.1500299099584 83.9506172839506 -64.1500299099584 83.3333333333333 -65.2191970751244 83.9506172839506 -66.2883642402904 82.7160493827161 -66.2883642402904 82.0987654320988 -67.3575314054563 81.4814814814815 -66.2883642402904 80.2469135802469 -66.2883642402904 80.8641975308642 -65.2191970751244 80.2469135802469 -64.1500299099584 79.0123456790124 -64.1500299099584 78.3950617283951 -65.2191970751244 77.7777777777778 -64.1500299099584 76.5432098765432 -64.1500299099584 77.1604938271605 -63.0808627447924 76.5432098765432 -62.0116955796265 77.7777777777778 -62.0116955796265 78.3950617283951 -60.9425284144605 77.7777777777778 -59.8733612492945 76.5432098765432 -59.8733612492945 77.1604938271605 -58.8041940841285 76.5432098765432 -57.7350269189626 75.3086419753086 -57.7350269189626 74.6913580246914 -58.8041940841286 74.0740740740741 -57.7350269189626 72.8395061728395 -57.7350269189626 72.2222222222222 -58.8041940841285 72.8395061728395 -59.8733612492945 71.6049382716049 -59.8733612492945 70.9876543209877 -60.9425284144605 70.3703703703704 -59.8733612492945 69.1358024691358 -59.8733612492945 69.7530864197531 -58.8041940841285 69.1358024691358 -57.7350269189626 67.9012345679012 -57.7350269189626 67.283950617284 -58.8041940841286 66.6666666666667 -57.7350269189626 65.4320987654321 -57.7350269189626 64.8148148148148 -58.8041940841285 65.4320987654321 -59.8733612492945 64.1975308641975 -59.8733612492945 63.5802469135803 -60.9425284144605 64.1975308641975 -62.0116955796265 65.4320987654321 -62.0116955796265 64.8148148148148 -63.0808627447924 65.4320987654321 -64.1500299099584 64.1975308641975 -64.1500299099584 63.5802469135803 -65.2191970751244 62.962962962963 -64.1500299099584 61.7283950617284 -64.1500299099584 61.1111111111111 -65.2191970751244 61.7283950617284 -66.2883642402904 60.4938271604938 -66.2883642402904 59.8765432098765 -67.3575314054563 60.4938271604938 -68.4266985706223 61.7283950617284 -68.4266985706223 61.1111111111111 -69.4958657357883 61.7283950617284 -70.5650329009543 62.962962962963 -70.5650329009543 63.5802469135803 -69.4958657357883 64.1975308641975 -70.5650329009543 65.4320987654321 -70.5650329009543 64.8148148148148 -71.6342000661202 65.4320987654321 -72.7033672312862 64.1975308641975 -72.7033672312862 63.5802469135803 -73.7725343964522 64.1975308641975 -74.8417015616182 65.4320987654321 -74.8417015616182 64.8148148148148 -75.9108687267841 65.4320987654321 -76.9800358919501 64.1975308641975 -76.9800358919501 63.5802469135803 -78.0492030571161 62.962962962963 -76.9800358919501 61.7283950617284 -76.9800358919501 61.1111111111111 -78.0492030571161 61.7283950617284 -79.1183702222821 60.4938271604938 -79.1183702222821 59.8765432098765 -80.187537387448 59.2592592592593 -79.1183702222821 58.0246913580247 -79.1183702222821 58.641975308642 -78.0492030571161 58.0246913580247 -76.9800358919501 56.7901234567901 -76.9800358919501 56.1728395061728 -78.0492030571161 55.5555555555556 -76.9800358919501 54.320987654321 -76.9800358919501 53.7037037037037 -78.0492030571161 54.320987654321 -79.118370222282 53.0864197530864 -79.118370222282 52.4691358024691 -80.187537387448 53.0864197530864 -81.256704552614 54.320987654321 -81.256704552614 53.7037037037037 -82.32587171778 54.320987654321 -83.3950388829459 53.0864197530864 -83.3950388829459 52.4691358024691 -84.4642060481119 51.8518518518519 -83.3950388829459 50.6172839506173 -83.3950388829459 50 -84.4642060481119 50.6172839506173 -85.5333732132779 49.3827160493827 -85.5333732132779 48.7654320987654 -86.6025403784439 48.1481481481481 -85.5333732132779 46.9135802469136 -85.5333732132779 47.5308641975309 -84.4642060481119 46.9135802469136 -83.3950388829459 45.679012345679 -83.3950388829459 45.0617283950617 -84.4642060481119 44.4444444444444 -83.3950388829459 43.2098765432099 -83.3950388829459 43.8271604938272 -82.32587171778 43.2098765432099 -81.256704552614 44.4444444444444 -81.256704552614 45.0617283950617 -80.187537387448 44.4444444444444 -79.118370222282 43.2098765432099 -79.118370222282 43.8271604938272 -78.0492030571161 43.2098765432099 -76.9800358919501 41.9753086419753 -76.9800358919501 41.358024691358 -78.0492030571161 40.7407407407407 -76.9800358919501 39.5061728395062 -76.9800358919501 38.8888888888889 -78.0492030571161 39.5061728395062 -79.1183702222821 38.2716049382716 -79.1183702222821 37.6543209876543 -80.187537387448 37.037037037037 -79.1183702222821 35.8024691358025 -79.1183702222821 36.4197530864198 -78.0492030571161 35.8024691358025 -76.9800358919501 34.5679012345679 -76.9800358919501 33.9506172839506 -78.0492030571161 33.3333333333333 -76.9800358919501 32.0987654320988 -76.9800358919501 32.7160493827161 -75.9108687267841 32.0987654320988 -74.8417015616182 33.3333333333333 -74.8417015616182 33.9506172839506 -73.7725343964522 33.3333333333333 -72.7033672312862 32.0987654320988 -72.7033672312862 32.7160493827161 -71.6342000661202 32.0987654320988 -70.5650329009543 33.3333333333333 -70.5650329009543 33.9506172839506 -69.4958657357883 34.5679012345679 -70.5650329009543 35.8024691358025 -70.5650329009543 36.4197530864198 -69.4958657357883 35.8024691358025 -68.4266985706223 37.037037037037 -68.4266985706223 37.6543209876543 -67.3575314054563 37.037037037037 -66.2883642402904 35.8024691358025 -66.2883642402904 36.4197530864198 -65.2191970751244 35.8024691358025 -64.1500299099584 34.5679012345679 -64.1500299099584 33.9506172839506 -65.2191970751244 33.3333333333333 -64.1500299099584 32.0987654320988 -64.1500299099584 32.7160493827161 -63.0808627447924 32.0987654320988 -62.0116955796265 33.3333333333333 -62.0116955796265 33.9506172839506 -60.9425284144605 33.3333333333333 -59.8733612492945 32.0987654320988 -59.8733612492945 32.7160493827161 -58.8041940841285 32.0987654320988 -57.7350269189626 30.8641975308642 -57.7350269189626 30.2469135802469 -58.8041940841286 29.6296296296296 -57.7350269189626 28.3950617283951 -57.7350269189626 27.7777777777778 -58.8041940841285 28.3950617283951 -59.8733612492945 27.1604938271605 -59.8733612492945 26.5432098765432 -60.9425284144605 25.9259259259259 -59.8733612492945 24.6913580246914 -59.8733612492945 25.3086419753086 -58.8041940841285 24.6913580246914 -57.7350269189626 23.4567901234568 -57.7350269189626 22.8395061728395 -58.8041940841285 22.2222222222222 -57.7350269189626 20.9876543209877 -57.7350269189626 20.3703703703704 -58.8041940841285 20.9876543209877 -59.8733612492945 19.7530864197531 -59.8733612492945 19.1358024691358 -60.9425284144605 19.7530864197531 -62.0116955796265 20.9876543209877 -62.0116955796265 20.3703703703704 -63.0808627447924 20.9876543209877 -64.1500299099584 19.7530864197531 -64.1500299099584 19.1358024691358 -65.2191970751244 18.5185185185185 -64.1500299099584 17.283950617284 -64.1500299099584 16.6666666666667 -65.2191970751244 17.283950617284 -66.2883642402904 16.0493827160494 -66.2883642402904 15.4320987654321 -67.3575314054563 14.8148148148148 -66.2883642402904 13.5802469135802 -66.2883642402904 14.1975308641975 -65.2191970751244 13.5802469135803 -64.1500299099584 12.3456790123457 -64.1500299099584 11.7283950617284 -65.2191970751244 11.1111111111111 -64.1500299099584 9.87654320987655 -64.1500299099584 10.4938271604938 -63.0808627447924 9.87654320987655 -62.0116955796265 11.1111111111111 -62.0116955796265 11.7283950617284 -60.9425284144605 11.1111111111111 -59.8733612492945 9.87654320987655 -59.8733612492945 10.4938271604938 -58.8041940841285 9.87654320987655 -57.7350269189626 8.64197530864198 -57.7350269189626 8.0246913580247 -58.8041940841285 7.40740740740741 -57.7350269189626 6.17283950617284 -57.7350269189626 5.55555555555556 -58.8041940841285 6.17283950617284 -59.8733612492945 4.93827160493827 -59.8733612492945 4.32098765432099 -60.9425284144605 3.70370370370371 -59.8733612492945 2.46913580246914 -59.8733612492945 3.08641975308642 -58.8041940841285 2.46913580246914 -57.7350269189626 1.23456790123457 -57.7350269189626 0.617283950617287 -58.8041940841285 3.33066907387547e-15 -57.7350269189626 -1.23456790123456 -57.7350269189626 -0.617283950617281 -56.6658597537966 -1.23456790123456 -55.5966925886306 3.10862446895044e-15 -55.5966925886306 0.617283950617287 -54.5275254234647 2.66453525910038e-15 -53.4583582582987 -1.23456790123456 -53.4583582582987 -0.617283950617282 -52.3891910931327 -1.23456790123457 -51.3200239279667 2.22044604925031e-15 -51.3200239279667 0.617283950617288 -50.2508567628008 1.23456790123457 -51.3200239279667 2.46913580246914 -51.3200239279667 3.08641975308642 -50.2508567628008 2.46913580246914 -49.1816895976348 3.70370370370371 -49.1816895976348 4.32098765432099 -48.1125224324688 3.70370370370371 -47.0433552673028 2.46913580246914 -47.0433552673028 3.08641975308642 -45.9741881021369 2.46913580246914 -44.9050209369709 1.23456790123457 -44.9050209369709 0.617283950617288 -45.9741881021369 2.22044604925031e-15 -44.9050209369709 -1.23456790123457 -44.9050209369709 -0.617283950617282 -43.8358537718049 -1.23456790123456 -42.7666866066389 2.66453525910038e-15 -42.7666866066389 0.617283950617287 -41.697519441473 3.10862446895044e-15 -40.628352276307 -1.23456790123456 -40.628352276307 -0.617283950617281 -39.559185111141 -1.23456790123456 -38.4900179459751 3.10862446895044e-15 -38.4900179459751 0.617283950617287 -37.4208507808091 1.23456790123457 -38.4900179459751 2.46913580246914 -38.4900179459751 3.08641975308642 -37.4208507808091 2.46913580246914 -36.3516836156431 3.70370370370371 -36.3516836156431 4.32098765432099 -35.2825164504771 4.93827160493827 -36.3516836156431 6.17283950617284 -36.3516836156431 5.55555555555556 -37.4208507808091 6.17283950617284 -38.490017945975 7.40740740740741 -38.490017945975 8.02469135802469 -37.4208507808091 8.64197530864198 -38.490017945975 9.87654320987654 -38.490017945975 10.4938271604938 -37.4208507808091 9.87654320987655 -36.3516836156431 11.1111111111111 -36.3516836156431 11.7283950617284 -35.2825164504771 11.1111111111111 -34.2133492853112 9.87654320987655 -34.2133492853112 10.4938271604938 -33.1441821201452 9.87654320987654 -32.0750149549792 11.1111111111111 -32.0750149549792 11.7283950617284 -31.0058477898132 12.3456790123457 -32.0750149549792 13.5802469135802 -32.0750149549792 14.1975308641975 -31.0058477898132 13.5802469135802 -29.9366806246473 14.8148148148148 -29.9366806246473 15.4320987654321 -28.8675134594813 14.8148148148148 -27.7983462943153 13.5802469135802 -27.7983462943153 14.1975308641975 -26.7291791291493 13.5802469135802 -25.6600119639834 12.3456790123457 -25.6600119639834 11.7283950617284 -26.7291791291493 11.1111111111111 -25.6600119639834 9.87654320987654 -25.6600119639834 10.4938271604938 -24.5908447988174 9.87654320987655 -23.5216776336514 11.1111111111111 -23.5216776336514 11.7283950617284 -22.4525104684854 11.1111111111111 -21.3833433033195 9.87654320987654 -21.3833433033195 10.4938271604938 -20.3141761381535 9.87654320987654 -19.2450089729875 8.64197530864198 -19.2450089729875 8.02469135802469 -20.3141761381535 7.40740740740741 -19.2450089729875 6.17283950617284 -19.2450089729875 5.55555555555556 -20.3141761381535 6.17283950617284 -21.3833433033195 4.93827160493827 -21.3833433033195 4.32098765432099 -22.4525104684854 3.7037037037037 -21.3833433033195 2.46913580246913 -21.3833433033195 3.08641975308642 -20.3141761381535 2.46913580246914 -19.2450089729875 1.23456790123457 -19.2450089729875 0.617283950617284 -20.3141761381535 0 -19.2450089729875 -1.23456790123457 -19.2450089729875 -0.617283950617284 -18.1758418078216 -1.23456790123457 -17.1066746426556 0 -17.1066746426556 0.617283950617284 -16.0375074774896 6.66133814775094e-16 -14.9683403123236 -1.23456790123457 -14.9683403123236 -0.617283950617283 -13.8991731471577 -1.23456790123457 -12.8300059819917 1.11022302462516e-15 -12.8300059819917 0.617283950617284 -11.7608388168257 1.23456790123457 -12.8300059819917 2.46913580246914 -12.8300059819917 3.08641975308642 -11.7608388168257 2.46913580246914 -10.6916716516597 3.7037037037037 -10.6916716516597 4.32098765432099 -9.62250448649376 3.7037037037037 -8.55333732132778 2.46913580246914 -8.55333732132778 3.08641975308642 -7.48417015616182 2.46913580246914 -6.41500299099584 1.23456790123457 -6.41500299099584 0.617283950617284 -7.48417015616182 6.66133814775094e-16 -6.41500299099584 -1.23456790123457 -6.41500299099584 -0.617283950617283 -5.34583582582986 -1.23456790123457 -4.2766686606639 2.22044604925031e-16 -4.2766686606639 0.617283950617284 -3.20750149549792 0 -2.13833433033195 -1.23456790123457 -2.13833433033195 -0.617283950617284 -1.06916716516597 48.7654320987654 -28.8675134594813 638 642 640 641 640 642 643 642 644 638 644 642 640 639 638 636 629 637 635 634 636 629 653 637 638 637 644 630 636 634 644 637 645 652 648 646 647 646 648 649 648 650 652 650 648 646 645 652 653 652 645 629 654 653 655 654 656 656 654 626 652 651 650 645 637 653 634 633 632 614 618 616 617 616 618 619 618 620 614 620 618 616 615 614 610 608 612 611 610 612 613 597 621 620 614 621 622 621 596 621 614 613 632 631 630 632 630 634 628 627 626 629 628 654 630 629 636 625 624 594 623 622 624 689 625 593 656 626 657 622 596 624 628 626 654 613 612 606 657 626 625 665 664 666 668 666 662 668 667 666 662 669 668 662 666 664 660 659 658 685 677 661 662 661 669 661 660 685 663 662 664 669 661 677 671 670 672 672 670 674 674 673 672 676 675 674 674 670 676 676 670 669 685 678 677 680 679 678 682 680 678 680 682 681 669 677 676 658 688 660 686 685 660 660 688 686 685 684 678 682 684 683 682 678 684 658 657 689 688 687 686 688 658 689 691 690 692 692 690 590 690 689 593 657 625 689 698 694 700 695 694 696 697 696 698 698 696 694 694 693 700 700 699 698 701 700 693 703 702 704 580 702 701 702 578 704 692 589 693 701 693 589 610 609 608 548 544 542 545 544 546 547 546 548 548 546 544 544 543 542 534 540 538 539 538 540 549 541 533 542 541 548 540 534 541 548 541 549 554 550 556 551 550 552 553 552 554 554 552 550 550 549 557 556 555 554 557 556 550 559 558 560 532 558 557 557 549 533 532 560 558 538 537 536 524 520 518 521 520 522 523 522 524 524 522 520 520 519 518 514 512 516 515 514 516 525 517 509 518 517 524 526 525 500 524 517 525 536 535 534 536 534 538 532 531 530 533 532 557 534 533 541 500 528 526 527 526 528 497 561 529 530 529 560 464 562 561 532 530 560 509 517 516 560 529 561 608 607 606 606 605 613 604 603 602 605 604 598 605 597 613 602 601 600 600 598 604 597 605 598 599 598 600 604 602 600 596 621 597 596 595 594 594 624 596 592 591 590 593 592 690 594 593 625 588 586 584 587 586 588 589 588 582 590 589 692 586 585 584 592 590 690 608 606 612 566 570 568 569 568 570 571 570 572 566 572 570 568 567 566 464 564 562 563 562 564 573 565 461 566 565 572 573 452 574 572 565 573 582 584 583 581 580 701 582 581 589 579 578 580 584 582 588 449 577 576 575 574 576 577 769 705 704 578 705 576 574 452 580 578 702 461 565 564 589 581 701 529 528 498 705 578 577 740 736 734 737 736 738 739 738 740 740 738 736 736 735 734 726 733 732 731 730 732 733 725 749 740 734 741 732 730 726 741 734 733 746 742 748 743 742 744 745 744 746 746 744 742 742 741 749 748 747 746 749 748 742 751 750 752 722 752 750 750 749 724 741 733 749 730 729 728 710 714 712 713 712 714 715 714 716 710 716 714 712 711 710 706 62 708 707 706 708 52 718 717 716 710 717 53 717 709 717 710 709 728 727 726 728 726 730 724 723 722 725 724 749 726 725 733 50 721 720 719 718 720 721 49 17 752 722 753 52 720 718 724 722 750 708 62 709 753 722 721 764 760 758 761 760 762 763 762 764 764 762 760 760 759 758 754 14 756 755 754 756 765 757 13 758 757 764 14 757 756 764 757 765 4 768 766 767 766 768 1 768 2 4 2 768 766 765 4 4 3 2 5 4 765 7 6 8 10 8 6 5 765 13 5 12 6 754 753 17 13 12 5 14 13 757 10 9 8 11 10 12 12 10 6 16 15 14 17 16 754 19 18 20 20 18 46 753 721 17 14 754 16 26 22 28 23 22 24 25 24 26 26 24 22 22 21 28 28 27 26 29 28 21 31 30 32 36 32 30 30 29 36 21 20 45 17 48 18 29 21 37 706 705 64 49 48 17 50 49 721 45 37 21 47 46 48 45 20 46 52 51 50 53 52 717 55 54 56 56 54 58 53 61 54 50 720 52 34 32 36 37 45 38 33 32 34 35 34 36 36 29 37 44 43 42 44 42 40 39 38 40 41 40 42 40 38 44 45 44 38 46 18 48 61 60 54 62 61 709 57 56 58 59 58 60 58 54 60 64 63 62 65 64 705 67 66 68 68 66 190 65 705 769 62 706 64 74 70 76 71 70 72 73 72 74 74 72 70 70 69 76 76 75 74 77 76 69 79 78 80 80 78 180 77 181 78 69 68 190 77 69 181 53 709 61 92 88 86 89 88 90 91 90 92 92 90 88 88 87 86 83 82 84 85 109 93 92 85 93 85 92 86 109 101 93 84 110 85 95 94 96 96 94 98 98 97 96 100 99 98 98 94 100 101 100 94 109 102 101 104 103 102 106 104 102 104 106 105 94 93 101 82 110 84 110 109 85 82 112 110 109 108 102 106 108 107 106 102 108 82 81 113 112 111 110 112 82 113 115 114 116 144 114 113 113 81 145 116 114 144 119 118 120 122 120 124 122 121 120 124 123 122 124 120 118 117 125 124 141 117 116 117 124 118 127 126 128 130 128 126 126 125 132 141 125 117 81 80 178 65 193 66 514 513 512 512 511 510 510 509 516 508 507 506 509 508 502 525 509 501 506 505 504 506 504 502 503 502 504 506 502 508 509 502 501 500 499 498 501 500 525 497 496 465 497 529 498 561 497 465 492 491 490 493 492 485 494 493 468 492 490 488 495 494 496 496 494 466 490 489 488 500 498 528 488 487 486 485 492 486 484 483 482 485 484 478 493 485 477 482 481 480 482 480 478 477 485 478 479 478 480 478 484 482 493 477 469 466 494 468 470 469 476 465 496 466 467 466 468 493 469 468 476 475 474 476 474 472 471 470 472 473 472 474 472 470 476 469 477 476 488 486 492 465 464 561 464 463 462 462 461 564 460 459 458 461 460 454 573 461 453 458 457 456 458 456 454 453 461 454 455 454 456 454 460 458 453 452 573 452 451 450 449 576 450 449 321 769 769 577 449 448 322 449 576 452 450 444 443 442 438 445 444 322 448 446 444 442 440 447 446 448 445 325 446 564 464 462 425 424 426 426 424 428 428 427 426 424 422 428 420 419 418 413 421 420 422 421 428 405 429 421 423 422 424 428 421 429 438 440 439 325 445 437 437 445 438 435 434 436 438 444 440 405 430 429 431 430 432 402 433 432 334 436 434 402 432 430 334 437 436 414 420 418 441 440 442 337 434 433 510 516 512 416 415 414 418 416 414 405 413 412 420 414 413 421 413 405 410 409 408 408 412 410 406 408 407 406 412 408 410 412 411 405 412 406 404 403 402 430 405 404 401 400 370 433 402 401 433 401 337 396 395 394 390 397 396 398 397 373 396 394 392 399 398 400 400 398 370 402 430 404 392 391 390 390 396 392 389 388 382 390 389 397 397 389 373 386 385 384 386 382 388 382 384 383 384 382 386 386 388 387 389 382 381 373 381 374 381 373 389 374 381 380 370 372 371 398 372 370 398 373 372 380 379 378 380 378 376 375 374 376 377 376 378 376 374 380 392 394 393 401 370 369 334 434 336 338 337 368 336 335 334 338 340 339 437 334 333 341 340 365 344 342 348 344 343 342 345 344 346 342 341 348 338 368 340 325 333 326 437 333 325 326 333 332 322 324 323 446 324 322 321 449 322 446 325 324 332 331 330 332 330 328 327 326 328 329 328 330 328 326 332 336 434 337 368 367 366 340 368 366 357 365 364 365 340 366 357 341 365 362 361 360 360 364 362 358 360 359 358 364 360 362 364 363 357 364 358 350 349 356 348 341 349 356 349 357 346 348 347 346 344 348 341 357 349 356 355 354 356 354 352 351 350 352 353 352 354 352 350 356 368 337 369 401 369 337 416 418 417 190 66 192 194 193 320 181 69 189 191 190 192 193 192 66 196 195 194 197 196 317 199 198 200 202 200 198 198 197 204 194 320 196 80 180 178 181 189 182 81 178 177 179 178 180 181 180 78 188 187 186 188 186 184 183 182 184 185 184 186 184 182 188 189 188 182 189 69 190 204 202 198 206 205 309 202 201 200 203 202 204 204 197 205 208 207 206 209 208 305 211 210 212 238 212 210 210 209 241 206 308 208 218 214 220 215 214 216 217 216 218 218 216 214 214 213 220 220 219 218 221 220 213 223 222 224 226 224 222 222 221 228 221 213 237 213 212 238 197 317 205 142 116 144 146 145 176 133 125 141 143 142 144 145 144 113 149 148 173 150 149 157 151 150 152 150 154 152 148 147 146 146 176 148 126 132 130 133 141 134 128 130 129 131 130 132 133 132 125 140 139 138 138 136 134 135 134 136 137 136 138 134 140 138 141 140 134 141 116 142 176 175 174 174 173 148 172 171 170 173 172 166 149 173 157 170 169 168 170 168 166 165 173 166 167 166 168 166 172 170 157 173 165 156 150 157 158 157 164 153 152 154 155 154 156 154 150 156 164 163 162 164 162 160 159 158 160 161 160 162 160 158 164 157 165 164 176 174 148 145 177 176 145 81 177 320 319 318 320 318 196 317 316 310 317 196 318 309 205 317 314 313 312 314 310 316 310 312 311 312 310 314 314 316 315 317 310 309 308 307 306 306 208 308 305 304 274 305 208 306 309 308 206 300 299 298 294 301 300 302 301 277 300 298 294 303 302 304 304 302 274 241 209 305 296 295 294 296 294 298 293 292 286 285 301 293 301 294 293 290 289 288 290 286 292 286 288 287 288 286 290 290 292 291 293 286 285 277 285 278 277 301 285 278 285 284 274 276 275 302 276 274 302 277 276 284 283 282 282 280 278 279 278 280 281 280 282 278 284 282 296 298 297 305 274 273 238 210 240 242 241 272 229 221 237 239 238 240 241 240 210 244 243 242 245 244 269 247 246 248 250 248 246 246 245 252 242 272 244 226 222 228 230 229 236 224 226 225 227 226 228 229 228 221 236 235 234 236 234 232 231 230 232 233 232 234 232 230 236 229 237 236 213 238 237 272 271 270 272 270 244 269 268 262 269 244 270 269 253 245 266 265 264 266 262 268 262 264 263 264 262 266 266 268 267 269 262 261 250 246 252 254 253 261 249 248 250 251 250 252 245 253 252 260 259 258 260 256 254 255 254 256 258 257 256 256 260 258 254 261 260 253 269 261 272 241 273 305 273 241 320 193 321 193 769 321 769 193 65 
+
+TShapes 3075
+Ve
+1e-07
+0 0 0
+0 0
+
+0101100
+*
+Ve
+1e-07
+1.23456790123457 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  1 0 0 1.23456790123457
+6  1 2 0
+6  2 1 0
+0
+
+0101000
++3075 0 -3074 0 *
+Ve
+1e-07
+1.85185185185185 -1.06916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  2 0 0 1.23456790123457
+6  3 2 0
+6  4 1 0
+0
+
+0101000
++3074 0 -3072 0 *
+Ve
+1e-07
+2.46913580246914 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  3 0 0 1.23456790123457
+6  5 2 0
+6  6 1 0
+0
+
+0101000
++3072 0 -3070 0 *
+Ve
+1e-07
+3.7037037037037 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  4 0 0 1.23456790123457
+6  7 2 0
+6  8 1 0
+0
+
+0101000
++3070 0 -3068 0 *
+Ve
+1e-07
+4.32098765432099 -1.06916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  5 0 0 1.23456790123457
+6  9 2 0
+6  10 1 0
+0
+
+0101000
++3068 0 -3066 0 *
+Ve
+1e-07
+3.7037037037037 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  6 0 0 1.23456790123457
+6  11 2 0
+6  12 1 0
+0
+
+0101000
++3066 0 -3064 0 *
+Ve
+1e-07
+4.93827160493827 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  7 0 0 1.23456790123457
+6  13 2 0
+6  14 1 0
+0
+
+0101000
++3064 0 -3062 0 *
+Ve
+1e-07
+5.55555555555556 -3.20750149549792 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  8 0 0 1.23456790123457
+6  15 2 0
+6  16 1 0
+0
+
+0101000
++3062 0 -3060 0 *
+Ve
+1e-07
+6.17283950617284 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  9 0 0 1.23456790123457
+6  17 2 0
+6  18 1 0
+0
+
+0101000
++3060 0 -3058 0 *
+Ve
+1e-07
+7.40740740740741 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  10 0 0 1.23456790123457
+6  19 2 0
+6  20 1 0
+0
+
+0101000
++3058 0 -3056 0 *
+Ve
+1e-07
+6.79012345679012 -1.06916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  11 0 0 1.23456790123457
+6  21 2 0
+6  22 1 0
+0
+
+0101000
++3056 0 -3054 0 *
+Ve
+1e-07
+7.40740740740741 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  12 0 0 1.23456790123457
+6  23 2 0
+6  24 1 0
+0
+
+0101000
++3054 0 -3052 0 *
+Ve
+1e-07
+8.64197530864198 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  13 0 0 1.23456790123457
+6  25 2 0
+6  26 1 0
+0
+
+0101000
++3052 0 -3050 0 *
+Ve
+1e-07
+9.25925925925926 -1.06916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  14 0 0 1.23456790123457
+6  27 2 0
+6  28 1 0
+0
+
+0101000
++3050 0 -3048 0 *
+Ve
+1e-07
+9.87654320987654 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  15 0 0 1.23456790123457
+6  29 2 0
+6  30 1 0
+0
+
+0101000
++3048 0 -3046 0 *
+Ve
+1e-07
+11.1111111111111 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  16 0 0 1.23456790123457
+6  31 2 0
+6  32 1 0
+0
+
+0101000
++3046 0 -3044 0 *
+Ve
+1e-07
+11.7283950617284 -1.06916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  17 0 0 1.23456790123457
+6  33 2 0
+6  34 1 0
+0
+
+0101000
++3044 0 -3042 0 *
+Ve
+1e-07
+11.1111111111111 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  18 0 0 1.23456790123457
+6  35 2 0
+6  36 1 0
+0
+
+0101000
++3042 0 -3040 0 *
+Ve
+1e-07
+12.3456790123457 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  19 0 0 1.23456790123457
+6  37 2 0
+6  38 1 0
+0
+
+0101000
++3040 0 -3038 0 *
+Ve
+1e-07
+12.962962962963 -3.20750149549792 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  20 0 0 1.23456790123457
+6  39 2 0
+6  40 1 0
+0
+
+0101000
++3038 0 -3036 0 *
+Ve
+1e-07
+12.3456790123457 -4.2766686606639 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  21 0 0 1.23456790123457
+6  41 2 0
+6  42 1 0
+0
+
+0101000
++3036 0 -3034 0 *
+Ve
+1e-07
+11.1111111111111 -4.27666866066389 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  22 0 0 1.23456790123457
+6  43 2 0
+6  44 1 0
+0
+
+0101000
++3034 0 -3032 0 *
+Ve
+1e-07
+11.7283950617284 -5.34583582582987 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  23 0 0 1.23456790123457
+6  45 2 0
+6  46 1 0
+0
+
+0101000
++3032 0 -3030 0 *
+Ve
+1e-07
+11.1111111111111 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  24 0 0 1.23456790123457
+6  47 2 0
+6  48 1 0
+0
+
+0101000
++3030 0 -3028 0 *
+Ve
+1e-07
+12.3456790123457 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  25 0 0 1.23456790123457
+6  49 2 0
+6  50 1 0
+0
+
+0101000
++3028 0 -3026 0 *
+Ve
+1e-07
+12.962962962963 -7.48417015616182 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  26 0 0 1.23456790123457
+6  51 2 0
+6  52 1 0
+0
+
+0101000
++3026 0 -3024 0 *
+Ve
+1e-07
+13.5802469135802 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  27 0 0 1.23456790123457
+6  53 2 0
+6  54 1 0
+0
+
+0101000
++3024 0 -3022 0 *
+Ve
+1e-07
+14.8148148148148 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  28 0 0 1.23456790123457
+6  55 2 0
+6  56 1 0
+0
+
+0101000
++3022 0 -3020 0 *
+Ve
+1e-07
+15.4320987654321 -7.48417015616182 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  29 0 0 1.23456790123457
+6  57 2 0
+6  58 1 0
+0
+
+0101000
++3020 0 -3018 0 *
+Ve
+1e-07
+14.8148148148148 -8.55333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  30 0 0 1.23456790123457
+6  59 2 0
+6  60 1 0
+0
+
+0101000
++3018 0 -3016 0 *
+Ve
+1e-07
+16.0493827160494 -8.55333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  31 0 0 1.23456790123457
+6  61 2 0
+6  62 1 0
+0
+
+0101000
++3016 0 -3014 0 *
+Ve
+1e-07
+16.6666666666667 -9.62250448649376 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  32 0 0 1.23456790123457
+6  63 2 0
+6  64 1 0
+0
+
+0101000
++3014 0 -3012 0 *
+Ve
+1e-07
+17.283950617284 -8.55333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  33 0 0 1.23456790123457
+6  65 2 0
+6  66 1 0
+0
+
+0101000
++3012 0 -3010 0 *
+Ve
+1e-07
+18.5185185185185 -8.55333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  34 0 0 1.23456790123457
+6  67 2 0
+6  68 1 0
+0
+
+0101000
++3010 0 -3008 0 *
+Ve
+1e-07
+17.9012345679012 -7.48417015616182 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  35 0 0 1.23456790123457
+6  69 2 0
+6  70 1 0
+0
+
+0101000
++3008 0 -3006 0 *
+Ve
+1e-07
+18.5185185185185 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  36 0 0 1.23456790123457
+6  71 2 0
+6  72 1 0
+0
+
+0101000
++3006 0 -3004 0 *
+Ve
+1e-07
+19.7530864197531 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  37 0 0 1.23456790123457
+6  73 2 0
+6  74 1 0
+0
+
+0101000
++3004 0 -3002 0 *
+Ve
+1e-07
+20.3703703703704 -7.48417015616182 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  38 0 0 1.23456790123457
+6  75 2 0
+6  76 1 0
+0
+
+0101000
++3002 0 -3000 0 *
+Ve
+1e-07
+20.9876543209877 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  39 0 0 1.23456790123457
+6  77 2 0
+6  78 1 0
+0
+
+0101000
++3000 0 -2998 0 *
+Ve
+1e-07
+22.2222222222222 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  40 0 0 1.23456790123457
+6  79 2 0
+6  80 1 0
+0
+
+0101000
++2998 0 -2996 0 *
+Ve
+1e-07
+21.6049382716049 -5.34583582582987 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  41 0 0 1.23456790123457
+6  81 2 0
+6  82 1 0
+0
+
+0101000
++2996 0 -2994 0 *
+Ve
+1e-07
+22.2222222222222 -4.2766686606639 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  42 0 0 1.23456790123457
+6  83 2 0
+6  84 1 0
+0
+
+0101000
++2994 0 -2992 0 *
+Ve
+1e-07
+20.9876543209877 -4.2766686606639 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  43 0 0 1.23456790123457
+6  85 2 0
+6  86 1 0
+0
+
+0101000
++2992 0 -2990 0 *
+Ve
+1e-07
+20.3703703703704 -3.20750149549792 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  44 0 0 1.23456790123457
+6  87 2 0
+6  88 1 0
+0
+
+0101000
++2990 0 -2988 0 *
+Ve
+1e-07
+20.9876543209877 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  45 0 0 1.23456790123457
+6  89 2 0
+6  90 1 0
+0
+
+0101000
++2988 0 -2986 0 *
+Ve
+1e-07
+22.2222222222222 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  46 0 0 1.23456790123457
+6  91 2 0
+6  92 1 0
+0
+
+0101000
++2986 0 -2984 0 *
+Ve
+1e-07
+21.6049382716049 -1.06916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  47 0 0 1.23456790123457
+6  93 2 0
+6  94 1 0
+0
+
+0101000
++2984 0 -2982 0 *
+Ve
+1e-07
+22.2222222222222 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  48 0 0 1.23456790123457
+6  95 2 0
+6  96 1 0
+0
+
+0101000
++2982 0 -2980 0 *
+Ve
+1e-07
+23.4567901234568 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  49 0 0 1.23456790123457
+6  97 2 0
+6  98 1 0
+0
+
+0101000
++2980 0 -2978 0 *
+Ve
+1e-07
+24.0740740740741 -1.06916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  50 0 0 1.23456790123457
+6  99 2 0
+6  100 1 0
+0
+
+0101000
++2978 0 -2976 0 *
+Ve
+1e-07
+24.6913580246914 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  51 0 0 1.23456790123457
+6  101 2 0
+6  102 1 0
+0
+
+0101000
++2976 0 -2974 0 *
+Ve
+1e-07
+25.9259259259259 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  52 0 0 1.23456790123457
+6  103 2 0
+6  104 1 0
+0
+
+0101000
++2974 0 -2972 0 *
+Ve
+1e-07
+26.5432098765432 -1.06916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  53 0 0 1.23456790123457
+6  105 2 0
+6  106 1 0
+0
+
+0101000
++2972 0 -2970 0 *
+Ve
+1e-07
+25.9259259259259 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  54 0 0 1.23456790123457
+6  107 2 0
+6  108 1 0
+0
+
+0101000
++2970 0 -2968 0 *
+Ve
+1e-07
+27.1604938271605 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  55 0 0 1.23456790123457
+6  109 2 0
+6  110 1 0
+0
+
+0101000
++2968 0 -2966 0 *
+Ve
+1e-07
+27.7777777777778 -3.20750149549792 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  56 0 0 1.23456790123457
+6  111 2 0
+6  112 1 0
+0
+
+0101000
++2966 0 -2964 0 *
+Ve
+1e-07
+28.3950617283951 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  57 0 0 1.23456790123457
+6  113 2 0
+6  114 1 0
+0
+
+0101000
++2964 0 -2962 0 *
+Ve
+1e-07
+29.6296296296296 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  58 0 0 1.23456790123457
+6  115 2 0
+6  116 1 0
+0
+
+0101000
++2962 0 -2960 0 *
+Ve
+1e-07
+29.0123456790123 -1.06916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  59 0 0 1.23456790123457
+6  117 2 0
+6  118 1 0
+0
+
+0101000
++2960 0 -2958 0 *
+Ve
+1e-07
+29.6296296296296 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  60 0 0 1.23456790123457
+6  119 2 0
+6  120 1 0
+0
+
+0101000
++2958 0 -2956 0 *
+Ve
+1e-07
+30.8641975308642 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  61 0 0 1.23456790123457
+6  121 2 0
+6  122 1 0
+0
+
+0101000
++2956 0 -2954 0 *
+Ve
+1e-07
+31.4814814814815 -1.06916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  62 0 0 1.23456790123457
+6  123 2 0
+6  124 1 0
+0
+
+0101000
++2954 0 -2952 0 *
+Ve
+1e-07
+32.0987654320988 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  63 0 0 1.23456790123457
+6  125 2 0
+6  126 1 0
+0
+
+0101000
++2952 0 -2950 0 *
+Ve
+1e-07
+33.3333333333333 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  64 0 0 1.23456790123457
+6  127 2 0
+6  128 1 0
+0
+
+0101000
++2950 0 -2948 0 *
+Ve
+1e-07
+33.9506172839506 -1.06916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  65 0 0 1.23456790123457
+6  129 2 0
+6  130 1 0
+0
+
+0101000
++2948 0 -2946 0 *
+Ve
+1e-07
+33.3333333333333 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  66 0 0 1.23456790123457
+6  131 2 0
+6  132 1 0
+0
+
+0101000
++2946 0 -2944 0 *
+Ve
+1e-07
+34.5679012345679 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  67 0 0 1.23456790123456
+6  133 2 0
+6  134 1 0
+0
+
+0101000
++2944 0 -2942 0 *
+Ve
+1e-07
+35.1851851851852 -3.20750149549792 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  68 0 0 1.23456790123457
+6  135 2 0
+6  136 1 0
+0
+
+0101000
++2942 0 -2940 0 *
+Ve
+1e-07
+34.5679012345679 -4.2766686606639 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  69 0 0 1.23456790123457
+6  137 2 0
+6  138 1 0
+0
+
+0101000
++2940 0 -2938 0 *
+Ve
+1e-07
+33.3333333333333 -4.27666866066389 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  70 0 0 1.23456790123456
+6  139 2 0
+6  140 1 0
+0
+
+0101000
++2938 0 -2936 0 *
+Ve
+1e-07
+33.9506172839506 -5.34583582582987 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  71 0 0 1.23456790123457
+6  141 2 0
+6  142 1 0
+0
+
+0101000
++2936 0 -2934 0 *
+Ve
+1e-07
+33.3333333333333 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  72 0 0 1.23456790123457
+6  143 2 0
+6  144 1 0
+0
+
+0101000
++2934 0 -2932 0 *
+Ve
+1e-07
+34.5679012345679 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  73 0 0 1.23456790123457
+6  145 2 0
+6  146 1 0
+0
+
+0101000
++2932 0 -2930 0 *
+Ve
+1e-07
+35.1851851851852 -7.48417015616182 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  74 0 0 1.23456790123457
+6  147 2 0
+6  148 1 0
+0
+
+0101000
++2930 0 -2928 0 *
+Ve
+1e-07
+35.8024691358025 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  75 0 0 1.23456790123457
+6  149 2 0
+6  150 1 0
+0
+
+0101000
++2928 0 -2926 0 *
+Ve
+1e-07
+37.037037037037 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  76 0 0 1.23456790123457
+6  151 2 0
+6  152 1 0
+0
+
+0101000
++2926 0 -2924 0 *
+Ve
+1e-07
+37.6543209876543 -7.48417015616182 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  77 0 0 1.23456790123457
+6  153 2 0
+6  154 1 0
+0
+
+0101000
++2924 0 -2922 0 *
+Ve
+1e-07
+37.037037037037 -8.55333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  78 0 0 1.23456790123457
+6  155 2 0
+6  156 1 0
+0
+
+0101000
++2922 0 -2920 0 *
+Ve
+1e-07
+38.2716049382716 -8.55333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  79 0 0 1.23456790123457
+6  157 2 0
+6  158 1 0
+0
+
+0101000
++2920 0 -2918 0 *
+Ve
+1e-07
+38.8888888888889 -9.62250448649376 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  80 0 0 1.23456790123457
+6  159 2 0
+6  160 1 0
+0
+
+0101000
++2918 0 -2916 0 *
+Ve
+1e-07
+38.2716049382716 -10.6916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  81 0 0 1.23456790123457
+6  161 2 0
+6  162 1 0
+0
+
+0101000
++2916 0 -2914 0 *
+Ve
+1e-07
+37.037037037037 -10.6916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  82 0 0 1.23456790123457
+6  163 2 0
+6  164 1 0
+0
+
+0101000
++2914 0 -2912 0 *
+Ve
+1e-07
+37.6543209876543 -11.7608388168257 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  83 0 0 1.23456790123457
+6  165 2 0
+6  166 1 0
+0
+
+0101000
++2912 0 -2910 0 *
+Ve
+1e-07
+37.037037037037 -12.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  84 0 0 1.23456790123457
+6  167 2 0
+6  168 1 0
+0
+
+0101000
++2910 0 -2908 0 *
+Ve
+1e-07
+35.8024691358025 -12.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  85 0 0 1.23456790123457
+6  169 2 0
+6  170 1 0
+0
+
+0101000
++2908 0 -2906 0 *
+Ve
+1e-07
+35.1851851851852 -11.7608388168257 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  86 0 0 1.23456790123457
+6  171 2 0
+6  172 1 0
+0
+
+0101000
++2906 0 -2904 0 *
+Ve
+1e-07
+34.5679012345679 -12.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  87 0 0 1.23456790123457
+6  173 2 0
+6  174 1 0
+0
+
+0101000
++2904 0 -2902 0 *
+Ve
+1e-07
+33.3333333333333 -12.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  88 0 0 1.23456790123457
+6  175 2 0
+6  176 1 0
+0
+
+0101000
++2902 0 -2900 0 *
+Ve
+1e-07
+33.9506172839506 -13.8991731471577 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  89 0 0 1.23456790123457
+6  177 2 0
+6  178 1 0
+0
+
+0101000
++2900 0 -2898 0 *
+Ve
+1e-07
+33.3333333333333 -14.9683403123236 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  90 0 0 1.23456790123456
+6  179 2 0
+6  180 1 0
+0
+
+0101000
++2898 0 -2896 0 *
+Ve
+1e-07
+34.5679012345679 -14.9683403123236 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  91 0 0 1.23456790123456
+6  181 2 0
+6  182 1 0
+0
+
+0101000
++2896 0 -2894 0 *
+Ve
+1e-07
+35.1851851851852 -16.0375074774896 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  92 0 0 1.23456790123457
+6  183 2 0
+6  184 1 0
+0
+
+0101000
++2894 0 -2892 0 *
+Ve
+1e-07
+34.5679012345679 -17.1066746426556 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  93 0 0 1.23456790123457
+6  185 2 0
+6  186 1 0
+0
+
+0101000
++2892 0 -2890 0 *
+Ve
+1e-07
+33.3333333333333 -17.1066746426556 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  94 0 0 1.23456790123456
+6  187 2 0
+6  188 1 0
+0
+
+0101000
++2890 0 -2888 0 *
+Ve
+1e-07
+33.9506172839506 -18.1758418078216 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  95 0 0 1.23456790123457
+6  189 2 0
+6  190 1 0
+0
+
+0101000
++2888 0 -2886 0 *
+Ve
+1e-07
+33.3333333333333 -19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  96 0 0 1.23456790123457
+6  191 2 0
+6  192 1 0
+0
+
+0101000
++2886 0 -2884 0 *
+Ve
+1e-07
+34.5679012345679 -19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  97 0 0 1.23456790123457
+6  193 2 0
+6  194 1 0
+0
+
+0101000
++2884 0 -2882 0 *
+Ve
+1e-07
+35.1851851851852 -20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  98 0 0 1.23456790123457
+6  195 2 0
+6  196 1 0
+0
+
+0101000
++2882 0 -2880 0 *
+Ve
+1e-07
+35.8024691358025 -19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  99 0 0 1.23456790123457
+6  197 2 0
+6  198 1 0
+0
+
+0101000
++2880 0 -2878 0 *
+Ve
+1e-07
+37.037037037037 -19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  100 0 0 1.23456790123457
+6  199 2 0
+6  200 1 0
+0
+
+0101000
++2878 0 -2876 0 *
+Ve
+1e-07
+37.6543209876543 -20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  101 0 0 1.23456790123457
+6  201 2 0
+6  202 1 0
+0
+
+0101000
++2876 0 -2874 0 *
+Ve
+1e-07
+37.037037037037 -21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  102 0 0 1.23456790123457
+6  203 2 0
+6  204 1 0
+0
+
+0101000
++2874 0 -2872 0 *
+Ve
+1e-07
+38.2716049382716 -21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  103 0 0 1.23456790123456
+6  205 2 0
+6  206 1 0
+0
+
+0101000
++2872 0 -2870 0 *
+Ve
+1e-07
+38.8888888888889 -22.4525104684854 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  104 0 0 1.23456790123457
+6  207 2 0
+6  208 1 0
+0
+
+0101000
++2870 0 -2868 0 *
+Ve
+1e-07
+39.5061728395062 -21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  105 0 0 1.23456790123457
+6  209 2 0
+6  210 1 0
+0
+
+0101000
++2868 0 -2866 0 *
+Ve
+1e-07
+40.7407407407407 -21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  106 0 0 1.23456790123456
+6  211 2 0
+6  212 1 0
+0
+
+0101000
++2866 0 -2864 0 *
+Ve
+1e-07
+40.1234567901235 -20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  107 0 0 1.23456790123457
+6  213 2 0
+6  214 1 0
+0
+
+0101000
++2864 0 -2862 0 *
+Ve
+1e-07
+40.7407407407407 -19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  108 0 0 1.23456790123457
+6  215 2 0
+6  216 1 0
+0
+
+0101000
++2862 0 -2860 0 *
+Ve
+1e-07
+41.9753086419753 -19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  109 0 0 1.23456790123457
+6  217 2 0
+6  218 1 0
+0
+
+0101000
++2860 0 -2858 0 *
+Ve
+1e-07
+42.5925925925926 -20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  110 0 0 1.23456790123457
+6  219 2 0
+6  220 1 0
+0
+
+0101000
++2858 0 -2856 0 *
+Ve
+1e-07
+43.2098765432099 -19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  111 0 0 1.23456790123457
+6  221 2 0
+6  222 1 0
+0
+
+0101000
++2856 0 -2854 0 *
+Ve
+1e-07
+44.4444444444444 -19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  112 0 0 1.23456790123457
+6  223 2 0
+6  224 1 0
+0
+
+0101000
++2854 0 -2852 0 *
+Ve
+1e-07
+45.0617283950617 -20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  113 0 0 1.23456790123457
+6  225 2 0
+6  226 1 0
+0
+
+0101000
++2852 0 -2850 0 *
+Ve
+1e-07
+44.4444444444444 -21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  114 0 0 1.23456790123457
+6  227 2 0
+6  228 1 0
+0
+
+0101000
++2850 0 -2848 0 *
+Ve
+1e-07
+45.679012345679 -21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  115 0 0 1.23456790123457
+6  229 2 0
+6  230 1 0
+0
+
+0101000
++2848 0 -2846 0 *
+Ve
+1e-07
+46.2962962962963 -22.4525104684854 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  116 0 0 1.23456790123457
+6  231 2 0
+6  232 1 0
+0
+
+0101000
++2846 0 -2844 0 *
+Ve
+1e-07
+45.679012345679 -23.5216776336514 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  117 0 0 1.23456790123457
+6  233 2 0
+6  234 1 0
+0
+
+0101000
++2844 0 -2842 0 *
+Ve
+1e-07
+44.4444444444444 -23.5216776336514 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  118 0 0 1.23456790123457
+6  235 2 0
+6  236 1 0
+0
+
+0101000
++2842 0 -2840 0 *
+Ve
+1e-07
+45.0617283950617 -24.5908447988174 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  119 0 0 1.23456790123457
+6  237 2 0
+6  238 1 0
+0
+
+0101000
++2840 0 -2838 0 *
+Ve
+1e-07
+44.4444444444444 -25.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  120 0 0 1.23456790123457
+6  239 2 0
+6  240 1 0
+0
+
+0101000
++2838 0 -2836 0 *
+Ve
+1e-07
+45.679012345679 -25.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  121 0 0 1.23456790123457
+6  241 2 0
+6  242 1 0
+0
+
+0101000
++2836 0 -2834 0 *
+Ve
+1e-07
+46.2962962962963 -26.7291791291493 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  122 0 0 1.23456790123457
+6  243 2 0
+6  244 1 0
+0
+
+0101000
++2834 0 -2832 0 *
+Ve
+1e-07
+46.9135802469136 -25.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  123 0 0 1.23456790123457
+6  245 2 0
+6  246 1 0
+0
+
+0101000
++2832 0 -2830 0 *
+Ve
+1e-07
+48.1481481481481 -25.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  124 0 0 1.23456790123457
+6  247 2 0
+6  248 1 0
+0
+
+0101000
++2830 0 -2828 0 *
+Ve
+1e-07
+48.7654320987654 -26.7291791291493 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  125 0 0 1.23456790123457
+6  249 2 0
+6  250 1 0
+0
+
+0101000
++2828 0 -2826 0 *
+Ve
+1e-07
+48.1481481481482 -27.7983462943153 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  126 0 0 1.23456790123457
+6  251 2 0
+6  252 1 0
+0
+
+0101000
++2826 0 -2824 0 *
+Ve
+1e-07
+49.3827160493827 -27.7983462943153 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  127 0 0 1.23456790123456
+6  253 2 0
+6  254 1 0
+0
+
+0101000
++2824 0 -2822 0 *
+Ve
+1e-07
+50 -28.8675134594813 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  128 0 0 1.23456790123457
+6  255 2 0
+6  256 1 0
+0
+
+0101000
++2822 0 -2820 0 *
+Ve
+1e-07
+50.6172839506173 -27.7983462943153 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  129 0 0 1.23456790123457
+6  257 2 0
+6  258 1 0
+0
+
+0101000
++2820 0 -2818 0 *
+Ve
+1e-07
+51.8518518518518 -27.7983462943153 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  130 0 0 1.23456790123456
+6  259 2 0
+6  260 1 0
+0
+
+0101000
++2818 0 -2816 0 *
+Ve
+1e-07
+51.2345679012346 -26.7291791291493 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  131 0 0 1.23456790123457
+6  261 2 0
+6  262 1 0
+0
+
+0101000
++2816 0 -2814 0 *
+Ve
+1e-07
+51.8518518518519 -25.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  132 0 0 1.23456790123457
+6  263 2 0
+6  264 1 0
+0
+
+0101000
++2814 0 -2812 0 *
+Ve
+1e-07
+53.0864197530864 -25.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  133 0 0 1.23456790123457
+6  265 2 0
+6  266 1 0
+0
+
+0101000
++2812 0 -2810 0 *
+Ve
+1e-07
+53.7037037037037 -26.7291791291493 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  134 0 0 1.23456790123457
+6  267 2 0
+6  268 1 0
+0
+
+0101000
++2810 0 -2808 0 *
+Ve
+1e-07
+54.320987654321 -25.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  135 0 0 1.23456790123457
+6  269 2 0
+6  270 1 0
+0
+
+0101000
++2808 0 -2806 0 *
+Ve
+1e-07
+55.5555555555556 -25.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  136 0 0 1.23456790123457
+6  271 2 0
+6  272 1 0
+0
+
+0101000
++2806 0 -2804 0 *
+Ve
+1e-07
+54.9382716049383 -24.5908447988174 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  137 0 0 1.23456790123457
+6  273 2 0
+6  274 1 0
+0
+
+0101000
++2804 0 -2802 0 *
+Ve
+1e-07
+55.5555555555556 -23.5216776336514 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  138 0 0 1.23456790123457
+6  275 2 0
+6  276 1 0
+0
+
+0101000
++2802 0 -2800 0 *
+Ve
+1e-07
+54.320987654321 -23.5216776336514 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  139 0 0 1.23456790123457
+6  277 2 0
+6  278 1 0
+0
+
+0101000
++2800 0 -2798 0 *
+Ve
+1e-07
+53.7037037037037 -22.4525104684854 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  140 0 0 1.23456790123457
+6  279 2 0
+6  280 1 0
+0
+
+0101000
++2798 0 -2796 0 *
+Ve
+1e-07
+54.320987654321 -21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  141 0 0 1.23456790123457
+6  281 2 0
+6  282 1 0
+0
+
+0101000
++2796 0 -2794 0 *
+Ve
+1e-07
+55.5555555555556 -21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  142 0 0 1.23456790123457
+6  283 2 0
+6  284 1 0
+0
+
+0101000
++2794 0 -2792 0 *
+Ve
+1e-07
+54.9382716049383 -20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  143 0 0 1.23456790123457
+6  285 2 0
+6  286 1 0
+0
+
+0101000
++2792 0 -2790 0 *
+Ve
+1e-07
+55.5555555555556 -19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  144 0 0 1.23456790123457
+6  287 2 0
+6  288 1 0
+0
+
+0101000
++2790 0 -2788 0 *
+Ve
+1e-07
+56.7901234567901 -19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  145 0 0 1.23456790123457
+6  289 2 0
+6  290 1 0
+0
+
+0101000
++2788 0 -2786 0 *
+Ve
+1e-07
+57.4074074074074 -20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  146 0 0 1.23456790123457
+6  291 2 0
+6  292 1 0
+0
+
+0101000
++2786 0 -2784 0 *
+Ve
+1e-07
+58.0246913580247 -19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  147 0 0 1.23456790123457
+6  293 2 0
+6  294 1 0
+0
+
+0101000
++2784 0 -2782 0 *
+Ve
+1e-07
+59.2592592592593 -19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  148 0 0 1.23456790123457
+6  295 2 0
+6  296 1 0
+0
+
+0101000
++2782 0 -2780 0 *
+Ve
+1e-07
+59.8765432098765 -20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  149 0 0 1.23456790123457
+6  297 2 0
+6  298 1 0
+0
+
+0101000
++2780 0 -2778 0 *
+Ve
+1e-07
+59.2592592592593 -21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  150 0 0 1.23456790123457
+6  299 2 0
+6  300 1 0
+0
+
+0101000
++2778 0 -2776 0 *
+Ve
+1e-07
+60.4938271604938 -21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  151 0 0 1.23456790123456
+6  301 2 0
+6  302 1 0
+0
+
+0101000
++2776 0 -2774 0 *
+Ve
+1e-07
+61.1111111111111 -22.4525104684854 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  152 0 0 1.23456790123457
+6  303 2 0
+6  304 1 0
+0
+
+0101000
++2774 0 -2772 0 *
+Ve
+1e-07
+61.7283950617284 -21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  153 0 0 1.23456790123457
+6  305 2 0
+6  306 1 0
+0
+
+0101000
++2772 0 -2770 0 *
+Ve
+1e-07
+62.962962962963 -21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  154 0 0 1.23456790123456
+6  307 2 0
+6  308 1 0
+0
+
+0101000
++2770 0 -2768 0 *
+Ve
+1e-07
+62.3456790123457 -20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  155 0 0 1.23456790123457
+6  309 2 0
+6  310 1 0
+0
+
+0101000
++2768 0 -2766 0 *
+Ve
+1e-07
+62.962962962963 -19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  156 0 0 1.23456790123457
+6  311 2 0
+6  312 1 0
+0
+
+0101000
++2766 0 -2764 0 *
+Ve
+1e-07
+64.1975308641975 -19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  157 0 0 1.23456790123456
+6  313 2 0
+6  314 1 0
+0
+
+0101000
++2764 0 -2762 0 *
+Ve
+1e-07
+64.8148148148148 -20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  158 0 0 1.23456790123457
+6  315 2 0
+6  316 1 0
+0
+
+0101000
++2762 0 -2760 0 *
+Ve
+1e-07
+65.4320987654321 -19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  159 0 0 1.23456790123456
+6  317 2 0
+6  318 1 0
+0
+
+0101000
++2760 0 -2758 0 *
+Ve
+1e-07
+66.6666666666667 -19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  160 0 0 1.23456790123457
+6  319 2 0
+6  320 1 0
+0
+
+0101000
++2758 0 -2756 0 *
+Ve
+1e-07
+66.0493827160494 -18.1758418078216 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  161 0 0 1.23456790123457
+6  321 2 0
+6  322 1 0
+0
+
+0101000
++2756 0 -2754 0 *
+Ve
+1e-07
+66.6666666666667 -17.1066746426556 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  162 0 0 1.23456790123456
+6  323 2 0
+6  324 1 0
+0
+
+0101000
++2754 0 -2752 0 *
+Ve
+1e-07
+65.4320987654321 -17.1066746426556 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  163 0 0 1.23456790123457
+6  325 2 0
+6  326 1 0
+0
+
+0101000
++2752 0 -2750 0 *
+Ve
+1e-07
+64.8148148148148 -16.0375074774896 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  164 0 0 1.23456790123457
+6  327 2 0
+6  328 1 0
+0
+
+0101000
++2750 0 -2748 0 *
+Ve
+1e-07
+65.4320987654321 -14.9683403123236 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  165 0 0 1.23456790123456
+6  329 2 0
+6  330 1 0
+0
+
+0101000
++2748 0 -2746 0 *
+Ve
+1e-07
+66.6666666666667 -14.9683403123236 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  166 0 0 1.23456790123457
+6  331 2 0
+6  332 1 0
+0
+
+0101000
++2746 0 -2744 0 *
+Ve
+1e-07
+66.0493827160494 -13.8991731471577 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  167 0 0 1.23456790123456
+6  333 2 0
+6  334 1 0
+0
+
+0101000
++2744 0 -2742 0 *
+Ve
+1e-07
+66.6666666666667 -12.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  168 0 0 1.23456790123456
+6  335 2 0
+6  336 1 0
+0
+
+0101000
++2742 0 -2740 0 *
+Ve
+1e-07
+65.4320987654321 -12.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  169 0 0 1.23456790123457
+6  337 2 0
+6  338 1 0
+0
+
+0101000
++2740 0 -2738 0 *
+Ve
+1e-07
+64.8148148148148 -11.7608388168257 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  170 0 0 1.23456790123457
+6  339 2 0
+6  340 1 0
+0
+
+0101000
++2738 0 -2736 0 *
+Ve
+1e-07
+64.1975308641975 -12.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  171 0 0 1.23456790123457
+6  341 2 0
+6  342 1 0
+0
+
+0101000
++2736 0 -2734 0 *
+Ve
+1e-07
+62.962962962963 -12.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  172 0 0 1.23456790123456
+6  343 2 0
+6  344 1 0
+0
+
+0101000
++2734 0 -2732 0 *
+Ve
+1e-07
+62.3456790123457 -11.7608388168257 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  173 0 0 1.23456790123457
+6  345 2 0
+6  346 1 0
+0
+
+0101000
++2732 0 -2730 0 *
+Ve
+1e-07
+62.962962962963 -10.6916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  174 0 0 1.23456790123456
+6  347 2 0
+6  348 1 0
+0
+
+0101000
++2730 0 -2728 0 *
+Ve
+1e-07
+61.7283950617284 -10.6916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  175 0 0 1.23456790123456
+6  349 2 0
+6  350 1 0
+0
+
+0101000
++2728 0 -2726 0 *
+Ve
+1e-07
+61.1111111111111 -9.62250448649376 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  176 0 0 1.23456790123457
+6  351 2 0
+6  352 1 0
+0
+
+0101000
++2726 0 -2724 0 *
+Ve
+1e-07
+61.7283950617284 -8.55333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  177 0 0 1.23456790123457
+6  353 2 0
+6  354 1 0
+0
+
+0101000
++2724 0 -2722 0 *
+Ve
+1e-07
+62.962962962963 -8.55333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  178 0 0 1.23456790123456
+6  355 2 0
+6  356 1 0
+0
+
+0101000
++2722 0 -2720 0 *
+Ve
+1e-07
+62.3456790123457 -7.48417015616182 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  179 0 0 1.23456790123457
+6  357 2 0
+6  358 1 0
+0
+
+0101000
++2720 0 -2718 0 *
+Ve
+1e-07
+62.962962962963 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  180 0 0 1.23456790123457
+6  359 2 0
+6  360 1 0
+0
+
+0101000
++2718 0 -2716 0 *
+Ve
+1e-07
+64.1975308641975 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  181 0 0 1.23456790123456
+6  361 2 0
+6  362 1 0
+0
+
+0101000
++2716 0 -2714 0 *
+Ve
+1e-07
+64.8148148148148 -7.48417015616181 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  182 0 0 1.23456790123457
+6  363 2 0
+6  364 1 0
+0
+
+0101000
++2714 0 -2712 0 *
+Ve
+1e-07
+65.4320987654321 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  183 0 0 1.23456790123456
+6  365 2 0
+6  366 1 0
+0
+
+0101000
++2712 0 -2710 0 *
+Ve
+1e-07
+66.6666666666667 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  184 0 0 1.23456790123457
+6  367 2 0
+6  368 1 0
+0
+
+0101000
++2710 0 -2708 0 *
+Ve
+1e-07
+66.0493827160494 -5.34583582582987 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  185 0 0 1.23456790123456
+6  369 2 0
+6  370 1 0
+0
+
+0101000
++2708 0 -2706 0 *
+Ve
+1e-07
+66.6666666666667 -4.2766686606639 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  186 0 0 1.23456790123456
+6  371 2 0
+6  372 1 0
+0
+
+0101000
++2706 0 -2704 0 *
+Ve
+1e-07
+65.4320987654321 -4.2766686606639 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  187 0 0 1.23456790123457
+6  373 2 0
+6  374 1 0
+0
+
+0101000
++2704 0 -2702 0 *
+Ve
+1e-07
+64.8148148148148 -3.20750149549792 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  188 0 0 1.23456790123457
+6  375 2 0
+6  376 1 0
+0
+
+0101000
++2702 0 -2700 0 *
+Ve
+1e-07
+65.4320987654321 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  189 0 0 1.23456790123456
+6  377 2 0
+6  378 1 0
+0
+
+0101000
++2700 0 -2698 0 *
+Ve
+1e-07
+66.6666666666667 -2.13833433033194 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  190 0 0 1.23456790123457
+6  379 2 0
+6  380 1 0
+0
+
+0101000
++2698 0 -2696 0 *
+Ve
+1e-07
+66.0493827160494 -1.06916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  191 0 0 1.23456790123456
+6  381 2 0
+6  382 1 0
+0
+
+0101000
++2696 0 -2694 0 *
+Ve
+1e-07
+66.6666666666667 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  192 0 0 1.23456790123456
+6  383 2 0
+6  384 1 0
+0
+
+0101000
++2694 0 -2692 0 *
+Ve
+1e-07
+67.9012345679012 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  193 0 0 1.23456790123457
+6  385 2 0
+6  386 1 0
+0
+
+0101000
++2692 0 -2690 0 *
+Ve
+1e-07
+68.5185185185185 -1.06916716516598 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  194 0 0 1.23456790123457
+6  387 2 0
+6  388 1 0
+0
+
+0101000
++2690 0 -2688 0 *
+Ve
+1e-07
+69.1358024691358 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  195 0 0 1.23456790123457
+6  389 2 0
+6  390 1 0
+0
+
+0101000
++2688 0 -2686 0 *
+Ve
+1e-07
+70.3703703703704 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  196 0 0 1.23456790123457
+6  391 2 0
+6  392 1 0
+0
+
+0101000
++2686 0 -2684 0 *
+Ve
+1e-07
+70.9876543209877 -1.06916716516598 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  197 0 0 1.23456790123457
+6  393 2 0
+6  394 1 0
+0
+
+0101000
++2684 0 -2682 0 *
+Ve
+1e-07
+70.3703703703704 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  198 0 0 1.23456790123456
+6  395 2 0
+6  396 1 0
+0
+
+0101000
++2682 0 -2680 0 *
+Ve
+1e-07
+71.604938271605 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  199 0 0 1.23456790123457
+6  397 2 0
+6  398 1 0
+0
+
+0101000
++2680 0 -2678 0 *
+Ve
+1e-07
+72.2222222222222 -3.20750149549793 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  200 0 0 1.23456790123457
+6  399 2 0
+6  400 1 0
+0
+
+0101000
++2678 0 -2676 0 *
+Ve
+1e-07
+72.8395061728395 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  201 0 0 1.23456790123457
+6  401 2 0
+6  402 1 0
+0
+
+0101000
++2676 0 -2674 0 *
+Ve
+1e-07
+74.0740740740741 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  202 0 0 1.23456790123457
+6  403 2 0
+6  404 1 0
+0
+
+0101000
++2674 0 -2672 0 *
+Ve
+1e-07
+73.4567901234568 -1.06916716516598 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  203 0 0 1.23456790123456
+6  405 2 0
+6  406 1 0
+0
+
+0101000
++2672 0 -2670 0 *
+Ve
+1e-07
+74.0740740740741 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  204 0 0 1.23456790123457
+6  407 2 0
+6  408 1 0
+0
+
+0101000
++2670 0 -2668 0 *
+Ve
+1e-07
+75.3086419753086 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  205 0 0 1.23456790123457
+6  409 2 0
+6  410 1 0
+0
+
+0101000
++2668 0 -2666 0 *
+Ve
+1e-07
+75.9259259259259 -1.06916716516598 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  206 0 0 1.23456790123457
+6  411 2 0
+6  412 1 0
+0
+
+0101000
++2666 0 -2664 0 *
+Ve
+1e-07
+76.5432098765432 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  207 0 0 1.23456790123457
+6  413 2 0
+6  414 1 0
+0
+
+0101000
++2664 0 -2662 0 *
+Ve
+1e-07
+77.7777777777778 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  208 0 0 1.23456790123457
+6  415 2 0
+6  416 1 0
+0
+
+0101000
++2662 0 -2660 0 *
+Ve
+1e-07
+78.3950617283951 -1.06916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  209 0 0 1.23456790123457
+6  417 2 0
+6  418 1 0
+0
+
+0101000
++2660 0 -2658 0 *
+Ve
+1e-07
+77.7777777777778 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  210 0 0 1.23456790123456
+6  419 2 0
+6  420 1 0
+0
+
+0101000
++2658 0 -2656 0 *
+Ve
+1e-07
+79.0123456790124 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  211 0 0 1.23456790123457
+6  421 2 0
+6  422 1 0
+0
+
+0101000
++2656 0 -2654 0 *
+Ve
+1e-07
+79.6296296296296 -3.20750149549792 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  212 0 0 1.23456790123457
+6  423 2 0
+6  424 1 0
+0
+
+0101000
++2654 0 -2652 0 *
+Ve
+1e-07
+79.0123456790124 -4.2766686606639 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  213 0 0 1.23456790123457
+6  425 2 0
+6  426 1 0
+0
+
+0101000
++2652 0 -2650 0 *
+Ve
+1e-07
+77.7777777777778 -4.2766686606639 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  214 0 0 1.23456790123456
+6  427 2 0
+6  428 1 0
+0
+
+0101000
++2650 0 -2648 0 *
+Ve
+1e-07
+78.3950617283951 -5.34583582582987 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  215 0 0 1.23456790123456
+6  429 2 0
+6  430 1 0
+0
+
+0101000
++2648 0 -2646 0 *
+Ve
+1e-07
+77.7777777777778 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  216 0 0 1.23456790123456
+6  431 2 0
+6  432 1 0
+0
+
+0101000
++2646 0 -2644 0 *
+Ve
+1e-07
+79.0123456790124 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  217 0 0 1.23456790123457
+6  433 2 0
+6  434 1 0
+0
+
+0101000
++2644 0 -2642 0 *
+Ve
+1e-07
+79.6296296296296 -7.48417015616182 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  218 0 0 1.23456790123457
+6  435 2 0
+6  436 1 0
+0
+
+0101000
++2642 0 -2640 0 *
+Ve
+1e-07
+80.2469135802469 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  219 0 0 1.23456790123457
+6  437 2 0
+6  438 1 0
+0
+
+0101000
++2640 0 -2638 0 *
+Ve
+1e-07
+81.4814814814815 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  220 0 0 1.23456790123457
+6  439 2 0
+6  440 1 0
+0
+
+0101000
++2638 0 -2636 0 *
+Ve
+1e-07
+82.0987654320988 -7.48417015616182 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  221 0 0 1.23456790123456
+6  441 2 0
+6  442 1 0
+0
+
+0101000
++2636 0 -2634 0 *
+Ve
+1e-07
+81.4814814814815 -8.55333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  222 0 0 1.23456790123456
+6  443 2 0
+6  444 1 0
+0
+
+0101000
++2634 0 -2632 0 *
+Ve
+1e-07
+82.7160493827161 -8.55333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  223 0 0 1.23456790123457
+6  445 2 0
+6  446 1 0
+0
+
+0101000
++2632 0 -2630 0 *
+Ve
+1e-07
+83.3333333333333 -9.62250448649377 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  224 0 0 1.23456790123456
+6  447 2 0
+6  448 1 0
+0
+
+0101000
++2630 0 -2628 0 *
+Ve
+1e-07
+83.9506172839506 -8.55333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  225 0 0 1.23456790123456
+6  449 2 0
+6  450 1 0
+0
+
+0101000
++2628 0 -2626 0 *
+Ve
+1e-07
+85.1851851851852 -8.55333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  226 0 0 1.23456790123457
+6  451 2 0
+6  452 1 0
+0
+
+0101000
++2626 0 -2624 0 *
+Ve
+1e-07
+84.5679012345679 -7.48417015616182 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  227 0 0 1.23456790123456
+6  453 2 0
+6  454 1 0
+0
+
+0101000
++2624 0 -2622 0 *
+Ve
+1e-07
+85.1851851851852 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  228 0 0 1.23456790123456
+6  455 2 0
+6  456 1 0
+0
+
+0101000
++2622 0 -2620 0 *
+Ve
+1e-07
+86.4197530864198 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  229 0 0 1.23456790123457
+6  457 2 0
+6  458 1 0
+0
+
+0101000
++2620 0 -2618 0 *
+Ve
+1e-07
+87.037037037037 -7.48417015616182 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  230 0 0 1.23456790123457
+6  459 2 0
+6  460 1 0
+0
+
+0101000
++2618 0 -2616 0 *
+Ve
+1e-07
+87.6543209876543 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  231 0 0 1.23456790123457
+6  461 2 0
+6  462 1 0
+0
+
+0101000
++2616 0 -2614 0 *
+Ve
+1e-07
+88.8888888888889 -6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  232 0 0 1.23456790123457
+6  463 2 0
+6  464 1 0
+0
+
+0101000
++2614 0 -2612 0 *
+Ve
+1e-07
+88.2716049382716 -5.34583582582987 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  233 0 0 1.23456790123456
+6  465 2 0
+6  466 1 0
+0
+
+0101000
++2612 0 -2610 0 *
+Ve
+1e-07
+88.8888888888889 -4.2766686606639 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  234 0 0 1.23456790123456
+6  467 2 0
+6  468 1 0
+0
+
+0101000
++2610 0 -2608 0 *
+Ve
+1e-07
+87.6543209876543 -4.27666866066389 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  235 0 0 1.23456790123457
+6  469 2 0
+6  470 1 0
+0
+
+0101000
++2608 0 -2606 0 *
+Ve
+1e-07
+87.037037037037 -3.20750149549792 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  236 0 0 1.23456790123456
+6  471 2 0
+6  472 1 0
+0
+
+0101000
++2606 0 -2604 0 *
+Ve
+1e-07
+87.6543209876543 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  237 0 0 1.23456790123457
+6  473 2 0
+6  474 1 0
+0
+
+0101000
++2604 0 -2602 0 *
+Ve
+1e-07
+88.8888888888889 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  238 0 0 1.23456790123457
+6  475 2 0
+6  476 1 0
+0
+
+0101000
++2602 0 -2600 0 *
+Ve
+1e-07
+88.2716049382716 -1.06916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  239 0 0 1.23456790123456
+6  477 2 0
+6  478 1 0
+0
+
+0101000
++2600 0 -2598 0 *
+Ve
+1e-07
+88.8888888888889 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  240 0 0 1.23456790123457
+6  479 2 0
+6  480 1 0
+0
+
+0101000
++2598 0 -2596 0 *
+Ve
+1e-07
+90.1234567901235 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  241 0 0 1.23456790123457
+6  481 2 0
+6  482 1 0
+0
+
+0101000
++2596 0 -2594 0 *
+Ve
+1e-07
+90.7407407407407 -1.06916716516598 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  242 0 0 1.23456790123457
+6  483 2 0
+6  484 1 0
+0
+
+0101000
++2594 0 -2592 0 *
+Ve
+1e-07
+91.358024691358 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  243 0 0 1.23456790123457
+6  485 2 0
+6  486 1 0
+0
+
+0101000
++2592 0 -2590 0 *
+Ve
+1e-07
+92.5925925925926 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  244 0 0 1.23456790123457
+6  487 2 0
+6  488 1 0
+0
+
+0101000
++2590 0 -2588 0 *
+Ve
+1e-07
+93.2098765432099 -1.06916716516598 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  245 0 0 1.23456790123457
+6  489 2 0
+6  490 1 0
+0
+
+0101000
++2588 0 -2586 0 *
+Ve
+1e-07
+92.5925925925926 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  246 0 0 1.23456790123456
+6  491 2 0
+6  492 1 0
+0
+
+0101000
++2586 0 -2584 0 *
+Ve
+1e-07
+93.8271604938272 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  247 0 0 1.23456790123457
+6  493 2 0
+6  494 1 0
+0
+
+0101000
++2584 0 -2582 0 *
+Ve
+1e-07
+94.4444444444444 -3.20750149549793 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  248 0 0 1.23456790123457
+6  495 2 0
+6  496 1 0
+0
+
+0101000
++2582 0 -2580 0 *
+Ve
+1e-07
+95.0617283950617 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  249 0 0 1.23456790123457
+6  497 2 0
+6  498 1 0
+0
+
+0101000
++2580 0 -2578 0 *
+Ve
+1e-07
+96.2962962962963 -2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  250 0 0 1.23456790123457
+6  499 2 0
+6  500 1 0
+0
+
+0101000
++2578 0 -2576 0 *
+Ve
+1e-07
+95.679012345679 -1.06916716516598 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  251 0 0 1.23456790123456
+6  501 2 0
+6  502 1 0
+0
+
+0101000
++2576 0 -2574 0 *
+Ve
+1e-07
+96.2962962962963 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  252 0 0 1.23456790123457
+6  503 2 0
+6  504 1 0
+0
+
+0101000
++2574 0 -2572 0 *
+Ve
+1e-07
+97.5308641975309 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  253 0 0 1.23456790123457
+6  505 2 0
+6  506 1 0
+0
+
+0101000
++2572 0 -2570 0 *
+Ve
+1e-07
+98.1481481481482 -1.06916716516598 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  254 0 0 1.23456790123457
+6  507 2 0
+6  508 1 0
+0
+
+0101000
++2570 0 -2568 0 *
+Ve
+1e-07
+98.7654320987654 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  255 0 0 1.23456790123457
+6  509 2 0
+6  510 1 0
+0
+
+0101000
++2568 0 -2566 0 *
+Ve
+1e-07
+100 0 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  256 0 0 1.23456790123457
+6  511 2 0
+6  512 1 0
+0
+
+0101000
++2566 0 -2564 0 *
+Ve
+1e-07
+99.3827160493827 1.06916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  257 0 0 1.23456790123456
+6  513 2 0
+6  514 1 0
+0
+
+0101000
++2564 0 -2562 0 *
+Ve
+1e-07
+100 2.13833433033194 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  258 0 0 1.23456790123456
+6  515 2 0
+6  516 1 0
+0
+
+0101000
++2562 0 -2560 0 *
+Ve
+1e-07
+98.7654320987654 2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  259 0 0 1.23456790123457
+6  517 2 0
+6  518 1 0
+0
+
+0101000
++2560 0 -2558 0 *
+Ve
+1e-07
+98.1481481481482 3.20750149549792 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  260 0 0 1.23456790123456
+6  519 2 0
+6  520 1 0
+0
+
+0101000
++2558 0 -2556 0 *
+Ve
+1e-07
+98.7654320987654 4.27666866066389 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  261 0 0 1.23456790123456
+6  521 2 0
+6  522 1 0
+0
+
+0101000
++2556 0 -2554 0 *
+Ve
+1e-07
+100 4.2766686606639 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  262 0 0 1.23456790123457
+6  523 2 0
+6  524 1 0
+0
+
+0101000
++2554 0 -2552 0 *
+Ve
+1e-07
+99.3827160493827 5.34583582582987 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  263 0 0 1.23456790123456
+6  525 2 0
+6  526 1 0
+0
+
+0101000
++2552 0 -2550 0 *
+Ve
+1e-07
+100 6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  264 0 0 1.23456790123456
+6  527 2 0
+6  528 1 0
+0
+
+0101000
++2550 0 -2548 0 *
+Ve
+1e-07
+98.7654320987654 6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  265 0 0 1.23456790123457
+6  529 2 0
+6  530 1 0
+0
+
+0101000
++2548 0 -2546 0 *
+Ve
+1e-07
+98.1481481481482 7.48417015616182 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  266 0 0 1.23456790123457
+6  531 2 0
+6  532 1 0
+0
+
+0101000
++2546 0 -2544 0 *
+Ve
+1e-07
+97.5308641975309 6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  267 0 0 1.23456790123457
+6  533 2 0
+6  534 1 0
+0
+
+0101000
++2544 0 -2542 0 *
+Ve
+1e-07
+96.2962962962963 6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  268 0 0 1.23456790123457
+6  535 2 0
+6  536 1 0
+0
+
+0101000
++2542 0 -2540 0 *
+Ve
+1e-07
+95.679012345679 7.48417015616181 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  269 0 0 1.23456790123456
+6  537 2 0
+6  538 1 0
+0
+
+0101000
++2540 0 -2538 0 *
+Ve
+1e-07
+96.2962962962963 8.55333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  270 0 0 1.23456790123456
+6  539 2 0
+6  540 1 0
+0
+
+0101000
++2538 0 -2536 0 *
+Ve
+1e-07
+95.0617283950617 8.55333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  271 0 0 1.23456790123457
+6  541 2 0
+6  542 1 0
+0
+
+0101000
++2536 0 -2534 0 *
+Ve
+1e-07
+94.4444444444444 9.62250448649376 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  272 0 0 1.23456790123456
+6  543 2 0
+6  544 1 0
+0
+
+0101000
++2534 0 -2532 0 *
+Ve
+1e-07
+95.0617283950617 10.6916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  273 0 0 1.23456790123456
+6  545 2 0
+6  546 1 0
+0
+
+0101000
++2532 0 -2530 0 *
+Ve
+1e-07
+96.2962962962963 10.6916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  274 0 0 1.23456790123457
+6  547 2 0
+6  548 1 0
+0
+
+0101000
++2530 0 -2528 0 *
+Ve
+1e-07
+95.679012345679 11.7608388168257 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  275 0 0 1.23456790123456
+6  549 2 0
+6  550 1 0
+0
+
+0101000
++2528 0 -2526 0 *
+Ve
+1e-07
+96.2962962962963 12.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  276 0 0 1.23456790123456
+6  551 2 0
+6  552 1 0
+0
+
+0101000
++2526 0 -2524 0 *
+Ve
+1e-07
+97.5308641975309 12.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  277 0 0 1.23456790123457
+6  553 2 0
+6  554 1 0
+0
+
+0101000
++2524 0 -2522 0 *
+Ve
+1e-07
+98.1481481481482 11.7608388168257 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  278 0 0 1.23456790123457
+6  555 2 0
+6  556 1 0
+0
+
+0101000
++2522 0 -2520 0 *
+Ve
+1e-07
+98.7654320987654 12.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  279 0 0 1.23456790123457
+6  557 2 0
+6  558 1 0
+0
+
+0101000
++2520 0 -2518 0 *
+Ve
+1e-07
+100 12.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  280 0 0 1.23456790123457
+6  559 2 0
+6  560 1 0
+0
+
+0101000
++2518 0 -2516 0 *
+Ve
+1e-07
+99.3827160493827 13.8991731471577 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  281 0 0 1.23456790123457
+6  561 2 0
+6  562 1 0
+0
+
+0101000
++2516 0 -2514 0 *
+Ve
+1e-07
+100 14.9683403123236 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  282 0 0 1.23456790123457
+6  563 2 0
+6  564 1 0
+0
+
+0101000
++2514 0 -2512 0 *
+Ve
+1e-07
+98.7654320987654 14.9683403123236 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  283 0 0 1.23456790123457
+6  565 2 0
+6  566 1 0
+0
+
+0101000
++2512 0 -2510 0 *
+Ve
+1e-07
+98.1481481481481 16.0375074774896 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  284 0 0 1.23456790123457
+6  567 2 0
+6  568 1 0
+0
+
+0101000
++2510 0 -2508 0 *
+Ve
+1e-07
+98.7654320987654 17.1066746426556 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  285 0 0 1.23456790123457
+6  569 2 0
+6  570 1 0
+0
+
+0101000
++2508 0 -2506 0 *
+Ve
+1e-07
+100 17.1066746426556 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  286 0 0 1.23456790123457
+6  571 2 0
+6  572 1 0
+0
+
+0101000
++2506 0 -2504 0 *
+Ve
+1e-07
+99.3827160493827 18.1758418078216 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  287 0 0 1.23456790123456
+6  573 2 0
+6  574 1 0
+0
+
+0101000
++2504 0 -2502 0 *
+Ve
+1e-07
+100 19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  288 0 0 1.23456790123457
+6  575 2 0
+6  576 1 0
+0
+
+0101000
++2502 0 -2500 0 *
+Ve
+1e-07
+98.7654320987654 19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  289 0 0 1.23456790123457
+6  577 2 0
+6  578 1 0
+0
+
+0101000
++2500 0 -2498 0 *
+Ve
+1e-07
+98.1481481481481 20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  290 0 0 1.23456790123457
+6  579 2 0
+6  580 1 0
+0
+
+0101000
++2498 0 -2496 0 *
+Ve
+1e-07
+97.5308641975309 19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  291 0 0 1.23456790123457
+6  581 2 0
+6  582 1 0
+0
+
+0101000
++2496 0 -2494 0 *
+Ve
+1e-07
+96.2962962962963 19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  292 0 0 1.23456790123457
+6  583 2 0
+6  584 1 0
+0
+
+0101000
++2494 0 -2492 0 *
+Ve
+1e-07
+95.679012345679 20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  293 0 0 1.23456790123457
+6  585 2 0
+6  586 1 0
+0
+
+0101000
++2492 0 -2490 0 *
+Ve
+1e-07
+96.2962962962963 21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  294 0 0 1.23456790123457
+6  587 2 0
+6  588 1 0
+0
+
+0101000
++2490 0 -2488 0 *
+Ve
+1e-07
+95.0617283950617 21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  295 0 0 1.23456790123456
+6  589 2 0
+6  590 1 0
+0
+
+0101000
++2488 0 -2486 0 *
+Ve
+1e-07
+94.4444444444444 22.4525104684854 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  296 0 0 1.23456790123457
+6  591 2 0
+6  592 1 0
+0
+
+0101000
++2486 0 -2484 0 *
+Ve
+1e-07
+93.8271604938272 21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  297 0 0 1.23456790123456
+6  593 2 0
+6  594 1 0
+0
+
+0101000
++2484 0 -2482 0 *
+Ve
+1e-07
+92.5925925925926 21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  298 0 0 1.23456790123457
+6  595 2 0
+6  596 1 0
+0
+
+0101000
++2482 0 -2480 0 *
+Ve
+1e-07
+93.2098765432099 20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  299 0 0 1.23456790123456
+6  597 2 0
+6  598 1 0
+0
+
+0101000
++2480 0 -2478 0 *
+Ve
+1e-07
+92.5925925925926 19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  300 0 0 1.23456790123456
+6  599 2 0
+6  600 1 0
+0
+
+0101000
++2478 0 -2476 0 *
+Ve
+1e-07
+91.358024691358 19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  301 0 0 1.23456790123457
+6  601 2 0
+6  602 1 0
+0
+
+0101000
++2476 0 -2474 0 *
+Ve
+1e-07
+90.7407407407407 20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  302 0 0 1.23456790123457
+6  603 2 0
+6  604 1 0
+0
+
+0101000
++2474 0 -2472 0 *
+Ve
+1e-07
+90.1234567901235 19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  303 0 0 1.23456790123457
+6  605 2 0
+6  606 1 0
+0
+
+0101000
++2472 0 -2470 0 *
+Ve
+1e-07
+88.8888888888889 19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  304 0 0 1.23456790123457
+6  607 2 0
+6  608 1 0
+0
+
+0101000
++2470 0 -2468 0 *
+Ve
+1e-07
+88.2716049382716 20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  305 0 0 1.23456790123457
+6  609 2 0
+6  610 1 0
+0
+
+0101000
++2468 0 -2466 0 *
+Ve
+1e-07
+88.8888888888889 21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  306 0 0 1.23456790123456
+6  611 2 0
+6  612 1 0
+0
+
+0101000
++2466 0 -2464 0 *
+Ve
+1e-07
+87.6543209876543 21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  307 0 0 1.23456790123457
+6  613 2 0
+6  614 1 0
+0
+
+0101000
++2464 0 -2462 0 *
+Ve
+1e-07
+87.037037037037 22.4525104684854 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  308 0 0 1.23456790123457
+6  615 2 0
+6  616 1 0
+0
+
+0101000
++2462 0 -2460 0 *
+Ve
+1e-07
+87.6543209876543 23.5216776336514 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  309 0 0 1.23456790123456
+6  617 2 0
+6  618 1 0
+0
+
+0101000
++2460 0 -2458 0 *
+Ve
+1e-07
+88.8888888888889 23.5216776336514 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  310 0 0 1.23456790123457
+6  619 2 0
+6  620 1 0
+0
+
+0101000
++2458 0 -2456 0 *
+Ve
+1e-07
+88.2716049382716 24.5908447988174 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  311 0 0 1.23456790123456
+6  621 2 0
+6  622 1 0
+0
+
+0101000
++2456 0 -2454 0 *
+Ve
+1e-07
+88.8888888888889 25.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  312 0 0 1.23456790123456
+6  623 2 0
+6  624 1 0
+0
+
+0101000
++2454 0 -2452 0 *
+Ve
+1e-07
+87.6543209876543 25.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  313 0 0 1.23456790123457
+6  625 2 0
+6  626 1 0
+0
+
+0101000
++2452 0 -2450 0 *
+Ve
+1e-07
+87.037037037037 26.7291791291493 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  314 0 0 1.23456790123457
+6  627 2 0
+6  628 1 0
+0
+
+0101000
++2450 0 -2448 0 *
+Ve
+1e-07
+86.4197530864197 25.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  315 0 0 1.23456790123457
+6  629 2 0
+6  630 1 0
+0
+
+0101000
++2448 0 -2446 0 *
+Ve
+1e-07
+85.1851851851852 25.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  316 0 0 1.23456790123457
+6  631 2 0
+6  632 1 0
+0
+
+0101000
++2446 0 -2444 0 *
+Ve
+1e-07
+84.5679012345679 26.7291791291493 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  317 0 0 1.23456790123457
+6  633 2 0
+6  634 1 0
+0
+
+0101000
++2444 0 -2442 0 *
+Ve
+1e-07
+85.1851851851852 27.7983462943153 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  318 0 0 1.23456790123456
+6  635 2 0
+6  636 1 0
+0
+
+0101000
++2442 0 -2440 0 *
+Ve
+1e-07
+83.9506172839506 27.7983462943153 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  319 0 0 1.23456790123457
+6  637 2 0
+6  638 1 0
+0
+
+0101000
++2440 0 -2438 0 *
+Ve
+1e-07
+83.3333333333333 28.8675134594813 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  320 0 0 1.23456790123457
+6  639 2 0
+6  640 1 0
+0
+
+0101000
++2438 0 -2436 0 *
+Ve
+1e-07
+83.9506172839506 29.9366806246473 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  321 0 0 1.23456790123457
+6  641 2 0
+6  642 1 0
+0
+
+0101000
++2436 0 -2434 0 *
+Ve
+1e-07
+85.1851851851852 29.9366806246473 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  322 0 0 1.23456790123457
+6  643 2 0
+6  644 1 0
+0
+
+0101000
++2434 0 -2432 0 *
+Ve
+1e-07
+84.5679012345679 31.0058477898132 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  323 0 0 1.23456790123456
+6  645 2 0
+6  646 1 0
+0
+
+0101000
++2432 0 -2430 0 *
+Ve
+1e-07
+85.1851851851852 32.0750149549792 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  324 0 0 1.23456790123457
+6  647 2 0
+6  648 1 0
+0
+
+0101000
++2430 0 -2428 0 *
+Ve
+1e-07
+86.4197530864197 32.0750149549792 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  325 0 0 1.23456790123457
+6  649 2 0
+6  650 1 0
+0
+
+0101000
++2428 0 -2426 0 *
+Ve
+1e-07
+87.037037037037 31.0058477898132 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  326 0 0 1.23456790123457
+6  651 2 0
+6  652 1 0
+0
+
+0101000
++2426 0 -2424 0 *
+Ve
+1e-07
+87.6543209876543 32.0750149549792 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  327 0 0 1.23456790123457
+6  653 2 0
+6  654 1 0
+0
+
+0101000
++2424 0 -2422 0 *
+Ve
+1e-07
+88.8888888888889 32.0750149549792 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  328 0 0 1.23456790123457
+6  655 2 0
+6  656 1 0
+0
+
+0101000
++2422 0 -2420 0 *
+Ve
+1e-07
+88.2716049382716 33.1441821201452 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  329 0 0 1.23456790123456
+6  657 2 0
+6  658 1 0
+0
+
+0101000
++2420 0 -2418 0 *
+Ve
+1e-07
+88.8888888888889 34.2133492853112 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  330 0 0 1.23456790123456
+6  659 2 0
+6  660 1 0
+0
+
+0101000
++2418 0 -2416 0 *
+Ve
+1e-07
+87.6543209876543 34.2133492853112 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  331 0 0 1.23456790123457
+6  661 2 0
+6  662 1 0
+0
+
+0101000
++2416 0 -2414 0 *
+Ve
+1e-07
+87.037037037037 35.2825164504771 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  332 0 0 1.23456790123456
+6  663 2 0
+6  664 1 0
+0
+
+0101000
++2414 0 -2412 0 *
+Ve
+1e-07
+87.6543209876543 36.3516836156431 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  333 0 0 1.23456790123456
+6  665 2 0
+6  666 1 0
+0
+
+0101000
++2412 0 -2410 0 *
+Ve
+1e-07
+88.8888888888889 36.3516836156431 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  334 0 0 1.23456790123457
+6  667 2 0
+6  668 1 0
+0
+
+0101000
++2410 0 -2408 0 *
+Ve
+1e-07
+88.2716049382716 37.4208507808091 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  335 0 0 1.23456790123456
+6  669 2 0
+6  670 1 0
+0
+
+0101000
++2408 0 -2406 0 *
+Ve
+1e-07
+88.8888888888889 38.490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  336 0 0 1.23456790123456
+6  671 2 0
+6  672 1 0
+0
+
+0101000
++2406 0 -2404 0 *
+Ve
+1e-07
+90.1234567901235 38.490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  337 0 0 1.23456790123457
+6  673 2 0
+6  674 1 0
+0
+
+0101000
++2404 0 -2402 0 *
+Ve
+1e-07
+90.7407407407407 37.4208507808091 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  338 0 0 1.23456790123456
+6  675 2 0
+6  676 1 0
+0
+
+0101000
++2402 0 -2400 0 *
+Ve
+1e-07
+91.358024691358 38.490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  339 0 0 1.23456790123456
+6  677 2 0
+6  678 1 0
+0
+
+0101000
++2400 0 -2398 0 *
+Ve
+1e-07
+92.5925925925926 38.490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  340 0 0 1.23456790123457
+6  679 2 0
+6  680 1 0
+0
+
+0101000
++2398 0 -2396 0 *
+Ve
+1e-07
+93.2098765432099 37.4208507808091 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  341 0 0 1.23456790123456
+6  681 2 0
+6  682 1 0
+0
+
+0101000
++2396 0 -2394 0 *
+Ve
+1e-07
+92.5925925925926 36.3516836156431 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  342 0 0 1.23456790123456
+6  683 2 0
+6  684 1 0
+0
+
+0101000
++2394 0 -2392 0 *
+Ve
+1e-07
+93.8271604938272 36.3516836156431 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  343 0 0 1.23456790123457
+6  685 2 0
+6  686 1 0
+0
+
+0101000
++2392 0 -2390 0 *
+Ve
+1e-07
+94.4444444444444 35.2825164504771 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  344 0 0 1.23456790123456
+6  687 2 0
+6  688 1 0
+0
+
+0101000
++2390 0 -2388 0 *
+Ve
+1e-07
+95.0617283950617 36.3516836156431 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  345 0 0 1.23456790123457
+6  689 2 0
+6  690 1 0
+0
+
+0101000
++2388 0 -2386 0 *
+Ve
+1e-07
+96.2962962962963 36.3516836156431 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  346 0 0 1.23456790123456
+6  691 2 0
+6  692 1 0
+0
+
+0101000
++2386 0 -2384 0 *
+Ve
+1e-07
+95.679012345679 37.4208507808091 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  347 0 0 1.23456790123456
+6  693 2 0
+6  694 1 0
+0
+
+0101000
++2384 0 -2382 0 *
+Ve
+1e-07
+96.2962962962963 38.490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  348 0 0 1.23456790123457
+6  695 2 0
+6  696 1 0
+0
+
+0101000
++2382 0 -2380 0 *
+Ve
+1e-07
+97.5308641975309 38.490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  349 0 0 1.23456790123457
+6  697 2 0
+6  698 1 0
+0
+
+0101000
++2380 0 -2378 0 *
+Ve
+1e-07
+98.1481481481481 37.4208507808091 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  350 0 0 1.23456790123456
+6  699 2 0
+6  700 1 0
+0
+
+0101000
++2378 0 -2376 0 *
+Ve
+1e-07
+98.7654320987654 38.490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  351 0 0 1.23456790123456
+6  701 2 0
+6  702 1 0
+0
+
+0101000
++2376 0 -2374 0 *
+Ve
+1e-07
+100 38.490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  352 0 0 1.23456790123457
+6  703 2 0
+6  704 1 0
+0
+
+0101000
++2374 0 -2372 0 *
+Ve
+1e-07
+99.3827160493827 39.559185111141 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  353 0 0 1.23456790123456
+6  705 2 0
+6  706 1 0
+0
+
+0101000
++2372 0 -2370 0 *
+Ve
+1e-07
+100 40.628352276307 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  354 0 0 1.23456790123456
+6  707 2 0
+6  708 1 0
+0
+
+0101000
++2370 0 -2368 0 *
+Ve
+1e-07
+98.7654320987654 40.628352276307 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  355 0 0 1.23456790123457
+6  709 2 0
+6  710 1 0
+0
+
+0101000
++2368 0 -2366 0 *
+Ve
+1e-07
+98.1481481481481 41.697519441473 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  356 0 0 1.23456790123456
+6  711 2 0
+6  712 1 0
+0
+
+0101000
++2366 0 -2364 0 *
+Ve
+1e-07
+98.7654320987654 42.7666866066389 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  357 0 0 1.23456790123457
+6  713 2 0
+6  714 1 0
+0
+
+0101000
++2364 0 -2362 0 *
+Ve
+1e-07
+100 42.7666866066389 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  358 0 0 1.23456790123457
+6  715 2 0
+6  716 1 0
+0
+
+0101000
++2362 0 -2360 0 *
+Ve
+1e-07
+99.3827160493827 43.8358537718049 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  359 0 0 1.23456790123458
+6  717 2 0
+6  718 1 0
+0
+
+0101000
++2360 0 -2358 0 *
+Ve
+1e-07
+100 44.9050209369709 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  360 0 0 1.23456790123457
+6  719 2 0
+6  720 1 0
+0
+
+0101000
++2358 0 -2356 0 *
+Ve
+1e-07
+98.7654320987654 44.9050209369709 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  361 0 0 1.23456790123457
+6  721 2 0
+6  722 1 0
+0
+
+0101000
++2356 0 -2354 0 *
+Ve
+1e-07
+98.1481481481482 45.9741881021369 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  362 0 0 1.23456790123457
+6  723 2 0
+6  724 1 0
+0
+
+0101000
++2354 0 -2352 0 *
+Ve
+1e-07
+97.5308641975309 44.9050209369709 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  363 0 0 1.23456790123457
+6  725 2 0
+6  726 1 0
+0
+
+0101000
++2352 0 -2350 0 *
+Ve
+1e-07
+96.2962962962963 44.9050209369709 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  364 0 0 1.23456790123457
+6  727 2 0
+6  728 1 0
+0
+
+0101000
++2350 0 -2348 0 *
+Ve
+1e-07
+95.679012345679 45.9741881021369 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  365 0 0 1.23456790123456
+6  729 2 0
+6  730 1 0
+0
+
+0101000
++2348 0 -2346 0 *
+Ve
+1e-07
+96.2962962962963 47.0433552673028 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  366 0 0 1.23456790123456
+6  731 2 0
+6  732 1 0
+0
+
+0101000
++2346 0 -2344 0 *
+Ve
+1e-07
+95.0617283950617 47.0433552673028 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  367 0 0 1.23456790123457
+6  733 2 0
+6  734 1 0
+0
+
+0101000
++2344 0 -2342 0 *
+Ve
+1e-07
+94.4444444444444 48.1125224324688 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  368 0 0 1.23456790123456
+6  735 2 0
+6  736 1 0
+0
+
+0101000
++2342 0 -2340 0 *
+Ve
+1e-07
+95.0617283950617 49.1816895976348 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  369 0 0 1.23456790123456
+6  737 2 0
+6  738 1 0
+0
+
+0101000
++2340 0 -2338 0 *
+Ve
+1e-07
+96.2962962962963 49.1816895976348 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  370 0 0 1.23456790123457
+6  739 2 0
+6  740 1 0
+0
+
+0101000
++2338 0 -2336 0 *
+Ve
+1e-07
+95.679012345679 50.2508567628008 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  371 0 0 1.23456790123456
+6  741 2 0
+6  742 1 0
+0
+
+0101000
++2336 0 -2334 0 *
+Ve
+1e-07
+96.2962962962963 51.3200239279667 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  372 0 0 1.23456790123456
+6  743 2 0
+6  744 1 0
+0
+
+0101000
++2334 0 -2332 0 *
+Ve
+1e-07
+97.5308641975309 51.3200239279667 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  373 0 0 1.23456790123457
+6  745 2 0
+6  746 1 0
+0
+
+0101000
++2332 0 -2330 0 *
+Ve
+1e-07
+98.1481481481482 50.2508567628008 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  374 0 0 1.23456790123458
+6  747 2 0
+6  748 1 0
+0
+
+0101000
++2330 0 -2328 0 *
+Ve
+1e-07
+98.7654320987654 51.3200239279667 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  375 0 0 1.23456790123457
+6  749 2 0
+6  750 1 0
+0
+
+0101000
++2328 0 -2326 0 *
+Ve
+1e-07
+100 51.3200239279667 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  376 0 0 1.23456790123457
+6  751 2 0
+6  752 1 0
+0
+
+0101000
++2326 0 -2324 0 *
+Ve
+1e-07
+99.3827160493827 52.3891910931327 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  377 0 0 1.23456790123456
+6  753 2 0
+6  754 1 0
+0
+
+0101000
++2324 0 -2322 0 *
+Ve
+1e-07
+100 53.4583582582987 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  378 0 0 1.23456790123456
+6  755 2 0
+6  756 1 0
+0
+
+0101000
++2322 0 -2320 0 *
+Ve
+1e-07
+98.7654320987654 53.4583582582987 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  379 0 0 1.23456790123457
+6  757 2 0
+6  758 1 0
+0
+
+0101000
++2320 0 -2318 0 *
+Ve
+1e-07
+98.1481481481482 54.5275254234647 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  380 0 0 1.23456790123456
+6  759 2 0
+6  760 1 0
+0
+
+0101000
++2318 0 -2316 0 *
+Ve
+1e-07
+98.7654320987654 55.5966925886306 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  381 0 0 1.23456790123456
+6  761 2 0
+6  762 1 0
+0
+
+0101000
++2316 0 -2314 0 *
+Ve
+1e-07
+100 55.5966925886306 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  382 0 0 1.23456790123457
+6  763 2 0
+6  764 1 0
+0
+
+0101000
++2314 0 -2312 0 *
+Ve
+1e-07
+99.3827160493827 56.6658597537966 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  383 0 0 1.23456790123456
+6  765 2 0
+6  766 1 0
+0
+
+0101000
++2312 0 -2310 0 *
+Ve
+1e-07
+100 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  384 0 0 1.23456790123456
+6  767 2 0
+6  768 1 0
+0
+
+0101000
++2310 0 -2308 0 *
+Ve
+1e-07
+98.7654320987654 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  385 0 0 1.23456790123457
+6  769 2 0
+6  770 1 0
+0
+
+0101000
++2308 0 -2306 0 *
+Ve
+1e-07
+98.1481481481482 58.8041940841286 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  386 0 0 1.23456790123457
+6  771 2 0
+6  772 1 0
+0
+
+0101000
++2306 0 -2304 0 *
+Ve
+1e-07
+97.5308641975309 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  387 0 0 1.23456790123458
+6  773 2 0
+6  774 1 0
+0
+
+0101000
++2304 0 -2302 0 *
+Ve
+1e-07
+96.2962962962963 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  388 0 0 1.23456790123457
+6  775 2 0
+6  776 1 0
+0
+
+0101000
++2302 0 -2300 0 *
+Ve
+1e-07
+95.679012345679 58.8041940841285 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  389 0 0 1.23456790123456
+6  777 2 0
+6  778 1 0
+0
+
+0101000
++2300 0 -2298 0 *
+Ve
+1e-07
+96.2962962962963 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  390 0 0 1.23456790123456
+6  779 2 0
+6  780 1 0
+0
+
+0101000
++2298 0 -2296 0 *
+Ve
+1e-07
+95.0617283950617 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  391 0 0 1.23456790123457
+6  781 2 0
+6  782 1 0
+0
+
+0101000
++2296 0 -2294 0 *
+Ve
+1e-07
+94.4444444444444 60.9425284144605 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  392 0 0 1.23456790123456
+6  783 2 0
+6  784 1 0
+0
+
+0101000
++2294 0 -2292 0 *
+Ve
+1e-07
+93.8271604938272 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  393 0 0 1.23456790123456
+6  785 2 0
+6  786 1 0
+0
+
+0101000
++2292 0 -2290 0 *
+Ve
+1e-07
+92.5925925925926 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  394 0 0 1.23456790123457
+6  787 2 0
+6  788 1 0
+0
+
+0101000
++2290 0 -2288 0 *
+Ve
+1e-07
+93.2098765432099 58.8041940841285 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  395 0 0 1.23456790123456
+6  789 2 0
+6  790 1 0
+0
+
+0101000
++2288 0 -2286 0 *
+Ve
+1e-07
+92.5925925925926 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  396 0 0 1.23456790123456
+6  791 2 0
+6  792 1 0
+0
+
+0101000
++2286 0 -2284 0 *
+Ve
+1e-07
+91.358024691358 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  397 0 0 1.23456790123457
+6  793 2 0
+6  794 1 0
+0
+
+0101000
++2284 0 -2282 0 *
+Ve
+1e-07
+90.7407407407407 58.8041940841286 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  398 0 0 1.23456790123458
+6  795 2 0
+6  796 1 0
+0
+
+0101000
++2282 0 -2280 0 *
+Ve
+1e-07
+90.1234567901235 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  399 0 0 1.23456790123457
+6  797 2 0
+6  798 1 0
+0
+
+0101000
++2280 0 -2278 0 *
+Ve
+1e-07
+88.8888888888889 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  400 0 0 1.23456790123457
+6  799 2 0
+6  800 1 0
+0
+
+0101000
++2278 0 -2276 0 *
+Ve
+1e-07
+88.2716049382716 58.8041940841285 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  401 0 0 1.23456790123456
+6  801 2 0
+6  802 1 0
+0
+
+0101000
++2276 0 -2274 0 *
+Ve
+1e-07
+88.8888888888889 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  402 0 0 1.23456790123456
+6  803 2 0
+6  804 1 0
+0
+
+0101000
++2274 0 -2272 0 *
+Ve
+1e-07
+87.6543209876543 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  403 0 0 1.23456790123457
+6  805 2 0
+6  806 1 0
+0
+
+0101000
++2272 0 -2270 0 *
+Ve
+1e-07
+87.037037037037 60.9425284144605 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  404 0 0 1.23456790123456
+6  807 2 0
+6  808 1 0
+0
+
+0101000
++2270 0 -2268 0 *
+Ve
+1e-07
+87.6543209876543 62.0116955796265 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  405 0 0 1.23456790123457
+6  809 2 0
+6  810 1 0
+0
+
+0101000
++2268 0 -2266 0 *
+Ve
+1e-07
+88.8888888888889 62.0116955796265 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  406 0 0 1.23456790123456
+6  811 2 0
+6  812 1 0
+0
+
+0101000
++2266 0 -2264 0 *
+Ve
+1e-07
+88.2716049382716 63.0808627447924 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  407 0 0 1.23456790123457
+6  813 2 0
+6  814 1 0
+0
+
+0101000
++2264 0 -2262 0 *
+Ve
+1e-07
+88.8888888888889 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  408 0 0 1.23456790123457
+6  815 2 0
+6  816 1 0
+0
+
+0101000
++2262 0 -2260 0 *
+Ve
+1e-07
+87.6543209876543 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  409 0 0 1.23456790123457
+6  817 2 0
+6  818 1 0
+0
+
+0101000
++2260 0 -2258 0 *
+Ve
+1e-07
+87.037037037037 65.2191970751244 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  410 0 0 1.23456790123458
+6  819 2 0
+6  820 1 0
+0
+
+0101000
++2258 0 -2256 0 *
+Ve
+1e-07
+86.4197530864198 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  411 0 0 1.23456790123457
+6  821 2 0
+6  822 1 0
+0
+
+0101000
++2256 0 -2254 0 *
+Ve
+1e-07
+85.1851851851852 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  412 0 0 1.23456790123457
+6  823 2 0
+6  824 1 0
+0
+
+0101000
++2254 0 -2252 0 *
+Ve
+1e-07
+84.5679012345679 65.2191970751244 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  413 0 0 1.23456790123457
+6  825 2 0
+6  826 1 0
+0
+
+0101000
++2252 0 -2250 0 *
+Ve
+1e-07
+85.1851851851852 66.2883642402904 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  414 0 0 1.23456790123456
+6  827 2 0
+6  828 1 0
+0
+
+0101000
++2250 0 -2248 0 *
+Ve
+1e-07
+83.9506172839506 66.2883642402904 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  415 0 0 1.23456790123457
+6  829 2 0
+6  830 1 0
+0
+
+0101000
++2248 0 -2246 0 *
+Ve
+1e-07
+83.3333333333333 67.3575314054563 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  416 0 0 1.23456790123457
+6  831 2 0
+6  832 1 0
+0
+
+0101000
++2246 0 -2244 0 *
+Ve
+1e-07
+82.7160493827161 66.2883642402904 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  417 0 0 1.23456790123457
+6  833 2 0
+6  834 1 0
+0
+
+0101000
++2244 0 -2242 0 *
+Ve
+1e-07
+81.4814814814815 66.2883642402904 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  418 0 0 1.23456790123457
+6  835 2 0
+6  836 1 0
+0
+
+0101000
++2242 0 -2240 0 *
+Ve
+1e-07
+82.0987654320988 65.2191970751244 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  419 0 0 1.23456790123456
+6  837 2 0
+6  838 1 0
+0
+
+0101000
++2240 0 -2238 0 *
+Ve
+1e-07
+81.4814814814815 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  420 0 0 1.23456790123457
+6  839 2 0
+6  840 1 0
+0
+
+0101000
++2238 0 -2236 0 *
+Ve
+1e-07
+80.2469135802469 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  421 0 0 1.23456790123457
+6  841 2 0
+6  842 1 0
+0
+
+0101000
++2236 0 -2234 0 *
+Ve
+1e-07
+79.6296296296296 65.2191970751244 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  422 0 0 1.23456790123457
+6  843 2 0
+6  844 1 0
+0
+
+0101000
++2234 0 -2232 0 *
+Ve
+1e-07
+79.0123456790124 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  423 0 0 1.23456790123457
+6  845 2 0
+6  846 1 0
+0
+
+0101000
++2232 0 -2230 0 *
+Ve
+1e-07
+77.7777777777778 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  424 0 0 1.23456790123457
+6  847 2 0
+6  848 1 0
+0
+
+0101000
++2230 0 -2228 0 *
+Ve
+1e-07
+78.3950617283951 63.0808627447924 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  425 0 0 1.23456790123456
+6  849 2 0
+6  850 1 0
+0
+
+0101000
++2228 0 -2226 0 *
+Ve
+1e-07
+77.7777777777778 62.0116955796265 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  426 0 0 1.23456790123456
+6  851 2 0
+6  852 1 0
+0
+
+0101000
++2226 0 -2224 0 *
+Ve
+1e-07
+79.0123456790124 62.0116955796265 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  427 0 0 1.23456790123456
+6  853 2 0
+6  854 1 0
+0
+
+0101000
++2224 0 -2222 0 *
+Ve
+1e-07
+79.6296296296296 60.9425284144605 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  428 0 0 1.23456790123456
+6  855 2 0
+6  856 1 0
+0
+
+0101000
++2222 0 -2220 0 *
+Ve
+1e-07
+79.0123456790124 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  429 0 0 1.23456790123456
+6  857 2 0
+6  858 1 0
+0
+
+0101000
++2220 0 -2218 0 *
+Ve
+1e-07
+77.7777777777778 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  430 0 0 1.23456790123457
+6  859 2 0
+6  860 1 0
+0
+
+0101000
++2218 0 -2216 0 *
+Ve
+1e-07
+78.3950617283951 58.8041940841285 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  431 0 0 1.23456790123456
+6  861 2 0
+6  862 1 0
+0
+
+0101000
++2216 0 -2214 0 *
+Ve
+1e-07
+77.7777777777778 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  432 0 0 1.23456790123456
+6  863 2 0
+6  864 1 0
+0
+
+0101000
++2214 0 -2212 0 *
+Ve
+1e-07
+76.5432098765432 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  433 0 0 1.23456790123457
+6  865 2 0
+6  866 1 0
+0
+
+0101000
++2212 0 -2210 0 *
+Ve
+1e-07
+75.9259259259259 58.8041940841286 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  434 0 0 1.23456790123458
+6  867 2 0
+6  868 1 0
+0
+
+0101000
++2210 0 -2208 0 *
+Ve
+1e-07
+75.3086419753086 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  435 0 0 1.23456790123457
+6  869 2 0
+6  870 1 0
+0
+
+0101000
++2208 0 -2206 0 *
+Ve
+1e-07
+74.0740740740741 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  436 0 0 1.23456790123457
+6  871 2 0
+6  872 1 0
+0
+
+0101000
++2206 0 -2204 0 *
+Ve
+1e-07
+73.4567901234568 58.8041940841285 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  437 0 0 1.23456790123456
+6  873 2 0
+6  874 1 0
+0
+
+0101000
++2204 0 -2202 0 *
+Ve
+1e-07
+74.0740740740741 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  438 0 0 1.23456790123456
+6  875 2 0
+6  876 1 0
+0
+
+0101000
++2202 0 -2200 0 *
+Ve
+1e-07
+72.8395061728395 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  439 0 0 1.23456790123457
+6  877 2 0
+6  878 1 0
+0
+
+0101000
++2200 0 -2198 0 *
+Ve
+1e-07
+72.2222222222222 60.9425284144605 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  440 0 0 1.23456790123456
+6  879 2 0
+6  880 1 0
+0
+
+0101000
++2198 0 -2196 0 *
+Ve
+1e-07
+71.604938271605 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  441 0 0 1.23456790123456
+6  881 2 0
+6  882 1 0
+0
+
+0101000
++2196 0 -2194 0 *
+Ve
+1e-07
+70.3703703703704 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  442 0 0 1.23456790123457
+6  883 2 0
+6  884 1 0
+0
+
+0101000
++2194 0 -2192 0 *
+Ve
+1e-07
+70.9876543209877 58.8041940841285 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  443 0 0 1.23456790123456
+6  885 2 0
+6  886 1 0
+0
+
+0101000
++2192 0 -2190 0 *
+Ve
+1e-07
+70.3703703703704 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  444 0 0 1.23456790123456
+6  887 2 0
+6  888 1 0
+0
+
+0101000
++2190 0 -2188 0 *
+Ve
+1e-07
+69.1358024691358 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  445 0 0 1.23456790123457
+6  889 2 0
+6  890 1 0
+0
+
+0101000
++2188 0 -2186 0 *
+Ve
+1e-07
+68.5185185185185 58.8041940841286 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  446 0 0 1.23456790123457
+6  891 2 0
+6  892 1 0
+0
+
+0101000
++2186 0 -2184 0 *
+Ve
+1e-07
+67.9012345679012 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  447 0 0 1.23456790123458
+6  893 2 0
+6  894 1 0
+0
+
+0101000
++2184 0 -2182 0 *
+Ve
+1e-07
+66.6666666666667 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  448 0 0 1.23456790123457
+6  895 2 0
+6  896 1 0
+0
+
+0101000
++2182 0 -2180 0 *
+Ve
+1e-07
+66.0493827160494 58.8041940841285 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  449 0 0 1.23456790123456
+6  897 2 0
+6  898 1 0
+0
+
+0101000
++2180 0 -2178 0 *
+Ve
+1e-07
+66.6666666666667 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  450 0 0 1.23456790123456
+6  899 2 0
+6  900 1 0
+0
+
+0101000
++2178 0 -2176 0 *
+Ve
+1e-07
+65.4320987654321 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  451 0 0 1.23456790123457
+6  901 2 0
+6  902 1 0
+0
+
+0101000
++2176 0 -2174 0 *
+Ve
+1e-07
+64.8148148148148 60.9425284144605 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  452 0 0 1.23456790123456
+6  903 2 0
+6  904 1 0
+0
+
+0101000
++2174 0 -2172 0 *
+Ve
+1e-07
+65.4320987654321 62.0116955796265 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  453 0 0 1.23456790123456
+6  905 2 0
+6  906 1 0
+0
+
+0101000
++2172 0 -2170 0 *
+Ve
+1e-07
+66.6666666666667 62.0116955796265 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  454 0 0 1.23456790123457
+6  907 2 0
+6  908 1 0
+0
+
+0101000
++2170 0 -2168 0 *
+Ve
+1e-07
+66.0493827160494 63.0808627447924 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  455 0 0 1.23456790123456
+6  909 2 0
+6  910 1 0
+0
+
+0101000
++2168 0 -2166 0 *
+Ve
+1e-07
+66.6666666666667 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  456 0 0 1.23456790123456
+6  911 2 0
+6  912 1 0
+0
+
+0101000
++2166 0 -2164 0 *
+Ve
+1e-07
+65.4320987654321 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  457 0 0 1.23456790123457
+6  913 2 0
+6  914 1 0
+0
+
+0101000
++2164 0 -2162 0 *
+Ve
+1e-07
+64.8148148148148 65.2191970751244 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  458 0 0 1.23456790123457
+6  915 2 0
+6  916 1 0
+0
+
+0101000
++2162 0 -2160 0 *
+Ve
+1e-07
+64.1975308641975 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  459 0 0 1.23456790123458
+6  917 2 0
+6  918 1 0
+0
+
+0101000
++2160 0 -2158 0 *
+Ve
+1e-07
+62.962962962963 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  460 0 0 1.23456790123456
+6  919 2 0
+6  920 1 0
+0
+
+0101000
++2158 0 -2156 0 *
+Ve
+1e-07
+62.3456790123457 65.2191970751244 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  461 0 0 1.23456790123457
+6  921 2 0
+6  922 1 0
+0
+
+0101000
++2156 0 -2154 0 *
+Ve
+1e-07
+62.962962962963 66.2883642402904 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  462 0 0 1.23456790123457
+6  923 2 0
+6  924 1 0
+0
+
+0101000
++2154 0 -2152 0 *
+Ve
+1e-07
+61.7283950617284 66.2883642402904 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  463 0 0 1.23456790123457
+6  925 2 0
+6  926 1 0
+0
+
+0101000
++2152 0 -2150 0 *
+Ve
+1e-07
+61.1111111111111 67.3575314054563 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  464 0 0 1.23456790123457
+6  927 2 0
+6  928 1 0
+0
+
+0101000
++2150 0 -2148 0 *
+Ve
+1e-07
+61.7283950617284 68.4266985706223 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  465 0 0 1.23456790123457
+6  929 2 0
+6  930 1 0
+0
+
+0101000
++2148 0 -2146 0 *
+Ve
+1e-07
+62.962962962963 68.4266985706223 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  466 0 0 1.23456790123457
+6  931 2 0
+6  932 1 0
+0
+
+0101000
++2146 0 -2144 0 *
+Ve
+1e-07
+62.3456790123457 69.4958657357883 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  467 0 0 1.23456790123457
+6  933 2 0
+6  934 1 0
+0
+
+0101000
++2144 0 -2142 0 *
+Ve
+1e-07
+62.962962962963 70.5650329009543 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  468 0 0 1.23456790123457
+6  935 2 0
+6  936 1 0
+0
+
+0101000
++2142 0 -2140 0 *
+Ve
+1e-07
+64.1975308641975 70.5650329009543 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  469 0 0 1.23456790123456
+6  937 2 0
+6  938 1 0
+0
+
+0101000
++2140 0 -2138 0 *
+Ve
+1e-07
+64.8148148148148 69.4958657357883 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  470 0 0 1.23456790123456
+6  939 2 0
+6  940 1 0
+0
+
+0101000
++2138 0 -2136 0 *
+Ve
+1e-07
+65.4320987654321 70.5650329009543 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  471 0 0 1.23456790123456
+6  941 2 0
+6  942 1 0
+0
+
+0101000
++2136 0 -2134 0 *
+Ve
+1e-07
+66.6666666666667 70.5650329009543 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  472 0 0 1.23456790123457
+6  943 2 0
+6  944 1 0
+0
+
+0101000
++2134 0 -2132 0 *
+Ve
+1e-07
+66.0493827160494 71.6342000661202 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  473 0 0 1.23456790123457
+6  945 2 0
+6  946 1 0
+0
+
+0101000
++2132 0 -2130 0 *
+Ve
+1e-07
+66.6666666666667 72.7033672312862 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  474 0 0 1.23456790123456
+6  947 2 0
+6  948 1 0
+0
+
+0101000
++2130 0 -2128 0 *
+Ve
+1e-07
+65.4320987654321 72.7033672312862 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  475 0 0 1.23456790123457
+6  949 2 0
+6  950 1 0
+0
+
+0101000
++2128 0 -2126 0 *
+Ve
+1e-07
+64.8148148148148 73.7725343964522 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  476 0 0 1.23456790123457
+6  951 2 0
+6  952 1 0
+0
+
+0101000
++2126 0 -2124 0 *
+Ve
+1e-07
+65.4320987654321 74.8417015616182 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  477 0 0 1.23456790123457
+6  953 2 0
+6  954 1 0
+0
+
+0101000
++2124 0 -2122 0 *
+Ve
+1e-07
+66.6666666666667 74.8417015616182 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  478 0 0 1.23456790123457
+6  955 2 0
+6  956 1 0
+0
+
+0101000
++2122 0 -2120 0 *
+Ve
+1e-07
+66.0493827160494 75.9108687267841 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  479 0 0 1.23456790123456
+6  957 2 0
+6  958 1 0
+0
+
+0101000
++2120 0 -2118 0 *
+Ve
+1e-07
+66.6666666666667 76.9800358919501 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  480 0 0 1.23456790123457
+6  959 2 0
+6  960 1 0
+0
+
+0101000
++2118 0 -2116 0 *
+Ve
+1e-07
+65.4320987654321 76.9800358919501 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  481 0 0 1.23456790123457
+6  961 2 0
+6  962 1 0
+0
+
+0101000
++2116 0 -2114 0 *
+Ve
+1e-07
+64.8148148148148 78.0492030571161 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  482 0 0 1.23456790123457
+6  963 2 0
+6  964 1 0
+0
+
+0101000
++2114 0 -2112 0 *
+Ve
+1e-07
+64.1975308641975 76.9800358919501 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  483 0 0 1.23456790123458
+6  965 2 0
+6  966 1 0
+0
+
+0101000
++2112 0 -2110 0 *
+Ve
+1e-07
+62.962962962963 76.9800358919501 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  484 0 0 1.23456790123456
+6  967 2 0
+6  968 1 0
+0
+
+0101000
++2110 0 -2108 0 *
+Ve
+1e-07
+62.3456790123457 78.0492030571161 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  485 0 0 1.23456790123457
+6  969 2 0
+6  970 1 0
+0
+
+0101000
++2108 0 -2106 0 *
+Ve
+1e-07
+62.962962962963 79.1183702222821 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  486 0 0 1.23456790123457
+6  971 2 0
+6  972 1 0
+0
+
+0101000
++2106 0 -2104 0 *
+Ve
+1e-07
+61.7283950617284 79.1183702222821 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  487 0 0 1.23456790123458
+6  973 2 0
+6  974 1 0
+0
+
+0101000
++2104 0 -2102 0 *
+Ve
+1e-07
+61.1111111111111 80.187537387448 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  488 0 0 1.23456790123457
+6  975 2 0
+6  976 1 0
+0
+
+0101000
++2102 0 -2100 0 *
+Ve
+1e-07
+60.4938271604938 79.1183702222821 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  489 0 0 1.23456790123457
+6  977 2 0
+6  978 1 0
+0
+
+0101000
++2100 0 -2098 0 *
+Ve
+1e-07
+59.2592592592593 79.1183702222821 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  490 0 0 1.23456790123457
+6  979 2 0
+6  980 1 0
+0
+
+0101000
++2098 0 -2096 0 *
+Ve
+1e-07
+59.8765432098765 78.0492030571161 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  491 0 0 1.23456790123458
+6  981 2 0
+6  982 1 0
+0
+
+0101000
++2096 0 -2094 0 *
+Ve
+1e-07
+59.2592592592593 76.9800358919501 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  492 0 0 1.23456790123457
+6  983 2 0
+6  984 1 0
+0
+
+0101000
++2094 0 -2092 0 *
+Ve
+1e-07
+58.0246913580247 76.9800358919501 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  493 0 0 1.23456790123457
+6  985 2 0
+6  986 1 0
+0
+
+0101000
++2092 0 -2090 0 *
+Ve
+1e-07
+57.4074074074074 78.0492030571161 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  494 0 0 1.23456790123457
+6  987 2 0
+6  988 1 0
+0
+
+0101000
++2090 0 -2088 0 *
+Ve
+1e-07
+56.7901234567901 76.9800358919501 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  495 0 0 1.23456790123457
+6  989 2 0
+6  990 1 0
+0
+
+0101000
++2088 0 -2086 0 *
+Ve
+1e-07
+55.5555555555556 76.9800358919501 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  496 0 0 1.23456790123457
+6  991 2 0
+6  992 1 0
+0
+
+0101000
++2086 0 -2084 0 *
+Ve
+1e-07
+54.9382716049383 78.0492030571161 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  497 0 0 1.23456790123457
+6  993 2 0
+6  994 1 0
+0
+
+0101000
++2084 0 -2082 0 *
+Ve
+1e-07
+55.5555555555556 79.118370222282 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  498 0 0 1.23456790123456
+6  995 2 0
+6  996 1 0
+0
+
+0101000
++2082 0 -2080 0 *
+Ve
+1e-07
+54.320987654321 79.118370222282 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  499 0 0 1.23456790123458
+6  997 2 0
+6  998 1 0
+0
+
+0101000
++2080 0 -2078 0 *
+Ve
+1e-07
+53.7037037037037 80.187537387448 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  500 0 0 1.23456790123457
+6  999 2 0
+6  1000 1 0
+0
+
+0101000
++2078 0 -2076 0 *
+Ve
+1e-07
+54.320987654321 81.256704552614 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  501 0 0 1.23456790123457
+6  1001 2 0
+6  1002 1 0
+0
+
+0101000
++2076 0 -2074 0 *
+Ve
+1e-07
+55.5555555555556 81.256704552614 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  502 0 0 1.23456790123458
+6  1003 2 0
+6  1004 1 0
+0
+
+0101000
++2074 0 -2072 0 *
+Ve
+1e-07
+54.9382716049383 82.32587171778 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  503 0 0 1.23456790123456
+6  1005 2 0
+6  1006 1 0
+0
+
+0101000
++2072 0 -2070 0 *
+Ve
+1e-07
+55.5555555555556 83.3950388829459 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  504 0 0 1.23456790123457
+6  1007 2 0
+6  1008 1 0
+0
+
+0101000
++2070 0 -2068 0 *
+Ve
+1e-07
+54.320987654321 83.3950388829459 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  505 0 0 1.23456790123457
+6  1009 2 0
+6  1010 1 0
+0
+
+0101000
++2068 0 -2066 0 *
+Ve
+1e-07
+53.7037037037037 84.4642060481119 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  506 0 0 1.23456790123457
+6  1011 2 0
+6  1012 1 0
+0
+
+0101000
++2066 0 -2064 0 *
+Ve
+1e-07
+53.0864197530864 83.3950388829459 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  507 0 0 1.23456790123457
+6  1013 2 0
+6  1014 1 0
+0
+
+0101000
++2064 0 -2062 0 *
+Ve
+1e-07
+51.8518518518519 83.3950388829459 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  508 0 0 1.23456790123457
+6  1015 2 0
+6  1016 1 0
+0
+
+0101000
++2062 0 -2060 0 *
+Ve
+1e-07
+51.2345679012346 84.4642060481119 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  509 0 0 1.23456790123457
+6  1017 2 0
+6  1018 1 0
+0
+
+0101000
++2060 0 -2058 0 *
+Ve
+1e-07
+51.8518518518519 85.5333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  510 0 0 1.23456790123456
+6  1019 2 0
+6  1020 1 0
+0
+
+0101000
++2058 0 -2056 0 *
+Ve
+1e-07
+50.6172839506173 85.5333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  511 0 0 1.23456790123457
+6  1021 2 0
+6  1022 1 0
+0
+
+0101000
++2056 0 -2054 0 *
+Ve
+1e-07
+50 86.6025403784439 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  512 0 0 1.23456790123457
+6  1023 2 0
+6  1024 1 0
+0
+
+0101000
++2054 0 -2052 0 *
+Ve
+1e-07
+49.3827160493827 85.5333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  513 0 0 1.23456790123457
+6  1025 2 0
+6  1026 1 0
+0
+
+0101000
++2052 0 -2050 0 *
+Ve
+1e-07
+48.1481481481481 85.5333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  514 0 0 1.23456790123457
+6  1027 2 0
+6  1028 1 0
+0
+
+0101000
++2050 0 -2048 0 *
+Ve
+1e-07
+48.7654320987654 84.4642060481119 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  515 0 0 1.23456790123456
+6  1029 2 0
+6  1030 1 0
+0
+
+0101000
++2048 0 -2046 0 *
+Ve
+1e-07
+48.1481481481481 83.3950388829459 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  516 0 0 1.23456790123457
+6  1031 2 0
+6  1032 1 0
+0
+
+0101000
++2046 0 -2044 0 *
+Ve
+1e-07
+46.9135802469136 83.3950388829459 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  517 0 0 1.23456790123457
+6  1033 2 0
+6  1034 1 0
+0
+
+0101000
++2044 0 -2042 0 *
+Ve
+1e-07
+46.2962962962963 84.4642060481119 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  518 0 0 1.23456790123457
+6  1035 2 0
+6  1036 1 0
+0
+
+0101000
++2042 0 -2040 0 *
+Ve
+1e-07
+45.679012345679 83.3950388829459 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  519 0 0 1.23456790123457
+6  1037 2 0
+6  1038 1 0
+0
+
+0101000
++2040 0 -2038 0 *
+Ve
+1e-07
+44.4444444444444 83.3950388829459 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  520 0 0 1.23456790123457
+6  1039 2 0
+6  1040 1 0
+0
+
+0101000
++2038 0 -2036 0 *
+Ve
+1e-07
+45.0617283950617 82.32587171778 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  521 0 0 1.23456790123457
+6  1041 2 0
+6  1042 1 0
+0
+
+0101000
++2036 0 -2034 0 *
+Ve
+1e-07
+44.4444444444444 81.256704552614 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  522 0 0 1.23456790123456
+6  1043 2 0
+6  1044 1 0
+0
+
+0101000
++2034 0 -2032 0 *
+Ve
+1e-07
+45.679012345679 81.256704552614 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  523 0 0 1.23456790123458
+6  1045 2 0
+6  1046 1 0
+0
+
+0101000
++2032 0 -2030 0 *
+Ve
+1e-07
+46.2962962962963 80.187537387448 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  524 0 0 1.23456790123457
+6  1047 2 0
+6  1048 1 0
+0
+
+0101000
++2030 0 -2028 0 *
+Ve
+1e-07
+45.679012345679 79.118370222282 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  525 0 0 1.23456790123457
+6  1049 2 0
+6  1050 1 0
+0
+
+0101000
++2028 0 -2026 0 *
+Ve
+1e-07
+44.4444444444444 79.118370222282 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  526 0 0 1.23456790123458
+6  1051 2 0
+6  1052 1 0
+0
+
+0101000
++2026 0 -2024 0 *
+Ve
+1e-07
+45.0617283950617 78.0492030571161 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  527 0 0 1.23456790123456
+6  1053 2 0
+6  1054 1 0
+0
+
+0101000
++2024 0 -2022 0 *
+Ve
+1e-07
+44.4444444444444 76.9800358919501 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  528 0 0 1.23456790123457
+6  1055 2 0
+6  1056 1 0
+0
+
+0101000
++2022 0 -2020 0 *
+Ve
+1e-07
+43.2098765432099 76.9800358919501 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  529 0 0 1.23456790123457
+6  1057 2 0
+6  1058 1 0
+0
+
+0101000
++2020 0 -2018 0 *
+Ve
+1e-07
+42.5925925925926 78.0492030571161 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  530 0 0 1.23456790123457
+6  1059 2 0
+6  1060 1 0
+0
+
+0101000
++2018 0 -2016 0 *
+Ve
+1e-07
+41.9753086419753 76.9800358919501 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  531 0 0 1.23456790123457
+6  1061 2 0
+6  1062 1 0
+0
+
+0101000
++2016 0 -2014 0 *
+Ve
+1e-07
+40.7407407407407 76.9800358919501 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  532 0 0 1.23456790123457
+6  1063 2 0
+6  1064 1 0
+0
+
+0101000
++2014 0 -2012 0 *
+Ve
+1e-07
+40.1234567901235 78.0492030571161 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  533 0 0 1.23456790123457
+6  1065 2 0
+6  1066 1 0
+0
+
+0101000
++2012 0 -2010 0 *
+Ve
+1e-07
+40.7407407407407 79.1183702222821 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  534 0 0 1.23456790123458
+6  1067 2 0
+6  1068 1 0
+0
+
+0101000
++2010 0 -2008 0 *
+Ve
+1e-07
+39.5061728395062 79.1183702222821 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  535 0 0 1.23456790123457
+6  1069 2 0
+6  1070 1 0
+0
+
+0101000
++2008 0 -2006 0 *
+Ve
+1e-07
+38.8888888888889 80.187537387448 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  536 0 0 1.23456790123457
+6  1071 2 0
+6  1072 1 0
+0
+
+0101000
++2006 0 -2004 0 *
+Ve
+1e-07
+38.2716049382716 79.1183702222821 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  537 0 0 1.23456790123457
+6  1073 2 0
+6  1074 1 0
+0
+
+0101000
++2004 0 -2002 0 *
+Ve
+1e-07
+37.037037037037 79.1183702222821 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  538 0 0 1.23456790123458
+6  1075 2 0
+6  1076 1 0
+0
+
+0101000
++2002 0 -2000 0 *
+Ve
+1e-07
+37.6543209876543 78.0492030571161 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  539 0 0 1.23456790123458
+6  1077 2 0
+6  1078 1 0
+0
+
+0101000
++2000 0 -1998 0 *
+Ve
+1e-07
+37.037037037037 76.9800358919501 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  540 0 0 1.23456790123457
+6  1079 2 0
+6  1080 1 0
+0
+
+0101000
++1998 0 -1996 0 *
+Ve
+1e-07
+35.8024691358025 76.9800358919501 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  541 0 0 1.23456790123457
+6  1081 2 0
+6  1082 1 0
+0
+
+0101000
++1996 0 -1994 0 *
+Ve
+1e-07
+35.1851851851852 78.0492030571161 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  542 0 0 1.23456790123457
+6  1083 2 0
+6  1084 1 0
+0
+
+0101000
++1994 0 -1992 0 *
+Ve
+1e-07
+34.5679012345679 76.9800358919501 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  543 0 0 1.23456790123457
+6  1085 2 0
+6  1086 1 0
+0
+
+0101000
++1992 0 -1990 0 *
+Ve
+1e-07
+33.3333333333333 76.9800358919501 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  544 0 0 1.23456790123457
+6  1087 2 0
+6  1088 1 0
+0
+
+0101000
++1990 0 -1988 0 *
+Ve
+1e-07
+33.9506172839506 75.9108687267841 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  545 0 0 1.23456790123457
+6  1089 2 0
+6  1090 1 0
+0
+
+0101000
++1988 0 -1986 0 *
+Ve
+1e-07
+33.3333333333333 74.8417015616182 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  546 0 0 1.23456790123457
+6  1091 2 0
+6  1092 1 0
+0
+
+0101000
++1986 0 -1984 0 *
+Ve
+1e-07
+34.5679012345679 74.8417015616182 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  547 0 0 1.23456790123457
+6  1093 2 0
+6  1094 1 0
+0
+
+0101000
++1984 0 -1982 0 *
+Ve
+1e-07
+35.1851851851852 73.7725343964522 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  548 0 0 1.23456790123457
+6  1095 2 0
+6  1096 1 0
+0
+
+0101000
++1982 0 -1980 0 *
+Ve
+1e-07
+34.5679012345679 72.7033672312862 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  549 0 0 1.23456790123457
+6  1097 2 0
+6  1098 1 0
+0
+
+0101000
++1980 0 -1978 0 *
+Ve
+1e-07
+33.3333333333333 72.7033672312862 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  550 0 0 1.23456790123457
+6  1099 2 0
+6  1100 1 0
+0
+
+0101000
++1978 0 -1976 0 *
+Ve
+1e-07
+33.9506172839506 71.6342000661202 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  551 0 0 1.23456790123457
+6  1101 2 0
+6  1102 1 0
+0
+
+0101000
++1976 0 -1974 0 *
+Ve
+1e-07
+33.3333333333333 70.5650329009543 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  552 0 0 1.23456790123457
+6  1103 2 0
+6  1104 1 0
+0
+
+0101000
++1974 0 -1972 0 *
+Ve
+1e-07
+34.5679012345679 70.5650329009543 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  553 0 0 1.23456790123457
+6  1105 2 0
+6  1106 1 0
+0
+
+0101000
++1972 0 -1970 0 *
+Ve
+1e-07
+35.1851851851852 69.4958657357883 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  554 0 0 1.23456790123457
+6  1107 2 0
+6  1108 1 0
+0
+
+0101000
++1970 0 -1968 0 *
+Ve
+1e-07
+35.8024691358025 70.5650329009543 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  555 0 0 1.23456790123457
+6  1109 2 0
+6  1110 1 0
+0
+
+0101000
++1968 0 -1966 0 *
+Ve
+1e-07
+37.037037037037 70.5650329009543 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  556 0 0 1.23456790123457
+6  1111 2 0
+6  1112 1 0
+0
+
+0101000
++1966 0 -1964 0 *
+Ve
+1e-07
+37.6543209876543 69.4958657357883 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  557 0 0 1.23456790123457
+6  1113 2 0
+6  1114 1 0
+0
+
+0101000
++1964 0 -1962 0 *
+Ve
+1e-07
+37.037037037037 68.4266985706223 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  558 0 0 1.23456790123458
+6  1115 2 0
+6  1116 1 0
+0
+
+0101000
++1962 0 -1960 0 *
+Ve
+1e-07
+38.2716049382716 68.4266985706223 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  559 0 0 1.23456790123458
+6  1117 2 0
+6  1118 1 0
+0
+
+0101000
++1960 0 -1958 0 *
+Ve
+1e-07
+38.8888888888889 67.3575314054563 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  560 0 0 1.23456790123457
+6  1119 2 0
+6  1120 1 0
+0
+
+0101000
++1958 0 -1956 0 *
+Ve
+1e-07
+38.2716049382716 66.2883642402904 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  561 0 0 1.23456790123457
+6  1121 2 0
+6  1122 1 0
+0
+
+0101000
++1956 0 -1954 0 *
+Ve
+1e-07
+37.037037037037 66.2883642402904 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  562 0 0 1.23456790123458
+6  1123 2 0
+6  1124 1 0
+0
+
+0101000
++1954 0 -1952 0 *
+Ve
+1e-07
+37.6543209876543 65.2191970751244 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  563 0 0 1.23456790123458
+6  1125 2 0
+6  1126 1 0
+0
+
+0101000
++1952 0 -1950 0 *
+Ve
+1e-07
+37.037037037037 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  564 0 0 1.23456790123457
+6  1127 2 0
+6  1128 1 0
+0
+
+0101000
++1950 0 -1948 0 *
+Ve
+1e-07
+35.8024691358025 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  565 0 0 1.23456790123457
+6  1129 2 0
+6  1130 1 0
+0
+
+0101000
++1948 0 -1946 0 *
+Ve
+1e-07
+35.1851851851852 65.2191970751244 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  566 0 0 1.23456790123457
+6  1131 2 0
+6  1132 1 0
+0
+
+0101000
++1946 0 -1944 0 *
+Ve
+1e-07
+34.5679012345679 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  567 0 0 1.23456790123457
+6  1133 2 0
+6  1134 1 0
+0
+
+0101000
++1944 0 -1942 0 *
+Ve
+1e-07
+33.3333333333333 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  568 0 0 1.23456790123457
+6  1135 2 0
+6  1136 1 0
+0
+
+0101000
++1942 0 -1940 0 *
+Ve
+1e-07
+33.9506172839506 63.0808627447924 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  569 0 0 1.23456790123457
+6  1137 2 0
+6  1138 1 0
+0
+
+0101000
++1940 0 -1938 0 *
+Ve
+1e-07
+33.3333333333333 62.0116955796265 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  570 0 0 1.23456790123457
+6  1139 2 0
+6  1140 1 0
+0
+
+0101000
++1938 0 -1936 0 *
+Ve
+1e-07
+34.5679012345679 62.0116955796265 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  571 0 0 1.23456790123456
+6  1141 2 0
+6  1142 1 0
+0
+
+0101000
++1936 0 -1934 0 *
+Ve
+1e-07
+35.1851851851852 60.9425284144605 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  572 0 0 1.23456790123457
+6  1143 2 0
+6  1144 1 0
+0
+
+0101000
++1934 0 -1932 0 *
+Ve
+1e-07
+34.5679012345679 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  573 0 0 1.23456790123457
+6  1145 2 0
+6  1146 1 0
+0
+
+0101000
++1932 0 -1930 0 *
+Ve
+1e-07
+33.3333333333333 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  574 0 0 1.23456790123456
+6  1147 2 0
+6  1148 1 0
+0
+
+0101000
++1930 0 -1928 0 *
+Ve
+1e-07
+33.9506172839506 58.8041940841285 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  575 0 0 1.23456790123457
+6  1149 2 0
+6  1150 1 0
+0
+
+0101000
++1928 0 -1926 0 *
+Ve
+1e-07
+33.3333333333333 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  576 0 0 1.23456790123457
+6  1151 2 0
+6  1152 1 0
+0
+
+0101000
++1926 0 -1924 0 *
+Ve
+1e-07
+32.0987654320988 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  577 0 0 1.23456790123457
+6  1153 2 0
+6  1154 1 0
+0
+
+0101000
++1924 0 -1922 0 *
+Ve
+1e-07
+31.4814814814815 58.8041940841286 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  578 0 0 1.23456790123457
+6  1155 2 0
+6  1156 1 0
+0
+
+0101000
++1922 0 -1920 0 *
+Ve
+1e-07
+30.8641975308642 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  579 0 0 1.23456790123457
+6  1157 2 0
+6  1158 1 0
+0
+
+0101000
++1920 0 -1918 0 *
+Ve
+1e-07
+29.6296296296296 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  580 0 0 1.23456790123457
+6  1159 2 0
+6  1160 1 0
+0
+
+0101000
++1918 0 -1916 0 *
+Ve
+1e-07
+29.0123456790123 58.8041940841285 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  581 0 0 1.23456790123457
+6  1161 2 0
+6  1162 1 0
+0
+
+0101000
++1916 0 -1914 0 *
+Ve
+1e-07
+29.6296296296296 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  582 0 0 1.23456790123457
+6  1163 2 0
+6  1164 1 0
+0
+
+0101000
++1914 0 -1912 0 *
+Ve
+1e-07
+28.3950617283951 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  583 0 0 1.23456790123457
+6  1165 2 0
+6  1166 1 0
+0
+
+0101000
++1912 0 -1910 0 *
+Ve
+1e-07
+27.7777777777778 60.9425284144605 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  584 0 0 1.23456790123457
+6  1167 2 0
+6  1168 1 0
+0
+
+0101000
++1910 0 -1908 0 *
+Ve
+1e-07
+27.1604938271605 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  585 0 0 1.23456790123457
+6  1169 2 0
+6  1170 1 0
+0
+
+0101000
++1908 0 -1906 0 *
+Ve
+1e-07
+25.9259259259259 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  586 0 0 1.23456790123456
+6  1171 2 0
+6  1172 1 0
+0
+
+0101000
++1906 0 -1904 0 *
+Ve
+1e-07
+26.5432098765432 58.8041940841285 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  587 0 0 1.23456790123456
+6  1173 2 0
+6  1174 1 0
+0
+
+0101000
++1904 0 -1902 0 *
+Ve
+1e-07
+25.9259259259259 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  588 0 0 1.23456790123457
+6  1175 2 0
+6  1176 1 0
+0
+
+0101000
++1902 0 -1900 0 *
+Ve
+1e-07
+24.6913580246914 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  589 0 0 1.23456790123457
+6  1177 2 0
+6  1178 1 0
+0
+
+0101000
++1900 0 -1898 0 *
+Ve
+1e-07
+24.0740740740741 58.8041940841285 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  590 0 0 1.23456790123457
+6  1179 2 0
+6  1180 1 0
+0
+
+0101000
++1898 0 -1896 0 *
+Ve
+1e-07
+23.4567901234568 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  591 0 0 1.23456790123457
+6  1181 2 0
+6  1182 1 0
+0
+
+0101000
++1896 0 -1894 0 *
+Ve
+1e-07
+22.2222222222222 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  592 0 0 1.23456790123457
+6  1183 2 0
+6  1184 1 0
+0
+
+0101000
++1894 0 -1892 0 *
+Ve
+1e-07
+21.6049382716049 58.8041940841285 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  593 0 0 1.23456790123457
+6  1185 2 0
+6  1186 1 0
+0
+
+0101000
++1892 0 -1890 0 *
+Ve
+1e-07
+22.2222222222222 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  594 0 0 1.23456790123457
+6  1187 2 0
+6  1188 1 0
+0
+
+0101000
++1890 0 -1888 0 *
+Ve
+1e-07
+20.9876543209877 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  595 0 0 1.23456790123456
+6  1189 2 0
+6  1190 1 0
+0
+
+0101000
++1888 0 -1886 0 *
+Ve
+1e-07
+20.3703703703704 60.9425284144605 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  596 0 0 1.23456790123457
+6  1191 2 0
+6  1192 1 0
+0
+
+0101000
++1886 0 -1884 0 *
+Ve
+1e-07
+20.9876543209877 62.0116955796265 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  597 0 0 1.23456790123457
+6  1193 2 0
+6  1194 1 0
+0
+
+0101000
++1884 0 -1882 0 *
+Ve
+1e-07
+22.2222222222222 62.0116955796265 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  598 0 0 1.23456790123457
+6  1195 2 0
+6  1196 1 0
+0
+
+0101000
++1882 0 -1880 0 *
+Ve
+1e-07
+21.6049382716049 63.0808627447924 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  599 0 0 1.23456790123457
+6  1197 2 0
+6  1198 1 0
+0
+
+0101000
++1880 0 -1878 0 *
+Ve
+1e-07
+22.2222222222222 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  600 0 0 1.23456790123457
+6  1199 2 0
+6  1200 1 0
+0
+
+0101000
++1878 0 -1876 0 *
+Ve
+1e-07
+20.9876543209877 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  601 0 0 1.23456790123457
+6  1201 2 0
+6  1202 1 0
+0
+
+0101000
++1876 0 -1874 0 *
+Ve
+1e-07
+20.3703703703704 65.2191970751244 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  602 0 0 1.23456790123457
+6  1203 2 0
+6  1204 1 0
+0
+
+0101000
++1874 0 -1872 0 *
+Ve
+1e-07
+19.7530864197531 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  603 0 0 1.23456790123457
+6  1205 2 0
+6  1206 1 0
+0
+
+0101000
++1872 0 -1870 0 *
+Ve
+1e-07
+18.5185185185185 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  604 0 0 1.23456790123457
+6  1207 2 0
+6  1208 1 0
+0
+
+0101000
++1870 0 -1868 0 *
+Ve
+1e-07
+17.9012345679012 65.2191970751244 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  605 0 0 1.23456790123457
+6  1209 2 0
+6  1210 1 0
+0
+
+0101000
++1868 0 -1866 0 *
+Ve
+1e-07
+18.5185185185185 66.2883642402904 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  606 0 0 1.23456790123456
+6  1211 2 0
+6  1212 1 0
+0
+
+0101000
++1866 0 -1864 0 *
+Ve
+1e-07
+17.283950617284 66.2883642402904 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  607 0 0 1.23456790123457
+6  1213 2 0
+6  1214 1 0
+0
+
+0101000
++1864 0 -1862 0 *
+Ve
+1e-07
+16.6666666666667 67.3575314054563 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  608 0 0 1.23456790123457
+6  1215 2 0
+6  1216 1 0
+0
+
+0101000
++1862 0 -1860 0 *
+Ve
+1e-07
+16.0493827160494 66.2883642402904 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  609 0 0 1.23456790123457
+6  1217 2 0
+6  1218 1 0
+0
+
+0101000
++1860 0 -1858 0 *
+Ve
+1e-07
+14.8148148148148 66.2883642402904 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  610 0 0 1.23456790123457
+6  1219 2 0
+6  1220 1 0
+0
+
+0101000
++1858 0 -1856 0 *
+Ve
+1e-07
+15.4320987654321 65.2191970751244 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  611 0 0 1.23456790123456
+6  1221 2 0
+6  1222 1 0
+0
+
+0101000
++1856 0 -1854 0 *
+Ve
+1e-07
+14.8148148148148 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  612 0 0 1.23456790123457
+6  1223 2 0
+6  1224 1 0
+0
+
+0101000
++1854 0 -1852 0 *
+Ve
+1e-07
+13.5802469135803 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  613 0 0 1.23456790123457
+6  1225 2 0
+6  1226 1 0
+0
+
+0101000
++1852 0 -1850 0 *
+Ve
+1e-07
+12.962962962963 65.2191970751244 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  614 0 0 1.23456790123457
+6  1227 2 0
+6  1228 1 0
+0
+
+0101000
++1850 0 -1848 0 *
+Ve
+1e-07
+12.3456790123457 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  615 0 0 1.23456790123457
+6  1229 2 0
+6  1230 1 0
+0
+
+0101000
++1848 0 -1846 0 *
+Ve
+1e-07
+11.1111111111111 64.1500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  616 0 0 1.23456790123457
+6  1231 2 0
+6  1232 1 0
+0
+
+0101000
++1846 0 -1844 0 *
+Ve
+1e-07
+11.7283950617284 63.0808627447924 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  617 0 0 1.23456790123457
+6  1233 2 0
+6  1234 1 0
+0
+
+0101000
++1844 0 -1842 0 *
+Ve
+1e-07
+11.1111111111111 62.0116955796265 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  618 0 0 1.23456790123457
+6  1235 2 0
+6  1236 1 0
+0
+
+0101000
++1842 0 -1840 0 *
+Ve
+1e-07
+12.3456790123457 62.0116955796265 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  619 0 0 1.23456790123457
+6  1237 2 0
+6  1238 1 0
+0
+
+0101000
++1840 0 -1838 0 *
+Ve
+1e-07
+12.962962962963 60.9425284144605 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  620 0 0 1.23456790123457
+6  1239 2 0
+6  1240 1 0
+0
+
+0101000
++1838 0 -1836 0 *
+Ve
+1e-07
+12.3456790123457 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  621 0 0 1.23456790123457
+6  1241 2 0
+6  1242 1 0
+0
+
+0101000
++1836 0 -1834 0 *
+Ve
+1e-07
+11.1111111111111 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  622 0 0 1.23456790123457
+6  1243 2 0
+6  1244 1 0
+0
+
+0101000
++1834 0 -1832 0 *
+Ve
+1e-07
+11.7283950617284 58.8041940841285 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  623 0 0 1.23456790123457
+6  1245 2 0
+6  1246 1 0
+0
+
+0101000
++1832 0 -1830 0 *
+Ve
+1e-07
+11.1111111111111 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  624 0 0 1.23456790123457
+6  1247 2 0
+6  1248 1 0
+0
+
+0101000
++1830 0 -1828 0 *
+Ve
+1e-07
+9.87654320987655 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  625 0 0 1.23456790123457
+6  1249 2 0
+6  1250 1 0
+0
+
+0101000
++1828 0 -1826 0 *
+Ve
+1e-07
+9.25925925925926 58.8041940841285 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  626 0 0 1.23456790123457
+6  1251 2 0
+6  1252 1 0
+0
+
+0101000
++1826 0 -1824 0 *
+Ve
+1e-07
+8.64197530864198 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  627 0 0 1.23456790123457
+6  1253 2 0
+6  1254 1 0
+0
+
+0101000
++1824 0 -1822 0 *
+Ve
+1e-07
+7.40740740740741 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  628 0 0 1.23456790123457
+6  1255 2 0
+6  1256 1 0
+0
+
+0101000
++1822 0 -1820 0 *
+Ve
+1e-07
+6.79012345679013 58.8041940841285 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  629 0 0 1.23456790123457
+6  1257 2 0
+6  1258 1 0
+0
+
+0101000
++1820 0 -1818 0 *
+Ve
+1e-07
+7.40740740740741 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  630 0 0 1.23456790123457
+6  1259 2 0
+6  1260 1 0
+0
+
+0101000
++1818 0 -1816 0 *
+Ve
+1e-07
+6.17283950617284 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  631 0 0 1.23456790123457
+6  1261 2 0
+6  1262 1 0
+0
+
+0101000
++1816 0 -1814 0 *
+Ve
+1e-07
+5.55555555555556 60.9425284144605 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  632 0 0 1.23456790123457
+6  1263 2 0
+6  1264 1 0
+0
+
+0101000
++1814 0 -1812 0 *
+Ve
+1e-07
+4.93827160493827 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  633 0 0 1.23456790123457
+6  1265 2 0
+6  1266 1 0
+0
+
+0101000
++1812 0 -1810 0 *
+Ve
+1e-07
+3.70370370370371 59.8733612492945 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  634 0 0 1.23456790123457
+6  1267 2 0
+6  1268 1 0
+0
+
+0101000
++1810 0 -1808 0 *
+Ve
+1e-07
+4.32098765432099 58.8041940841285 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  635 0 0 1.23456790123457
+6  1269 2 0
+6  1270 1 0
+0
+
+0101000
++1808 0 -1806 0 *
+Ve
+1e-07
+3.70370370370371 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  636 0 0 1.23456790123457
+6  1271 2 0
+6  1272 1 0
+0
+
+0101000
++1806 0 -1804 0 *
+Ve
+1e-07
+2.46913580246914 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  637 0 0 1.23456790123457
+6  1273 2 0
+6  1274 1 0
+0
+
+0101000
++1804 0 -1802 0 *
+Ve
+1e-07
+1.85185185185186 58.8041940841285 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  638 0 0 1.23456790123457
+6  1275 2 0
+6  1276 1 0
+0
+
+0101000
++1802 0 -1800 0 *
+Ve
+1e-07
+1.23456790123457 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  639 0 0 1.23456790123457
+6  1277 2 0
+6  1278 1 0
+0
+
+0101000
++1800 0 -1798 0 *
+Ve
+1e-07
+3.5527136788005e-15 57.7350269189626 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  640 0 0 1.23456790123457
+6  1279 2 0
+6  1280 1 0
+0
+
+0101000
++1798 0 -1796 0 *
+Ve
+1e-07
+0.617283950617287 56.6658597537966 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  641 0 0 1.23456790123457
+6  1281 2 0
+6  1282 1 0
+0
+
+0101000
++1796 0 -1794 0 *
+Ve
+1e-07
+4.44089209850063e-15 55.5966925886306 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  642 0 0 1.23456790123457
+6  1283 2 0
+6  1284 1 0
+0
+
+0101000
++1794 0 -1792 0 *
+Ve
+1e-07
+1.23456790123457 55.5966925886306 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  643 0 0 1.23456790123457
+6  1285 2 0
+6  1286 1 0
+0
+
+0101000
++1792 0 -1790 0 *
+Ve
+1e-07
+1.85185185185185 54.5275254234647 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  644 0 0 1.23456790123457
+6  1287 2 0
+6  1288 1 0
+0
+
+0101000
++1790 0 -1788 0 *
+Ve
+1e-07
+1.23456790123457 53.4583582582987 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  645 0 0 1.23456790123457
+6  1289 2 0
+6  1290 1 0
+0
+
+0101000
++1788 0 -1786 0 *
+Ve
+1e-07
+3.88578058618805e-15 53.4583582582987 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  646 0 0 1.23456790123457
+6  1291 2 0
+6  1292 1 0
+0
+
+0101000
++1786 0 -1784 0 *
+Ve
+1e-07
+0.617283950617286 52.3891910931327 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  647 0 0 1.23456790123457
+6  1293 2 0
+6  1294 1 0
+0
+
+0101000
++1784 0 -1782 0 *
+Ve
+1e-07
+2.22044604925031e-15 51.3200239279667 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  648 0 0 1.23456790123457
+6  1295 2 0
+6  1296 1 0
+0
+
+0101000
++1782 0 -1780 0 *
+Ve
+1e-07
+1.23456790123457 51.3200239279667 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  649 0 0 1.23456790123457
+6  1297 2 0
+6  1298 1 0
+0
+
+0101000
++1780 0 -1778 0 *
+Ve
+1e-07
+1.85185185185186 50.2508567628008 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  650 0 0 1.23456790123457
+6  1299 2 0
+6  1300 1 0
+0
+
+0101000
++1778 0 -1776 0 *
+Ve
+1e-07
+2.46913580246914 51.3200239279667 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  651 0 0 1.23456790123457
+6  1301 2 0
+6  1302 1 0
+0
+
+0101000
++1776 0 -1774 0 *
+Ve
+1e-07
+3.70370370370371 51.3200239279667 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  652 0 0 1.23456790123457
+6  1303 2 0
+6  1304 1 0
+0
+
+0101000
++1774 0 -1772 0 *
+Ve
+1e-07
+4.32098765432099 50.2508567628008 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  653 0 0 1.23456790123457
+6  1305 2 0
+6  1306 1 0
+0
+
+0101000
++1772 0 -1770 0 *
+Ve
+1e-07
+3.70370370370371 49.1816895976348 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  654 0 0 1.23456790123457
+6  1307 2 0
+6  1308 1 0
+0
+
+0101000
++1770 0 -1768 0 *
+Ve
+1e-07
+4.93827160493827 49.1816895976348 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  655 0 0 1.23456790123457
+6  1309 2 0
+6  1310 1 0
+0
+
+0101000
++1768 0 -1766 0 *
+Ve
+1e-07
+5.55555555555556 48.1125224324688 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  656 0 0 1.23456790123457
+6  1311 2 0
+6  1312 1 0
+0
+
+0101000
++1766 0 -1764 0 *
+Ve
+1e-07
+4.93827160493827 47.0433552673028 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  657 0 0 1.23456790123457
+6  1313 2 0
+6  1314 1 0
+0
+
+0101000
++1764 0 -1762 0 *
+Ve
+1e-07
+3.70370370370371 47.0433552673028 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  658 0 0 1.23456790123457
+6  1315 2 0
+6  1316 1 0
+0
+
+0101000
++1762 0 -1760 0 *
+Ve
+1e-07
+4.32098765432099 45.9741881021369 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  659 0 0 1.23456790123457
+6  1317 2 0
+6  1318 1 0
+0
+
+0101000
++1760 0 -1758 0 *
+Ve
+1e-07
+3.70370370370371 44.9050209369709 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  660 0 0 1.23456790123457
+6  1319 2 0
+6  1320 1 0
+0
+
+0101000
++1758 0 -1756 0 *
+Ve
+1e-07
+2.46913580246914 44.9050209369709 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  661 0 0 1.23456790123457
+6  1321 2 0
+6  1322 1 0
+0
+
+0101000
++1756 0 -1754 0 *
+Ve
+1e-07
+1.85185185185186 45.9741881021369 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  662 0 0 1.23456790123457
+6  1323 2 0
+6  1324 1 0
+0
+
+0101000
++1754 0 -1752 0 *
+Ve
+1e-07
+1.23456790123457 44.9050209369709 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  663 0 0 1.23456790123457
+6  1325 2 0
+6  1326 1 0
+0
+
+0101000
++1752 0 -1750 0 *
+Ve
+1e-07
+2.22044604925031e-15 44.9050209369709 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  664 0 0 1.23456790123457
+6  1327 2 0
+6  1328 1 0
+0
+
+0101000
++1750 0 -1748 0 *
+Ve
+1e-07
+0.617283950617286 43.8358537718049 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  665 0 0 1.23456790123457
+6  1329 2 0
+6  1330 1 0
+0
+
+0101000
++1748 0 -1746 0 *
+Ve
+1e-07
+3.88578058618805e-15 42.7666866066389 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  666 0 0 1.23456790123457
+6  1331 2 0
+6  1332 1 0
+0
+
+0101000
++1746 0 -1744 0 *
+Ve
+1e-07
+1.23456790123457 42.7666866066389 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  667 0 0 1.23456790123457
+6  1333 2 0
+6  1334 1 0
+0
+
+0101000
++1744 0 -1742 0 *
+Ve
+1e-07
+1.85185185185185 41.697519441473 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  668 0 0 1.23456790123457
+6  1335 2 0
+6  1336 1 0
+0
+
+0101000
++1742 0 -1740 0 *
+Ve
+1e-07
+1.23456790123457 40.628352276307 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  669 0 0 1.23456790123457
+6  1337 2 0
+6  1338 1 0
+0
+
+0101000
++1740 0 -1738 0 *
+Ve
+1e-07
+4.44089209850063e-15 40.628352276307 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  670 0 0 1.23456790123457
+6  1339 2 0
+6  1340 1 0
+0
+
+0101000
++1738 0 -1736 0 *
+Ve
+1e-07
+0.617283950617287 39.559185111141 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  671 0 0 1.23456790123457
+6  1341 2 0
+6  1342 1 0
+0
+
+0101000
++1736 0 -1734 0 *
+Ve
+1e-07
+3.5527136788005e-15 38.4900179459751 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  672 0 0 1.23456790123457
+6  1343 2 0
+6  1344 1 0
+0
+
+0101000
++1734 0 -1732 0 *
+Ve
+1e-07
+1.23456790123457 38.4900179459751 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  673 0 0 1.23456790123457
+6  1345 2 0
+6  1346 1 0
+0
+
+0101000
++1732 0 -1730 0 *
+Ve
+1e-07
+1.85185185185185 37.4208507808091 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  674 0 0 1.23456790123457
+6  1347 2 0
+6  1348 1 0
+0
+
+0101000
++1730 0 -1728 0 *
+Ve
+1e-07
+2.46913580246914 38.4900179459751 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  675 0 0 1.23456790123457
+6  1349 2 0
+6  1350 1 0
+0
+
+0101000
++1728 0 -1726 0 *
+Ve
+1e-07
+3.70370370370371 38.4900179459751 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  676 0 0 1.23456790123457
+6  1351 2 0
+6  1352 1 0
+0
+
+0101000
++1726 0 -1724 0 *
+Ve
+1e-07
+4.32098765432099 37.4208507808091 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  677 0 0 1.23456790123457
+6  1353 2 0
+6  1354 1 0
+0
+
+0101000
++1724 0 -1722 0 *
+Ve
+1e-07
+3.70370370370371 36.3516836156431 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  678 0 0 1.23456790123457
+6  1355 2 0
+6  1356 1 0
+0
+
+0101000
++1722 0 -1720 0 *
+Ve
+1e-07
+4.93827160493827 36.3516836156431 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  679 0 0 1.23456790123457
+6  1357 2 0
+6  1358 1 0
+0
+
+0101000
++1720 0 -1718 0 *
+Ve
+1e-07
+5.55555555555556 35.2825164504771 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  680 0 0 1.23456790123457
+6  1359 2 0
+6  1360 1 0
+0
+
+0101000
++1718 0 -1716 0 *
+Ve
+1e-07
+6.17283950617284 36.3516836156431 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  681 0 0 1.23456790123457
+6  1361 2 0
+6  1362 1 0
+0
+
+0101000
++1716 0 -1714 0 *
+Ve
+1e-07
+7.40740740740741 36.3516836156431 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  682 0 0 1.23456790123457
+6  1363 2 0
+6  1364 1 0
+0
+
+0101000
++1714 0 -1712 0 *
+Ve
+1e-07
+6.79012345679013 37.4208507808091 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  683 0 0 1.23456790123456
+6  1365 2 0
+6  1366 1 0
+0
+
+0101000
++1712 0 -1710 0 *
+Ve
+1e-07
+7.40740740740741 38.490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  684 0 0 1.23456790123457
+6  1367 2 0
+6  1368 1 0
+0
+
+0101000
++1710 0 -1708 0 *
+Ve
+1e-07
+8.64197530864198 38.490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  685 0 0 1.23456790123457
+6  1369 2 0
+6  1370 1 0
+0
+
+0101000
++1708 0 -1706 0 *
+Ve
+1e-07
+9.25925925925926 37.4208507808091 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  686 0 0 1.23456790123457
+6  1371 2 0
+6  1372 1 0
+0
+
+0101000
++1706 0 -1704 0 *
+Ve
+1e-07
+9.87654320987654 38.490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  687 0 0 1.23456790123457
+6  1373 2 0
+6  1374 1 0
+0
+
+0101000
++1704 0 -1702 0 *
+Ve
+1e-07
+11.1111111111111 38.490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  688 0 0 1.23456790123457
+6  1375 2 0
+6  1376 1 0
+0
+
+0101000
++1702 0 -1700 0 *
+Ve
+1e-07
+11.7283950617284 37.4208507808091 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  689 0 0 1.23456790123457
+6  1377 2 0
+6  1378 1 0
+0
+
+0101000
++1700 0 -1698 0 *
+Ve
+1e-07
+11.1111111111111 36.3516836156431 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  690 0 0 1.23456790123456
+6  1379 2 0
+6  1380 1 0
+0
+
+0101000
++1698 0 -1696 0 *
+Ve
+1e-07
+12.3456790123457 36.3516836156431 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  691 0 0 1.23456790123457
+6  1381 2 0
+6  1382 1 0
+0
+
+0101000
++1696 0 -1694 0 *
+Ve
+1e-07
+12.962962962963 35.2825164504771 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  692 0 0 1.23456790123457
+6  1383 2 0
+6  1384 1 0
+0
+
+0101000
++1694 0 -1692 0 *
+Ve
+1e-07
+12.3456790123457 34.2133492853112 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  693 0 0 1.23456790123457
+6  1385 2 0
+6  1386 1 0
+0
+
+0101000
++1692 0 -1690 0 *
+Ve
+1e-07
+11.1111111111111 34.2133492853112 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  694 0 0 1.23456790123456
+6  1387 2 0
+6  1388 1 0
+0
+
+0101000
++1690 0 -1688 0 *
+Ve
+1e-07
+11.7283950617284 33.1441821201452 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  695 0 0 1.23456790123457
+6  1389 2 0
+6  1390 1 0
+0
+
+0101000
++1688 0 -1686 0 *
+Ve
+1e-07
+11.1111111111111 32.0750149549792 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  696 0 0 1.23456790123457
+6  1391 2 0
+6  1392 1 0
+0
+
+0101000
++1686 0 -1684 0 *
+Ve
+1e-07
+12.3456790123457 32.0750149549792 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  697 0 0 1.23456790123457
+6  1393 2 0
+6  1394 1 0
+0
+
+0101000
++1684 0 -1682 0 *
+Ve
+1e-07
+12.962962962963 31.0058477898132 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  698 0 0 1.23456790123457
+6  1395 2 0
+6  1396 1 0
+0
+
+0101000
++1682 0 -1680 0 *
+Ve
+1e-07
+13.5802469135802 32.0750149549792 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  699 0 0 1.23456790123457
+6  1397 2 0
+6  1398 1 0
+0
+
+0101000
++1680 0 -1678 0 *
+Ve
+1e-07
+14.8148148148148 32.0750149549792 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  700 0 0 1.23456790123457
+6  1399 2 0
+6  1400 1 0
+0
+
+0101000
++1678 0 -1676 0 *
+Ve
+1e-07
+15.4320987654321 31.0058477898132 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  701 0 0 1.23456790123457
+6  1401 2 0
+6  1402 1 0
+0
+
+0101000
++1676 0 -1674 0 *
+Ve
+1e-07
+14.8148148148148 29.9366806246473 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  702 0 0 1.23456790123457
+6  1403 2 0
+6  1404 1 0
+0
+
+0101000
++1674 0 -1672 0 *
+Ve
+1e-07
+16.0493827160494 29.9366806246473 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  703 0 0 1.23456790123457
+6  1405 2 0
+6  1406 1 0
+0
+
+0101000
++1672 0 -1670 0 *
+Ve
+1e-07
+16.6666666666667 28.8675134594813 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  704 0 0 1.23456790123457
+6  1407 2 0
+6  1408 1 0
+0
+
+0101000
++1670 0 -1668 0 *
+Ve
+1e-07
+16.0493827160494 27.7983462943153 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  705 0 0 1.23456790123457
+6  1409 2 0
+6  1410 1 0
+0
+
+0101000
++1668 0 -1666 0 *
+Ve
+1e-07
+14.8148148148148 27.7983462943153 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  706 0 0 1.23456790123457
+6  1411 2 0
+6  1412 1 0
+0
+
+0101000
++1666 0 -1664 0 *
+Ve
+1e-07
+15.4320987654321 26.7291791291493 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  707 0 0 1.23456790123457
+6  1413 2 0
+6  1414 1 0
+0
+
+0101000
++1664 0 -1662 0 *
+Ve
+1e-07
+14.8148148148148 25.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  708 0 0 1.23456790123457
+6  1415 2 0
+6  1416 1 0
+0
+
+0101000
++1662 0 -1660 0 *
+Ve
+1e-07
+13.5802469135802 25.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  709 0 0 1.23456790123457
+6  1417 2 0
+6  1418 1 0
+0
+
+0101000
++1660 0 -1658 0 *
+Ve
+1e-07
+12.962962962963 26.7291791291493 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  710 0 0 1.23456790123457
+6  1419 2 0
+6  1420 1 0
+0
+
+0101000
++1658 0 -1656 0 *
+Ve
+1e-07
+12.3456790123457 25.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  711 0 0 1.23456790123457
+6  1421 2 0
+6  1422 1 0
+0
+
+0101000
++1656 0 -1654 0 *
+Ve
+1e-07
+11.1111111111111 25.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  712 0 0 1.23456790123457
+6  1423 2 0
+6  1424 1 0
+0
+
+0101000
++1654 0 -1652 0 *
+Ve
+1e-07
+11.7283950617284 24.5908447988174 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  713 0 0 1.23456790123457
+6  1425 2 0
+6  1426 1 0
+0
+
+0101000
++1652 0 -1650 0 *
+Ve
+1e-07
+11.1111111111111 23.5216776336514 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  714 0 0 1.23456790123457
+6  1427 2 0
+6  1428 1 0
+0
+
+0101000
++1650 0 -1648 0 *
+Ve
+1e-07
+12.3456790123457 23.5216776336514 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  715 0 0 1.23456790123456
+6  1429 2 0
+6  1430 1 0
+0
+
+0101000
++1648 0 -1646 0 *
+Ve
+1e-07
+12.962962962963 22.4525104684854 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  716 0 0 1.23456790123457
+6  1431 2 0
+6  1432 1 0
+0
+
+0101000
++1646 0 -1644 0 *
+Ve
+1e-07
+12.3456790123457 21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  717 0 0 1.23456790123457
+6  1433 2 0
+6  1434 1 0
+0
+
+0101000
++1644 0 -1642 0 *
+Ve
+1e-07
+11.1111111111111 21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  718 0 0 1.23456790123457
+6  1435 2 0
+6  1436 1 0
+0
+
+0101000
++1642 0 -1640 0 *
+Ve
+1e-07
+11.7283950617284 20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  719 0 0 1.23456790123457
+6  1437 2 0
+6  1438 1 0
+0
+
+0101000
++1640 0 -1638 0 *
+Ve
+1e-07
+11.1111111111111 19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  720 0 0 1.23456790123457
+6  1439 2 0
+6  1440 1 0
+0
+
+0101000
++1638 0 -1636 0 *
+Ve
+1e-07
+9.87654320987654 19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  721 0 0 1.23456790123457
+6  1441 2 0
+6  1442 1 0
+0
+
+0101000
++1636 0 -1634 0 *
+Ve
+1e-07
+9.25925925925926 20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  722 0 0 1.23456790123457
+6  1443 2 0
+6  1444 1 0
+0
+
+0101000
++1634 0 -1632 0 *
+Ve
+1e-07
+8.64197530864198 19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  723 0 0 1.23456790123457
+6  1445 2 0
+6  1446 1 0
+0
+
+0101000
++1632 0 -1630 0 *
+Ve
+1e-07
+7.40740740740741 19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  724 0 0 1.23456790123457
+6  1447 2 0
+6  1448 1 0
+0
+
+0101000
++1630 0 -1628 0 *
+Ve
+1e-07
+6.79012345679012 20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  725 0 0 1.23456790123457
+6  1449 2 0
+6  1450 1 0
+0
+
+0101000
++1628 0 -1626 0 *
+Ve
+1e-07
+7.40740740740741 21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  726 0 0 1.23456790123457
+6  1451 2 0
+6  1452 1 0
+0
+
+0101000
++1626 0 -1624 0 *
+Ve
+1e-07
+6.17283950617284 21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  727 0 0 1.23456790123457
+6  1453 2 0
+6  1454 1 0
+0
+
+0101000
++1624 0 -1622 0 *
+Ve
+1e-07
+5.55555555555556 22.4525104684854 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  728 0 0 1.23456790123457
+6  1455 2 0
+6  1456 1 0
+0
+
+0101000
++1622 0 -1620 0 *
+Ve
+1e-07
+4.93827160493827 21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  729 0 0 1.23456790123457
+6  1457 2 0
+6  1458 1 0
+0
+
+0101000
++1620 0 -1618 0 *
+Ve
+1e-07
+3.7037037037037 21.3833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  730 0 0 1.23456790123457
+6  1459 2 0
+6  1460 1 0
+0
+
+0101000
++1618 0 -1616 0 *
+Ve
+1e-07
+4.32098765432099 20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  731 0 0 1.23456790123457
+6  1461 2 0
+6  1462 1 0
+0
+
+0101000
++1616 0 -1614 0 *
+Ve
+1e-07
+3.7037037037037 19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  732 0 0 1.23456790123457
+6  1463 2 0
+6  1464 1 0
+0
+
+0101000
++1614 0 -1612 0 *
+Ve
+1e-07
+2.46913580246914 19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  733 0 0 1.23456790123457
+6  1465 2 0
+6  1466 1 0
+0
+
+0101000
++1612 0 -1610 0 *
+Ve
+1e-07
+1.85185185185185 20.3141761381535 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  734 0 0 1.23456790123457
+6  1467 2 0
+6  1468 1 0
+0
+
+0101000
++1610 0 -1608 0 *
+Ve
+1e-07
+1.23456790123457 19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  735 0 0 1.23456790123457
+6  1469 2 0
+6  1470 1 0
+0
+
+0101000
++1608 0 -1606 0 *
+Ve
+1e-07
+0 19.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  736 0 0 1.23456790123457
+6  1471 2 0
+6  1472 1 0
+0
+
+0101000
++1606 0 -1604 0 *
+Ve
+1e-07
+0.617283950617284 18.1758418078216 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  737 0 0 1.23456790123457
+6  1473 2 0
+6  1474 1 0
+0
+
+0101000
++1604 0 -1602 0 *
+Ve
+1e-07
+1.4432899320127e-15 17.1066746426556 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  738 0 0 1.23456790123457
+6  1475 2 0
+6  1476 1 0
+0
+
+0101000
++1602 0 -1600 0 *
+Ve
+1e-07
+1.23456790123457 17.1066746426556 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  739 0 0 1.23456790123457
+6  1477 2 0
+6  1478 1 0
+0
+
+0101000
++1600 0 -1598 0 *
+Ve
+1e-07
+1.85185185185185 16.0375074774896 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  740 0 0 1.23456790123457
+6  1479 2 0
+6  1480 1 0
+0
+
+0101000
++1598 0 -1596 0 *
+Ve
+1e-07
+1.23456790123457 14.9683403123236 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  741 0 0 1.23456790123457
+6  1481 2 0
+6  1482 1 0
+0
+
+0101000
++1596 0 -1594 0 *
+Ve
+1e-07
+1.11022302462516e-15 14.9683403123236 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  742 0 0 1.23456790123457
+6  1483 2 0
+6  1484 1 0
+0
+
+0101000
++1594 0 -1592 0 *
+Ve
+1e-07
+0.617283950617285 13.8991731471577 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  743 0 0 1.23456790123457
+6  1485 2 0
+6  1486 1 0
+0
+
+0101000
++1592 0 -1590 0 *
+Ve
+1e-07
+1.77635683940025e-15 12.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  744 0 0 1.23456790123457
+6  1487 2 0
+6  1488 1 0
+0
+
+0101000
++1590 0 -1588 0 *
+Ve
+1e-07
+1.23456790123457 12.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  745 0 0 1.23456790123457
+6  1489 2 0
+6  1490 1 0
+0
+
+0101000
++1588 0 -1586 0 *
+Ve
+1e-07
+1.85185185185185 11.7608388168257 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  746 0 0 1.23456790123457
+6  1491 2 0
+6  1492 1 0
+0
+
+0101000
++1586 0 -1584 0 *
+Ve
+1e-07
+2.46913580246914 12.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  747 0 0 1.23456790123457
+6  1493 2 0
+6  1494 1 0
+0
+
+0101000
++1584 0 -1582 0 *
+Ve
+1e-07
+3.7037037037037 12.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  748 0 0 1.23456790123457
+6  1495 2 0
+6  1496 1 0
+0
+
+0101000
++1582 0 -1580 0 *
+Ve
+1e-07
+4.32098765432099 11.7608388168257 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  749 0 0 1.23456790123457
+6  1497 2 0
+6  1498 1 0
+0
+
+0101000
++1580 0 -1578 0 *
+Ve
+1e-07
+3.7037037037037 10.6916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  750 0 0 1.23456790123457
+6  1499 2 0
+6  1500 1 0
+0
+
+0101000
++1578 0 -1576 0 *
+Ve
+1e-07
+4.93827160493827 10.6916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  751 0 0 1.23456790123457
+6  1501 2 0
+6  1502 1 0
+0
+
+0101000
++1576 0 -1574 0 *
+Ve
+1e-07
+5.55555555555556 9.62250448649376 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  752 0 0 1.23456790123457
+6  1503 2 0
+6  1504 1 0
+0
+
+0101000
++1574 0 -1572 0 *
+Ve
+1e-07
+4.93827160493827 8.55333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  753 0 0 1.23456790123457
+6  1505 2 0
+6  1506 1 0
+0
+
+0101000
++1572 0 -1570 0 *
+Ve
+1e-07
+3.7037037037037 8.55333732132779 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  754 0 0 1.23456790123457
+6  1507 2 0
+6  1508 1 0
+0
+
+0101000
++1570 0 -1568 0 *
+Ve
+1e-07
+4.32098765432099 7.48417015616181 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  755 0 0 1.23456790123457
+6  1509 2 0
+6  1510 1 0
+0
+
+0101000
++1568 0 -1566 0 *
+Ve
+1e-07
+3.7037037037037 6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  756 0 0 1.23456790123457
+6  1511 2 0
+6  1512 1 0
+0
+
+0101000
++1566 0 -1564 0 *
+Ve
+1e-07
+2.46913580246914 6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  757 0 0 1.23456790123457
+6  1513 2 0
+6  1514 1 0
+0
+
+0101000
++1564 0 -1562 0 *
+Ve
+1e-07
+1.85185185185185 7.48417015616181 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  758 0 0 1.23456790123457
+6  1515 2 0
+6  1516 1 0
+0
+
+0101000
++1562 0 -1560 0 *
+Ve
+1e-07
+1.23456790123457 6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  759 0 0 1.23456790123457
+6  1517 2 0
+6  1518 1 0
+0
+
+0101000
++1560 0 -1558 0 *
+Ve
+1e-07
+8.88178419700125e-16 6.41500299099584 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  760 0 0 1.23456790123457
+6  1519 2 0
+6  1520 1 0
+0
+
+0101000
++1558 0 -1556 0 *
+Ve
+1e-07
+0.617283950617285 5.34583582582987 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  761 0 0 1.23456790123457
+6  1521 2 0
+6  1522 1 0
+0
+
+0101000
++1556 0 -1554 0 *
+Ve
+1e-07
+6.66133814775094e-16 4.27666866066389 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  762 0 0 1.23456790123457
+6  1523 2 0
+6  1524 1 0
+0
+
+0101000
++1554 0 -1552 0 *
+Ve
+1e-07
+1.23456790123457 4.27666866066389 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  763 0 0 1.23456790123457
+6  1525 2 0
+6  1526 1 0
+0
+
+0101000
++1552 0 -1550 0 *
+Ve
+1e-07
+1.85185185185185 3.20750149549792 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  764 0 0 1.23456790123457
+6  1527 2 0
+6  1528 1 0
+0
+
+0101000
++1550 0 -1548 0 *
+Ve
+1e-07
+1.23456790123457 2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  765 0 0 1.23456790123457
+6  1529 2 0
+6  1530 1 0
+0
+
+0101000
++1548 0 -1546 0 *
+Ve
+1e-07
+2.22044604925031e-16 2.13833433033195 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  766 0 0 1.23456790123457
+6  1531 2 0
+6  1532 1 0
+0
+
+0101000
++1546 0 -1544 0 *
+Ve
+1e-07
+0.617283950617284 1.06916716516597 0
+0 0
+
+0101100
+*
+Ed
+ 1e-07 1 1 0
+1  767 0 0 1.23456790123457
+6  1533 2 0
+6  1534 1 0
+0
+
+0101000
++1544 0 -1542 0 *
+Ed
+ 1e-07 1 1 0
+1  768 0 0 1.23456790123457
+6  1535 2 0
+6  1536 1 0
+0
+
+0101000
++1542 0 -3075 0 *
+Wi
+
+0101000
++3073 0 +3071 0 +3069 0 +3067 0 +3065 0 +3063 0 +3061 0 +3059 0 +3057 0 +3055 0 
++3053 0 +3051 0 +3049 0 +3047 0 +3045 0 +3043 0 +3041 0 +3039 0 +3037 0 +3035 0 
++3033 0 +3031 0 +3029 0 +3027 0 +3025 0 +3023 0 +3021 0 +3019 0 +3017 0 +3015 0 
++3013 0 +3011 0 +3009 0 +3007 0 +3005 0 +3003 0 +3001 0 +2999 0 +2997 0 +2995 0 
++2993 0 +2991 0 +2989 0 +2987 0 +2985 0 +2983 0 +2981 0 +2979 0 +2977 0 +2975 0 
++2973 0 +2971 0 +2969 0 +2967 0 +2965 0 +2963 0 +2961 0 +2959 0 +2957 0 +2955 0 
++2953 0 +2951 0 +2949 0 +2947 0 +2945 0 +2943 0 +2941 0 +2939 0 +2937 0 +2935 0 
++2933 0 +2931 0 +2929 0 +2927 0 +2925 0 +2923 0 +2921 0 +2919 0 +2917 0 +2915 0 
++2913 0 +2911 0 +2909 0 +2907 0 +2905 0 +2903 0 +2901 0 +2899 0 +2897 0 +2895 0 
++2893 0 +2891 0 +2889 0 +2887 0 +2885 0 +2883 0 +2881 0 +2879 0 +2877 0 +2875 0 
++2873 0 +2871 0 +2869 0 +2867 0 +2865 0 +2863 0 +2861 0 +2859 0 +2857 0 +2855 0 
++2853 0 +2851 0 +2849 0 +2847 0 +2845 0 +2843 0 +2841 0 +2839 0 +2837 0 +2835 0 
++2833 0 +2831 0 +2829 0 +2827 0 +2825 0 +2823 0 +2821 0 +2819 0 +2817 0 +2815 0 
++2813 0 +2811 0 +2809 0 +2807 0 +2805 0 +2803 0 +2801 0 +2799 0 +2797 0 +2795 0 
++2793 0 +2791 0 +2789 0 +2787 0 +2785 0 +2783 0 +2781 0 +2779 0 +2777 0 +2775 0 
++2773 0 +2771 0 +2769 0 +2767 0 +2765 0 +2763 0 +2761 0 +2759 0 +2757 0 +2755 0 
++2753 0 +2751 0 +2749 0 +2747 0 +2745 0 +2743 0 +2741 0 +2739 0 +2737 0 +2735 0 
++2733 0 +2731 0 +2729 0 +2727 0 +2725 0 +2723 0 +2721 0 +2719 0 +2717 0 +2715 0 
++2713 0 +2711 0 +2709 0 +2707 0 +2705 0 +2703 0 +2701 0 +2699 0 +2697 0 +2695 0 
++2693 0 +2691 0 +2689 0 +2687 0 +2685 0 +2683 0 +2681 0 +2679 0 +2677 0 +2675 0 
++2673 0 +2671 0 +2669 0 +2667 0 +2665 0 +2663 0 +2661 0 +2659 0 +2657 0 +2655 0 
++2653 0 +2651 0 +2649 0 +2647 0 +2645 0 +2643 0 +2641 0 +2639 0 +2637 0 +2635 0 
++2633 0 +2631 0 +2629 0 +2627 0 +2625 0 +2623 0 +2621 0 +2619 0 +2617 0 +2615 0 
++2613 0 +2611 0 +2609 0 +2607 0 +2605 0 +2603 0 +2601 0 +2599 0 +2597 0 +2595 0 
++2593 0 +2591 0 +2589 0 +2587 0 +2585 0 +2583 0 +2581 0 +2579 0 +2577 0 +2575 0 
++2573 0 +2571 0 +2569 0 +2567 0 +2565 0 +2563 0 +2561 0 +2559 0 +2557 0 +2555 0 
++2553 0 +2551 0 +2549 0 +2547 0 +2545 0 +2543 0 +2541 0 +2539 0 +2537 0 +2535 0 
++2533 0 +2531 0 +2529 0 +2527 0 +2525 0 +2523 0 +2521 0 +2519 0 +2517 0 +2515 0 
++2513 0 +2511 0 +2509 0 +2507 0 +2505 0 +2503 0 +2501 0 +2499 0 +2497 0 +2495 0 
++2493 0 +2491 0 +2489 0 +2487 0 +2485 0 +2483 0 +2481 0 +2479 0 +2477 0 +2475 0 
++2473 0 +2471 0 +2469 0 +2467 0 +2465 0 +2463 0 +2461 0 +2459 0 +2457 0 +2455 0 
++2453 0 +2451 0 +2449 0 +2447 0 +2445 0 +2443 0 +2441 0 +2439 0 +2437 0 +2435 0 
++2433 0 +2431 0 +2429 0 +2427 0 +2425 0 +2423 0 +2421 0 +2419 0 +2417 0 +2415 0 
++2413 0 +2411 0 +2409 0 +2407 0 +2405 0 +2403 0 +2401 0 +2399 0 +2397 0 +2395 0 
++2393 0 +2391 0 +2389 0 +2387 0 +2385 0 +2383 0 +2381 0 +2379 0 +2377 0 +2375 0 
++2373 0 +2371 0 +2369 0 +2367 0 +2365 0 +2363 0 +2361 0 +2359 0 +2357 0 +2355 0 
++2353 0 +2351 0 +2349 0 +2347 0 +2345 0 +2343 0 +2341 0 +2339 0 +2337 0 +2335 0 
++2333 0 +2331 0 +2329 0 +2327 0 +2325 0 +2323 0 +2321 0 +2319 0 +2317 0 +2315 0 
++2313 0 +2311 0 +2309 0 +2307 0 +2305 0 +2303 0 +2301 0 +2299 0 +2297 0 +2295 0 
++2293 0 +2291 0 +2289 0 +2287 0 +2285 0 +2283 0 +2281 0 +2279 0 +2277 0 +2275 0 
++2273 0 +2271 0 +2269 0 +2267 0 +2265 0 +2263 0 +2261 0 +2259 0 +2257 0 +2255 0 
++2253 0 +2251 0 +2249 0 +2247 0 +2245 0 +2243 0 +2241 0 +2239 0 +2237 0 +2235 0 
++2233 0 +2231 0 +2229 0 +2227 0 +2225 0 +2223 0 +2221 0 +2219 0 +2217 0 +2215 0 
++2213 0 +2211 0 +2209 0 +2207 0 +2205 0 +2203 0 +2201 0 +2199 0 +2197 0 +2195 0 
++2193 0 +2191 0 +2189 0 +2187 0 +2185 0 +2183 0 +2181 0 +2179 0 +2177 0 +2175 0 
++2173 0 +2171 0 +2169 0 +2167 0 +2165 0 +2163 0 +2161 0 +2159 0 +2157 0 +2155 0 
++2153 0 +2151 0 +2149 0 +2147 0 +2145 0 +2143 0 +2141 0 +2139 0 +2137 0 +2135 0 
++2133 0 +2131 0 +2129 0 +2127 0 +2125 0 +2123 0 +2121 0 +2119 0 +2117 0 +2115 0 
++2113 0 +2111 0 +2109 0 +2107 0 +2105 0 +2103 0 +2101 0 +2099 0 +2097 0 +2095 0 
++2093 0 +2091 0 +2089 0 +2087 0 +2085 0 +2083 0 +2081 0 +2079 0 +2077 0 +2075 0 
++2073 0 +2071 0 +2069 0 +2067 0 +2065 0 +2063 0 +2061 0 +2059 0 +2057 0 +2055 0 
++2053 0 +2051 0 +2049 0 +2047 0 +2045 0 +2043 0 +2041 0 +2039 0 +2037 0 +2035 0 
++2033 0 +2031 0 +2029 0 +2027 0 +2025 0 +2023 0 +2021 0 +2019 0 +2017 0 +2015 0 
++2013 0 +2011 0 +2009 0 +2007 0 +2005 0 +2003 0 +2001 0 +1999 0 +1997 0 +1995 0 
++1993 0 +1991 0 +1989 0 +1987 0 +1985 0 +1983 0 +1981 0 +1979 0 +1977 0 +1975 0 
++1973 0 +1971 0 +1969 0 +1967 0 +1965 0 +1963 0 +1961 0 +1959 0 +1957 0 +1955 0 
++1953 0 +1951 0 +1949 0 +1947 0 +1945 0 +1943 0 +1941 0 +1939 0 +1937 0 +1935 0 
++1933 0 +1931 0 +1929 0 +1927 0 +1925 0 +1923 0 +1921 0 +1919 0 +1917 0 +1915 0 
++1913 0 +1911 0 +1909 0 +1907 0 +1905 0 +1903 0 +1901 0 +1899 0 +1897 0 +1895 0 
++1893 0 +1891 0 +1889 0 +1887 0 +1885 0 +1883 0 +1881 0 +1879 0 +1877 0 +1875 0 
++1873 0 +1871 0 +1869 0 +1867 0 +1865 0 +1863 0 +1861 0 +1859 0 +1857 0 +1855 0 
++1853 0 +1851 0 +1849 0 +1847 0 +1845 0 +1843 0 +1841 0 +1839 0 +1837 0 +1835 0 
++1833 0 +1831 0 +1829 0 +1827 0 +1825 0 +1823 0 +1821 0 +1819 0 +1817 0 +1815 0 
++1813 0 +1811 0 +1809 0 +1807 0 +1805 0 +1803 0 +1801 0 +1799 0 +1797 0 +1795 0 
++1793 0 +1791 0 +1789 0 +1787 0 +1785 0 +1783 0 +1781 0 +1779 0 +1777 0 +1775 0 
++1773 0 +1771 0 +1769 0 +1767 0 +1765 0 +1763 0 +1761 0 +1759 0 +1757 0 +1755 0 
++1753 0 +1751 0 +1749 0 +1747 0 +1745 0 +1743 0 +1741 0 +1739 0 +1737 0 +1735 0 
++1733 0 +1731 0 +1729 0 +1727 0 +1725 0 +1723 0 +1721 0 +1719 0 +1717 0 +1715 0 
++1713 0 +1711 0 +1709 0 +1707 0 +1705 0 +1703 0 +1701 0 +1699 0 +1697 0 +1695 0 
++1693 0 +1691 0 +1689 0 +1687 0 +1685 0 +1683 0 +1681 0 +1679 0 +1677 0 +1675 0 
++1673 0 +1671 0 +1669 0 +1667 0 +1665 0 +1663 0 +1661 0 +1659 0 +1657 0 +1655 0 
++1653 0 +1651 0 +1649 0 +1647 0 +1645 0 +1643 0 +1641 0 +1639 0 +1637 0 +1635 0 
++1633 0 +1631 0 +1629 0 +1627 0 +1625 0 +1623 0 +1621 0 +1619 0 +1617 0 +1615 0 
++1613 0 +1611 0 +1609 0 +1607 0 +1605 0 +1603 0 +1601 0 +1599 0 +1597 0 +1595 0 
++1593 0 +1591 0 +1589 0 +1587 0 +1585 0 +1583 0 +1581 0 +1579 0 +1577 0 +1575 0 
++1573 0 +1571 0 +1569 0 +1567 0 +1565 0 +1563 0 +1561 0 +1559 0 +1557 0 +1555 0 
++1553 0 +1551 0 +1549 0 +1547 0 +1545 0 +1543 0 +1541 0 +1540 0 *
+Ve
+1e-07
+35 35 0
+0 0
+
+0101100
+*
+Ve
+1e-07
+35.3703703703704 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  769 0 0 0.37037037037037
+6  1537 1 0
+0
+
+0101000
++1538 0 -1537 0 *
+Ve
+1e-07
+35.5555555555556 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  770 0 0 0.37037037037037
+6  1538 1 0
+0
+
+0101000
++1537 0 -1535 0 *
+Ve
+1e-07
+35.7407407407407 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  771 0 0 0.37037037037037
+6  1539 1 0
+0
+
+0101000
++1535 0 -1533 0 *
+Ve
+1e-07
+36.1111111111111 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  772 0 0 0.37037037037037
+6  1540 1 0
+0
+
+0101000
++1533 0 -1531 0 *
+Ve
+1e-07
+36.2962962962963 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  773 0 0 0.37037037037037
+6  1541 1 0
+0
+
+0101000
++1531 0 -1529 0 *
+Ve
+1e-07
+36.1111111111111 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  774 0 0 0.37037037037037
+6  1542 1 0
+0
+
+0101000
++1529 0 -1527 0 *
+Ve
+1e-07
+36.4814814814815 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  775 0 0 0.370370370370371
+6  1543 1 0
+0
+
+0101000
++1527 0 -1525 0 *
+Ve
+1e-07
+36.6666666666667 34.0377495513506 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  776 0 0 0.37037037037037
+6  1544 1 0
+0
+
+0101000
++1525 0 -1523 0 *
+Ve
+1e-07
+36.8518518518519 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  777 0 0 0.37037037037037
+6  1545 1 0
+0
+
+0101000
++1523 0 -1521 0 *
+Ve
+1e-07
+37.2222222222222 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  778 0 0 0.37037037037037
+6  1546 1 0
+0
+
+0101000
++1521 0 -1519 0 *
+Ve
+1e-07
+37.037037037037 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  779 0 0 0.37037037037037
+6  1547 1 0
+0
+
+0101000
++1519 0 -1517 0 *
+Ve
+1e-07
+37.2222222222222 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  780 0 0 0.37037037037037
+6  1548 1 0
+0
+
+0101000
++1517 0 -1515 0 *
+Ve
+1e-07
+37.5925925925926 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  781 0 0 0.37037037037037
+6  1549 1 0
+0
+
+0101000
++1515 0 -1513 0 *
+Ve
+1e-07
+37.7777777777778 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  782 0 0 0.37037037037037
+6  1550 1 0
+0
+
+0101000
++1513 0 -1511 0 *
+Ve
+1e-07
+37.962962962963 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  783 0 0 0.370370370370371
+6  1551 1 0
+0
+
+0101000
++1511 0 -1509 0 *
+Ve
+1e-07
+38.3333333333333 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  784 0 0 0.37037037037037
+6  1552 1 0
+0
+
+0101000
++1509 0 -1507 0 *
+Ve
+1e-07
+38.5185185185185 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  785 0 0 0.37037037037037
+6  1553 1 0
+0
+
+0101000
++1507 0 -1505 0 *
+Ve
+1e-07
+38.3333333333333 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  786 0 0 0.37037037037037
+6  1554 1 0
+0
+
+0101000
++1505 0 -1503 0 *
+Ve
+1e-07
+38.7037037037037 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  787 0 0 0.37037037037037
+6  1555 1 0
+0
+
+0101000
++1503 0 -1501 0 *
+Ve
+1e-07
+38.8888888888889 34.0377495513506 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  788 0 0 0.37037037037037
+6  1556 1 0
+0
+
+0101000
++1501 0 -1499 0 *
+Ve
+1e-07
+38.7037037037037 33.7169994018008 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  789 0 0 0.370370370370371
+6  1557 1 0
+0
+
+0101000
++1499 0 -1497 0 *
+Ve
+1e-07
+38.3333333333333 33.7169994018008 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  790 0 0 0.37037037037037
+6  1558 1 0
+0
+
+0101000
++1497 0 -1495 0 *
+Ve
+1e-07
+38.5185185185185 33.396249252251 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  791 0 0 0.37037037037037
+6  1559 1 0
+0
+
+0101000
++1495 0 -1493 0 *
+Ve
+1e-07
+38.3333333333333 33.0754991027013 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  792 0 0 0.37037037037037
+6  1560 1 0
+0
+
+0101000
++1493 0 -1491 0 *
+Ve
+1e-07
+38.7037037037037 33.0754991027013 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  793 0 0 0.37037037037037
+6  1561 1 0
+0
+
+0101000
++1491 0 -1489 0 *
+Ve
+1e-07
+38.8888888888889 32.7547489531515 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  794 0 0 0.37037037037037
+6  1562 1 0
+0
+
+0101000
++1489 0 -1487 0 *
+Ve
+1e-07
+39.0740740740741 33.0754991027013 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  795 0 0 0.37037037037037
+6  1563 1 0
+0
+
+0101000
++1487 0 -1485 0 *
+Ve
+1e-07
+39.4444444444444 33.0754991027013 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  796 0 0 0.37037037037037
+6  1564 1 0
+0
+
+0101000
++1485 0 -1483 0 *
+Ve
+1e-07
+39.6296296296296 32.7547489531515 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  797 0 0 0.37037037037037
+6  1565 1 0
+0
+
+0101000
++1483 0 -1481 0 *
+Ve
+1e-07
+39.4444444444444 32.4339988036017 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  798 0 0 0.37037037037037
+6  1566 1 0
+0
+
+0101000
++1481 0 -1479 0 *
+Ve
+1e-07
+39.8148148148148 32.4339988036017 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  799 0 0 0.37037037037037
+6  1567 1 0
+0
+
+0101000
++1479 0 -1477 0 *
+Ve
+1e-07
+40 32.1132486540519 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  800 0 0 0.37037037037037
+6  1568 1 0
+0
+
+0101000
++1477 0 -1475 0 *
+Ve
+1e-07
+40.1851851851852 32.4339988036017 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  801 0 0 0.37037037037037
+6  1569 1 0
+0
+
+0101000
++1475 0 -1473 0 *
+Ve
+1e-07
+40.5555555555556 32.4339988036017 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  802 0 0 0.370370370370371
+6  1570 1 0
+0
+
+0101000
++1473 0 -1471 0 *
+Ve
+1e-07
+40.3703703703704 32.7547489531515 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  803 0 0 0.370370370370371
+6  1571 1 0
+0
+
+0101000
++1471 0 -1469 0 *
+Ve
+1e-07
+40.5555555555556 33.0754991027013 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  804 0 0 0.37037037037037
+6  1572 1 0
+0
+
+0101000
++1469 0 -1467 0 *
+Ve
+1e-07
+40.9259259259259 33.0754991027013 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  805 0 0 0.370370370370371
+6  1573 1 0
+0
+
+0101000
++1467 0 -1465 0 *
+Ve
+1e-07
+41.1111111111111 32.7547489531515 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  806 0 0 0.370370370370371
+6  1574 1 0
+0
+
+0101000
++1465 0 -1463 0 *
+Ve
+1e-07
+41.2962962962963 33.0754991027012 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  807 0 0 0.37037037037037
+6  1575 1 0
+0
+
+0101000
++1463 0 -1461 0 *
+Ve
+1e-07
+41.6666666666667 33.0754991027012 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  808 0 0 0.370370370370371
+6  1576 1 0
+0
+
+0101000
++1461 0 -1459 0 *
+Ve
+1e-07
+41.4814814814815 33.396249252251 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  809 0 0 0.37037037037037
+6  1577 1 0
+0
+
+0101000
++1459 0 -1457 0 *
+Ve
+1e-07
+41.6666666666667 33.7169994018008 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  810 0 0 0.370370370370371
+6  1578 1 0
+0
+
+0101000
++1457 0 -1455 0 *
+Ve
+1e-07
+41.2962962962963 33.7169994018008 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  811 0 0 0.37037037037037
+6  1579 1 0
+0
+
+0101000
++1455 0 -1453 0 *
+Ve
+1e-07
+41.1111111111111 34.0377495513506 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  812 0 0 0.370370370370371
+6  1580 1 0
+0
+
+0101000
++1453 0 -1451 0 *
+Ve
+1e-07
+41.2962962962963 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  813 0 0 0.37037037037037
+6  1581 1 0
+0
+
+0101000
++1451 0 -1449 0 *
+Ve
+1e-07
+41.6666666666667 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  814 0 0 0.37037037037037
+6  1582 1 0
+0
+
+0101000
++1449 0 -1447 0 *
+Ve
+1e-07
+41.4814814814815 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  815 0 0 0.37037037037037
+6  1583 1 0
+0
+
+0101000
++1447 0 -1445 0 *
+Ve
+1e-07
+41.6666666666667 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  816 0 0 0.370370370370371
+6  1584 1 0
+0
+
+0101000
++1445 0 -1443 0 *
+Ve
+1e-07
+42.037037037037 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  817 0 0 0.37037037037037
+6  1585 1 0
+0
+
+0101000
++1443 0 -1441 0 *
+Ve
+1e-07
+42.2222222222222 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  818 0 0 0.37037037037037
+6  1586 1 0
+0
+
+0101000
++1441 0 -1439 0 *
+Ve
+1e-07
+42.4074074074074 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  819 0 0 0.37037037037037
+6  1587 1 0
+0
+
+0101000
++1439 0 -1437 0 *
+Ve
+1e-07
+42.7777777777778 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  820 0 0 0.37037037037037
+6  1588 1 0
+0
+
+0101000
++1437 0 -1435 0 *
+Ve
+1e-07
+42.962962962963 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  821 0 0 0.37037037037037
+6  1589 1 0
+0
+
+0101000
++1435 0 -1433 0 *
+Ve
+1e-07
+42.7777777777778 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  822 0 0 0.37037037037037
+6  1590 1 0
+0
+
+0101000
++1433 0 -1431 0 *
+Ve
+1e-07
+43.1481481481481 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  823 0 0 0.37037037037037
+6  1591 1 0
+0
+
+0101000
++1431 0 -1429 0 *
+Ve
+1e-07
+43.3333333333333 34.0377495513506 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  824 0 0 0.37037037037037
+6  1592 1 0
+0
+
+0101000
++1429 0 -1427 0 *
+Ve
+1e-07
+43.5185185185185 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  825 0 0 0.37037037037037
+6  1593 1 0
+0
+
+0101000
++1427 0 -1425 0 *
+Ve
+1e-07
+43.8888888888889 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  826 0 0 0.37037037037037
+6  1594 1 0
+0
+
+0101000
++1425 0 -1423 0 *
+Ve
+1e-07
+43.7037037037037 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  827 0 0 0.37037037037037
+6  1595 1 0
+0
+
+0101000
++1423 0 -1421 0 *
+Ve
+1e-07
+43.8888888888889 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  828 0 0 0.37037037037037
+6  1596 1 0
+0
+
+0101000
++1421 0 -1419 0 *
+Ve
+1e-07
+44.2592592592593 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  829 0 0 0.37037037037037
+6  1597 1 0
+0
+
+0101000
++1419 0 -1417 0 *
+Ve
+1e-07
+44.4444444444444 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  830 0 0 0.37037037037037
+6  1598 1 0
+0
+
+0101000
++1417 0 -1415 0 *
+Ve
+1e-07
+44.6296296296296 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  831 0 0 0.37037037037037
+6  1599 1 0
+0
+
+0101000
++1415 0 -1413 0 *
+Ve
+1e-07
+45 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  832 0 0 0.370370370370371
+6  1600 1 0
+0
+
+0101000
++1413 0 -1411 0 *
+Ve
+1e-07
+45.1851851851852 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  833 0 0 0.370370370370371
+6  1601 1 0
+0
+
+0101000
++1411 0 -1409 0 *
+Ve
+1e-07
+45 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  834 0 0 0.37037037037037
+6  1602 1 0
+0
+
+0101000
++1409 0 -1407 0 *
+Ve
+1e-07
+45.3703703703704 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  835 0 0 0.370370370370369
+6  1603 1 0
+0
+
+0101000
++1407 0 -1405 0 *
+Ve
+1e-07
+45.5555555555556 34.0377495513506 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  836 0 0 0.37037037037037
+6  1604 1 0
+0
+
+0101000
++1405 0 -1403 0 *
+Ve
+1e-07
+45.3703703703704 33.7169994018008 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  837 0 0 0.370370370370371
+6  1605 1 0
+0
+
+0101000
++1403 0 -1401 0 *
+Ve
+1e-07
+45 33.7169994018008 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  838 0 0 0.370370370370369
+6  1606 1 0
+0
+
+0101000
++1401 0 -1399 0 *
+Ve
+1e-07
+45.1851851851852 33.396249252251 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  839 0 0 0.37037037037037
+6  1607 1 0
+0
+
+0101000
++1399 0 -1397 0 *
+Ve
+1e-07
+45 33.0754991027012 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  840 0 0 0.37037037037037
+6  1608 1 0
+0
+
+0101000
++1397 0 -1395 0 *
+Ve
+1e-07
+45.3703703703704 33.0754991027012 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  841 0 0 0.370370370370371
+6  1609 1 0
+0
+
+0101000
++1395 0 -1393 0 *
+Ve
+1e-07
+45.5555555555556 32.7547489531515 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  842 0 0 0.370370370370371
+6  1610 1 0
+0
+
+0101000
++1393 0 -1391 0 *
+Ve
+1e-07
+45.7407407407407 33.0754991027013 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  843 0 0 0.37037037037037
+6  1611 1 0
+0
+
+0101000
++1391 0 -1389 0 *
+Ve
+1e-07
+46.1111111111111 33.0754991027013 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  844 0 0 0.370370370370371
+6  1612 1 0
+0
+
+0101000
++1389 0 -1387 0 *
+Ve
+1e-07
+46.2962962962963 32.7547489531515 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  845 0 0 0.37037037037037
+6  1613 1 0
+0
+
+0101000
++1387 0 -1385 0 *
+Ve
+1e-07
+46.1111111111111 32.4339988036017 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  846 0 0 0.370370370370371
+6  1614 1 0
+0
+
+0101000
++1385 0 -1383 0 *
+Ve
+1e-07
+46.4814814814815 32.4339988036017 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  847 0 0 0.370370370370371
+6  1615 1 0
+0
+
+0101000
++1383 0 -1381 0 *
+Ve
+1e-07
+46.6666666666667 32.1132486540519 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  848 0 0 0.37037037037037
+6  1616 1 0
+0
+
+0101000
++1381 0 -1379 0 *
+Ve
+1e-07
+46.4814814814815 31.7924985045021 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  849 0 0 0.37037037037037
+6  1617 1 0
+0
+
+0101000
++1379 0 -1377 0 *
+Ve
+1e-07
+46.1111111111111 31.7924985045021 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  850 0 0 0.370370370370371
+6  1618 1 0
+0
+
+0101000
++1377 0 -1375 0 *
+Ve
+1e-07
+46.2962962962963 31.4717483549523 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  851 0 0 0.37037037037037
+6  1619 1 0
+0
+
+0101000
++1375 0 -1373 0 *
+Ve
+1e-07
+46.1111111111111 31.1509982054025 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  852 0 0 0.37037037037037
+6  1620 1 0
+0
+
+0101000
++1373 0 -1371 0 *
+Ve
+1e-07
+45.7407407407407 31.1509982054025 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  853 0 0 0.370370370370371
+6  1621 1 0
+0
+
+0101000
++1371 0 -1369 0 *
+Ve
+1e-07
+45.5555555555556 31.4717483549523 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  854 0 0 0.37037037037037
+6  1622 1 0
+0
+
+0101000
++1369 0 -1367 0 *
+Ve
+1e-07
+45.3703703703704 31.1509982054025 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  855 0 0 0.370370370370371
+6  1623 1 0
+0
+
+0101000
++1367 0 -1365 0 *
+Ve
+1e-07
+45 31.1509982054025 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  856 0 0 0.370370370370371
+6  1624 1 0
+0
+
+0101000
++1365 0 -1363 0 *
+Ve
+1e-07
+45.1851851851852 30.8302480558527 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  857 0 0 0.37037037037037
+6  1625 1 0
+0
+
+0101000
++1363 0 -1361 0 *
+Ve
+1e-07
+45 30.5094979063029 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  858 0 0 0.370370370370369
+6  1626 1 0
+0
+
+0101000
++1361 0 -1359 0 *
+Ve
+1e-07
+45.3703703703704 30.5094979063029 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  859 0 0 0.370370370370369
+6  1627 1 0
+0
+
+0101000
++1359 0 -1357 0 *
+Ve
+1e-07
+45.5555555555556 30.1887477567531 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  860 0 0 0.37037037037037
+6  1628 1 0
+0
+
+0101000
++1357 0 -1355 0 *
+Ve
+1e-07
+45.3703703703704 29.8679976072033 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  861 0 0 0.370370370370371
+6  1629 1 0
+0
+
+0101000
++1355 0 -1353 0 *
+Ve
+1e-07
+45 29.8679976072033 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  862 0 0 0.370370370370369
+6  1630 1 0
+0
+
+0101000
++1353 0 -1351 0 *
+Ve
+1e-07
+45.1851851851852 29.5472474576535 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  863 0 0 0.37037037037037
+6  1631 1 0
+0
+
+0101000
++1351 0 -1349 0 *
+Ve
+1e-07
+45 29.2264973081037 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  864 0 0 0.370370370370371
+6  1632 1 0
+0
+
+0101000
++1349 0 -1347 0 *
+Ve
+1e-07
+45.3703703703704 29.2264973081037 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  865 0 0 0.370370370370371
+6  1633 1 0
+0
+
+0101000
++1347 0 -1345 0 *
+Ve
+1e-07
+45.5555555555556 28.905747158554 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  866 0 0 0.370370370370371
+6  1634 1 0
+0
+
+0101000
++1345 0 -1343 0 *
+Ve
+1e-07
+45.7407407407407 29.2264973081037 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  867 0 0 0.37037037037037
+6  1635 1 0
+0
+
+0101000
++1343 0 -1341 0 *
+Ve
+1e-07
+46.1111111111111 29.2264973081037 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  868 0 0 0.370370370370371
+6  1636 1 0
+0
+
+0101000
++1341 0 -1339 0 *
+Ve
+1e-07
+46.2962962962963 28.905747158554 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  869 0 0 0.37037037037037
+6  1637 1 0
+0
+
+0101000
++1339 0 -1337 0 *
+Ve
+1e-07
+46.1111111111111 28.5849970090042 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  870 0 0 0.370370370370371
+6  1638 1 0
+0
+
+0101000
++1337 0 -1335 0 *
+Ve
+1e-07
+46.4814814814815 28.5849970090042 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  871 0 0 0.370370370370369
+6  1639 1 0
+0
+
+0101000
++1335 0 -1333 0 *
+Ve
+1e-07
+46.6666666666667 28.2642468594544 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  872 0 0 0.37037037037037
+6  1640 1 0
+0
+
+0101000
++1333 0 -1331 0 *
+Ve
+1e-07
+46.8518518518518 28.5849970090042 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  873 0 0 0.37037037037037
+6  1641 1 0
+0
+
+0101000
++1331 0 -1329 0 *
+Ve
+1e-07
+47.2222222222222 28.5849970090042 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  874 0 0 0.370370370370369
+6  1642 1 0
+0
+
+0101000
++1329 0 -1327 0 *
+Ve
+1e-07
+47.037037037037 28.905747158554 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  875 0 0 0.37037037037037
+6  1643 1 0
+0
+
+0101000
++1327 0 -1325 0 *
+Ve
+1e-07
+47.2222222222222 29.2264973081037 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  876 0 0 0.37037037037037
+6  1644 1 0
+0
+
+0101000
++1325 0 -1323 0 *
+Ve
+1e-07
+47.5925925925926 29.2264973081037 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  877 0 0 0.370370370370371
+6  1645 1 0
+0
+
+0101000
++1323 0 -1321 0 *
+Ve
+1e-07
+47.7777777777778 28.905747158554 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  878 0 0 0.370370370370371
+6  1646 1 0
+0
+
+0101000
++1321 0 -1319 0 *
+Ve
+1e-07
+47.962962962963 29.2264973081037 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  879 0 0 0.37037037037037
+6  1647 1 0
+0
+
+0101000
++1319 0 -1317 0 *
+Ve
+1e-07
+48.3333333333333 29.2264973081037 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  880 0 0 0.370370370370371
+6  1648 1 0
+0
+
+0101000
++1317 0 -1315 0 *
+Ve
+1e-07
+48.5185185185185 28.905747158554 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  881 0 0 0.370370370370371
+6  1649 1 0
+0
+
+0101000
++1315 0 -1313 0 *
+Ve
+1e-07
+48.3333333333333 28.5849970090042 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  882 0 0 0.370370370370371
+6  1650 1 0
+0
+
+0101000
++1313 0 -1311 0 *
+Ve
+1e-07
+48.7037037037037 28.5849970090042 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  883 0 0 0.370370370370371
+6  1651 1 0
+0
+
+0101000
++1311 0 -1309 0 *
+Ve
+1e-07
+48.8888888888889 28.2642468594544 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  884 0 0 0.370370370370371
+6  1652 1 0
+0
+
+0101000
++1309 0 -1307 0 *
+Ve
+1e-07
+48.7037037037037 27.9434967099046 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  885 0 0 0.370370370370371
+6  1653 1 0
+0
+
+0101000
++1307 0 -1305 0 *
+Ve
+1e-07
+48.3333333333333 27.9434967099046 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  886 0 0 0.370370370370371
+6  1654 1 0
+0
+
+0101000
++1305 0 -1303 0 *
+Ve
+1e-07
+48.5185185185185 27.6227465603548 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  887 0 0 0.370370370370371
+6  1655 1 0
+0
+
+0101000
++1303 0 -1301 0 *
+Ve
+1e-07
+48.3333333333333 27.301996410805 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  888 0 0 0.370370370370371
+6  1656 1 0
+0
+
+0101000
++1301 0 -1299 0 *
+Ve
+1e-07
+48.7037037037037 27.301996410805 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  889 0 0 0.370370370370371
+6  1657 1 0
+0
+
+0101000
++1299 0 -1297 0 *
+Ve
+1e-07
+48.8888888888889 26.9812462612552 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  890 0 0 0.37037037037037
+6  1658 1 0
+0
+
+0101000
++1297 0 -1295 0 *
+Ve
+1e-07
+49.0740740740741 27.301996410805 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  891 0 0 0.370370370370372
+6  1659 1 0
+0
+
+0101000
++1295 0 -1293 0 *
+Ve
+1e-07
+49.4444444444444 27.301996410805 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  892 0 0 0.370370370370371
+6  1660 1 0
+0
+
+0101000
++1293 0 -1291 0 *
+Ve
+1e-07
+49.6296296296296 26.9812462612552 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  893 0 0 0.370370370370371
+6  1661 1 0
+0
+
+0101000
++1291 0 -1289 0 *
+Ve
+1e-07
+49.4444444444444 26.6604961117054 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  894 0 0 0.37037037037037
+6  1662 1 0
+0
+
+0101000
++1289 0 -1287 0 *
+Ve
+1e-07
+49.8148148148148 26.6604961117054 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  895 0 0 0.370370370370369
+6  1663 1 0
+0
+
+0101000
++1287 0 -1285 0 *
+Ve
+1e-07
+50 26.3397459621556 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  896 0 0 0.370370370370371
+6  1664 1 0
+0
+
+0101000
++1285 0 -1283 0 *
+Ve
+1e-07
+50.1851851851852 26.6604961117054 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  897 0 0 0.370370370370371
+6  1665 1 0
+0
+
+0101000
++1283 0 -1281 0 *
+Ve
+1e-07
+50.5555555555556 26.6604961117054 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  898 0 0 0.370370370370369
+6  1666 1 0
+0
+
+0101000
++1281 0 -1279 0 *
+Ve
+1e-07
+50.3703703703704 26.9812462612552 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  899 0 0 0.37037037037037
+6  1667 1 0
+0
+
+0101000
++1279 0 -1277 0 *
+Ve
+1e-07
+50.5555555555556 27.301996410805 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  900 0 0 0.370370370370371
+6  1668 1 0
+0
+
+0101000
++1277 0 -1275 0 *
+Ve
+1e-07
+50.9259259259259 27.301996410805 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  901 0 0 0.370370370370371
+6  1669 1 0
+0
+
+0101000
++1275 0 -1273 0 *
+Ve
+1e-07
+51.1111111111111 26.9812462612552 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  902 0 0 0.370370370370372
+6  1670 1 0
+0
+
+0101000
++1273 0 -1271 0 *
+Ve
+1e-07
+51.2962962962963 27.301996410805 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  903 0 0 0.37037037037037
+6  1671 1 0
+0
+
+0101000
++1271 0 -1269 0 *
+Ve
+1e-07
+51.6666666666667 27.301996410805 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  904 0 0 0.370370370370371
+6  1672 1 0
+0
+
+0101000
++1269 0 -1267 0 *
+Ve
+1e-07
+51.4814814814815 27.6227465603548 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  905 0 0 0.370370370370371
+6  1673 1 0
+0
+
+0101000
++1267 0 -1265 0 *
+Ve
+1e-07
+51.6666666666667 27.9434967099046 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  906 0 0 0.370370370370371
+6  1674 1 0
+0
+
+0101000
++1265 0 -1263 0 *
+Ve
+1e-07
+51.2962962962963 27.9434967099046 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  907 0 0 0.370370370370371
+6  1675 1 0
+0
+
+0101000
++1263 0 -1261 0 *
+Ve
+1e-07
+51.1111111111111 28.2642468594544 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  908 0 0 0.370370370370371
+6  1676 1 0
+0
+
+0101000
++1261 0 -1259 0 *
+Ve
+1e-07
+51.2962962962963 28.5849970090042 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  909 0 0 0.370370370370371
+6  1677 1 0
+0
+
+0101000
++1259 0 -1257 0 *
+Ve
+1e-07
+51.6666666666667 28.5849970090042 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  910 0 0 0.370370370370371
+6  1678 1 0
+0
+
+0101000
++1257 0 -1255 0 *
+Ve
+1e-07
+51.4814814814815 28.905747158554 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  911 0 0 0.370370370370371
+6  1679 1 0
+0
+
+0101000
++1255 0 -1253 0 *
+Ve
+1e-07
+51.6666666666667 29.2264973081037 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  912 0 0 0.370370370370371
+6  1680 1 0
+0
+
+0101000
++1253 0 -1251 0 *
+Ve
+1e-07
+52.037037037037 29.2264973081037 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  913 0 0 0.370370370370371
+6  1681 1 0
+0
+
+0101000
++1251 0 -1249 0 *
+Ve
+1e-07
+52.2222222222222 28.905747158554 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  914 0 0 0.37037037037037
+6  1682 1 0
+0
+
+0101000
++1249 0 -1247 0 *
+Ve
+1e-07
+52.4074074074074 29.2264973081037 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  915 0 0 0.370370370370371
+6  1683 1 0
+0
+
+0101000
++1247 0 -1245 0 *
+Ve
+1e-07
+52.7777777777778 29.2264973081037 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  916 0 0 0.370370370370371
+6  1684 1 0
+0
+
+0101000
++1245 0 -1243 0 *
+Ve
+1e-07
+52.962962962963 28.905747158554 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  917 0 0 0.37037037037037
+6  1685 1 0
+0
+
+0101000
++1243 0 -1241 0 *
+Ve
+1e-07
+52.7777777777778 28.5849970090042 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  918 0 0 0.37037037037037
+6  1686 1 0
+0
+
+0101000
++1241 0 -1239 0 *
+Ve
+1e-07
+53.1481481481481 28.5849970090042 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  919 0 0 0.370370370370369
+6  1687 1 0
+0
+
+0101000
++1239 0 -1237 0 *
+Ve
+1e-07
+53.3333333333333 28.2642468594544 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  920 0 0 0.37037037037037
+6  1688 1 0
+0
+
+0101000
++1237 0 -1235 0 *
+Ve
+1e-07
+53.5185185185185 28.5849970090042 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  921 0 0 0.37037037037037
+6  1689 1 0
+0
+
+0101000
++1235 0 -1233 0 *
+Ve
+1e-07
+53.8888888888889 28.5849970090042 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  922 0 0 0.370370370370369
+6  1690 1 0
+0
+
+0101000
++1233 0 -1231 0 *
+Ve
+1e-07
+53.7037037037037 28.905747158554 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  923 0 0 0.37037037037037
+6  1691 1 0
+0
+
+0101000
++1231 0 -1229 0 *
+Ve
+1e-07
+53.8888888888889 29.2264973081037 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  924 0 0 0.37037037037037
+6  1692 1 0
+0
+
+0101000
++1229 0 -1227 0 *
+Ve
+1e-07
+54.2592592592593 29.2264973081037 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  925 0 0 0.370370370370369
+6  1693 1 0
+0
+
+0101000
++1227 0 -1225 0 *
+Ve
+1e-07
+54.4444444444444 28.905747158554 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  926 0 0 0.37037037037037
+6  1694 1 0
+0
+
+0101000
++1225 0 -1223 0 *
+Ve
+1e-07
+54.6296296296296 29.2264973081037 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  927 0 0 0.370370370370368
+6  1695 1 0
+0
+
+0101000
++1223 0 -1221 0 *
+Ve
+1e-07
+55 29.2264973081037 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  928 0 0 0.370370370370371
+6  1696 1 0
+0
+
+0101000
++1221 0 -1219 0 *
+Ve
+1e-07
+54.8148148148148 29.5472474576535 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  929 0 0 0.37037037037037
+6  1697 1 0
+0
+
+0101000
++1219 0 -1217 0 *
+Ve
+1e-07
+55 29.8679976072033 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  930 0 0 0.370370370370369
+6  1698 1 0
+0
+
+0101000
++1217 0 -1215 0 *
+Ve
+1e-07
+54.6296296296296 29.8679976072033 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  931 0 0 0.370370370370371
+6  1699 1 0
+0
+
+0101000
++1215 0 -1213 0 *
+Ve
+1e-07
+54.4444444444444 30.1887477567531 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  932 0 0 0.37037037037037
+6  1700 1 0
+0
+
+0101000
++1213 0 -1211 0 *
+Ve
+1e-07
+54.6296296296296 30.5094979063029 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  933 0 0 0.370370370370369
+6  1701 1 0
+0
+
+0101000
++1211 0 -1209 0 *
+Ve
+1e-07
+55 30.5094979063029 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  934 0 0 0.370370370370371
+6  1702 1 0
+0
+
+0101000
++1209 0 -1207 0 *
+Ve
+1e-07
+54.8148148148148 30.8302480558527 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  935 0 0 0.370370370370368
+6  1703 1 0
+0
+
+0101000
++1207 0 -1205 0 *
+Ve
+1e-07
+55 31.1509982054025 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  936 0 0 0.370370370370369
+6  1704 1 0
+0
+
+0101000
++1205 0 -1203 0 *
+Ve
+1e-07
+54.6296296296296 31.1509982054025 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  937 0 0 0.370370370370371
+6  1705 1 0
+0
+
+0101000
++1203 0 -1201 0 *
+Ve
+1e-07
+54.4444444444444 31.4717483549523 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  938 0 0 0.37037037037037
+6  1706 1 0
+0
+
+0101000
++1201 0 -1199 0 *
+Ve
+1e-07
+54.2592592592593 31.1509982054025 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  939 0 0 0.370370370370372
+6  1707 1 0
+0
+
+0101000
++1199 0 -1197 0 *
+Ve
+1e-07
+53.8888888888889 31.1509982054025 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  940 0 0 0.370370370370369
+6  1708 1 0
+0
+
+0101000
++1197 0 -1195 0 *
+Ve
+1e-07
+53.7037037037037 31.4717483549523 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  941 0 0 0.37037037037037
+6  1709 1 0
+0
+
+0101000
++1195 0 -1193 0 *
+Ve
+1e-07
+53.8888888888889 31.7924985045021 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  942 0 0 0.370370370370369
+6  1710 1 0
+0
+
+0101000
++1193 0 -1191 0 *
+Ve
+1e-07
+53.5185185185185 31.7924985045021 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  943 0 0 0.370370370370369
+6  1711 1 0
+0
+
+0101000
++1191 0 -1189 0 *
+Ve
+1e-07
+53.3333333333333 32.1132486540519 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  944 0 0 0.37037037037037
+6  1712 1 0
+0
+
+0101000
++1189 0 -1187 0 *
+Ve
+1e-07
+53.5185185185185 32.4339988036017 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  945 0 0 0.37037037037037
+6  1713 1 0
+0
+
+0101000
++1187 0 -1185 0 *
+Ve
+1e-07
+53.8888888888889 32.4339988036017 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  946 0 0 0.370370370370369
+6  1714 1 0
+0
+
+0101000
++1185 0 -1183 0 *
+Ve
+1e-07
+53.7037037037037 32.7547489531515 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  947 0 0 0.37037037037037
+6  1715 1 0
+0
+
+0101000
++1183 0 -1181 0 *
+Ve
+1e-07
+53.8888888888889 33.0754991027013 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  948 0 0 0.37037037037037
+6  1716 1 0
+0
+
+0101000
++1181 0 -1179 0 *
+Ve
+1e-07
+54.2592592592593 33.0754991027013 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  949 0 0 0.370370370370369
+6  1717 1 0
+0
+
+0101000
++1179 0 -1177 0 *
+Ve
+1e-07
+54.4444444444444 32.7547489531515 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  950 0 0 0.370370370370371
+6  1718 1 0
+0
+
+0101000
++1177 0 -1175 0 *
+Ve
+1e-07
+54.6296296296296 33.0754991027012 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  951 0 0 0.370370370370368
+6  1719 1 0
+0
+
+0101000
++1175 0 -1173 0 *
+Ve
+1e-07
+55 33.0754991027012 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  952 0 0 0.370370370370371
+6  1720 1 0
+0
+
+0101000
++1173 0 -1171 0 *
+Ve
+1e-07
+54.8148148148148 33.396249252251 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  953 0 0 0.370370370370369
+6  1721 1 0
+0
+
+0101000
++1171 0 -1169 0 *
+Ve
+1e-07
+55 33.7169994018008 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  954 0 0 0.370370370370369
+6  1722 1 0
+0
+
+0101000
++1169 0 -1167 0 *
+Ve
+1e-07
+54.6296296296296 33.7169994018008 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  955 0 0 0.370370370370371
+6  1723 1 0
+0
+
+0101000
++1167 0 -1165 0 *
+Ve
+1e-07
+54.4444444444444 34.0377495513506 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  956 0 0 0.37037037037037
+6  1724 1 0
+0
+
+0101000
++1165 0 -1163 0 *
+Ve
+1e-07
+54.6296296296296 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  957 0 0 0.370370370370369
+6  1725 1 0
+0
+
+0101000
++1163 0 -1161 0 *
+Ve
+1e-07
+55 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  958 0 0 0.370370370370371
+6  1726 1 0
+0
+
+0101000
++1161 0 -1159 0 *
+Ve
+1e-07
+54.8148148148148 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  959 0 0 0.370370370370369
+6  1727 1 0
+0
+
+0101000
++1159 0 -1157 0 *
+Ve
+1e-07
+55 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  960 0 0 0.370370370370369
+6  1728 1 0
+0
+
+0101000
++1157 0 -1155 0 *
+Ve
+1e-07
+55.3703703703704 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  961 0 0 0.370370370370371
+6  1729 1 0
+0
+
+0101000
++1155 0 -1153 0 *
+Ve
+1e-07
+55.5555555555556 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  962 0 0 0.370370370370372
+6  1730 1 0
+0
+
+0101000
++1153 0 -1151 0 *
+Ve
+1e-07
+55.7407407407407 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  963 0 0 0.37037037037037
+6  1731 1 0
+0
+
+0101000
++1151 0 -1149 0 *
+Ve
+1e-07
+56.1111111111111 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  964 0 0 0.370370370370371
+6  1732 1 0
+0
+
+0101000
++1149 0 -1147 0 *
+Ve
+1e-07
+56.2962962962963 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  965 0 0 0.37037037037037
+6  1733 1 0
+0
+
+0101000
++1147 0 -1145 0 *
+Ve
+1e-07
+56.1111111111111 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  966 0 0 0.370370370370369
+6  1734 1 0
+0
+
+0101000
++1145 0 -1143 0 *
+Ve
+1e-07
+56.4814814814815 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  967 0 0 0.370370370370371
+6  1735 1 0
+0
+
+0101000
++1143 0 -1141 0 *
+Ve
+1e-07
+56.6666666666667 34.0377495513506 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  968 0 0 0.37037037037037
+6  1736 1 0
+0
+
+0101000
++1141 0 -1139 0 *
+Ve
+1e-07
+56.8518518518518 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  969 0 0 0.37037037037037
+6  1737 1 0
+0
+
+0101000
++1139 0 -1137 0 *
+Ve
+1e-07
+57.2222222222222 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  970 0 0 0.370370370370371
+6  1738 1 0
+0
+
+0101000
++1137 0 -1135 0 *
+Ve
+1e-07
+57.037037037037 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  971 0 0 0.370370370370369
+6  1739 1 0
+0
+
+0101000
++1135 0 -1133 0 *
+Ve
+1e-07
+57.2222222222222 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  972 0 0 0.37037037037037
+6  1740 1 0
+0
+
+0101000
++1133 0 -1131 0 *
+Ve
+1e-07
+57.5925925925926 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  973 0 0 0.370370370370371
+6  1741 1 0
+0
+
+0101000
++1131 0 -1129 0 *
+Ve
+1e-07
+57.7777777777778 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  974 0 0 0.37037037037037
+6  1742 1 0
+0
+
+0101000
++1129 0 -1127 0 *
+Ve
+1e-07
+57.962962962963 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  975 0 0 0.370370370370372
+6  1743 1 0
+0
+
+0101000
++1127 0 -1125 0 *
+Ve
+1e-07
+58.3333333333333 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  976 0 0 0.370370370370371
+6  1744 1 0
+0
+
+0101000
++1125 0 -1123 0 *
+Ve
+1e-07
+58.5185185185185 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  977 0 0 0.37037037037037
+6  1745 1 0
+0
+
+0101000
++1123 0 -1121 0 *
+Ve
+1e-07
+58.3333333333333 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  978 0 0 0.370370370370369
+6  1746 1 0
+0
+
+0101000
++1121 0 -1119 0 *
+Ve
+1e-07
+58.7037037037037 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  979 0 0 0.370370370370371
+6  1747 1 0
+0
+
+0101000
++1119 0 -1117 0 *
+Ve
+1e-07
+58.8888888888889 34.0377495513506 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  980 0 0 0.37037037037037
+6  1748 1 0
+0
+
+0101000
++1117 0 -1115 0 *
+Ve
+1e-07
+58.7037037037037 33.7169994018008 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  981 0 0 0.37037037037037
+6  1749 1 0
+0
+
+0101000
++1115 0 -1113 0 *
+Ve
+1e-07
+58.3333333333333 33.7169994018008 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  982 0 0 0.370370370370367
+6  1750 1 0
+0
+
+0101000
++1113 0 -1111 0 *
+Ve
+1e-07
+58.5185185185185 33.396249252251 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  983 0 0 0.370370370370368
+6  1751 1 0
+0
+
+0101000
++1111 0 -1109 0 *
+Ve
+1e-07
+58.3333333333333 33.0754991027012 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  984 0 0 0.370370370370369
+6  1752 1 0
+0
+
+0101000
++1109 0 -1107 0 *
+Ve
+1e-07
+58.7037037037037 33.0754991027012 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  985 0 0 0.370370370370371
+6  1753 1 0
+0
+
+0101000
++1107 0 -1105 0 *
+Ve
+1e-07
+58.8888888888889 32.7547489531515 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  986 0 0 0.37037037037037
+6  1754 1 0
+0
+
+0101000
++1105 0 -1103 0 *
+Ve
+1e-07
+59.0740740740741 33.0754991027012 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  987 0 0 0.37037037037037
+6  1755 1 0
+0
+
+0101000
++1103 0 -1101 0 *
+Ve
+1e-07
+59.4444444444444 33.0754991027012 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  988 0 0 0.370370370370371
+6  1756 1 0
+0
+
+0101000
++1101 0 -1099 0 *
+Ve
+1e-07
+59.6296296296296 32.7547489531515 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  989 0 0 0.370370370370369
+6  1757 1 0
+0
+
+0101000
++1099 0 -1097 0 *
+Ve
+1e-07
+59.4444444444444 32.4339988036017 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  990 0 0 0.370370370370369
+6  1758 1 0
+0
+
+0101000
++1097 0 -1095 0 *
+Ve
+1e-07
+59.8148148148148 32.4339988036017 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  991 0 0 0.370370370370371
+6  1759 1 0
+0
+
+0101000
++1095 0 -1093 0 *
+Ve
+1e-07
+60 32.1132486540519 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  992 0 0 0.370370370370369
+6  1760 1 0
+0
+
+0101000
++1093 0 -1091 0 *
+Ve
+1e-07
+60.1851851851852 32.4339988036017 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  993 0 0 0.370370370370369
+6  1761 1 0
+0
+
+0101000
++1091 0 -1089 0 *
+Ve
+1e-07
+60.5555555555556 32.4339988036017 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  994 0 0 0.370370370370371
+6  1762 1 0
+0
+
+0101000
++1089 0 -1087 0 *
+Ve
+1e-07
+60.3703703703704 32.7547489531515 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  995 0 0 0.370370370370369
+6  1763 1 0
+0
+
+0101000
++1087 0 -1085 0 *
+Ve
+1e-07
+60.5555555555556 33.0754991027012 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  996 0 0 0.370370370370369
+6  1764 1 0
+0
+
+0101000
++1085 0 -1083 0 *
+Ve
+1e-07
+60.9259259259259 33.0754991027013 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  997 0 0 0.370370370370371
+6  1765 1 0
+0
+
+0101000
++1083 0 -1081 0 *
+Ve
+1e-07
+61.1111111111111 32.7547489531515 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  998 0 0 0.37037037037037
+6  1766 1 0
+0
+
+0101000
++1081 0 -1079 0 *
+Ve
+1e-07
+61.2962962962963 33.0754991027013 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  999 0 0 0.37037037037037
+6  1767 1 0
+0
+
+0101000
++1079 0 -1077 0 *
+Ve
+1e-07
+61.6666666666667 33.0754991027013 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1000 0 0 0.370370370370371
+6  1768 1 0
+0
+
+0101000
++1077 0 -1075 0 *
+Ve
+1e-07
+61.4814814814815 33.396249252251 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1001 0 0 0.370370370370369
+6  1769 1 0
+0
+
+0101000
++1075 0 -1073 0 *
+Ve
+1e-07
+61.6666666666667 33.7169994018008 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1002 0 0 0.370370370370369
+6  1770 1 0
+0
+
+0101000
++1073 0 -1071 0 *
+Ve
+1e-07
+61.2962962962963 33.7169994018008 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1003 0 0 0.370370370370371
+6  1771 1 0
+0
+
+0101000
++1071 0 -1069 0 *
+Ve
+1e-07
+61.1111111111111 34.0377495513506 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1004 0 0 0.370370370370369
+6  1772 1 0
+0
+
+0101000
++1069 0 -1067 0 *
+Ve
+1e-07
+61.2962962962963 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1005 0 0 0.37037037037037
+6  1773 1 0
+0
+
+0101000
++1067 0 -1065 0 *
+Ve
+1e-07
+61.6666666666667 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1006 0 0 0.370370370370371
+6  1774 1 0
+0
+
+0101000
++1065 0 -1063 0 *
+Ve
+1e-07
+61.4814814814815 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1007 0 0 0.370370370370369
+6  1775 1 0
+0
+
+0101000
++1063 0 -1061 0 *
+Ve
+1e-07
+61.6666666666667 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1008 0 0 0.37037037037037
+6  1776 1 0
+0
+
+0101000
++1061 0 -1059 0 *
+Ve
+1e-07
+62.037037037037 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1009 0 0 0.370370370370371
+6  1777 1 0
+0
+
+0101000
++1059 0 -1057 0 *
+Ve
+1e-07
+62.2222222222222 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1010 0 0 0.37037037037037
+6  1778 1 0
+0
+
+0101000
++1057 0 -1055 0 *
+Ve
+1e-07
+62.4074074074074 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1011 0 0 0.370370370370372
+6  1779 1 0
+0
+
+0101000
++1055 0 -1053 0 *
+Ve
+1e-07
+62.7777777777778 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1012 0 0 0.370370370370371
+6  1780 1 0
+0
+
+0101000
++1053 0 -1051 0 *
+Ve
+1e-07
+62.962962962963 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1013 0 0 0.37037037037037
+6  1781 1 0
+0
+
+0101000
++1051 0 -1049 0 *
+Ve
+1e-07
+62.7777777777778 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1014 0 0 0.370370370370369
+6  1782 1 0
+0
+
+0101000
++1049 0 -1047 0 *
+Ve
+1e-07
+63.1481481481481 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1015 0 0 0.370370370370371
+6  1783 1 0
+0
+
+0101000
++1047 0 -1045 0 *
+Ve
+1e-07
+63.3333333333333 34.0377495513506 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1016 0 0 0.37037037037037
+6  1784 1 0
+0
+
+0101000
++1045 0 -1043 0 *
+Ve
+1e-07
+63.5185185185185 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1017 0 0 0.37037037037037
+6  1785 1 0
+0
+
+0101000
++1043 0 -1041 0 *
+Ve
+1e-07
+63.8888888888889 34.3584997009004 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1018 0 0 0.370370370370371
+6  1786 1 0
+0
+
+0101000
++1041 0 -1039 0 *
+Ve
+1e-07
+63.7037037037037 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1019 0 0 0.370370370370369
+6  1787 1 0
+0
+
+0101000
++1039 0 -1037 0 *
+Ve
+1e-07
+63.8888888888889 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1020 0 0 0.37037037037037
+6  1788 1 0
+0
+
+0101000
++1037 0 -1035 0 *
+Ve
+1e-07
+64.2592592592593 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1021 0 0 0.370370370370371
+6  1789 1 0
+0
+
+0101000
++1035 0 -1033 0 *
+Ve
+1e-07
+64.4444444444444 34.6792498504502 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1022 0 0 0.370370370370372
+6  1790 1 0
+0
+
+0101000
++1033 0 -1031 0 *
+Ve
+1e-07
+64.6296296296296 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1023 0 0 0.37037037037037
+6  1791 1 0
+0
+
+0101000
++1031 0 -1029 0 *
+Ve
+1e-07
+65 35 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1024 0 0 0.370370370370371
+6  1792 1 0
+0
+
+0101000
++1029 0 -1027 0 *
+Ve
+1e-07
+64.8148148148148 35.3207501495498 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1025 0 0 0.370370370370369
+6  1793 1 0
+0
+
+0101000
++1027 0 -1025 0 *
+Ve
+1e-07
+65 35.6415002990996 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1026 0 0 0.370370370370369
+6  1794 1 0
+0
+
+0101000
++1025 0 -1023 0 *
+Ve
+1e-07
+64.6296296296296 35.6415002990996 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1027 0 0 0.370370370370371
+6  1795 1 0
+0
+
+0101000
++1023 0 -1021 0 *
+Ve
+1e-07
+64.4444444444444 35.9622504486494 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1028 0 0 0.370370370370369
+6  1796 1 0
+0
+
+0101000
++1021 0 -1019 0 *
+Ve
+1e-07
+64.6296296296296 36.2830005981992 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1029 0 0 0.370370370370369
+6  1797 1 0
+0
+
+0101000
++1019 0 -1017 0 *
+Ve
+1e-07
+65 36.2830005981992 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1030 0 0 0.370370370370371
+6  1798 1 0
+0
+
+0101000
++1017 0 -1015 0 *
+Ve
+1e-07
+64.8148148148148 36.603750747749 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1031 0 0 0.370370370370369
+6  1799 1 0
+0
+
+0101000
++1015 0 -1013 0 *
+Ve
+1e-07
+65 36.9245008972987 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1032 0 0 0.370370370370369
+6  1800 1 0
+0
+
+0101000
++1013 0 -1011 0 *
+Ve
+1e-07
+64.6296296296296 36.9245008972987 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1033 0 0 0.370370370370371
+6  1801 1 0
+0
+
+0101000
++1011 0 -1009 0 *
+Ve
+1e-07
+64.4444444444444 37.2452510468485 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1034 0 0 0.37037037037037
+6  1802 1 0
+0
+
+0101000
++1009 0 -1007 0 *
+Ve
+1e-07
+64.2592592592593 36.9245008972987 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1035 0 0 0.370370370370372
+6  1803 1 0
+0
+
+0101000
++1007 0 -1005 0 *
+Ve
+1e-07
+63.8888888888889 36.9245008972987 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1036 0 0 0.370370370370371
+6  1804 1 0
+0
+
+0101000
++1005 0 -1003 0 *
+Ve
+1e-07
+63.7037037037037 37.2452510468485 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1037 0 0 0.370370370370369
+6  1805 1 0
+0
+
+0101000
++1003 0 -1001 0 *
+Ve
+1e-07
+63.8888888888889 37.5660011963983 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1038 0 0 0.370370370370369
+6  1806 1 0
+0
+
+0101000
++1001 0 -999 0 *
+Ve
+1e-07
+63.5185185185185 37.5660011963983 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1039 0 0 0.370370370370371
+6  1807 1 0
+0
+
+0101000
++999 0 -997 0 *
+Ve
+1e-07
+63.3333333333333 37.8867513459481 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1040 0 0 0.370370370370369
+6  1808 1 0
+0
+
+0101000
++997 0 -995 0 *
+Ve
+1e-07
+63.5185185185185 38.2075014954979 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1041 0 0 0.370370370370369
+6  1809 1 0
+0
+
+0101000
++995 0 -993 0 *
+Ve
+1e-07
+63.8888888888889 38.2075014954979 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1042 0 0 0.370370370370371
+6  1810 1 0
+0
+
+0101000
++993 0 -991 0 *
+Ve
+1e-07
+63.7037037037037 38.5282516450477 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1043 0 0 0.370370370370369
+6  1811 1 0
+0
+
+0101000
++991 0 -989 0 *
+Ve
+1e-07
+63.8888888888889 38.8490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1044 0 0 0.370370370370369
+6  1812 1 0
+0
+
+0101000
++989 0 -987 0 *
+Ve
+1e-07
+64.2592592592593 38.8490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1045 0 0 0.370370370370371
+6  1813 1 0
+0
+
+0101000
++987 0 -985 0 *
+Ve
+1e-07
+64.4444444444444 38.5282516450477 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1046 0 0 0.370370370370372
+6  1814 1 0
+0
+
+0101000
++985 0 -983 0 *
+Ve
+1e-07
+64.6296296296296 38.8490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1047 0 0 0.37037037037037
+6  1815 1 0
+0
+
+0101000
++983 0 -981 0 *
+Ve
+1e-07
+65 38.8490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1048 0 0 0.370370370370371
+6  1816 1 0
+0
+
+0101000
++981 0 -979 0 *
+Ve
+1e-07
+64.8148148148148 39.1697519441473 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1049 0 0 0.370370370370372
+6  1817 1 0
+0
+
+0101000
++979 0 -977 0 *
+Ve
+1e-07
+65 39.4905020936971 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1050 0 0 0.370370370370372
+6  1818 1 0
+0
+
+0101000
++977 0 -975 0 *
+Ve
+1e-07
+64.6296296296296 39.4905020936971 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1051 0 0 0.370370370370371
+6  1819 1 0
+0
+
+0101000
++975 0 -973 0 *
+Ve
+1e-07
+64.4444444444444 39.8112522432469 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1052 0 0 0.370370370370372
+6  1820 1 0
+0
+
+0101000
++973 0 -971 0 *
+Ve
+1e-07
+64.6296296296296 40.1320023927967 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1053 0 0 0.37037037037037
+6  1821 1 0
+0
+
+0101000
++971 0 -969 0 *
+Ve
+1e-07
+65 40.1320023927967 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1054 0 0 0.370370370370371
+6  1822 1 0
+0
+
+0101000
++969 0 -967 0 *
+Ve
+1e-07
+64.8148148148148 40.4527525423465 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1055 0 0 0.370370370370369
+6  1823 1 0
+0
+
+0101000
++967 0 -965 0 *
+Ve
+1e-07
+65 40.7735026918963 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1056 0 0 0.37037037037037
+6  1824 1 0
+0
+
+0101000
++965 0 -963 0 *
+Ve
+1e-07
+64.6296296296296 40.7735026918963 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1057 0 0 0.370370370370371
+6  1825 1 0
+0
+
+0101000
++963 0 -961 0 *
+Ve
+1e-07
+64.4444444444444 41.094252841446 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1058 0 0 0.37037037037037
+6  1826 1 0
+0
+
+0101000
++961 0 -959 0 *
+Ve
+1e-07
+64.2592592592593 40.7735026918963 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1059 0 0 0.37037037037037
+6  1827 1 0
+0
+
+0101000
++959 0 -957 0 *
+Ve
+1e-07
+63.8888888888889 40.7735026918963 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1060 0 0 0.370370370370371
+6  1828 1 0
+0
+
+0101000
++957 0 -955 0 *
+Ve
+1e-07
+63.7037037037037 41.094252841446 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1061 0 0 0.370370370370371
+6  1829 1 0
+0
+
+0101000
++955 0 -953 0 *
+Ve
+1e-07
+63.8888888888889 41.4150029909958 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1062 0 0 0.37037037037037
+6  1830 1 0
+0
+
+0101000
++953 0 -951 0 *
+Ve
+1e-07
+63.5185185185185 41.4150029909958 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1063 0 0 0.370370370370367
+6  1831 1 0
+0
+
+0101000
++951 0 -949 0 *
+Ve
+1e-07
+63.3333333333333 41.7357531405456 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1064 0 0 0.370370370370371
+6  1832 1 0
+0
+
+0101000
++949 0 -947 0 *
+Ve
+1e-07
+63.1481481481481 41.4150029909958 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1065 0 0 0.370370370370369
+6  1833 1 0
+0
+
+0101000
++947 0 -945 0 *
+Ve
+1e-07
+62.7777777777778 41.4150029909958 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1066 0 0 0.370370370370371
+6  1834 1 0
+0
+
+0101000
++945 0 -943 0 *
+Ve
+1e-07
+62.962962962963 41.094252841446 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1067 0 0 0.370370370370368
+6  1835 1 0
+0
+
+0101000
++943 0 -941 0 *
+Ve
+1e-07
+62.7777777777778 40.7735026918963 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1068 0 0 0.370370370370369
+6  1836 1 0
+0
+
+0101000
++941 0 -939 0 *
+Ve
+1e-07
+62.4074074074074 40.7735026918963 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1069 0 0 0.370370370370371
+6  1837 1 0
+0
+
+0101000
++939 0 -937 0 *
+Ve
+1e-07
+62.2222222222222 41.094252841446 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1070 0 0 0.37037037037037
+6  1838 1 0
+0
+
+0101000
++937 0 -935 0 *
+Ve
+1e-07
+62.037037037037 40.7735026918963 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1071 0 0 0.37037037037037
+6  1839 1 0
+0
+
+0101000
++935 0 -933 0 *
+Ve
+1e-07
+61.6666666666667 40.7735026918963 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1072 0 0 0.370370370370371
+6  1840 1 0
+0
+
+0101000
++933 0 -931 0 *
+Ve
+1e-07
+61.4814814814815 41.094252841446 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1073 0 0 0.37037037037037
+6  1841 1 0
+0
+
+0101000
++931 0 -929 0 *
+Ve
+1e-07
+61.6666666666667 41.4150029909958 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1074 0 0 0.370370370370369
+6  1842 1 0
+0
+
+0101000
++929 0 -927 0 *
+Ve
+1e-07
+61.2962962962963 41.4150029909958 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1075 0 0 0.370370370370371
+6  1843 1 0
+0
+
+0101000
++927 0 -925 0 *
+Ve
+1e-07
+61.1111111111111 41.7357531405456 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1076 0 0 0.37037037037037
+6  1844 1 0
+0
+
+0101000
++925 0 -923 0 *
+Ve
+1e-07
+61.2962962962963 42.0565032900954 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1077 0 0 0.370370370370369
+6  1845 1 0
+0
+
+0101000
++923 0 -921 0 *
+Ve
+1e-07
+61.6666666666667 42.0565032900954 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1078 0 0 0.370370370370371
+6  1846 1 0
+0
+
+0101000
++921 0 -919 0 *
+Ve
+1e-07
+61.4814814814815 42.3772534396452 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1079 0 0 0.370370370370369
+6  1847 1 0
+0
+
+0101000
++919 0 -917 0 *
+Ve
+1e-07
+61.6666666666667 42.698003589195 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1080 0 0 0.370370370370369
+6  1848 1 0
+0
+
+0101000
++917 0 -915 0 *
+Ve
+1e-07
+61.2962962962963 42.698003589195 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1081 0 0 0.370370370370371
+6  1849 1 0
+0
+
+0101000
++915 0 -913 0 *
+Ve
+1e-07
+61.1111111111111 43.0187537387448 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1082 0 0 0.37037037037037
+6  1850 1 0
+0
+
+0101000
++913 0 -911 0 *
+Ve
+1e-07
+60.9259259259259 42.698003589195 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1083 0 0 0.370370370370372
+6  1851 1 0
+0
+
+0101000
++911 0 -909 0 *
+Ve
+1e-07
+60.5555555555556 42.698003589195 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1084 0 0 0.370370370370371
+6  1852 1 0
+0
+
+0101000
++909 0 -907 0 *
+Ve
+1e-07
+60.3703703703704 43.0187537387448 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1085 0 0 0.37037037037037
+6  1853 1 0
+0
+
+0101000
++907 0 -905 0 *
+Ve
+1e-07
+60.5555555555556 43.3395038882946 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1086 0 0 0.370370370370369
+6  1854 1 0
+0
+
+0101000
++905 0 -903 0 *
+Ve
+1e-07
+60.1851851851852 43.3395038882946 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1087 0 0 0.370370370370371
+6  1855 1 0
+0
+
+0101000
++903 0 -901 0 *
+Ve
+1e-07
+60 43.6602540378444 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1088 0 0 0.37037037037037
+6  1856 1 0
+0
+
+0101000
++901 0 -899 0 *
+Ve
+1e-07
+60.1851851851852 43.9810041873942 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1089 0 0 0.37037037037037
+6  1857 1 0
+0
+
+0101000
++899 0 -897 0 *
+Ve
+1e-07
+60.5555555555556 43.9810041873942 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1090 0 0 0.370370370370371
+6  1858 1 0
+0
+
+0101000
++897 0 -895 0 *
+Ve
+1e-07
+60.3703703703704 44.301754336944 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1091 0 0 0.370370370370369
+6  1859 1 0
+0
+
+0101000
++895 0 -893 0 *
+Ve
+1e-07
+60.5555555555556 44.6225044864938 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1092 0 0 0.37037037037037
+6  1860 1 0
+0
+
+0101000
++893 0 -891 0 *
+Ve
+1e-07
+60.9259259259259 44.6225044864938 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1093 0 0 0.370370370370371
+6  1861 1 0
+0
+
+0101000
++891 0 -889 0 *
+Ve
+1e-07
+61.1111111111111 44.301754336944 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1094 0 0 0.370370370370372
+6  1862 1 0
+0
+
+0101000
++889 0 -887 0 *
+Ve
+1e-07
+61.2962962962963 44.6225044864938 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1095 0 0 0.37037037037037
+6  1863 1 0
+0
+
+0101000
++887 0 -885 0 *
+Ve
+1e-07
+61.6666666666667 44.6225044864938 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1096 0 0 0.370370370370371
+6  1864 1 0
+0
+
+0101000
++885 0 -883 0 *
+Ve
+1e-07
+61.4814814814815 44.9432546360436 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1097 0 0 0.370370370370369
+6  1865 1 0
+0
+
+0101000
++883 0 -881 0 *
+Ve
+1e-07
+61.6666666666667 45.2640047855933 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1098 0 0 0.370370370370369
+6  1866 1 0
+0
+
+0101000
++881 0 -879 0 *
+Ve
+1e-07
+61.2962962962963 45.2640047855933 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1099 0 0 0.370370370370371
+6  1867 1 0
+0
+
+0101000
++879 0 -877 0 *
+Ve
+1e-07
+61.1111111111111 45.5847549351431 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1100 0 0 0.370370370370369
+6  1868 1 0
+0
+
+0101000
++877 0 -875 0 *
+Ve
+1e-07
+61.2962962962963 45.9055050846929 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1101 0 0 0.370370370370369
+6  1869 1 0
+0
+
+0101000
++875 0 -873 0 *
+Ve
+1e-07
+61.6666666666667 45.9055050846929 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1102 0 0 0.370370370370371
+6  1870 1 0
+0
+
+0101000
++873 0 -871 0 *
+Ve
+1e-07
+61.4814814814815 46.2262552342427 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1103 0 0 0.370370370370369
+6  1871 1 0
+0
+
+0101000
++871 0 -869 0 *
+Ve
+1e-07
+61.6666666666667 46.5470053837925 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1104 0 0 0.370370370370369
+6  1872 1 0
+0
+
+0101000
++869 0 -867 0 *
+Ve
+1e-07
+62.037037037037 46.5470053837925 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1105 0 0 0.370370370370371
+6  1873 1 0
+0
+
+0101000
++867 0 -865 0 *
+Ve
+1e-07
+62.2222222222222 46.2262552342427 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1106 0 0 0.370370370370369
+6  1874 1 0
+0
+
+0101000
++865 0 -863 0 *
+Ve
+1e-07
+62.4074074074074 46.5470053837925 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1107 0 0 0.370370370370369
+6  1875 1 0
+0
+
+0101000
++863 0 -861 0 *
+Ve
+1e-07
+62.7777777777778 46.5470053837925 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1108 0 0 0.370370370370371
+6  1876 1 0
+0
+
+0101000
++861 0 -859 0 *
+Ve
+1e-07
+62.962962962963 46.2262552342427 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1109 0 0 0.370370370370369
+6  1877 1 0
+0
+
+0101000
++859 0 -857 0 *
+Ve
+1e-07
+62.7777777777778 45.9055050846929 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1110 0 0 0.370370370370367
+6  1878 1 0
+0
+
+0101000
++857 0 -855 0 *
+Ve
+1e-07
+63.1481481481481 45.9055050846929 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1111 0 0 0.370370370370371
+6  1879 1 0
+0
+
+0101000
++855 0 -853 0 *
+Ve
+1e-07
+63.3333333333333 45.5847549351431 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1112 0 0 0.370370370370369
+6  1880 1 0
+0
+
+0101000
++853 0 -851 0 *
+Ve
+1e-07
+63.5185185185185 45.9055050846929 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1113 0 0 0.370370370370371
+6  1881 1 0
+0
+
+0101000
++851 0 -849 0 *
+Ve
+1e-07
+63.8888888888889 45.9055050846929 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1114 0 0 0.370370370370367
+6  1882 1 0
+0
+
+0101000
++849 0 -847 0 *
+Ve
+1e-07
+63.7037037037037 46.2262552342427 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1115 0 0 0.370370370370369
+6  1883 1 0
+0
+
+0101000
++847 0 -845 0 *
+Ve
+1e-07
+63.8888888888889 46.5470053837925 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1116 0 0 0.370370370370371
+6  1884 1 0
+0
+
+0101000
++845 0 -843 0 *
+Ve
+1e-07
+64.2592592592593 46.5470053837925 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1117 0 0 0.370370370370371
+6  1885 1 0
+0
+
+0101000
++843 0 -841 0 *
+Ve
+1e-07
+64.4444444444444 46.2262552342427 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1118 0 0 0.370370370370369
+6  1886 1 0
+0
+
+0101000
++841 0 -839 0 *
+Ve
+1e-07
+64.6296296296296 46.5470053837925 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1119 0 0 0.370370370370369
+6  1887 1 0
+0
+
+0101000
++839 0 -837 0 *
+Ve
+1e-07
+65 46.5470053837925 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1120 0 0 0.370370370370371
+6  1888 1 0
+0
+
+0101000
++837 0 -835 0 *
+Ve
+1e-07
+64.8148148148148 46.8677555333423 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1121 0 0 0.370370370370369
+6  1889 1 0
+0
+
+0101000
++835 0 -833 0 *
+Ve
+1e-07
+65 47.1885056828921 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1122 0 0 0.370370370370369
+6  1890 1 0
+0
+
+0101000
++833 0 -831 0 *
+Ve
+1e-07
+64.6296296296296 47.1885056828921 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1123 0 0 0.370370370370371
+6  1891 1 0
+0
+
+0101000
++831 0 -829 0 *
+Ve
+1e-07
+64.4444444444444 47.5092558324419 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1124 0 0 0.370370370370369
+6  1892 1 0
+0
+
+0101000
++829 0 -827 0 *
+Ve
+1e-07
+64.6296296296296 47.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1125 0 0 0.370370370370371
+6  1893 1 0
+0
+
+0101000
++827 0 -825 0 *
+Ve
+1e-07
+65 47.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1126 0 0 0.370370370370371
+6  1894 1 0
+0
+
+0101000
++825 0 -823 0 *
+Ve
+1e-07
+64.8148148148148 48.1507561315415 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1127 0 0 0.370370370370373
+6  1895 1 0
+0
+
+0101000
++823 0 -821 0 *
+Ve
+1e-07
+65 48.4715062810913 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1128 0 0 0.370370370370371
+6  1896 1 0
+0
+
+0101000
++821 0 -819 0 *
+Ve
+1e-07
+64.6296296296296 48.4715062810913 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1129 0 0 0.370370370370371
+6  1897 1 0
+0
+
+0101000
++819 0 -817 0 *
+Ve
+1e-07
+64.4444444444444 48.7922564306411 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1130 0 0 0.370370370370371
+6  1898 1 0
+0
+
+0101000
++817 0 -815 0 *
+Ve
+1e-07
+64.2592592592593 48.4715062810913 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1131 0 0 0.370370370370371
+6  1899 1 0
+0
+
+0101000
++815 0 -813 0 *
+Ve
+1e-07
+63.8888888888889 48.4715062810913 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1132 0 0 0.370370370370371
+6  1900 1 0
+0
+
+0101000
++813 0 -811 0 *
+Ve
+1e-07
+63.7037037037037 48.7922564306411 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1133 0 0 0.370370370370369
+6  1901 1 0
+0
+
+0101000
++811 0 -809 0 *
+Ve
+1e-07
+63.8888888888889 49.1130065801908 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1134 0 0 0.370370370370369
+6  1902 1 0
+0
+
+0101000
++809 0 -807 0 *
+Ve
+1e-07
+63.5185185185185 49.1130065801909 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1135 0 0 0.370370370370371
+6  1903 1 0
+0
+
+0101000
++807 0 -805 0 *
+Ve
+1e-07
+63.3333333333333 49.4337567297406 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1136 0 0 0.370370370370369
+6  1904 1 0
+0
+
+0101000
++805 0 -803 0 *
+Ve
+1e-07
+63.5185185185185 49.7545068792904 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1137 0 0 0.370370370370369
+6  1905 1 0
+0
+
+0101000
++803 0 -801 0 *
+Ve
+1e-07
+63.8888888888889 49.7545068792904 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1138 0 0 0.370370370370371
+6  1906 1 0
+0
+
+0101000
++801 0 -799 0 *
+Ve
+1e-07
+63.7037037037037 50.0752570288402 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1139 0 0 0.370370370370369
+6  1907 1 0
+0
+
+0101000
++799 0 -797 0 *
+Ve
+1e-07
+63.8888888888889 50.39600717839 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1140 0 0 0.370370370370369
+6  1908 1 0
+0
+
+0101000
++797 0 -795 0 *
+Ve
+1e-07
+64.2592592592593 50.39600717839 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1141 0 0 0.370370370370371
+6  1909 1 0
+0
+
+0101000
++795 0 -793 0 *
+Ve
+1e-07
+64.4444444444444 50.0752570288402 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1142 0 0 0.370370370370375
+6  1910 1 0
+0
+
+0101000
++793 0 -791 0 *
+Ve
+1e-07
+64.6296296296296 50.39600717839 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1143 0 0 0.370370370370371
+6  1911 1 0
+0
+
+0101000
++791 0 -789 0 *
+Ve
+1e-07
+65 50.39600717839 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1144 0 0 0.370370370370371
+6  1912 1 0
+0
+
+0101000
++789 0 -787 0 *
+Ve
+1e-07
+64.8148148148148 50.7167573279398 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1145 0 0 0.370370370370369
+6  1913 1 0
+0
+
+0101000
++787 0 -785 0 *
+Ve
+1e-07
+65 51.0375074774896 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1146 0 0 0.370370370370369
+6  1914 1 0
+0
+
+0101000
++785 0 -783 0 *
+Ve
+1e-07
+64.6296296296296 51.0375074774896 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1147 0 0 0.370370370370371
+6  1915 1 0
+0
+
+0101000
++783 0 -781 0 *
+Ve
+1e-07
+64.4444444444444 51.3582576270394 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1148 0 0 0.370370370370369
+6  1916 1 0
+0
+
+0101000
++781 0 -779 0 *
+Ve
+1e-07
+64.6296296296296 51.6790077765892 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1149 0 0 0.370370370370369
+6  1917 1 0
+0
+
+0101000
++779 0 -777 0 *
+Ve
+1e-07
+65 51.6790077765892 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1150 0 0 0.370370370370371
+6  1918 1 0
+0
+
+0101000
++777 0 -775 0 *
+Ve
+1e-07
+64.8148148148148 51.999757926139 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1151 0 0 0.370370370370369
+6  1919 1 0
+0
+
+0101000
++775 0 -773 0 *
+Ve
+1e-07
+65 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1152 0 0 0.370370370370369
+6  1920 1 0
+0
+
+0101000
++773 0 -771 0 *
+Ve
+1e-07
+64.6296296296296 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1153 0 0 0.370370370370371
+6  1921 1 0
+0
+
+0101000
++771 0 -769 0 *
+Ve
+1e-07
+64.4444444444444 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1154 0 0 0.370370370370371
+6  1922 1 0
+0
+
+0101000
++769 0 -767 0 *
+Ve
+1e-07
+64.2592592592593 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1155 0 0 0.370370370370373
+6  1923 1 0
+0
+
+0101000
++767 0 -765 0 *
+Ve
+1e-07
+63.8888888888889 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1156 0 0 0.370370370370371
+6  1924 1 0
+0
+
+0101000
++765 0 -763 0 *
+Ve
+1e-07
+63.7037037037037 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1157 0 0 0.370370370370369
+6  1925 1 0
+0
+
+0101000
++763 0 -761 0 *
+Ve
+1e-07
+63.8888888888889 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1158 0 0 0.370370370370369
+6  1926 1 0
+0
+
+0101000
++761 0 -759 0 *
+Ve
+1e-07
+63.5185185185185 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1159 0 0 0.370370370370371
+6  1927 1 0
+0
+
+0101000
++759 0 -757 0 *
+Ve
+1e-07
+63.3333333333333 53.2827585243381 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1160 0 0 0.370370370370369
+6  1928 1 0
+0
+
+0101000
++757 0 -755 0 *
+Ve
+1e-07
+63.1481481481481 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1161 0 0 0.370370370370369
+6  1929 1 0
+0
+
+0101000
++755 0 -753 0 *
+Ve
+1e-07
+62.7777777777778 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1162 0 0 0.370370370370371
+6  1930 1 0
+0
+
+0101000
++753 0 -751 0 *
+Ve
+1e-07
+62.962962962963 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1163 0 0 0.370370370370369
+6  1931 1 0
+0
+
+0101000
++751 0 -749 0 *
+Ve
+1e-07
+62.7777777777778 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1164 0 0 0.370370370370369
+6  1932 1 0
+0
+
+0101000
++749 0 -747 0 *
+Ve
+1e-07
+62.4074074074074 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1165 0 0 0.370370370370371
+6  1933 1 0
+0
+
+0101000
++747 0 -745 0 *
+Ve
+1e-07
+62.2222222222222 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1166 0 0 0.370370370370373
+6  1934 1 0
+0
+
+0101000
++745 0 -743 0 *
+Ve
+1e-07
+62.037037037037 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1167 0 0 0.370370370370371
+6  1935 1 0
+0
+
+0101000
++743 0 -741 0 *
+Ve
+1e-07
+61.6666666666667 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1168 0 0 0.370370370370371
+6  1936 1 0
+0
+
+0101000
++741 0 -739 0 *
+Ve
+1e-07
+61.4814814814815 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1169 0 0 0.370370370370369
+6  1937 1 0
+0
+
+0101000
++739 0 -737 0 *
+Ve
+1e-07
+61.6666666666667 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1170 0 0 0.370370370370369
+6  1938 1 0
+0
+
+0101000
++737 0 -735 0 *
+Ve
+1e-07
+61.2962962962963 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1171 0 0 0.370370370370371
+6  1939 1 0
+0
+
+0101000
++735 0 -733 0 *
+Ve
+1e-07
+61.1111111111111 53.2827585243381 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1172 0 0 0.370370370370369
+6  1940 1 0
+0
+
+0101000
++733 0 -731 0 *
+Ve
+1e-07
+61.2962962962963 53.6035086738879 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1173 0 0 0.370370370370371
+6  1941 1 0
+0
+
+0101000
++731 0 -729 0 *
+Ve
+1e-07
+61.6666666666667 53.6035086738879 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1174 0 0 0.370370370370367
+6  1942 1 0
+0
+
+0101000
++729 0 -727 0 *
+Ve
+1e-07
+61.4814814814815 53.9242588234377 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1175 0 0 0.370370370370371
+6  1943 1 0
+0
+
+0101000
++727 0 -725 0 *
+Ve
+1e-07
+61.6666666666667 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1176 0 0 0.370370370370371
+6  1944 1 0
+0
+
+0101000
++725 0 -723 0 *
+Ve
+1e-07
+61.2962962962963 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1177 0 0 0.370370370370371
+6  1945 1 0
+0
+
+0101000
++723 0 -721 0 *
+Ve
+1e-07
+61.1111111111111 54.5657591225373 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1178 0 0 0.370370370370373
+6  1946 1 0
+0
+
+0101000
++721 0 -719 0 *
+Ve
+1e-07
+60.9259259259259 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1179 0 0 0.370370370370371
+6  1947 1 0
+0
+
+0101000
++719 0 -717 0 *
+Ve
+1e-07
+60.5555555555556 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1180 0 0 0.370370370370371
+6  1948 1 0
+0
+
+0101000
++717 0 -715 0 *
+Ve
+1e-07
+60.3703703703704 54.5657591225373 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1181 0 0 0.370370370370371
+6  1949 1 0
+0
+
+0101000
++715 0 -713 0 *
+Ve
+1e-07
+60.5555555555556 54.8865092720871 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1182 0 0 0.370370370370367
+6  1950 1 0
+0
+
+0101000
++713 0 -711 0 *
+Ve
+1e-07
+60.1851851851852 54.8865092720871 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1183 0 0 0.370370370370371
+6  1951 1 0
+0
+
+0101000
++711 0 -709 0 *
+Ve
+1e-07
+60 55.2072594216369 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1184 0 0 0.370370370370371
+6  1952 1 0
+0
+
+0101000
++709 0 -707 0 *
+Ve
+1e-07
+59.8148148148148 54.8865092720871 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1185 0 0 0.370370370370371
+6  1953 1 0
+0
+
+0101000
++707 0 -705 0 *
+Ve
+1e-07
+59.4444444444444 54.8865092720871 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1186 0 0 0.370370370370371
+6  1954 1 0
+0
+
+0101000
++705 0 -703 0 *
+Ve
+1e-07
+59.6296296296296 54.5657591225373 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1187 0 0 0.370370370370367
+6  1955 1 0
+0
+
+0101000
++703 0 -701 0 *
+Ve
+1e-07
+59.4444444444444 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1188 0 0 0.370370370370371
+6  1956 1 0
+0
+
+0101000
++701 0 -699 0 *
+Ve
+1e-07
+59.0740740740741 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1189 0 0 0.370370370370371
+6  1957 1 0
+0
+
+0101000
++699 0 -697 0 *
+Ve
+1e-07
+58.8888888888889 54.5657591225373 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1190 0 0 0.370370370370371
+6  1958 1 0
+0
+
+0101000
++697 0 -695 0 *
+Ve
+1e-07
+58.7037037037037 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1191 0 0 0.370370370370371
+6  1959 1 0
+0
+
+0101000
++695 0 -693 0 *
+Ve
+1e-07
+58.3333333333333 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1192 0 0 0.370370370370371
+6  1960 1 0
+0
+
+0101000
++693 0 -691 0 *
+Ve
+1e-07
+58.5185185185185 53.9242588234377 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1193 0 0 0.370370370370369
+6  1961 1 0
+0
+
+0101000
++691 0 -689 0 *
+Ve
+1e-07
+58.3333333333333 53.6035086738879 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1194 0 0 0.370370370370369
+6  1962 1 0
+0
+
+0101000
++689 0 -687 0 *
+Ve
+1e-07
+58.7037037037037 53.6035086738879 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1195 0 0 0.370370370370367
+6  1963 1 0
+0
+
+0101000
++687 0 -685 0 *
+Ve
+1e-07
+58.8888888888889 53.2827585243381 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1196 0 0 0.370370370370369
+6  1964 1 0
+0
+
+0101000
++685 0 -683 0 *
+Ve
+1e-07
+58.7037037037037 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1197 0 0 0.370370370370369
+6  1965 1 0
+0
+
+0101000
++683 0 -681 0 *
+Ve
+1e-07
+58.3333333333333 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1198 0 0 0.370370370370371
+6  1966 1 0
+0
+
+0101000
++681 0 -679 0 *
+Ve
+1e-07
+58.5185185185185 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1199 0 0 0.370370370370369
+6  1967 1 0
+0
+
+0101000
++679 0 -677 0 *
+Ve
+1e-07
+58.3333333333333 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1200 0 0 0.370370370370369
+6  1968 1 0
+0
+
+0101000
++677 0 -675 0 *
+Ve
+1e-07
+57.962962962963 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1201 0 0 0.370370370370371
+6  1969 1 0
+0
+
+0101000
++675 0 -673 0 *
+Ve
+1e-07
+57.7777777777778 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1202 0 0 0.370370370370373
+6  1970 1 0
+0
+
+0101000
++673 0 -671 0 *
+Ve
+1e-07
+57.5925925925926 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1203 0 0 0.370370370370371
+6  1971 1 0
+0
+
+0101000
++671 0 -669 0 *
+Ve
+1e-07
+57.2222222222222 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1204 0 0 0.370370370370371
+6  1972 1 0
+0
+
+0101000
++669 0 -667 0 *
+Ve
+1e-07
+57.037037037037 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1205 0 0 0.370370370370369
+6  1973 1 0
+0
+
+0101000
++667 0 -665 0 *
+Ve
+1e-07
+57.2222222222222 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1206 0 0 0.370370370370369
+6  1974 1 0
+0
+
+0101000
++665 0 -663 0 *
+Ve
+1e-07
+56.8518518518518 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1207 0 0 0.370370370370371
+6  1975 1 0
+0
+
+0101000
++663 0 -661 0 *
+Ve
+1e-07
+56.6666666666667 53.2827585243381 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1208 0 0 0.370370370370369
+6  1976 1 0
+0
+
+0101000
++661 0 -659 0 *
+Ve
+1e-07
+56.4814814814815 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1209 0 0 0.370370370370369
+6  1977 1 0
+0
+
+0101000
++659 0 -657 0 *
+Ve
+1e-07
+56.1111111111111 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1210 0 0 0.370370370370371
+6  1978 1 0
+0
+
+0101000
++657 0 -655 0 *
+Ve
+1e-07
+56.2962962962963 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1211 0 0 0.370370370370369
+6  1979 1 0
+0
+
+0101000
++655 0 -653 0 *
+Ve
+1e-07
+56.1111111111111 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1212 0 0 0.370370370370369
+6  1980 1 0
+0
+
+0101000
++653 0 -651 0 *
+Ve
+1e-07
+55.7407407407407 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1213 0 0 0.370370370370371
+6  1981 1 0
+0
+
+0101000
++651 0 -649 0 *
+Ve
+1e-07
+55.5555555555556 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1214 0 0 0.370370370370371
+6  1982 1 0
+0
+
+0101000
++649 0 -647 0 *
+Ve
+1e-07
+55.3703703703704 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1215 0 0 0.370370370370373
+6  1983 1 0
+0
+
+0101000
++647 0 -645 0 *
+Ve
+1e-07
+55 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1216 0 0 0.370370370370371
+6  1984 1 0
+0
+
+0101000
++645 0 -643 0 *
+Ve
+1e-07
+54.8148148148148 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1217 0 0 0.370370370370369
+6  1985 1 0
+0
+
+0101000
++643 0 -641 0 *
+Ve
+1e-07
+55 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1218 0 0 0.370370370370369
+6  1986 1 0
+0
+
+0101000
++641 0 -639 0 *
+Ve
+1e-07
+54.6296296296296 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1219 0 0 0.370370370370371
+6  1987 1 0
+0
+
+0101000
++639 0 -637 0 *
+Ve
+1e-07
+54.4444444444444 53.2827585243381 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1220 0 0 0.370370370370369
+6  1988 1 0
+0
+
+0101000
++637 0 -635 0 *
+Ve
+1e-07
+54.6296296296296 53.6035086738879 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1221 0 0 0.370370370370369
+6  1989 1 0
+0
+
+0101000
++635 0 -633 0 *
+Ve
+1e-07
+55 53.6035086738879 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1222 0 0 0.370370370370371
+6  1990 1 0
+0
+
+0101000
++633 0 -631 0 *
+Ve
+1e-07
+54.8148148148148 53.9242588234377 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1223 0 0 0.370370370370369
+6  1991 1 0
+0
+
+0101000
++631 0 -629 0 *
+Ve
+1e-07
+55 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1224 0 0 0.370370370370369
+6  1992 1 0
+0
+
+0101000
++629 0 -627 0 *
+Ve
+1e-07
+54.6296296296296 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1225 0 0 0.370370370370371
+6  1993 1 0
+0
+
+0101000
++627 0 -625 0 *
+Ve
+1e-07
+54.4444444444444 54.5657591225373 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1226 0 0 0.370370370370371
+6  1994 1 0
+0
+
+0101000
++625 0 -623 0 *
+Ve
+1e-07
+54.2592592592593 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1227 0 0 0.370370370370373
+6  1995 1 0
+0
+
+0101000
++623 0 -621 0 *
+Ve
+1e-07
+53.8888888888889 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1228 0 0 0.370370370370369
+6  1996 1 0
+0
+
+0101000
++621 0 -619 0 *
+Ve
+1e-07
+53.7037037037037 54.5657591225373 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1229 0 0 0.370370370370372
+6  1997 1 0
+0
+
+0101000
++619 0 -617 0 *
+Ve
+1e-07
+53.8888888888889 54.8865092720871 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1230 0 0 0.370370370370372
+6  1998 1 0
+0
+
+0101000
++617 0 -615 0 *
+Ve
+1e-07
+53.5185185185185 54.8865092720871 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1231 0 0 0.370370370370371
+6  1999 1 0
+0
+
+0101000
++615 0 -613 0 *
+Ve
+1e-07
+53.3333333333333 55.2072594216369 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1232 0 0 0.370370370370372
+6  2000 1 0
+0
+
+0101000
++613 0 -611 0 *
+Ve
+1e-07
+53.5185185185185 55.5280095711867 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1233 0 0 0.370370370370372
+6  2001 1 0
+0
+
+0101000
++611 0 -609 0 *
+Ve
+1e-07
+53.8888888888889 55.5280095711867 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1234 0 0 0.370370370370371
+6  2002 1 0
+0
+
+0101000
++609 0 -607 0 *
+Ve
+1e-07
+53.7037037037037 55.8487597207365 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1235 0 0 0.370370370370372
+6  2003 1 0
+0
+
+0101000
++607 0 -605 0 *
+Ve
+1e-07
+53.8888888888889 56.1695098702863 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1236 0 0 0.370370370370372
+6  2004 1 0
+0
+
+0101000
++605 0 -603 0 *
+Ve
+1e-07
+54.2592592592593 56.1695098702863 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1237 0 0 0.370370370370369
+6  2005 1 0
+0
+
+0101000
++603 0 -601 0 *
+Ve
+1e-07
+54.4444444444444 55.8487597207365 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1238 0 0 0.370370370370369
+6  2006 1 0
+0
+
+0101000
++601 0 -599 0 *
+Ve
+1e-07
+54.6296296296296 56.1695098702863 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1239 0 0 0.370370370370367
+6  2007 1 0
+0
+
+0101000
++599 0 -597 0 *
+Ve
+1e-07
+55 56.1695098702863 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1240 0 0 0.370370370370371
+6  2008 1 0
+0
+
+0101000
++597 0 -595 0 *
+Ve
+1e-07
+54.8148148148148 56.4902600198361 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1241 0 0 0.370370370370371
+6  2009 1 0
+0
+
+0101000
++595 0 -593 0 *
+Ve
+1e-07
+55 56.8110101693859 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1242 0 0 0.370370370370367
+6  2010 1 0
+0
+
+0101000
++593 0 -591 0 *
+Ve
+1e-07
+54.6296296296296 56.8110101693859 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1243 0 0 0.370370370370371
+6  2011 1 0
+0
+
+0101000
++591 0 -589 0 *
+Ve
+1e-07
+54.4444444444444 57.1317603189357 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1244 0 0 0.370370370370371
+6  2012 1 0
+0
+
+0101000
++589 0 -587 0 *
+Ve
+1e-07
+54.6296296296296 57.4525104684854 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1245 0 0 0.370370370370371
+6  2013 1 0
+0
+
+0101000
++587 0 -585 0 *
+Ve
+1e-07
+55 57.4525104684854 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1246 0 0 0.370370370370371
+6  2014 1 0
+0
+
+0101000
++585 0 -583 0 *
+Ve
+1e-07
+54.8148148148148 57.7732606180352 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1247 0 0 0.370370370370367
+6  2015 1 0
+0
+
+0101000
++583 0 -581 0 *
+Ve
+1e-07
+55 58.094010767585 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1248 0 0 0.370370370370371
+6  2016 1 0
+0
+
+0101000
++581 0 -579 0 *
+Ve
+1e-07
+54.6296296296296 58.094010767585 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1249 0 0 0.370370370370371
+6  2017 1 0
+0
+
+0101000
++579 0 -577 0 *
+Ve
+1e-07
+54.4444444444444 58.4147609171348 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1250 0 0 0.370370370370371
+6  2018 1 0
+0
+
+0101000
++577 0 -575 0 *
+Ve
+1e-07
+54.2592592592593 58.094010767585 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1251 0 0 0.370370370370373
+6  2019 1 0
+0
+
+0101000
++575 0 -573 0 *
+Ve
+1e-07
+53.8888888888889 58.094010767585 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1252 0 0 0.370370370370369
+6  2020 1 0
+0
+
+0101000
++573 0 -571 0 *
+Ve
+1e-07
+53.7037037037037 58.4147609171348 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1253 0 0 0.370370370370372
+6  2021 1 0
+0
+
+0101000
++571 0 -569 0 *
+Ve
+1e-07
+53.8888888888889 58.7355110666846 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1254 0 0 0.370370370370372
+6  2022 1 0
+0
+
+0101000
++569 0 -567 0 *
+Ve
+1e-07
+53.5185185185185 58.7355110666846 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1255 0 0 0.370370370370373
+6  2023 1 0
+0
+
+0101000
++567 0 -565 0 *
+Ve
+1e-07
+53.3333333333333 59.0562612162344 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1256 0 0 0.370370370370372
+6  2024 1 0
+0
+
+0101000
++565 0 -563 0 *
+Ve
+1e-07
+53.1481481481481 58.7355110666846 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1257 0 0 0.370370370370372
+6  2025 1 0
+0
+
+0101000
++563 0 -561 0 *
+Ve
+1e-07
+52.7777777777778 58.7355110666846 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1258 0 0 0.370370370370371
+6  2026 1 0
+0
+
+0101000
++561 0 -559 0 *
+Ve
+1e-07
+52.962962962963 58.4147609171348 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1259 0 0 0.370370370370373
+6  2027 1 0
+0
+
+0101000
++559 0 -557 0 *
+Ve
+1e-07
+52.7777777777778 58.094010767585 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1260 0 0 0.370370370370372
+6  2028 1 0
+0
+
+0101000
++557 0 -555 0 *
+Ve
+1e-07
+52.4074074074074 58.094010767585 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1261 0 0 0.370370370370371
+6  2029 1 0
+0
+
+0101000
++555 0 -553 0 *
+Ve
+1e-07
+52.2222222222222 58.4147609171348 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1262 0 0 0.370370370370372
+6  2030 1 0
+0
+
+0101000
++553 0 -551 0 *
+Ve
+1e-07
+52.037037037037 58.094010767585 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1263 0 0 0.370370370370371
+6  2031 1 0
+0
+
+0101000
++551 0 -549 0 *
+Ve
+1e-07
+51.6666666666667 58.094010767585 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1264 0 0 0.370370370370371
+6  2032 1 0
+0
+
+0101000
++549 0 -547 0 *
+Ve
+1e-07
+51.4814814814815 58.4147609171348 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1265 0 0 0.370370370370372
+6  2033 1 0
+0
+
+0101000
++547 0 -545 0 *
+Ve
+1e-07
+51.6666666666667 58.7355110666846 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1266 0 0 0.370370370370369
+6  2034 1 0
+0
+
+0101000
++545 0 -543 0 *
+Ve
+1e-07
+51.2962962962963 58.7355110666846 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1267 0 0 0.370370370370373
+6  2035 1 0
+0
+
+0101000
++543 0 -541 0 *
+Ve
+1e-07
+51.1111111111111 59.0562612162344 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1268 0 0 0.370370370370372
+6  2036 1 0
+0
+
+0101000
++541 0 -539 0 *
+Ve
+1e-07
+51.2962962962963 59.3770113657842 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1269 0 0 0.370370370370372
+6  2037 1 0
+0
+
+0101000
++539 0 -537 0 *
+Ve
+1e-07
+51.6666666666667 59.3770113657842 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1270 0 0 0.370370370370373
+6  2038 1 0
+0
+
+0101000
++537 0 -535 0 *
+Ve
+1e-07
+51.4814814814815 59.697761515334 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1271 0 0 0.370370370370369
+6  2039 1 0
+0
+
+0101000
++535 0 -533 0 *
+Ve
+1e-07
+51.6666666666667 60.0185116648838 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1272 0 0 0.370370370370372
+6  2040 1 0
+0
+
+0101000
++533 0 -531 0 *
+Ve
+1e-07
+51.2962962962963 60.0185116648838 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1273 0 0 0.370370370370371
+6  2041 1 0
+0
+
+0101000
++531 0 -529 0 *
+Ve
+1e-07
+51.1111111111111 60.3392618144336 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1274 0 0 0.370370370370371
+6  2042 1 0
+0
+
+0101000
++529 0 -527 0 *
+Ve
+1e-07
+50.9259259259259 60.0185116648838 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1275 0 0 0.370370370370372
+6  2043 1 0
+0
+
+0101000
++527 0 -525 0 *
+Ve
+1e-07
+50.5555555555556 60.0185116648838 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1276 0 0 0.370370370370371
+6  2044 1 0
+0
+
+0101000
++525 0 -523 0 *
+Ve
+1e-07
+50.3703703703704 60.3392618144336 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1277 0 0 0.370370370370372
+6  2045 1 0
+0
+
+0101000
++523 0 -521 0 *
+Ve
+1e-07
+50.5555555555556 60.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1278 0 0 0.370370370370368
+6  2046 1 0
+0
+
+0101000
++521 0 -519 0 *
+Ve
+1e-07
+50.1851851851852 60.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1279 0 0 0.370370370370371
+6  2047 1 0
+0
+
+0101000
++519 0 -517 0 *
+Ve
+1e-07
+50 60.9807621135332 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1280 0 0 0.370370370370372
+6  2048 1 0
+0
+
+0101000
++517 0 -515 0 *
+Ve
+1e-07
+49.8148148148148 60.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1281 0 0 0.370370370370372
+6  2049 1 0
+0
+
+0101000
++515 0 -513 0 *
+Ve
+1e-07
+49.4444444444444 60.6600119639834 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1282 0 0 0.370370370370371
+6  2050 1 0
+0
+
+0101000
++513 0 -511 0 *
+Ve
+1e-07
+49.6296296296296 60.3392618144336 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1283 0 0 0.370370370370368
+6  2051 1 0
+0
+
+0101000
++511 0 -509 0 *
+Ve
+1e-07
+49.4444444444444 60.0185116648838 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1284 0 0 0.370370370370372
+6  2052 1 0
+0
+
+0101000
++509 0 -507 0 *
+Ve
+1e-07
+49.0740740740741 60.0185116648838 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1285 0 0 0.370370370370371
+6  2053 1 0
+0
+
+0101000
++507 0 -505 0 *
+Ve
+1e-07
+48.8888888888889 60.3392618144336 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1286 0 0 0.370370370370372
+6  2054 1 0
+0
+
+0101000
++505 0 -503 0 *
+Ve
+1e-07
+48.7037037037037 60.0185116648838 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1287 0 0 0.370370370370371
+6  2055 1 0
+0
+
+0101000
++503 0 -501 0 *
+Ve
+1e-07
+48.3333333333333 60.0185116648838 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1288 0 0 0.370370370370371
+6  2056 1 0
+0
+
+0101000
++501 0 -499 0 *
+Ve
+1e-07
+48.5185185185185 59.697761515334 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1289 0 0 0.370370370370372
+6  2057 1 0
+0
+
+0101000
++499 0 -497 0 *
+Ve
+1e-07
+48.3333333333333 59.3770113657842 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1290 0 0 0.370370370370369
+6  2058 1 0
+0
+
+0101000
++497 0 -495 0 *
+Ve
+1e-07
+48.7037037037037 59.3770113657842 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1291 0 0 0.370370370370373
+6  2059 1 0
+0
+
+0101000
++495 0 -493 0 *
+Ve
+1e-07
+48.8888888888889 59.0562612162344 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1292 0 0 0.370370370370372
+6  2060 1 0
+0
+
+0101000
++493 0 -491 0 *
+Ve
+1e-07
+48.7037037037037 58.7355110666846 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1293 0 0 0.370370370370372
+6  2061 1 0
+0
+
+0101000
++491 0 -489 0 *
+Ve
+1e-07
+48.3333333333333 58.7355110666846 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1294 0 0 0.370370370370373
+6  2062 1 0
+0
+
+0101000
++489 0 -487 0 *
+Ve
+1e-07
+48.5185185185185 58.4147609171348 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1295 0 0 0.370370370370369
+6  2063 1 0
+0
+
+0101000
++487 0 -485 0 *
+Ve
+1e-07
+48.3333333333333 58.094010767585 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1296 0 0 0.370370370370372
+6  2064 1 0
+0
+
+0101000
++485 0 -483 0 *
+Ve
+1e-07
+47.962962962963 58.094010767585 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1297 0 0 0.370370370370371
+6  2065 1 0
+0
+
+0101000
++483 0 -481 0 *
+Ve
+1e-07
+47.7777777777778 58.4147609171348 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1298 0 0 0.370370370370371
+6  2066 1 0
+0
+
+0101000
++481 0 -479 0 *
+Ve
+1e-07
+47.5925925925926 58.094010767585 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1299 0 0 0.370370370370372
+6  2067 1 0
+0
+
+0101000
++479 0 -477 0 *
+Ve
+1e-07
+47.2222222222222 58.094010767585 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1300 0 0 0.370370370370371
+6  2068 1 0
+0
+
+0101000
++477 0 -475 0 *
+Ve
+1e-07
+47.037037037037 58.4147609171348 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1301 0 0 0.370370370370372
+6  2069 1 0
+0
+
+0101000
++475 0 -473 0 *
+Ve
+1e-07
+47.2222222222222 58.7355110666846 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1302 0 0 0.370370370370373
+6  2070 1 0
+0
+
+0101000
++473 0 -471 0 *
+Ve
+1e-07
+46.8518518518519 58.7355110666846 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1303 0 0 0.370370370370371
+6  2071 1 0
+0
+
+0101000
++471 0 -469 0 *
+Ve
+1e-07
+46.6666666666667 59.0562612162344 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1304 0 0 0.370370370370372
+6  2072 1 0
+0
+
+0101000
++469 0 -467 0 *
+Ve
+1e-07
+46.4814814814815 58.7355110666846 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1305 0 0 0.370370370370372
+6  2073 1 0
+0
+
+0101000
++467 0 -465 0 *
+Ve
+1e-07
+46.1111111111111 58.7355110666846 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1306 0 0 0.370370370370373
+6  2074 1 0
+0
+
+0101000
++465 0 -463 0 *
+Ve
+1e-07
+46.2962962962963 58.4147609171348 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1307 0 0 0.370370370370373
+6  2075 1 0
+0
+
+0101000
++463 0 -461 0 *
+Ve
+1e-07
+46.1111111111111 58.094010767585 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1308 0 0 0.370370370370372
+6  2076 1 0
+0
+
+0101000
++461 0 -459 0 *
+Ve
+1e-07
+45.7407407407407 58.094010767585 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1309 0 0 0.370370370370371
+6  2077 1 0
+0
+
+0101000
++459 0 -457 0 *
+Ve
+1e-07
+45.5555555555556 58.4147609171348 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1310 0 0 0.370370370370371
+6  2078 1 0
+0
+
+0101000
++457 0 -455 0 *
+Ve
+1e-07
+45.3703703703704 58.094010767585 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1311 0 0 0.370370370370372
+6  2079 1 0
+0
+
+0101000
++455 0 -453 0 *
+Ve
+1e-07
+45 58.094010767585 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1312 0 0 0.370370370370371
+6  2080 1 0
+0
+
+0101000
++453 0 -451 0 *
+Ve
+1e-07
+45.1851851851852 57.7732606180352 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1313 0 0 0.370370370370372
+6  2081 1 0
+0
+
+0101000
++451 0 -449 0 *
+Ve
+1e-07
+45 57.4525104684854 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1314 0 0 0.370370370370372
+6  2082 1 0
+0
+
+0101000
++449 0 -447 0 *
+Ve
+1e-07
+45.3703703703704 57.4525104684854 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1315 0 0 0.370370370370371
+6  2083 1 0
+0
+
+0101000
++447 0 -445 0 *
+Ve
+1e-07
+45.5555555555556 57.1317603189357 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1316 0 0 0.370370370370372
+6  2084 1 0
+0
+
+0101000
++445 0 -443 0 *
+Ve
+1e-07
+45.3703703703704 56.8110101693859 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1317 0 0 0.370370370370372
+6  2085 1 0
+0
+
+0101000
++443 0 -441 0 *
+Ve
+1e-07
+45 56.8110101693859 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1318 0 0 0.370370370370371
+6  2086 1 0
+0
+
+0101000
++441 0 -439 0 *
+Ve
+1e-07
+45.1851851851852 56.4902600198361 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1319 0 0 0.370370370370372
+6  2087 1 0
+0
+
+0101000
++439 0 -437 0 *
+Ve
+1e-07
+45 56.1695098702863 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1320 0 0 0.370370370370372
+6  2088 1 0
+0
+
+0101000
++437 0 -435 0 *
+Ve
+1e-07
+45.3703703703704 56.1695098702863 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1321 0 0 0.370370370370371
+6  2089 1 0
+0
+
+0101000
++435 0 -433 0 *
+Ve
+1e-07
+45.5555555555556 55.8487597207365 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1322 0 0 0.370370370370372
+6  2090 1 0
+0
+
+0101000
++433 0 -431 0 *
+Ve
+1e-07
+45.7407407407407 56.1695098702863 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1323 0 0 0.370370370370371
+6  2091 1 0
+0
+
+0101000
++431 0 -429 0 *
+Ve
+1e-07
+46.1111111111111 56.1695098702863 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1324 0 0 0.370370370370371
+6  2092 1 0
+0
+
+0101000
++429 0 -427 0 *
+Ve
+1e-07
+46.2962962962963 55.8487597207365 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1325 0 0 0.370370370370372
+6  2093 1 0
+0
+
+0101000
++427 0 -425 0 *
+Ve
+1e-07
+46.1111111111111 55.5280095711867 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1326 0 0 0.370370370370373
+6  2094 1 0
+0
+
+0101000
++425 0 -423 0 *
+Ve
+1e-07
+46.4814814814815 55.5280095711867 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1327 0 0 0.370370370370373
+6  2095 1 0
+0
+
+0101000
++423 0 -421 0 *
+Ve
+1e-07
+46.6666666666667 55.2072594216369 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1328 0 0 0.370370370370372
+6  2096 1 0
+0
+
+0101000
++421 0 -419 0 *
+Ve
+1e-07
+46.4814814814815 54.8865092720871 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1329 0 0 0.370370370370372
+6  2097 1 0
+0
+
+0101000
++419 0 -417 0 *
+Ve
+1e-07
+46.1111111111111 54.8865092720871 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1330 0 0 0.370370370370373
+6  2098 1 0
+0
+
+0101000
++417 0 -415 0 *
+Ve
+1e-07
+46.2962962962963 54.5657591225373 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1331 0 0 0.370370370370373
+6  2099 1 0
+0
+
+0101000
++415 0 -413 0 *
+Ve
+1e-07
+46.1111111111111 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1332 0 0 0.370370370370372
+6  2100 1 0
+0
+
+0101000
++413 0 -411 0 *
+Ve
+1e-07
+45.7407407407407 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1333 0 0 0.370370370370371
+6  2101 1 0
+0
+
+0101000
++411 0 -409 0 *
+Ve
+1e-07
+45.5555555555556 54.5657591225373 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1334 0 0 0.370370370370371
+6  2102 1 0
+0
+
+0101000
++409 0 -407 0 *
+Ve
+1e-07
+45.3703703703704 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1335 0 0 0.370370370370372
+6  2103 1 0
+0
+
+0101000
++407 0 -405 0 *
+Ve
+1e-07
+45 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1336 0 0 0.370370370370371
+6  2104 1 0
+0
+
+0101000
++405 0 -403 0 *
+Ve
+1e-07
+45.1851851851852 53.9242588234377 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1337 0 0 0.37037037037037
+6  2105 1 0
+0
+
+0101000
++403 0 -401 0 *
+Ve
+1e-07
+45 53.6035086738879 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1338 0 0 0.370370370370371
+6  2106 1 0
+0
+
+0101000
++401 0 -399 0 *
+Ve
+1e-07
+45.3703703703704 53.6035086738879 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1339 0 0 0.370370370370369
+6  2107 1 0
+0
+
+0101000
++399 0 -397 0 *
+Ve
+1e-07
+45.5555555555556 53.2827585243381 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1340 0 0 0.37037037037037
+6  2108 1 0
+0
+
+0101000
++397 0 -395 0 *
+Ve
+1e-07
+45.3703703703704 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1341 0 0 0.37037037037037
+6  2109 1 0
+0
+
+0101000
++395 0 -393 0 *
+Ve
+1e-07
+45 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1342 0 0 0.370370370370369
+6  2110 1 0
+0
+
+0101000
++393 0 -391 0 *
+Ve
+1e-07
+45.1851851851852 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1343 0 0 0.370370370370371
+6  2111 1 0
+0
+
+0101000
++391 0 -389 0 *
+Ve
+1e-07
+45 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1344 0 0 0.37037037037037
+6  2112 1 0
+0
+
+0101000
++389 0 -387 0 *
+Ve
+1e-07
+44.6296296296296 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1345 0 0 0.370370370370371
+6  2113 1 0
+0
+
+0101000
++387 0 -385 0 *
+Ve
+1e-07
+44.4444444444444 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1346 0 0 0.370370370370371
+6  2114 1 0
+0
+
+0101000
++385 0 -383 0 *
+Ve
+1e-07
+44.2592592592593 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1347 0 0 0.370370370370372
+6  2115 1 0
+0
+
+0101000
++383 0 -381 0 *
+Ve
+1e-07
+43.8888888888889 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1348 0 0 0.37037037037037
+6  2116 1 0
+0
+
+0101000
++381 0 -379 0 *
+Ve
+1e-07
+43.7037037037037 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1349 0 0 0.37037037037037
+6  2117 1 0
+0
+
+0101000
++379 0 -377 0 *
+Ve
+1e-07
+43.8888888888889 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1350 0 0 0.370370370370371
+6  2118 1 0
+0
+
+0101000
++377 0 -375 0 *
+Ve
+1e-07
+43.5185185185185 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1351 0 0 0.37037037037037
+6  2119 1 0
+0
+
+0101000
++375 0 -373 0 *
+Ve
+1e-07
+43.3333333333333 53.2827585243381 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1352 0 0 0.37037037037037
+6  2120 1 0
+0
+
+0101000
++373 0 -371 0 *
+Ve
+1e-07
+43.1481481481481 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1353 0 0 0.37037037037037
+6  2121 1 0
+0
+
+0101000
++371 0 -369 0 *
+Ve
+1e-07
+42.7777777777778 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1354 0 0 0.370370370370369
+6  2122 1 0
+0
+
+0101000
++369 0 -367 0 *
+Ve
+1e-07
+42.962962962963 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1355 0 0 0.370370370370369
+6  2123 1 0
+0
+
+0101000
++367 0 -365 0 *
+Ve
+1e-07
+42.7777777777778 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1356 0 0 0.37037037037037
+6  2124 1 0
+0
+
+0101000
++365 0 -363 0 *
+Ve
+1e-07
+42.4074074074074 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1357 0 0 0.37037037037037
+6  2125 1 0
+0
+
+0101000
++363 0 -361 0 *
+Ve
+1e-07
+42.2222222222222 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1358 0 0 0.37037037037037
+6  2126 1 0
+0
+
+0101000
++361 0 -359 0 *
+Ve
+1e-07
+42.037037037037 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1359 0 0 0.37037037037037
+6  2127 1 0
+0
+
+0101000
++359 0 -357 0 *
+Ve
+1e-07
+41.6666666666667 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1360 0 0 0.37037037037037
+6  2128 1 0
+0
+
+0101000
++357 0 -355 0 *
+Ve
+1e-07
+41.4814814814815 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1361 0 0 0.37037037037037
+6  2129 1 0
+0
+
+0101000
++355 0 -353 0 *
+Ve
+1e-07
+41.6666666666667 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1362 0 0 0.370370370370371
+6  2130 1 0
+0
+
+0101000
++353 0 -351 0 *
+Ve
+1e-07
+41.2962962962963 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1363 0 0 0.370370370370369
+6  2131 1 0
+0
+
+0101000
++351 0 -349 0 *
+Ve
+1e-07
+41.1111111111111 53.2827585243381 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1364 0 0 0.37037037037037
+6  2132 1 0
+0
+
+0101000
++349 0 -347 0 *
+Ve
+1e-07
+41.2962962962963 53.6035086738879 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1365 0 0 0.37037037037037
+6  2133 1 0
+0
+
+0101000
++347 0 -345 0 *
+Ve
+1e-07
+41.6666666666667 53.6035086738879 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1366 0 0 0.37037037037037
+6  2134 1 0
+0
+
+0101000
++345 0 -343 0 *
+Ve
+1e-07
+41.4814814814815 53.9242588234377 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1367 0 0 0.370370370370371
+6  2135 1 0
+0
+
+0101000
++343 0 -341 0 *
+Ve
+1e-07
+41.6666666666667 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1368 0 0 0.37037037037037
+6  2136 1 0
+0
+
+0101000
++341 0 -339 0 *
+Ve
+1e-07
+41.2962962962963 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1369 0 0 0.370370370370371
+6  2137 1 0
+0
+
+0101000
++339 0 -337 0 *
+Ve
+1e-07
+41.1111111111111 54.5657591225373 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1370 0 0 0.370370370370372
+6  2138 1 0
+0
+
+0101000
++337 0 -335 0 *
+Ve
+1e-07
+40.9259259259259 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1371 0 0 0.370370370370371
+6  2139 1 0
+0
+
+0101000
++335 0 -333 0 *
+Ve
+1e-07
+40.5555555555556 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1372 0 0 0.370370370370371
+6  2140 1 0
+0
+
+0101000
++333 0 -331 0 *
+Ve
+1e-07
+40.3703703703704 54.5657591225373 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1373 0 0 0.370370370370372
+6  2141 1 0
+0
+
+0101000
++331 0 -329 0 *
+Ve
+1e-07
+40.5555555555556 54.8865092720871 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1374 0 0 0.370370370370369
+6  2142 1 0
+0
+
+0101000
++329 0 -327 0 *
+Ve
+1e-07
+40.1851851851852 54.8865092720871 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1375 0 0 0.370370370370371
+6  2143 1 0
+0
+
+0101000
++327 0 -325 0 *
+Ve
+1e-07
+40 55.2072594216369 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1376 0 0 0.370370370370372
+6  2144 1 0
+0
+
+0101000
++325 0 -323 0 *
+Ve
+1e-07
+39.8148148148148 54.8865092720871 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1377 0 0 0.370370370370372
+6  2145 1 0
+0
+
+0101000
++323 0 -321 0 *
+Ve
+1e-07
+39.4444444444444 54.8865092720871 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1378 0 0 0.370370370370371
+6  2146 1 0
+0
+
+0101000
++321 0 -319 0 *
+Ve
+1e-07
+39.6296296296296 54.5657591225373 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1379 0 0 0.370370370370369
+6  2147 1 0
+0
+
+0101000
++319 0 -317 0 *
+Ve
+1e-07
+39.4444444444444 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1380 0 0 0.370370370370372
+6  2148 1 0
+0
+
+0101000
++317 0 -315 0 *
+Ve
+1e-07
+39.0740740740741 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1381 0 0 0.37037037037037
+6  2149 1 0
+0
+
+0101000
++315 0 -313 0 *
+Ve
+1e-07
+38.8888888888889 54.5657591225373 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1382 0 0 0.370370370370372
+6  2150 1 0
+0
+
+0101000
++313 0 -311 0 *
+Ve
+1e-07
+38.7037037037037 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1383 0 0 0.370370370370372
+6  2151 1 0
+0
+
+0101000
++311 0 -309 0 *
+Ve
+1e-07
+38.3333333333333 54.2450089729875 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1384 0 0 0.37037037037037
+6  2152 1 0
+0
+
+0101000
++309 0 -307 0 *
+Ve
+1e-07
+38.5185185185185 53.9242588234377 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1385 0 0 0.37037037037037
+6  2153 1 0
+0
+
+0101000
++307 0 -305 0 *
+Ve
+1e-07
+38.3333333333333 53.6035086738879 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1386 0 0 0.370370370370372
+6  2154 1 0
+0
+
+0101000
++305 0 -303 0 *
+Ve
+1e-07
+38.7037037037037 53.6035086738879 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1387 0 0 0.37037037037037
+6  2155 1 0
+0
+
+0101000
++303 0 -301 0 *
+Ve
+1e-07
+38.8888888888889 53.2827585243381 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1388 0 0 0.37037037037037
+6  2156 1 0
+0
+
+0101000
++301 0 -299 0 *
+Ve
+1e-07
+38.7037037037037 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1389 0 0 0.37037037037037
+6  2157 1 0
+0
+
+0101000
++299 0 -297 0 *
+Ve
+1e-07
+38.3333333333333 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1390 0 0 0.37037037037037
+6  2158 1 0
+0
+
+0101000
++297 0 -295 0 *
+Ve
+1e-07
+38.5185185185185 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1391 0 0 0.370370370370372
+6  2159 1 0
+0
+
+0101000
++295 0 -293 0 *
+Ve
+1e-07
+38.3333333333333 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1392 0 0 0.37037037037037
+6  2160 1 0
+0
+
+0101000
++293 0 -291 0 *
+Ve
+1e-07
+37.962962962963 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1393 0 0 0.37037037037037
+6  2161 1 0
+0
+
+0101000
++291 0 -289 0 *
+Ve
+1e-07
+37.7777777777778 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1394 0 0 0.37037037037037
+6  2162 1 0
+0
+
+0101000
++289 0 -287 0 *
+Ve
+1e-07
+37.5925925925926 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1395 0 0 0.37037037037037
+6  2163 1 0
+0
+
+0101000
++287 0 -285 0 *
+Ve
+1e-07
+37.2222222222222 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1396 0 0 0.37037037037037
+6  2164 1 0
+0
+
+0101000
++285 0 -283 0 *
+Ve
+1e-07
+37.037037037037 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1397 0 0 0.37037037037037
+6  2165 1 0
+0
+
+0101000
++283 0 -281 0 *
+Ve
+1e-07
+37.2222222222222 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1398 0 0 0.370370370370371
+6  2166 1 0
+0
+
+0101000
++281 0 -279 0 *
+Ve
+1e-07
+36.8518518518519 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1399 0 0 0.37037037037037
+6  2167 1 0
+0
+
+0101000
++279 0 -277 0 *
+Ve
+1e-07
+36.6666666666667 53.2827585243381 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1400 0 0 0.37037037037037
+6  2168 1 0
+0
+
+0101000
++277 0 -275 0 *
+Ve
+1e-07
+36.4814814814815 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1401 0 0 0.37037037037037
+6  2169 1 0
+0
+
+0101000
++275 0 -273 0 *
+Ve
+1e-07
+36.1111111111111 52.9620083747884 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1402 0 0 0.37037037037037
+6  2170 1 0
+0
+
+0101000
++273 0 -271 0 *
+Ve
+1e-07
+36.2962962962963 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1403 0 0 0.37037037037037
+6  2171 1 0
+0
+
+0101000
++271 0 -269 0 *
+Ve
+1e-07
+36.1111111111111 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1404 0 0 0.37037037037037
+6  2172 1 0
+0
+
+0101000
++269 0 -267 0 *
+Ve
+1e-07
+35.7407407407407 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1405 0 0 0.37037037037037
+6  2173 1 0
+0
+
+0101000
++267 0 -265 0 *
+Ve
+1e-07
+35.5555555555556 52.6412582252386 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1406 0 0 0.37037037037037
+6  2174 1 0
+0
+
+0101000
++265 0 -263 0 *
+Ve
+1e-07
+35.3703703703704 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1407 0 0 0.37037037037037
+6  2175 1 0
+0
+
+0101000
++263 0 -261 0 *
+Ve
+1e-07
+35 52.3205080756888 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1408 0 0 0.37037037037037
+6  2176 1 0
+0
+
+0101000
++261 0 -259 0 *
+Ve
+1e-07
+35.1851851851852 51.999757926139 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1409 0 0 0.37037037037037
+6  2177 1 0
+0
+
+0101000
++259 0 -257 0 *
+Ve
+1e-07
+35 51.6790077765892 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1410 0 0 0.37037037037037
+6  2178 1 0
+0
+
+0101000
++257 0 -255 0 *
+Ve
+1e-07
+35.3703703703704 51.6790077765892 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1411 0 0 0.37037037037037
+6  2179 1 0
+0
+
+0101000
++255 0 -253 0 *
+Ve
+1e-07
+35.5555555555556 51.3582576270394 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1412 0 0 0.37037037037037
+6  2180 1 0
+0
+
+0101000
++253 0 -251 0 *
+Ve
+1e-07
+35.3703703703704 51.0375074774896 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1413 0 0 0.37037037037037
+6  2181 1 0
+0
+
+0101000
++251 0 -249 0 *
+Ve
+1e-07
+35 51.0375074774896 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1414 0 0 0.37037037037037
+6  2182 1 0
+0
+
+0101000
++249 0 -247 0 *
+Ve
+1e-07
+35.1851851851852 50.7167573279398 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1415 0 0 0.370370370370372
+6  2183 1 0
+0
+
+0101000
++247 0 -245 0 *
+Ve
+1e-07
+35 50.39600717839 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1416 0 0 0.37037037037037
+6  2184 1 0
+0
+
+0101000
++245 0 -243 0 *
+Ve
+1e-07
+35.3703703703704 50.39600717839 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1417 0 0 0.37037037037037
+6  2185 1 0
+0
+
+0101000
++243 0 -241 0 *
+Ve
+1e-07
+35.5555555555556 50.0752570288402 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1418 0 0 0.37037037037037
+6  2186 1 0
+0
+
+0101000
++241 0 -239 0 *
+Ve
+1e-07
+35.7407407407407 50.39600717839 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1419 0 0 0.370370370370371
+6  2187 1 0
+0
+
+0101000
++239 0 -237 0 *
+Ve
+1e-07
+36.1111111111111 50.39600717839 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1420 0 0 0.37037037037037
+6  2188 1 0
+0
+
+0101000
++237 0 -235 0 *
+Ve
+1e-07
+36.2962962962963 50.0752570288402 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1421 0 0 0.37037037037037
+6  2189 1 0
+0
+
+0101000
++235 0 -233 0 *
+Ve
+1e-07
+36.1111111111111 49.7545068792904 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1422 0 0 0.370370370370371
+6  2190 1 0
+0
+
+0101000
++233 0 -231 0 *
+Ve
+1e-07
+36.4814814814815 49.7545068792904 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1423 0 0 0.37037037037037
+6  2191 1 0
+0
+
+0101000
++231 0 -229 0 *
+Ve
+1e-07
+36.6666666666667 49.4337567297406 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1424 0 0 0.37037037037037
+6  2192 1 0
+0
+
+0101000
++229 0 -227 0 *
+Ve
+1e-07
+36.4814814814815 49.1130065801909 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1425 0 0 0.37037037037037
+6  2193 1 0
+0
+
+0101000
++227 0 -225 0 *
+Ve
+1e-07
+36.1111111111111 49.1130065801908 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1426 0 0 0.37037037037037
+6  2194 1 0
+0
+
+0101000
++225 0 -223 0 *
+Ve
+1e-07
+36.2962962962963 48.7922564306411 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1427 0 0 0.37037037037037
+6  2195 1 0
+0
+
+0101000
++223 0 -221 0 *
+Ve
+1e-07
+36.1111111111111 48.4715062810913 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1428 0 0 0.37037037037037
+6  2196 1 0
+0
+
+0101000
++221 0 -219 0 *
+Ve
+1e-07
+35.7407407407407 48.4715062810913 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1429 0 0 0.37037037037037
+6  2197 1 0
+0
+
+0101000
++219 0 -217 0 *
+Ve
+1e-07
+35.5555555555556 48.7922564306411 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1430 0 0 0.370370370370371
+6  2198 1 0
+0
+
+0101000
++217 0 -215 0 *
+Ve
+1e-07
+35.3703703703704 48.4715062810913 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1431 0 0 0.37037037037037
+6  2199 1 0
+0
+
+0101000
++215 0 -213 0 *
+Ve
+1e-07
+35 48.4715062810913 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1432 0 0 0.37037037037037
+6  2200 1 0
+0
+
+0101000
++213 0 -211 0 *
+Ve
+1e-07
+35.1851851851852 48.1507561315415 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1433 0 0 0.37037037037037
+6  2201 1 0
+0
+
+0101000
++211 0 -209 0 *
+Ve
+1e-07
+35 47.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1434 0 0 0.370370370370372
+6  2202 1 0
+0
+
+0101000
++209 0 -207 0 *
+Ve
+1e-07
+35.3703703703704 47.8300059819917 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1435 0 0 0.37037037037037
+6  2203 1 0
+0
+
+0101000
++207 0 -205 0 *
+Ve
+1e-07
+35.5555555555556 47.5092558324419 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1436 0 0 0.37037037037037
+6  2204 1 0
+0
+
+0101000
++205 0 -203 0 *
+Ve
+1e-07
+35.3703703703704 47.1885056828921 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1437 0 0 0.37037037037037
+6  2205 1 0
+0
+
+0101000
++203 0 -201 0 *
+Ve
+1e-07
+35 47.1885056828921 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1438 0 0 0.37037037037037
+6  2206 1 0
+0
+
+0101000
++201 0 -199 0 *
+Ve
+1e-07
+35.1851851851852 46.8677555333423 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1439 0 0 0.37037037037037
+6  2207 1 0
+0
+
+0101000
++199 0 -197 0 *
+Ve
+1e-07
+35 46.5470053837925 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1440 0 0 0.37037037037037
+6  2208 1 0
+0
+
+0101000
++197 0 -195 0 *
+Ve
+1e-07
+35.3703703703704 46.5470053837925 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1441 0 0 0.37037037037037
+6  2209 1 0
+0
+
+0101000
++195 0 -193 0 *
+Ve
+1e-07
+35.5555555555556 46.2262552342427 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1442 0 0 0.37037037037037
+6  2210 1 0
+0
+
+0101000
++193 0 -191 0 *
+Ve
+1e-07
+35.7407407407407 46.5470053837925 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1443 0 0 0.37037037037037
+6  2211 1 0
+0
+
+0101000
++191 0 -189 0 *
+Ve
+1e-07
+36.1111111111111 46.5470053837925 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1444 0 0 0.37037037037037
+6  2212 1 0
+0
+
+0101000
++189 0 -187 0 *
+Ve
+1e-07
+36.2962962962963 46.2262552342427 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1445 0 0 0.37037037037037
+6  2213 1 0
+0
+
+0101000
++187 0 -185 0 *
+Ve
+1e-07
+36.1111111111111 45.9055050846929 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1446 0 0 0.37037037037037
+6  2214 1 0
+0
+
+0101000
++185 0 -183 0 *
+Ve
+1e-07
+36.4814814814815 45.9055050846929 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1447 0 0 0.37037037037037
+6  2215 1 0
+0
+
+0101000
++183 0 -181 0 *
+Ve
+1e-07
+36.6666666666667 45.5847549351431 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1448 0 0 0.37037037037037
+6  2216 1 0
+0
+
+0101000
++181 0 -179 0 *
+Ve
+1e-07
+36.8518518518519 45.9055050846929 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1449 0 0 0.37037037037037
+6  2217 1 0
+0
+
+0101000
++179 0 -177 0 *
+Ve
+1e-07
+37.2222222222222 45.9055050846929 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1450 0 0 0.37037037037037
+6  2218 1 0
+0
+
+0101000
++177 0 -175 0 *
+Ve
+1e-07
+37.037037037037 46.2262552342427 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1451 0 0 0.370370370370369
+6  2219 1 0
+0
+
+0101000
++175 0 -173 0 *
+Ve
+1e-07
+37.2222222222222 46.5470053837925 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1452 0 0 0.37037037037037
+6  2220 1 0
+0
+
+0101000
++173 0 -171 0 *
+Ve
+1e-07
+37.5925925925926 46.5470053837925 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1453 0 0 0.37037037037037
+6  2221 1 0
+0
+
+0101000
++171 0 -169 0 *
+Ve
+1e-07
+37.7777777777778 46.2262552342427 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1454 0 0 0.37037037037037
+6  2222 1 0
+0
+
+0101000
++169 0 -167 0 *
+Ve
+1e-07
+37.962962962963 46.5470053837925 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1455 0 0 0.37037037037037
+6  2223 1 0
+0
+
+0101000
++167 0 -165 0 *
+Ve
+1e-07
+38.3333333333333 46.5470053837925 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1456 0 0 0.37037037037037
+6  2224 1 0
+0
+
+0101000
++165 0 -163 0 *
+Ve
+1e-07
+38.5185185185185 46.2262552342427 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1457 0 0 0.37037037037037
+6  2225 1 0
+0
+
+0101000
++163 0 -161 0 *
+Ve
+1e-07
+38.3333333333333 45.9055050846929 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1458 0 0 0.370370370370369
+6  2226 1 0
+0
+
+0101000
++161 0 -159 0 *
+Ve
+1e-07
+38.7037037037037 45.9055050846929 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1459 0 0 0.37037037037037
+6  2227 1 0
+0
+
+0101000
++159 0 -157 0 *
+Ve
+1e-07
+38.8888888888889 45.5847549351431 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1460 0 0 0.37037037037037
+6  2228 1 0
+0
+
+0101000
++157 0 -155 0 *
+Ve
+1e-07
+38.7037037037037 45.2640047855933 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1461 0 0 0.37037037037037
+6  2229 1 0
+0
+
+0101000
++155 0 -153 0 *
+Ve
+1e-07
+38.3333333333333 45.2640047855934 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1462 0 0 0.370370370370369
+6  2230 1 0
+0
+
+0101000
++153 0 -151 0 *
+Ve
+1e-07
+38.5185185185185 44.9432546360436 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1463 0 0 0.370370370370371
+6  2231 1 0
+0
+
+0101000
++151 0 -149 0 *
+Ve
+1e-07
+38.3333333333333 44.6225044864938 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1464 0 0 0.37037037037037
+6  2232 1 0
+0
+
+0101000
++149 0 -147 0 *
+Ve
+1e-07
+38.7037037037037 44.6225044864938 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1465 0 0 0.37037037037037
+6  2233 1 0
+0
+
+0101000
++147 0 -145 0 *
+Ve
+1e-07
+38.8888888888889 44.301754336944 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1466 0 0 0.370370370370371
+6  2234 1 0
+0
+
+0101000
++145 0 -143 0 *
+Ve
+1e-07
+39.0740740740741 44.6225044864938 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1467 0 0 0.370370370370371
+6  2235 1 0
+0
+
+0101000
++143 0 -141 0 *
+Ve
+1e-07
+39.4444444444444 44.6225044864938 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1468 0 0 0.37037037037037
+6  2236 1 0
+0
+
+0101000
++141 0 -139 0 *
+Ve
+1e-07
+39.6296296296296 44.301754336944 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1469 0 0 0.370370370370371
+6  2237 1 0
+0
+
+0101000
++139 0 -137 0 *
+Ve
+1e-07
+39.4444444444444 43.9810041873942 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1470 0 0 0.37037037037037
+6  2238 1 0
+0
+
+0101000
++137 0 -135 0 *
+Ve
+1e-07
+39.8148148148148 43.9810041873942 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1471 0 0 0.37037037037037
+6  2239 1 0
+0
+
+0101000
++135 0 -133 0 *
+Ve
+1e-07
+40 43.6602540378444 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1472 0 0 0.370370370370371
+6  2240 1 0
+0
+
+0101000
++133 0 -131 0 *
+Ve
+1e-07
+39.8148148148148 43.3395038882946 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1473 0 0 0.370370370370371
+6  2241 1 0
+0
+
+0101000
++131 0 -129 0 *
+Ve
+1e-07
+39.4444444444444 43.3395038882946 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1474 0 0 0.37037037037037
+6  2242 1 0
+0
+
+0101000
++129 0 -127 0 *
+Ve
+1e-07
+39.6296296296296 43.0187537387448 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1475 0 0 0.37037037037037
+6  2243 1 0
+0
+
+0101000
++127 0 -125 0 *
+Ve
+1e-07
+39.4444444444444 42.698003589195 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1476 0 0 0.370370370370371
+6  2244 1 0
+0
+
+0101000
++125 0 -123 0 *
+Ve
+1e-07
+39.0740740740741 42.698003589195 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1477 0 0 0.37037037037037
+6  2245 1 0
+0
+
+0101000
++123 0 -121 0 *
+Ve
+1e-07
+38.8888888888889 43.0187537387448 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1478 0 0 0.370370370370371
+6  2246 1 0
+0
+
+0101000
++121 0 -119 0 *
+Ve
+1e-07
+38.7037037037037 42.698003589195 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1479 0 0 0.370370370370371
+6  2247 1 0
+0
+
+0101000
++119 0 -117 0 *
+Ve
+1e-07
+38.3333333333333 42.698003589195 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1480 0 0 0.37037037037037
+6  2248 1 0
+0
+
+0101000
++117 0 -115 0 *
+Ve
+1e-07
+38.5185185185185 42.3772534396452 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1481 0 0 0.37037037037037
+6  2249 1 0
+0
+
+0101000
++115 0 -113 0 *
+Ve
+1e-07
+38.3333333333333 42.0565032900954 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1482 0 0 0.37037037037037
+6  2250 1 0
+0
+
+0101000
++113 0 -111 0 *
+Ve
+1e-07
+38.7037037037037 42.0565032900954 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1483 0 0 0.370370370370369
+6  2251 1 0
+0
+
+0101000
++111 0 -109 0 *
+Ve
+1e-07
+38.8888888888889 41.7357531405456 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1484 0 0 0.37037037037037
+6  2252 1 0
+0
+
+0101000
++109 0 -107 0 *
+Ve
+1e-07
+38.7037037037037 41.4150029909958 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1485 0 0 0.370370370370371
+6  2253 1 0
+0
+
+0101000
++107 0 -105 0 *
+Ve
+1e-07
+38.3333333333333 41.4150029909958 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1486 0 0 0.370370370370371
+6  2254 1 0
+0
+
+0101000
++105 0 -103 0 *
+Ve
+1e-07
+38.5185185185185 41.094252841446 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1487 0 0 0.37037037037037
+6  2255 1 0
+0
+
+0101000
++103 0 -101 0 *
+Ve
+1e-07
+38.3333333333333 40.7735026918963 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1488 0 0 0.370370370370371
+6  2256 1 0
+0
+
+0101000
++101 0 -99 0 *
+Ve
+1e-07
+37.962962962963 40.7735026918963 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1489 0 0 0.37037037037037
+6  2257 1 0
+0
+
+0101000
++99 0 -97 0 *
+Ve
+1e-07
+37.7777777777778 41.094252841446 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1490 0 0 0.370370370370371
+6  2258 1 0
+0
+
+0101000
++97 0 -95 0 *
+Ve
+1e-07
+37.5925925925926 40.7735026918963 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1491 0 0 0.370370370370371
+6  2259 1 0
+0
+
+0101000
++95 0 -93 0 *
+Ve
+1e-07
+37.2222222222222 40.7735026918963 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1492 0 0 0.37037037037037
+6  2260 1 0
+0
+
+0101000
++93 0 -91 0 *
+Ve
+1e-07
+37.037037037037 41.094252841446 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1493 0 0 0.370370370370371
+6  2261 1 0
+0
+
+0101000
++91 0 -89 0 *
+Ve
+1e-07
+37.2222222222222 41.4150029909958 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1494 0 0 0.37037037037037
+6  2262 1 0
+0
+
+0101000
++89 0 -87 0 *
+Ve
+1e-07
+36.8518518518519 41.4150029909958 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1495 0 0 0.370370370370371
+6  2263 1 0
+0
+
+0101000
++87 0 -85 0 *
+Ve
+1e-07
+36.6666666666667 41.7357531405456 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1496 0 0 0.370370370370371
+6  2264 1 0
+0
+
+0101000
++85 0 -83 0 *
+Ve
+1e-07
+36.4814814814815 41.4150029909958 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1497 0 0 0.370370370370371
+6  2265 1 0
+0
+
+0101000
++83 0 -81 0 *
+Ve
+1e-07
+36.1111111111111 41.4150029909958 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1498 0 0 0.370370370370371
+6  2266 1 0
+0
+
+0101000
++81 0 -79 0 *
+Ve
+1e-07
+36.2962962962963 41.094252841446 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1499 0 0 0.37037037037037
+6  2267 1 0
+0
+
+0101000
++79 0 -77 0 *
+Ve
+1e-07
+36.1111111111111 40.7735026918963 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1500 0 0 0.370370370370371
+6  2268 1 0
+0
+
+0101000
++77 0 -75 0 *
+Ve
+1e-07
+35.7407407407407 40.7735026918963 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1501 0 0 0.37037037037037
+6  2269 1 0
+0
+
+0101000
++75 0 -73 0 *
+Ve
+1e-07
+35.5555555555556 41.094252841446 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1502 0 0 0.370370370370371
+6  2270 1 0
+0
+
+0101000
++73 0 -71 0 *
+Ve
+1e-07
+35.3703703703704 40.7735026918963 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1503 0 0 0.370370370370371
+6  2271 1 0
+0
+
+0101000
++71 0 -69 0 *
+Ve
+1e-07
+35 40.7735026918963 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1504 0 0 0.37037037037037
+6  2272 1 0
+0
+
+0101000
++69 0 -67 0 *
+Ve
+1e-07
+35.1851851851852 40.4527525423465 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1505 0 0 0.37037037037037
+6  2273 1 0
+0
+
+0101000
++67 0 -65 0 *
+Ve
+1e-07
+35 40.1320023927967 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1506 0 0 0.37037037037037
+6  2274 1 0
+0
+
+0101000
++65 0 -63 0 *
+Ve
+1e-07
+35.3703703703704 40.1320023927967 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1507 0 0 0.37037037037037
+6  2275 1 0
+0
+
+0101000
++63 0 -61 0 *
+Ve
+1e-07
+35.5555555555556 39.8112522432469 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1508 0 0 0.37037037037037
+6  2276 1 0
+0
+
+0101000
++61 0 -59 0 *
+Ve
+1e-07
+35.3703703703704 39.4905020936971 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1509 0 0 0.37037037037037
+6  2277 1 0
+0
+
+0101000
++59 0 -57 0 *
+Ve
+1e-07
+35 39.4905020936971 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1510 0 0 0.37037037037037
+6  2278 1 0
+0
+
+0101000
++57 0 -55 0 *
+Ve
+1e-07
+35.1851851851852 39.1697519441473 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1511 0 0 0.37037037037037
+6  2279 1 0
+0
+
+0101000
++55 0 -53 0 *
+Ve
+1e-07
+35 38.8490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1512 0 0 0.37037037037037
+6  2280 1 0
+0
+
+0101000
++53 0 -51 0 *
+Ve
+1e-07
+35.3703703703704 38.8490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1513 0 0 0.37037037037037
+6  2281 1 0
+0
+
+0101000
++51 0 -49 0 *
+Ve
+1e-07
+35.5555555555556 38.5282516450477 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1514 0 0 0.370370370370371
+6  2282 1 0
+0
+
+0101000
++49 0 -47 0 *
+Ve
+1e-07
+35.7407407407407 38.8490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1515 0 0 0.37037037037037
+6  2283 1 0
+0
+
+0101000
++47 0 -45 0 *
+Ve
+1e-07
+36.1111111111111 38.8490017945975 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1516 0 0 0.37037037037037
+6  2284 1 0
+0
+
+0101000
++45 0 -43 0 *
+Ve
+1e-07
+36.2962962962963 38.5282516450477 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1517 0 0 0.37037037037037
+6  2285 1 0
+0
+
+0101000
++43 0 -41 0 *
+Ve
+1e-07
+36.1111111111111 38.2075014954979 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1518 0 0 0.370370370370371
+6  2286 1 0
+0
+
+0101000
++41 0 -39 0 *
+Ve
+1e-07
+36.4814814814815 38.2075014954979 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1519 0 0 0.37037037037037
+6  2287 1 0
+0
+
+0101000
++39 0 -37 0 *
+Ve
+1e-07
+36.6666666666667 37.8867513459481 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1520 0 0 0.37037037037037
+6  2288 1 0
+0
+
+0101000
++37 0 -35 0 *
+Ve
+1e-07
+36.4814814814815 37.5660011963983 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1521 0 0 0.37037037037037
+6  2289 1 0
+0
+
+0101000
++35 0 -33 0 *
+Ve
+1e-07
+36.1111111111111 37.5660011963983 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1522 0 0 0.37037037037037
+6  2290 1 0
+0
+
+0101000
++33 0 -31 0 *
+Ve
+1e-07
+36.2962962962963 37.2452510468485 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1523 0 0 0.370370370370371
+6  2291 1 0
+0
+
+0101000
++31 0 -29 0 *
+Ve
+1e-07
+36.1111111111111 36.9245008972987 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1524 0 0 0.37037037037037
+6  2292 1 0
+0
+
+0101000
++29 0 -27 0 *
+Ve
+1e-07
+35.7407407407407 36.9245008972987 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1525 0 0 0.37037037037037
+6  2293 1 0
+0
+
+0101000
++27 0 -25 0 *
+Ve
+1e-07
+35.5555555555556 37.2452510468485 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1526 0 0 0.37037037037037
+6  2294 1 0
+0
+
+0101000
++25 0 -23 0 *
+Ve
+1e-07
+35.3703703703704 36.9245008972987 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1527 0 0 0.37037037037037
+6  2295 1 0
+0
+
+0101000
++23 0 -21 0 *
+Ve
+1e-07
+35 36.9245008972987 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1528 0 0 0.37037037037037
+6  2296 1 0
+0
+
+0101000
++21 0 -19 0 *
+Ve
+1e-07
+35.1851851851852 36.603750747749 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1529 0 0 0.37037037037037
+6  2297 1 0
+0
+
+0101000
++19 0 -17 0 *
+Ve
+1e-07
+35 36.2830005981992 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1530 0 0 0.37037037037037
+6  2298 1 0
+0
+
+0101000
++17 0 -15 0 *
+Ve
+1e-07
+35.3703703703704 36.2830005981992 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1531 0 0 0.37037037037037
+6  2299 1 0
+0
+
+0101000
++15 0 -13 0 *
+Ve
+1e-07
+35.5555555555556 35.9622504486494 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1532 0 0 0.37037037037037
+6  2300 1 0
+0
+
+0101000
++13 0 -11 0 *
+Ve
+1e-07
+35.3703703703704 35.6415002990996 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1533 0 0 0.37037037037037
+6  2301 1 0
+0
+
+0101000
++11 0 -9 0 *
+Ve
+1e-07
+35 35.6415002990996 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1534 0 0 0.37037037037037
+6  2302 1 0
+0
+
+0101000
++9 0 -7 0 *
+Ve
+1e-07
+35.1851851851852 35.3207501495498 0
+0 0
+
+0101100
+*
+Ed
+ 3e-08 1 1 0
+1  1535 0 0 0.37037037037037
+6  2303 1 0
+0
+
+0101000
++7 0 -5 0 *
+Ed
+ 3e-08 1 1 0
+1  1536 0 0 0.37037037037037
+6  2304 1 0
+0
+
+0101000
++5 0 -1538 0 *
+Wi
+
+0101000
++1536 0 +1534 0 +1532 0 +1530 0 +1528 0 +1526 0 +1524 0 +1522 0 +1520 0 +1518 0 
++1516 0 +1514 0 +1512 0 +1510 0 +1508 0 +1506 0 +1504 0 +1502 0 +1500 0 +1498 0 
++1496 0 +1494 0 +1492 0 +1490 0 +1488 0 +1486 0 +1484 0 +1482 0 +1480 0 +1478 0 
++1476 0 +1474 0 +1472 0 +1470 0 +1468 0 +1466 0 +1464 0 +1462 0 +1460 0 +1458 0 
++1456 0 +1454 0 +1452 0 +1450 0 +1448 0 +1446 0 +1444 0 +1442 0 +1440 0 +1438 0 
++1436 0 +1434 0 +1432 0 +1430 0 +1428 0 +1426 0 +1424 0 +1422 0 +1420 0 +1418 0 
++1416 0 +1414 0 +1412 0 +1410 0 +1408 0 +1406 0 +1404 0 +1402 0 +1400 0 +1398 0 
++1396 0 +1394 0 +1392 0 +1390 0 +1388 0 +1386 0 +1384 0 +1382 0 +1380 0 +1378 0 
++1376 0 +1374 0 +1372 0 +1370 0 +1368 0 +1366 0 +1364 0 +1362 0 +1360 0 +1358 0 
++1356 0 +1354 0 +1352 0 +1350 0 +1348 0 +1346 0 +1344 0 +1342 0 +1340 0 +1338 0 
++1336 0 +1334 0 +1332 0 +1330 0 +1328 0 +1326 0 +1324 0 +1322 0 +1320 0 +1318 0 
++1316 0 +1314 0 +1312 0 +1310 0 +1308 0 +1306 0 +1304 0 +1302 0 +1300 0 +1298 0 
++1296 0 +1294 0 +1292 0 +1290 0 +1288 0 +1286 0 +1284 0 +1282 0 +1280 0 +1278 0 
++1276 0 +1274 0 +1272 0 +1270 0 +1268 0 +1266 0 +1264 0 +1262 0 +1260 0 +1258 0 
++1256 0 +1254 0 +1252 0 +1250 0 +1248 0 +1246 0 +1244 0 +1242 0 +1240 0 +1238 0 
++1236 0 +1234 0 +1232 0 +1230 0 +1228 0 +1226 0 +1224 0 +1222 0 +1220 0 +1218 0 
++1216 0 +1214 0 +1212 0 +1210 0 +1208 0 +1206 0 +1204 0 +1202 0 +1200 0 +1198 0 
++1196 0 +1194 0 +1192 0 +1190 0 +1188 0 +1186 0 +1184 0 +1182 0 +1180 0 +1178 0 
++1176 0 +1174 0 +1172 0 +1170 0 +1168 0 +1166 0 +1164 0 +1162 0 +1160 0 +1158 0 
++1156 0 +1154 0 +1152 0 +1150 0 +1148 0 +1146 0 +1144 0 +1142 0 +1140 0 +1138 0 
++1136 0 +1134 0 +1132 0 +1130 0 +1128 0 +1126 0 +1124 0 +1122 0 +1120 0 +1118 0 
++1116 0 +1114 0 +1112 0 +1110 0 +1108 0 +1106 0 +1104 0 +1102 0 +1100 0 +1098 0 
++1096 0 +1094 0 +1092 0 +1090 0 +1088 0 +1086 0 +1084 0 +1082 0 +1080 0 +1078 0 
++1076 0 +1074 0 +1072 0 +1070 0 +1068 0 +1066 0 +1064 0 +1062 0 +1060 0 +1058 0 
++1056 0 +1054 0 +1052 0 +1050 0 +1048 0 +1046 0 +1044 0 +1042 0 +1040 0 +1038 0 
++1036 0 +1034 0 +1032 0 +1030 0 +1028 0 +1026 0 +1024 0 +1022 0 +1020 0 +1018 0 
++1016 0 +1014 0 +1012 0 +1010 0 +1008 0 +1006 0 +1004 0 +1002 0 +1000 0 +998 0 
++996 0 +994 0 +992 0 +990 0 +988 0 +986 0 +984 0 +982 0 +980 0 +978 0 
++976 0 +974 0 +972 0 +970 0 +968 0 +966 0 +964 0 +962 0 +960 0 +958 0 
++956 0 +954 0 +952 0 +950 0 +948 0 +946 0 +944 0 +942 0 +940 0 +938 0 
++936 0 +934 0 +932 0 +930 0 +928 0 +926 0 +924 0 +922 0 +920 0 +918 0 
++916 0 +914 0 +912 0 +910 0 +908 0 +906 0 +904 0 +902 0 +900 0 +898 0 
++896 0 +894 0 +892 0 +890 0 +888 0 +886 0 +884 0 +882 0 +880 0 +878 0 
++876 0 +874 0 +872 0 +870 0 +868 0 +866 0 +864 0 +862 0 +860 0 +858 0 
++856 0 +854 0 +852 0 +850 0 +848 0 +846 0 +844 0 +842 0 +840 0 +838 0 
++836 0 +834 0 +832 0 +830 0 +828 0 +826 0 +824 0 +822 0 +820 0 +818 0 
++816 0 +814 0 +812 0 +810 0 +808 0 +806 0 +804 0 +802 0 +800 0 +798 0 
++796 0 +794 0 +792 0 +790 0 +788 0 +786 0 +784 0 +782 0 +780 0 +778 0 
++776 0 +774 0 +772 0 +770 0 +768 0 +766 0 +764 0 +762 0 +760 0 +758 0 
++756 0 +754 0 +752 0 +750 0 +748 0 +746 0 +744 0 +742 0 +740 0 +738 0 
++736 0 +734 0 +732 0 +730 0 +728 0 +726 0 +724 0 +722 0 +720 0 +718 0 
++716 0 +714 0 +712 0 +710 0 +708 0 +706 0 +704 0 +702 0 +700 0 +698 0 
++696 0 +694 0 +692 0 +690 0 +688 0 +686 0 +684 0 +682 0 +680 0 +678 0 
++676 0 +674 0 +672 0 +670 0 +668 0 +666 0 +664 0 +662 0 +660 0 +658 0 
++656 0 +654 0 +652 0 +650 0 +648 0 +646 0 +644 0 +642 0 +640 0 +638 0 
++636 0 +634 0 +632 0 +630 0 +628 0 +626 0 +624 0 +622 0 +620 0 +618 0 
++616 0 +614 0 +612 0 +610 0 +608 0 +606 0 +604 0 +602 0 +600 0 +598 0 
++596 0 +594 0 +592 0 +590 0 +588 0 +586 0 +584 0 +582 0 +580 0 +578 0 
++576 0 +574 0 +572 0 +570 0 +568 0 +566 0 +564 0 +562 0 +560 0 +558 0 
++556 0 +554 0 +552 0 +550 0 +548 0 +546 0 +544 0 +542 0 +540 0 +538 0 
++536 0 +534 0 +532 0 +530 0 +528 0 +526 0 +524 0 +522 0 +520 0 +518 0 
++516 0 +514 0 +512 0 +510 0 +508 0 +506 0 +504 0 +502 0 +500 0 +498 0 
++496 0 +494 0 +492 0 +490 0 +488 0 +486 0 +484 0 +482 0 +480 0 +478 0 
++476 0 +474 0 +472 0 +470 0 +468 0 +466 0 +464 0 +462 0 +460 0 +458 0 
++456 0 +454 0 +452 0 +450 0 +448 0 +446 0 +444 0 +442 0 +440 0 +438 0 
++436 0 +434 0 +432 0 +430 0 +428 0 +426 0 +424 0 +422 0 +420 0 +418 0 
++416 0 +414 0 +412 0 +410 0 +408 0 +406 0 +404 0 +402 0 +400 0 +398 0 
++396 0 +394 0 +392 0 +390 0 +388 0 +386 0 +384 0 +382 0 +380 0 +378 0 
++376 0 +374 0 +372 0 +370 0 +368 0 +366 0 +364 0 +362 0 +360 0 +358 0 
++356 0 +354 0 +352 0 +350 0 +348 0 +346 0 +344 0 +342 0 +340 0 +338 0 
++336 0 +334 0 +332 0 +330 0 +328 0 +326 0 +324 0 +322 0 +320 0 +318 0 
++316 0 +314 0 +312 0 +310 0 +308 0 +306 0 +304 0 +302 0 +300 0 +298 0 
++296 0 +294 0 +292 0 +290 0 +288 0 +286 0 +284 0 +282 0 +280 0 +278 0 
++276 0 +274 0 +272 0 +270 0 +268 0 +266 0 +264 0 +262 0 +260 0 +258 0 
++256 0 +254 0 +252 0 +250 0 +248 0 +246 0 +244 0 +242 0 +240 0 +238 0 
++236 0 +234 0 +232 0 +230 0 +228 0 +226 0 +224 0 +222 0 +220 0 +218 0 
++216 0 +214 0 +212 0 +210 0 +208 0 +206 0 +204 0 +202 0 +200 0 +198 0 
++196 0 +194 0 +192 0 +190 0 +188 0 +186 0 +184 0 +182 0 +180 0 +178 0 
++176 0 +174 0 +172 0 +170 0 +168 0 +166 0 +164 0 +162 0 +160 0 +158 0 
++156 0 +154 0 +152 0 +150 0 +148 0 +146 0 +144 0 +142 0 +140 0 +138 0 
++136 0 +134 0 +132 0 +130 0 +128 0 +126 0 +124 0 +122 0 +120 0 +118 0 
++116 0 +114 0 +112 0 +110 0 +108 0 +106 0 +104 0 +102 0 +100 0 +98 0 
++96 0 +94 0 +92 0 +90 0 +88 0 +86 0 +84 0 +82 0 +80 0 +78 0 
++76 0 +74 0 +72 0 +70 0 +68 0 +66 0 +64 0 +62 0 +60 0 +58 0 
++56 0 +54 0 +52 0 +50 0 +48 0 +46 0 +44 0 +42 0 +40 0 +38 0 
++36 0 +34 0 +32 0 +30 0 +28 0 +26 0 +24 0 +22 0 +20 0 +18 0 
++16 0 +14 0 +12 0 +10 0 +8 0 +6 0 +4 0 +3 0 *
+Fa
+0  1e-07 1 0
+2  1
+1111000
+-1539 0 +2 0 *
+
++1 0 
+0
+
diff --git a/examples/fra.med b/examples/fra.med
new file mode 100755 (executable)
index 0000000..35d1c08
Binary files /dev/null and b/examples/fra.med differ
diff --git a/examples/fra1.med b/examples/fra1.med
new file mode 100755 (executable)
index 0000000..35d1c08
Binary files /dev/null and b/examples/fra1.med differ
diff --git a/examples/jurassique.med b/examples/jurassique.med
new file mode 100644 (file)
index 0000000..960fcfd
Binary files /dev/null and b/examples/jurassique.med differ
diff --git a/examples/maill.0.med b/examples/maill.0.med
new file mode 100644 (file)
index 0000000..7a6a3f4
Binary files /dev/null and b/examples/maill.0.med differ
diff --git a/examples/maill.1.med b/examples/maill.1.med
new file mode 100644 (file)
index 0000000..c5fdb8b
Binary files /dev/null and b/examples/maill.1.med differ
diff --git a/examples/maill.2.med b/examples/maill.2.med
new file mode 100644 (file)
index 0000000..fcaeca3
Binary files /dev/null and b/examples/maill.2.med differ
diff --git a/examples/maillage_2D.med b/examples/maillage_2D.med
new file mode 100644 (file)
index 0000000..2610e20
Binary files /dev/null and b/examples/maillage_2D.med differ
diff --git a/examples/maillage_migr3d.med b/examples/maillage_migr3d.med
new file mode 100644 (file)
index 0000000..c880393
Binary files /dev/null and b/examples/maillage_migr3d.med differ
diff --git a/examples/mer.brep b/examples/mer.brep
new file mode 100644 (file)
index 0000000..44fb060
--- /dev/null
@@ -0,0 +1,103 @@
+DBRep_DrawableShape
+
+CASCADE Topology V1, (c) Matra-Datavision
+Locations 5
+1
+              1               0               0               0 
+              0 1.11022302462516e-16              -1               0 
+              0               1 6.1257422745431e-17               0 
+1
+6.1257422745431e-17              -1               0               0 
+              1 1.11022302462516e-16               0               0 
+              0               0               1               0 
+1
+              1               0               0           6.505 
+              0               1               0               0 
+              0               0               1               0 
+1
+              1               0               0               0 
+              0               1               0               0 
+              0               0               1            -0.2 
+2  1 1 2 1 3 1 4 1 0
+Curve2ds 0
+Curves 4
+1 -1 0.20000000000000001 -7.9000000000000004 1 0 0 
+1 -2 0.20000000000000001 0.10000000000000001 0 0 1 
+1 -1 0.20000000000000001 1.1000000000000001 1 0 0 
+1 2 0.20000000000000001 0.10000000000000001 0 0 1 
+Polygon3D 0
+PolygonOnTriangulations 0
+Surfaces 1
+1 -1 0.20000000000000001 0.10000000000000001 0 1 0 0 -0 1 1 0 -0 
+Triangulations 0
+
+TShapes 10
+Ve
+1e-07
+-2 0.2 -7.9
+0 0
+
+0101100
+*
+Ve
+1e-07
+2 0.2 -7.9
+0 0
+
+0101100
+*
+Ed
+ 1e-10 1 1 0
+1  1 0 -1 3
+0
+
+0101000
++10 0 -9 0 *
+Ve
+1e-07
+-2 0.2 1.1
+0 0
+
+0101100
+*
+Ed
+ 1e-10 1 1 0
+1  2 0 -8 1
+0
+
+0101000
++10 0 -7 0 *
+Ve
+1e-07
+2 0.2 1.1
+0 0
+
+0101100
+*
+Ed
+ 1e-10 1 1 0
+1  3 0 -1 3
+0
+
+0101000
++7 0 -5 0 *
+Ed
+ 1e-10 1 1 0
+1  4 0 -8 1
+0
+
+0101000
++9 0 -5 0 *
+Wi
+
+0101100
+-8 0 +6 0 +4 0 -3 0 *
+Fa
+1  1e-10 1 0
+
+1111000
++2 0 *
+
++1 5 
+0
+
diff --git a/examples/mesh.med b/examples/mesh.med
new file mode 100644 (file)
index 0000000..5f7a25c
Binary files /dev/null and b/examples/mesh.med differ
diff --git a/examples/new_pointe.med b/examples/new_pointe.med
new file mode 100644 (file)
index 0000000..5d5092b
Binary files /dev/null and b/examples/new_pointe.med differ
diff --git a/examples/pointe.med b/examples/pointe.med
new file mode 100644 (file)
index 0000000..430a74b
Binary files /dev/null and b/examples/pointe.med differ
diff --git a/examples/poupe.brep b/examples/poupe.brep
new file mode 100644 (file)
index 0000000..a16ecc1
--- /dev/null
@@ -0,0 +1,90 @@
+DBRep_DrawableShape
+
+CASCADE Topology V1, (c) Matra-Datavision
+Locations 5
+1
+              1               0               0               0 
+              0 1.11022302462516e-16              -1               0 
+              0               1 6.1257422745431e-17               0 
+1
+6.1257422745431e-17              -1               0               0 
+              1 1.11022302462516e-16               0               0 
+              0               0               1               0 
+1
+              1               0               0           6.505 
+              0               1               0               0 
+              0               0               1               0 
+1
+              1               0               0               0 
+              0               1               0               0 
+              0               0               1            -0.2 
+2  1 1 2 1 3 1 4 1 0
+Curve2ds 0
+Curves 3
+7 0 0  5 36 8  -1.4336500000000001 0.64996799999999999 -6.5049999999999999  -1.4336605 0.64972076670000001 -6.5049999999999999  -1.4336178749999999 0.64945686670000002 -6.5049999999999999  -1.4336992083 0.6492221333 -6.5049999999999999  -1.4336128333 0.64895823330000002 -6.5049999999999999  -1.43364 0.64871100000000004 -6.5049999999999999  -1.4334536667 0.61781496670000002 -6.5049999999999999  -1.4338860833000002 0.58679560000000008 -6.5049999999999999  -1.4337184999999999 0.55586383750000001 -6.5049999999999999  -1.4339196667 0.52489728330000007 -6.5049999999999999  -1.4339999999999999 0.49393500000000001 -6.5049999999999999  -1.4203730000000001 0.44235658329999999 -6.5049999999999999  -1.4019439167000001 0.39482056250000003 -6.5049999999999999  -1.3786762917000002 0.35127068750000001 -6.5049999999999999  -1.3506378333 0.31178091669999997 -6.5049999999999999  -1.3177400000000001 0.27629500000000001 -6.5049999999999999  -1.2811151667 0.23680705000000002 -6.5049999999999999  -1.238647625 0.2022839958 -6.5049999999999999  -1.1916550832999999 0.172336775 -6.5049999999999999  -1.1423406667 0.1464565333 -6.5049999999999999  -1.0919700000000001 0.124249 -6.5049999999999999  -1.0352280833 0.099204750000000008 -6.5049999999999999  -0.97734481250000005 0.078821291700000004 -6.5049999999999999  -0.91855039580000009 0.062216593699999996 -6.5049999999999999  -0.85908024999999999 0.048575291700000002 -6.5049999999999999  -0.79917499999999997 0.037031500000000002 -6.5049999999999999  -0.71422663330000002 0.020663891799999997 -6.5049999999999999  -0.62839160000000005 0.0085204118000000006 -6.5049999999999999  -0.54202406670000003 6.0440099999999998e-05 -6.5049999999999999  -0.4554365333 -0.0055199242999999995 -6.5049999999999999  -0.36900400000000005 -0.0092480200000000009 -6.5049999999999999  -0.29509078329999999 -0.012436537700000002 -6.5049999999999999  -0.2212840875 -0.014272503300000001 -6.5049999999999999  -0.1475632875 -0.0151237605 -6.5049999999999999  -0.073806716699999997 -0.015365757300000001 -6.5049999999999999  0 -0.0153654 -6.5049999999999999 
+ 4 6 5 5 6 5 7 5 8 5 9 5 10 5 11 6
+7 0 0  5 36 8  1.4336500000000001 0.64996799999999999 -6.5049999999999999  1.4336605 0.64972076670000001 -6.5049999999999999  1.4336178749999999 0.64945686670000002 -6.5049999999999999  1.4336992083 0.6492221333 -6.5049999999999999  1.4336128333 0.64895823330000002 -6.5049999999999999  1.43364 0.64871100000000004 -6.5049999999999999  1.4334536667 0.61781496670000002 -6.5049999999999999  1.4338860833000002 0.58679560000000008 -6.5049999999999999  1.4337184999999999 0.55586383750000001 -6.5049999999999999  1.4339196667 0.52489728330000007 -6.5049999999999999  1.4339999999999999 0.49393500000000001 -6.5049999999999999  1.4203730000000001 0.44235658329999999 -6.5049999999999999  1.4019439167000001 0.39482056250000003 -6.5049999999999999  1.3786762917000002 0.35127068750000001 -6.5049999999999999  1.3506378333 0.31178091669999997 -6.5049999999999999  1.3177400000000001 0.27629500000000001 -6.5049999999999999  1.2811151667 0.23680705000000002 -6.5049999999999999  1.238647625 0.2022839958 -6.5049999999999999  1.1916550832999999 0.172336775 -6.5049999999999999  1.1423406667 0.1464565333 -6.5049999999999999  1.0919700000000001 0.124249 -6.5049999999999999  1.0352280833 0.099204750000000008 -6.5049999999999999  0.97734481250000005 0.078821291700000004 -6.5049999999999999  0.91855039580000009 0.062216593699999996 -6.5049999999999999  0.85908024999999999 0.048575291700000002 -6.5049999999999999  0.79917499999999997 0.037031500000000002 -6.5049999999999999  0.71422663330000002 0.020663891799999997 -6.5049999999999999  0.62839160000000005 0.0085204118000000006 -6.5049999999999999  0.54202406670000003 6.0440099999999998e-05 -6.5049999999999999  0.4554365333 -0.0055199242999999995 -6.5049999999999999  0.36900400000000005 -0.0092480200000000009 -6.5049999999999999  0.29509078329999999 -0.012436537700000002 -6.5049999999999999  0.2212840875 -0.014272503300000001 -6.5049999999999999  0.1475632875 -0.0151237605 -6.5049999999999999  0.073806716699999997 -0.015365757300000001 -6.5049999999999999  0 -0.0153654 -6.5049999999999999 
+ 4 6 5 5 6 5 7 5 8 5 9 5 10 5 11 6
+1 -1.4336500000000001 0.64996799999999999 -6.5049999999999999 1 0 0 
+Polygon3D 0
+PolygonOnTriangulations 0
+Surfaces 1
+1 0 0 -6.5049999999999999 0 0 1 1 0 -0 -0 1 0 
+Triangulations 0
+
+TShapes 8
+Ve
+1e-07
+-1.43365 0.649968 -6.505
+0 0
+
+0101100
+*
+Ve
+1e-07
+-5.6843418860808e-17 -0.0153654 -6.505
+0 0
+
+0101100
+*
+Ed
+ 1e-10 1 1 0
+1  1 0 4 11
+0
+
+0101000
++8 0 -7 0 *
+Ve
+1e-07
+1.43365 0.649968 -6.505
+0 0
+
+0101100
+*
+Ed
+ 1e-10 1 1 0
+1  2 0 4 11
+0
+
+0101000
++5 0 -7 0 *
+Ed
+ 1e-10 1 1 0
+1  3 0 0 2.8673
+0
+
+0101000
++8 0 -5 0 *
+Wi
+
+0101100
+-6 0 +4 0 +3 0 *
+Fa
+0  1e-10 1 0
+
+1111000
+-2 0 *
+
++1 5 
+0
+
diff --git a/examples/puitsinst.med b/examples/puitsinst.med
new file mode 100644 (file)
index 0000000..8f52c19
Binary files /dev/null and b/examples/puitsinst.med differ
diff --git a/examples/resu.2.med b/examples/resu.2.med
new file mode 100644 (file)
index 0000000..1e3afed
Binary files /dev/null and b/examples/resu.2.med differ
diff --git a/examples/sections.brep b/examples/sections.brep
new file mode 100644 (file)
index 0000000..a676be2
--- /dev/null
@@ -0,0 +1,330 @@
+DBRep_DrawableShape
+
+CASCADE Topology V1, (c) Matra-Datavision
+Locations 9
+1
+              1               0               0               0 
+              0 1.11022302462516e-16              -1               0 
+              0               1 6.1257422745431e-17               0 
+1
+6.1257422745431e-17              -1               0               0 
+              1 1.11022302462516e-16               0               0 
+              0               0               1               0 
+1
+             -1 1.22460635382238e-16               0               0 
+-1.22460635382238e-16              -1               0               0 
+              0               0               1               0 
+1
+             -1 -1.22460635382238e-16               0               0 
+1.22460635382238e-16              -1               0               0 
+              0               0               1               0 
+1
+              1               0               0        0.649968 
+              0               1               0               0 
+              0               0               1               0 
+1
+              1               0               0       -0.649968 
+              0               1               0               0 
+              0               0               1               0 
+1
+              1               0               0           6.505 
+              0               1               0               0 
+              0               0               1               0 
+1
+              1               0               0               0 
+              0               1               0               0 
+              0               0               1            -0.2 
+2  1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 0
+Curve2ds 0
+Curves 12
+7 0 0  5 56 12  0 0.79500000000000004 -6.5049999999999999  0.14010613330000002 0.79499680000000006 -6.5049999999999999  0.28021293329999997 0.79154040000000003 -6.5049999999999999  0.42020413330000006 0.78461479999999995 -6.5049999999999999  0.55996773329999994 0.7742424 -6.5049999999999999  0.69939600000000002 0.76048400000000005 -6.5049999999999999  0.69939600000000002 0.76048400000000005 -6.5049999999999999  0.69939600000000002 0.76048400000000005 -6.5049999999999999  0.69939600000000002 0.76048400000000005 -6.5049999999999999  0.69939600000000002 0.76048400000000005 -6.5049999999999999  0.69939600000000002 0.76048400000000005 -6.5049999999999999  0.69939600000000002 0.76048400000000005 -6.5049999999999999  0.69939600000000002 0.76048400000000005 -6.5049999999999999  0.69939600000000002 0.76048400000000005 -6.5049999999999999  0.69939600000000002 0.76048400000000005 -6.5049999999999999  0.69939600000000002 0.76048400000000005 -6.5049999999999999  0.84625513330000002 0.7459903833 -6.5049999999999999  0.9930767667 0.72768416250000001 -6.5049999999999999  1.1399697542 0.70559137920000004 -6.5049999999999999  1.2867929499999999 0.67968078330000004 -6.5049999999999999  1.4336500000000001 0.64996799999999999 -6.5049999999999999  1.4336605 0.64972076670000001 -6.5049999999999999  1.4336178749999999 0.64945686670000002 -6.5049999999999999  1.4336992083 0.6492221333 -6.5049999999999999  1.4336128333 0.64895823330000002 -6.5049999999999999  1.43364 0.64871100000000004 -6.5049999999999999  1.4334536667 0.61781496670000002 -6.5049999999999999  1.4338860833000002 0.58679560000000008 -6.5049999999999999  1.4337184999999999 0.55586383750000001 -6.5049999999999999  1.4339196667 0.52489728330000007 -6.5049999999999999  1.4339999999999999 0.49393500000000001 -6.5049999999999999  1.4203730000000001 0.44235658329999999 -6.5049999999999999  1.4019439167000001 0.39482056250000003 -6.5049999999999999  1.3786762917000002 0.35127068750000001 -6.5049999999999999  1.3506378333 0.31178091669999997 -6.5049999999999999  1.3177400000000001 0.27629500000000001 -6.5049999999999999  1.2811151667 0.23680705000000002 -6.5049999999999999  1.238647625 0.2022839958 -6.5049999999999999  1.1916550832999999 0.172336775 -6.5049999999999999  1.1423406667 0.1464565333 -6.5049999999999999  1.0919700000000001 0.124249 -6.5049999999999999  1.0352280833 0.099204750000000008 -6.5049999999999999  0.97734481250000005 0.078821291700000004 -6.5049999999999999  0.91855039580000009 0.062216593699999996 -6.5049999999999999  0.85908024999999999 0.048575291700000002 -6.5049999999999999  0.79917499999999997 0.037031500000000002 -6.5049999999999999  0.71422663330000002 0.020663891799999997 -6.5049999999999999  0.62839160000000005 0.0085204118000000006 -6.5049999999999999  0.54202406670000003 6.0440099999999998e-05 -6.5049999999999999  0.4554365333 -0.0055199242999999995 -6.5049999999999999  0.36900400000000005 -0.0092480200000000009 -6.5049999999999999  0.29509078329999999 -0.012436537700000002 -6.5049999999999999  0.2212840875 -0.014272503300000001 -6.5049999999999999  0.1475632875 -0.0151237605 -6.5049999999999999  0.073806716699999997 -0.015365757300000001 -6.5049999999999999  0 -0.0153654 -6.5049999999999999 
+ 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
+7 0 0  5 56 12  0 0.81518699999999999 -5.9402499999999998  0.14384228329999998 0.81518840000000004 -5.9402271667000006  0.2876959208 0.81165896669999993 -5.9404387083000003  0.43153278750000001 0.80463047080000005 -5.9405512916999994  0.57538205000000009 0.79405134999999993 -5.9410128333000003  0.71922600000000003 0.77996900000000002 -5.9414899999999999  0.71922600000000003 0.77996900000000002 -5.9414899999999999  0.71922600000000003 0.77996900000000002 -5.9414899999999999  0.71922600000000003 0.77996900000000002 -5.9414899999999999  0.71922600000000003 0.77996900000000002 -5.9414899999999999  0.71922600000000003 0.77996900000000002 -5.9414899999999999  0.71922600000000003 0.77996900000000002 -5.9414899999999999  0.71922600000000003 0.77996900000000002 -5.9414899999999999  0.71922600000000003 0.77996900000000002 -5.9414899999999999  0.71922600000000003 0.77996900000000002 -5.9414899999999999  0.71922600000000003 0.77996900000000002 -5.9414899999999999  0.87021246670000008 0.76517558330000002 -5.9420155000000001  1.0213308082999999 0.74651331249999997 -5.9426253749999995  1.1721950875 0.72395041670000004 -5.9434967083000005  1.3233256167 0.69752283329999998 -5.9443378333000005  1.4742999999999999 0.66720400000000002 -5.94543  1.4742628333000001 0.66694476669999991 -5.94543  1.4743392083000002 0.66666886670000003 -5.94543  1.4742478750000001 0.66642213330000011 -5.94543  1.4742805000000001 0.6661462333 -5.94543  1.4742600000000001 0.66588700000000001 -5.94543  1.4733971667000001 0.63350796669999998 -5.9455041667000001  1.4727687083000001 0.60103934999999997 -5.9444543750000003  1.4720204583000001 0.56866240000000001 -5.9446347917000004  1.4690795000000001 0.53647503330000001 -5.9439725000000001  1.4638 0.50459600000000004 -5.9437800000000003  1.4549993333 0.4521639167 -5.943314  1.438882 0.40055589580000001 -5.9430417500000008  1.4164532082999999 0.35102818750000003 -5.9427913749999997  1.3883015000000001 0.30469641669999997 -5.9427034999999995  1.35538 0.26279599999999997 -5.94245  1.324343 0.22336788329999999 -5.9422016666999999  1.2891893333 0.1878346625 -5.9420512500000005  1.25038775 0.1560968583 -5.9416706249999995  1.2092403332999999 0.1279352 -5.9414608332999999  1.16632 0.103245 -5.9412500000000001  1.1074375167000001 0.069367640800000005 -5.9409051667000004  1.0454588874999999 0.041985586900000003 -5.9408280416999997  0.9811059875 0.019924968300000002 -5.9405238332999994  0.91553298329999999 0.001964155 -5.9404873333000001  0.84949300000000005 -0.0130764 -5.9403800000000002  0.75863771670000002 -0.033773601700000003 -5.9401899999999994  0.66700587080000007 -0.048953626300000004 -5.9401854167000003  0.57483235830000001 -0.059760275800000005 -5.9399964583000004  0.48236770000000001 -0.067346206699999994 -5.9399825000000002  0.38985199999999998 -0.072854699999999994 -5.9399300000000004  0.31188001669999998 -0.077497590000000005 -5.9398936666999997  0.2339049708 -0.080689167499999992 -5.9398094167000002  0.15594738330000002 -0.082971932499999998 -5.9399376666999997  0.077968400000000007 -0.084685259999999998 -5.9398096667000004  0 -0.086465399999999998 -5.9397900000000003 
+ 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
+7 0 0  5 56 12  0 0.85399999999999998 -4.7359999999999998  0.14557136670000001 0.85400048330000011 -4.7360015000000004  0.29113294170000004 0.85043107080000002 -4.7359832083000004  0.43659826670000002 0.84327978329999997 -4.7360492917000006  0.58180796670000001 0.83259193330000003 -4.7360435000000001  0.72668600000000005 0.81839200000000012 -4.7360699999999998  0.72668600000000005 0.81839200000000012 -4.7360699999999998  0.72668600000000005 0.81839200000000012 -4.7360699999999998  0.72668600000000005 0.81839200000000012 -4.7360699999999998  0.72668600000000005 0.81839200000000012 -4.7360699999999998  0.72668600000000005 0.81839200000000012 -4.7360699999999998  0.72668600000000005 0.81839200000000012 -4.7360699999999998  0.72668600000000005 0.81839200000000012 -4.7360699999999998  0.72668600000000005 0.81839200000000012 -4.7360699999999998  0.72668600000000005 0.81839200000000012 -4.7360699999999998  0.72668600000000005 0.81839200000000012 -4.7360699999999998  0.87926013330000008 0.80344020000000005 -4.7361535000000003  1.0318636417 0.7845623583000001 -4.7360463749999999  1.1844210042000001 0.76176212080000005 -4.7362590417000003  1.3370129500000001 0.73503271670000003 -4.7362081667  1.48959 0.70438300000000009 -4.7363  1.4895799999999999 0.70410828330000008 -4.7363105000000001  1.4895700000000001 0.70382262920000005 -4.7362678749999993  1.48956 0.70355937079999997 -4.7363492083000001  1.4895499999999999 0.70327371670000005 -4.7362628333000005  1.4895400000000001 0.70299900000000004 -4.7362900000000003  1.4883074999999999 0.66898976669999999 -4.7361213332999998  1.4868468749999999 0.63499178329999995 -4.7356401667000005  1.4845070833 0.60102640419999998 -4.7356902499999993  1.4814183333000002 0.56711498329999999 -4.7352403333000002  1.47719 0.53335699999999997 -4.7350300000000001  1.4695433333000001 0.47218751670000003 -4.7345794999999997  1.4581237499999999 0.41091501250000001 -4.7340675417  1.4419468750000002 0.35102177920000005 -4.7337441250000003  1.4192991666999999 0.29414114999999996 -4.7331821667000007  1.3890400000000001 0.24174500000000002 -4.7328400000000004  1.3659131667 0.20172963500000002 -4.7325548333  1.3383665416999999 0.16434605120000001 -4.7322373749999995  1.3070511667 0.12985310290000002 -4.7320126250000003  1.2729826666999999 0.0985018317 -4.7317451666999997  1.2367600000000001 0.070556299999999988 -4.7315600000000009  1.1823987833 0.028624045000000001 -4.7312213332999997  1.1236330875 -0.0056422058000000002 -4.7310034999999999  1.0611087457999999 -0.03370364 -4.7307658750000003  0.99700805000000003 -0.056946653300000004 -4.7305761666999997  0.93208100000000005 -0.076839100000000007 -4.7304500000000003  0.83284490000000011 -0.1072510383 -4.7301764999999998  0.73213525830000004 -0.1298199038 -4.7300811249999999  0.63046978330000003 -0.14603751919999999 -4.7298982500000006  0.52810576669999998 -0.1575118533 -4.7298309999999999  0.42561300000000002 -0.16570400000000002 -4.7297700000000003  0.34062735830000002 -0.17248840000000001 -4.7296896667000006  0.25551287290000002 -0.1770692583 -4.7297947499999999  0.17035438750000001 -0.17971792919999999 -4.7295383750000006  0.085153933300000012 -0.18088284999999998 -4.7297278333000001  0 -0.18085100000000001 -4.72966 
+ 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
+7 0 0  5 56 12  0 1.25 -4.6500000000000004  0.15215610000000002 1.2490129999999999 -4.6503093333000001  0.3041980333 1.2280551666999999 -4.6483290833000002  0.45258569580000002 1.1870900417000001 -4.6540019583000003  0.5938623167 1.1271228332999998 -4.6454998333000006  0.72499300000000011 1.0499400000000001 -4.6481300000000001  0.72499300000000011 1.0041264833000001 -4.6484799999999993  0.72499300000000011 0.95828494580000001 -4.6488300000000002  0.72499300000000011 0.91248934580000007 -4.6491800000000003  0.72499300000000011 0.86665218330000005 -4.6495299999999995  0.72499300000000011 0.82083700000000004 -4.6498800000000005  0.72499300000000011 0.82083700000000004 -4.6498800000000005  0.72499300000000011 0.82083700000000004 -4.6498800000000005  0.72499300000000011 0.82083700000000004 -4.6498800000000005  0.72499300000000011 0.82083700000000004 -4.6498800000000005  0.72499300000000011 0.82083700000000004 -4.6498800000000005  0.87723131669999999 0.80591211669999996 -4.6498498333000002  1.0294126541999999 0.78707858750000004 -4.6497498750000004  1.1816812832999999 0.76431037079999997 -4.6497051250000005  1.3339054333 0.73763871670000003 -4.6495801666999999  1.4861199999999999 0.70704800000000001 -4.6494999999999997  1.4859351667 0.70492375000000007 -4.6495660000000001  1.4858951250000001 0.70276960420000001 -4.64951325  1.4856300833 0.70066837500000001 -4.6496959167000007  1.4856556667 0.69851016669999999 -4.6495306667000005  1.4855499999999999 0.69638300000000009 -4.6495800000000003  1.4842755000000001 0.66414660000000003 -4.6494689999999999  1.4830082917 0.63192186670000006 -4.6488163333000001  1.480389 0.5997140083000001 -4.649168875  1.4778186666999999 0.56756989999999996 -4.6485318332999999  1.4739900000000001 0.53552599999999995 -4.6483999999999996  1.4664688333 0.47394724999999999 -4.6479491667000001  1.4554091249999999 0.41230339579999997 -4.6474618750000003  1.4398785833000001 0.35201162499999999 -4.6470110416999999  1.4177470000000001 0.29468183329999997 -4.6466175000000005  1.3880300000000001 0.241726 -4.6462500000000002  1.3654083333000002 0.2015433267 -4.6459891667000006  1.3384470833 0.16388219500000001 -4.6456293750000004  1.3075472916999999 0.12907531329999999 -4.6454883333000003  1.2738391667000002 0.0973783067 -4.6452066667  1.2378800000000001 0.069146799999999994 -4.6450500000000003  1.1841907 0.026986339999999998 -4.6447436667000002  1.1259447333000001 -0.0074947846000000002 -4.6447248332999997  1.0639238708000001 -0.0357101363 -4.6443945417000005  1.0001807166999999 -0.0590525483 -4.6444038333000002  0.93572100000000002 -0.079065999999999997 -4.6443100000000008  0.83618071669999994 -0.10998645000000001 -4.6441473333000003  0.73517137079999995 -0.1329607542 -4.6439242500000004  0.63318827499999997 -0.14945974580000002 -4.6440990832999995  0.53049236670000011 -0.16113654999999999 -4.6437759999999999  0.42760500000000001 -0.169462 -4.6438300000000003  0.3422222083 -0.17633065000000001 -4.6437124999999995  0.25668234379999999 -0.18097086250000002 -4.6438939583000005  0.17108483330000002 -0.1836383667 -4.64354625  0.085482749999999996 -0.1847607667 -4.6437683333000006  0 -0.18459899999999999 -4.6436800000000007 
+ 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
+7 0 0  5 56 12  0 1.1796199999999999 -3.5097399999999999  0.12660276670000001 1.1796199999999999 -3.5097528332999999  0.25318886670000001 1.1628699999999998 -3.5084437917  0.37980413330000001 1.12937 -3.5059014167  0.50639023329999999 1.0791199999999999 -3.5020579999999999  0.63299300000000003 1.0121200000000001 -3.49695  0.63299300000000003 0.98001348329999993 -3.4971771666999998  0.63299300000000003 0.94791102920000003 -3.4975137083000001  0.63299300000000003 0.91581263750000008 -3.4976262917000001  0.63299300000000003 0.88370268330000001 -3.4979628332999999  0.63299300000000003 0.85160199999999997 -3.4981900000000001  0.63299300000000003 0.85160199999999997 -3.4981900000000001  0.63299300000000003 0.85160199999999997 -3.4981900000000001  0.63299300000000003 0.85160199999999997 -3.4981900000000001  0.63299300000000003 0.85160199999999997 -3.4981900000000001  0.63299300000000003 0.85160199999999997 -3.4981900000000001  0.78440114999999999 0.83793553330000003 -3.4973270000000003  0.93581982080000004 0.82017823330000006 -3.4961285833000004  1.0872104707999999 0.7983420792 -3.4948760000000001  1.2386335167 0.77241821669999999 -3.4931213333  1.3900399999999999 0.74240300000000004 -3.49125  1.3795311667000001 0.71938443330000001 -3.4932913333000002  1.3714275416999999 0.69602795000000006 -3.4946930833000001  1.3656562082999999 0.6723283417 -3.4956844167000001  1.3625088333000002 0.6483012333 -3.4959736667000003  1.3615999999999999 0.62393100000000001 -3.49579  1.3612356666999998 0.61218349999999999 -3.4957256667000003  1.3606650833000002 0.60043724999999992 -3.4955050833000003  1.360310125 0.58869224999999992 -3.4955501250000003  1.3596551667000001 0.57694849999999998 -3.4953451667  1.35907 0.56520599999999999 -3.4952600000000005  1.3552455000000001 0.50416276670000004 -3.4946509999999997  1.3493949583000002 0.44317390830000003 -3.4940857500000004  1.3402579583000001 0.38278786250000002 -3.4934288332999999  1.3260011667000002 0.32377181669999999 -3.4928573332999999  1.3052600000000001 0.26666899999999999 -3.49234  1.2897483332999999 0.2236584033 -3.4918976667000003  1.27045125 0.18171228579999998 -3.4915761667000003  1.2469468750000001 0.14168543919999999 -3.4910994583000003  1.2187091667000001 0.1046086967 -3.4910248333  1.1864100000000002 0.071730599999999992 -3.49092  1.1439457167 0.028756556700000001 -3.4908718333000004  1.0945404958 -0.0071325846000000002 -3.4911434583000003  1.0407573583 -0.036036365399999999 -3.4912817500000002  0.98458119999999993 -0.059293181700000003 -3.4917190000000002  0.92817399999999994 -0.079615700000000011 -3.4919500000000001  0.83247646669999997 -0.114569985 -3.4925128332999997  0.73571685000000009 -0.1408576554 -3.4927162917000003  0.63791806670000006 -0.16001261750000001 -3.493201  0.53933219999999993 -0.17369950670000001 -3.4932013333  0.43950299999999998 -0.18340899999999999 -3.4934099999999999  0.3516732333 -0.19168111669999999 -3.493395  0.26309763329999997 -0.19715167080000001 -3.4932320833000001  0.17437984579999999 -0.20025764169999999 -3.4932910417  0.086352683299999997 -0.20151413330000001 -3.4932125000000003  0 -0.20128000000000001 -3.4932099999999999 
+ 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
+7 0 0  5 56 12  0 1.14174 -3.1168200000000001  0.113468 1.1417358 -3.116825  0.226936 1.1275149332999999 -3.1167175000000005  0.34040399999999998 1.0990919833000001 -3.1164974999999999  0.453872 1.0564398667000001 -3.1161650000000001  0.56734000000000007 0.99959400000000009 -3.11572  0.56734000000000007 0.97172700000000001 -3.1159123332999998  0.56734000000000007 0.94386000000000003 -3.1161109166999998  0.56734000000000007 0.91599300000000006 -3.1162272082999998  0.56734000000000007 0.88812599999999997 -3.1164851667  0.56734000000000007 0.860259 -3.1166399999999999  0.56734000000000007 0.860259 -3.1166399999999999  0.56734000000000007 0.860259 -3.1166399999999999  0.56734000000000007 0.860259 -3.1166399999999999  0.56734000000000007 0.860259 -3.1166399999999999  0.56734000000000007 0.860259 -3.1166399999999999  0.71923733330000006 0.8475436167 -3.1159591667000002  0.87122112500000004 0.83057458750000002 -3.1148418750000002  1.0230179375000001 0.80935035000000011 -3.113850625  1.1750314167 0.78386413330000004 -3.1122458332999998  1.32691 0.75412999999999997 -3.1105900000000002  1.3132021667 0.72679229999999995 -3.1134065  1.3025432917000002 0.69897439169999998 -3.1155032083000003  1.2952146250000001 0.67067262919999993 -3.1167395  1.2909245 0.64189378330000002 -3.1173393332999999  1.2898499999999999 0.61262899999999998 -3.1171100000000003  1.2895323332999999 0.60526955000000005 -3.1170248332999999  1.2893563333 0.59790603750000004 -3.1170427917000003  1.2888636667000002 0.5905561708 -3.1169190833  1.2886376666999999 0.58319078330000007 -3.1168776667000002  1.2882200000000001 0.57583799999999996 -3.1168300000000002  1.2851213333 0.51654396670000002 -3.1164191667000001  1.2802435000000001 0.4572882667 -3.1158843750000003  1.2717062917000002 0.39844694170000006 -3.1155433333000002  1.2590878333000002 0.34047936670000001 -3.1150366667  1.2405599999999999 0.28377200000000002 -3.11463  1.2265088333 0.2405753367 -3.1142991667000004  1.209081625 0.19811461080000001 -3.1139318750000005  1.1875387917 0.15727065579999999 -3.1136010417000004  1.1611928333000001 0.11915243 -3.1133275  1.1304500000000002 0.085086600000000012 -3.1130800000000001  1.0920986499999998 0.042636905000000003 -3.1127266667  1.0468257375000001 0.0064868453999999999 -3.1125233333  0.99702397080000005 -0.023019203799999999 -3.1122043749999997  0.94491418329999999 -0.046987388300000002 -3.1121291666999999  0.89233700000000005 -0.067989999999999995 -3.11198  0.80297288330000005 -0.10368361670000001 -3.1117471666999998  0.7122799125 -0.13082567080000002 -3.1114507917000003  0.6203820458 -0.1508776208 -3.1113721249999999  0.52765845 -0.16531655000000001 -3.1112195000000002  0.43380599999999997 -0.17553100000000002 -3.11117  0.3470663833 -0.18501991670000001 -3.1111336667000002  0.25950420420000003 -0.19082935420000002 -3.1110390000000003  0.17184946249999999 -0.1938603542 -3.111026625  0.084985283300000006 -0.19498791670000001 -3.1110288332999998  0 -0.19506100000000001 -3.1110300000000004 
+ 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
+7 0 0  5 56 12  0 1.1000000000000001 -2.75  0.094907283300000006 1.0999895 -2.7500070000000001  0.18980042080000001 1.088782125 -2.7497910833000003  0.28472014169999998 1.0662007917 -2.7493887083000002  0.37961446669999999 1.0325371667000001 -2.7487321667  0.47452100000000003 0.98751 -2.7479100000000001  0.47452100000000003 0.96360900000000005 -2.7479923333  0.47452100000000003 0.93970799999999999 -2.7482413333000002  0.47452100000000003 0.91580700000000004 -2.7481986667  0.47452100000000003 0.89190599999999998 -2.7484476666999997  0.47452100000000003 0.86800500000000003 -2.7485300000000001  0.47452100000000003 0.86800500000000003 -2.7485300000000001  0.47452100000000003 0.86800500000000003 -2.7485300000000001  0.47452100000000003 0.86800500000000003 -2.7485300000000001  0.47452100000000003 0.86800500000000003 -2.7485300000000001  0.47452100000000003 0.86800500000000003 -2.7485300000000001  0.62846621670000002 0.85670495000000002 -2.7475849999999999  0.78243299579999992 0.84082771249999999 -2.7462525000000002  0.9363577958 0.82035557920000002 -2.7445325  1.0903489500000001 0.79531771670000007 -2.7424250000000003  1.24427 0.76568600000000009 -2.7399299999999998  1.2285086667 0.73564211670000001 -2.7407615000000001  1.2162014999999999 0.70500729579999999 -2.7413357083000003  1.2074891250000002 0.6738169542000001 -2.7415120000000002  1.2023038333 0.64202838330000001 -2.7415143333000001  1.2006300000000001 0.60967700000000002 -2.7411500000000002  1.2003698332999999 0.6051600667 -2.7410895000000002  1.2002002917000001 0.60066709169999999 -2.7410821250000001  1.1998765833 0.59614182500000001 -2.7409507917  1.1996226667000001 0.59164260000000002 -2.7409871667000001  1.1993499999999999 0.58713400000000004 -2.74091  1.1961191667000002 0.52989149999999996 -2.7403843333000002  1.1907872917 0.47272483330000004 -2.7398670000000003  1.1823647917000002 0.41587827080000001 -2.7395507083000004  1.1699141666999999 0.35967941669999998 -2.7392115000000001  1.15255 0.30440899999999999 -2.7389899999999998  1.1391876666999998 0.26188363329999997 -2.7387964999999999  1.12261075 0.21991785 -2.7387082083000003  1.1028296666999999 0.17933404580000001 -2.7385845  1.078084 0.14103795 -2.7386493332999997  1.0495300000000001 0.106253 -2.7387100000000002  1.01552335 0.064614781699999999 -2.7387136666999998  0.97520388749999998 0.0280628975 -2.7388590000000002  0.93077734170000004 -0.0027325035 -2.7389793332999997  0.88384006670000004 -0.028418293299999998 -2.7393246667  0.835978 -0.050930500000000004 -2.7395200000000002  0.75649318330000004 -0.087429624999999997 -2.740065  0.67474138750000001 -0.1156382604 -2.7405370833000005  0.5912606333 -0.1368773958 -2.7409987500000002  0.50681290000000001 -0.1522925 -2.7414083332999999  0.42168099999999997 -0.16315299999999999 -2.7416200000000002  0.33734505000000004 -0.1744378667 -2.7420231666999997  0.25225782920000001 -0.18068419170000002 -2.7421815416999999  0.16711371249999998 -0.18340655829999999 -2.7424857499999997  0.082720616699999999 -0.1841716333 -2.7424409999999999  0 -0.18449399999999999 -2.7424899999999997 
+ 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
+7 0 0  5 56 12  0 0.99530300000000005 -1.99949  0.040001766699999997 0.99530066669999995 -1.9995306667000001  0.079997741700000013 0.99207083330000001 -1.9994525833000001  0.12000667500000001 0.98558693750000004 -1.9996776250000001  0.15999940000000001 0.97588491669999999 -1.9996901667  0.20000299999999999 0.96293300000000004 -1.99986  0.20000299999999999 0.94608026670000001 -1.9999073332999999  0.20000299999999999 0.92921759999999998 -1.9999086666999999  0.20000299999999999 0.91236046669999993 -1.9999333333  0.20000299999999999 0.89550940000000001 -1.9999866666999999  0.20000299999999999 0.87865000000000004 -2.0000100000000001  0.20000299999999999 0.87865000000000004 -2.0000100000000001  0.20000299999999999 0.87865000000000004 -2.0000100000000001  0.20000299999999999 0.87865000000000004 -2.0000100000000001  0.20000299999999999 0.87865000000000004 -2.0000100000000001  0.20000299999999999 0.87865000000000004 -2.0000100000000001  0.36301123330000001 0.87273829999999997 -2.0000255  0.52602009169999997 0.86080639169999995 -2.0000003749999999  0.6890207208000001 0.84285062919999998 -2.0001117083  0.8520355167 0.81887778330000005 -2.0000678333000002  1.0150399999999999 0.788879 -2.0001500000000001  0.99888873330000005 0.75871720000000009 -1.9963305  0.98603913330000004 0.72789539999999997 -1.9931724583000001  0.97650057500000009 0.69638026669999997 -1.9912227499999999  0.97026160000000006 0.66420096669999995 -1.9898303333  0.96734200000000004 0.63134500000000005 -1.98949  0.96701046670000013 0.62742145000000005 -1.9894376667  0.96658309999999992 0.62350446250000002 -1.9893790833  0.96629375419999997 0.61957632920000005 -1.9894027917000001  0.96585545000000006 0.61566621669999999 -1.9892848332999999  0.965476 0.61174600000000001 -1.9892700000000001  0.96036185000000007 0.5590851 -1.9887049999999999  0.95314301250000011 0.50655128329999999 -1.9885504166999999  0.94317521669999993 0.45442996670000002 -1.9883739583  0.93029856670000011 0.40290239999999999 -1.9884725000000001  0.91387400000000008 0.35225400000000001 -1.9885699999999999  0.9010318167000001 0.31270085000000003 -1.9886845000000002  0.88603077919999995 0.27373322080000001 -1.9887146250000001  0.86863286670000006 0.23558600830000001 -1.988972875  0.84841776670000002 0.19878056670000002 -1.9889905000000001  0.82548600000000005 0.16368199999999999 -1.98908  0.80051349999999999 0.1250089583 -1.9890911667  0.771937875 0.0885375313 -1.9890554583000002  0.74032162500000009 0.055169541700000005 -1.9890822500000001  0.706071 0.025338583300000002 -1.9891246667  0.66943600000000003 -0.001003 -1.9892400000000001  0.61593634999999991 -0.038091566700000003 -1.9893941666999999  0.55786242919999995 -0.068330925000000001 -1.9899077083000001  0.49669080000000004 -0.092223470799999999 -1.9902337500000002  0.43392406670000006 -0.11020701669999999 -1.9906066667  0.37116899999999997 -0.12278500000000001 -1.99074  0.29749095000000003 -0.13825399999999999 -1.9912273333000001  0.22305971250000001 -0.14603049999999998 -1.9916813333000001  0.14830007919999999 -0.14861606250000001 -1.9918884583000001  0.073821216699999997 -0.14876224999999998 -1.9920518333000001  0 -0.14908000000000002 -1.9920100000000001 
+ 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
+7 0 0  5 56 12  0 0.95471400000000006 -1.75  0 0.95471400000000006 -1.7499985  0 0.95471400000000006 -1.7499917917000001  0 0.95471400000000006 -1.7498757083000001  0 0.95471400000000006 -1.7498065  0 0.95471400000000006 -1.7496800000000001  0 0.93972376670000013 -1.7497023332999999  0 0.92471686669999997 -1.7498913333000001  0 0.90973913330000011 -1.7497886667  0 0.89473223329999996 -1.7499776667000002  0 0.87974200000000002 -1.75  0 0.87974200000000002 -1.75  0 0.87974200000000002 -1.75  0 0.87974200000000002 -1.75  0 0.87974200000000002 -1.75  0 0.87974200000000002 -1.75  0.18435865000000001 0.87974056670000012 -1.7500406666999999  0.36873011250000004 0.87140205000000004 -1.7508625833000002  0.55308782499999998 0.85473165830000009 -1.7528876250000001  0.73745209999999994 0.82971376669999997 -1.7556001667000001  0.92181200000000008 0.79636400000000007 -1.7593699999999999  0.90634578330000004 0.76800801669999996 -1.7536823333  0.89400425419999996 0.73897880420000006 -1.7493884167000002  0.88472335000000002 0.70920240420000003 -1.7461549167000001  0.87864213329999996 0.67876631669999998 -1.744586  0.87560799999999994 0.64760699999999993 -1.7441400000000002  0.87505961669999999 0.64212846670000001 -1.7440823333000002  0.87458550419999992 0.6366857667000001 -1.7440309167000001  0.87391378750000004 0.63118723330000004 -1.7438972083000002  0.87337155 0.62574953330000005 -1.7439051667000001  0.87273900000000004 0.62028099999999997 -1.7438100000000001  0.86704589999999993 0.56913656670000001 -1.7433211667000001  0.85919259169999995 0.5181823417000001 -1.7429625417000001  0.84924834580000008 0.46756884580000002 -1.7428435  0.83641785000000002 0.41762368329999999 -1.7428130000000002  0.82078600000000002 0.36851299999999998 -1.74272  0.80851695000000001 0.33007278330000001 -1.7426714999999999  0.79443696250000007 0.29215621250000001 -1.7426407083  0.7783397875000001 0.2550028708 -1.7424870000000001  0.76000355000000008 0.21879505000000002 -1.7424343332999999  0.73934699999999998 0.18381400000000001 -1.7422899999999999  0.71751703329999994 0.14663480500000001 -1.7421043333000001  0.69293915000000006 0.1108760996 -1.7420020000000001  0.66571855830000004 0.077365748300000009 -1.741686125  0.63579380000000008 0.046782136700000004 -1.7416931667  0.60309299999999999 0.019547399999999999 -1.7415700000000001  0.55839658329999997 -0.017056796700000001 -1.7414321666999999  0.50867818749999993 -0.047628722500000005 -1.7415391250000001  0.45552322919999999 -0.07231369 -1.7416148333000001  0.40042858330000003 -0.091214303299999994 -1.7416436667000001  0.34506300000000001 -0.104479 -1.7416099999999999  0.27712948330000003 -0.1210494 -1.7417974999999999  0.20821236250000003 -0.1296023 -1.7418735417  0.13867392920000002 -0.13270176250000001 -1.7421141667  0.069144183299999995 -0.13297434999999999 -1.7421183332999999  0 -0.13303100000000001 -1.7421099999999998 
+ 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
+7 0 0  5 56 12  0 0.878023 -1.6075299999999999  0 0.878023 -1.6075299999999999  0 0.878023 -1.6075299999999999  0 0.878023 -1.6075299999999999  0 0.878023 -1.6075299999999999  0 0.878023 -1.6075299999999999  0 0.878023 -1.6075299999999999  0 0.878023 -1.6075299999999999  0 0.878023 -1.6075299999999999  0 0.878023 -1.6075299999999999  0 0.878023 -1.6075299999999999  0 0.878023 -1.6075299999999999  0 0.878023 -1.6075299999999999  0 0.878023 -1.6075299999999999  0 0.878023 -1.6075299999999999  0 0.878023 -1.6075299999999999  0.17303380000000002 0.878023 -1.6075016666999999  0.34606864170000001 0.87027549999999998 -1.6091858333  0.51910087920000003 0.85478049999999994 -1.6123168750000001  0.69213728330000002 0.831538 -1.6172541667  0.86516899999999997 0.80054800000000004 -1.62368  0.85023486670000004 0.77371643329999995 -1.6169156667  0.8383046917000001 0.74615319999999996 -1.6115950832999999  0.82935555829999996 0.71787757079999992 -1.608140125  0.82341663329999992 0.68886715000000009 -1.6060351667000001  0.820465 0.65913599999999994 -1.60565  0.81979441670000008 0.6523367833 -1.6055515  0.8190776875000001 0.64555267080000001 -1.6054957082999999  0.81834658329999999 0.63875553749999991 -1.605342  0.81756516670000001 0.63197455000000002 -1.6053143333000002  0.81676000000000004 0.62519199999999997 -1.6052200000000001  0.81075936670000004 0.57490893329999992 -1.6046903333  0.80288373330000007 0.52478274169999994 -1.6042148333000001  0.79286018330000008 0.47504519579999999 -1.6040955833000001  0.78047829999999996 0.42589681670000001 -1.6038013332999999  0.765486 0.377585 -1.6035299999999999  0.75374010000000002 0.33972093330000003 -1.6032726666999999  0.7403862833 0.30237124170000002 -1.6031215833000001  0.72525423750000007 0.2656744667 -1.6026757083000001  0.70813198330000005 0.22980039999999999 -1.6024715  0.68884400000000001 0.19489799999999999 -1.60216  0.6688467333 0.1587130967 -1.6018515  0.6465175917 0.12357315169999999 -1.6016107083  0.62169772079999996 0.090287487900000005 -1.601297  0.59419701669999991 0.059561261700000007 -1.6011343333000001  0.56371599999999999 0.032018900000000003 -1.6009300000000002  0.52376369999999994 -0.0040854966999999999 -1.6006711667  0.47870910830000002 -0.034722941300000004 -1.6005154583000001  0.43006159999999999 -0.059795834800000003 -1.6002649582999999  0.37925763330000001 -0.079220432500000007 -1.6001905000000001  0.32781700000000003 -0.09289950000000001 -1.59999  0.26374218330000004 -0.1099328083 -1.5997586667000001  0.1984458875 -0.1190460646 -1.5998377500000001  0.1323224875 -0.122586925 -1.5997480833  0.066015316700000007 -0.12309315 -1.5997396667000001  0 -0.12291500000000001 -1.59975 
+ 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
+7 0 0  5 56 12  0 0.85780800000000001 -0.397343  0 0.85780800000000001 -0.397343  0 0.85780800000000001 -0.397343  0 0.85780800000000001 -0.397343  0 0.85780800000000001 -0.397343  0 0.85780800000000001 -0.397343  0 0.85780800000000001 -0.397343  0 0.85780800000000001 -0.397343  0 0.85780800000000001 -0.397343  0 0.85780800000000001 -0.397343  0 0.85780800000000001 -0.397343  0 0.85780800000000001 -0.397343  0 0.85780800000000001 -0.397343  0 0.85780800000000001 -0.397343  0 0.85780800000000001 -0.397343  0 0.85780800000000001 -0.397343  0.053087000000000002 0.8578101333 -0.397343  0.106174 0.85580080829999994 -0.39736300000000002  0.15926099999999999 0.85180294170000004 -0.39740300000000001  0.21234800000000001 0.84578736669999999 -0.39746300000000001  0.26543500000000003 0.8377770000000001 -0.39754300000000004  0.26543500000000003 0.8377770000000001 -0.39754300000000004  0.26543500000000003 0.8377770000000001 -0.39754300000000004  0.26543500000000003 0.8377770000000001 -0.39754300000000004  0.26543500000000003 0.8377770000000001 -0.39754300000000004  0.26543500000000003 0.8377770000000001 -0.39754300000000004  0.26023665000000001 0.80229934999999997 -0.39728268329999999  0.25508673749999999 0.76681992920000008 -0.39699851250000001  0.2501316167 0.73129759169999997 -0.39674986249999999  0.24528326670000003 0.69577973329999998 -0.3964763167  0.24066200000000001 0.66022000000000003 -0.396206  0.2349186667 0.61608993329999995 -0.39587099999999997  0.22949093330000001 0.571913 -0.3955392667  0.2244342667 0.52769613330000009 -0.39520920000000004  0.21981693329999999 0.48343560000000002 -0.3948770667  0.21572 0.43911700000000004 -0.39453699999999997  0.21257005000000001 0.40500583330000001 -0.39427393330000005  0.2097397875 0.37081237499999997 -0.3940214917  0.2066854625 0.33673089579999999 -0.39376196670000002  0.20294145 0.30275774999999999 -0.39350889999999999  0.197964 0.26908199999999999 -0.39325500000000002  0.19391998330000002 0.24165523329999999 -0.39304698330000004  0.18902377920000002 0.2143938833 -0.3928484458  0.1829753875 0.18736305419999999 -0.39262917920000001  0.17545918330000002 0.1605445167 -0.3924475167  0.16619600000000001 0.134019 -0.39224200000000004  0.15790633330000001 0.1106346933 -0.39207744999999999  0.148204375 0.087460053300000007 -0.3918584208  0.13655470829999999 0.065537736200000002 -0.39176355829999998  0.122349 0.045914565000000004 -0.39157046670000001  0.10490600000000001 0.029623300000000002 -0.39146300000000001  0.087864383300000001 0.013733990000000001 -0.3913505833  0.067597245799999997 0.0012001696 -0.39122952080000001  0.045259795800000002 -0.0075859217000000005 -0.3912091875  0.022177033300000003 -0.0121690233 -0.39114375000000001  0 -0.012247000000000001 -0.39115300000000003 
+ 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
+7 0 0  5 56 12  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.84999999999999998 0  0 0.81282595000000002 0  0 0.77565721250000008 0  0 0.73847607920000002 0  0 0.70131171670000003 0  0 0.66413599999999995 0  0 0.62103916670000003 0  0 0.57789566670000003 0  0 0.53463570830000007 0  0 0.49133533330000001 0  0 0.44795600000000002 0  0 0.41525483329999996 0  0 0.38255970830000002 0  0 0.34975604170000002 0  0 0.31698966670000001 0  0 0.28414600000000001 0  0 0.25740194999999999 0  0 0.23066321249999999 0  0 0.20391207919999998 0  0 0.17717771669999999 0  0 0.15043199999999998 0  0 0.13462360000000001 0  0 0.11881520000000001 0  0 0.1030068 0  0 0.087198400000000009 0  0 0.071389999999999995 0  0 0.058010406699999996 -2.8231699999999999e-05  0 0.046883854999999995 -0.0027701008  0 0.038008417900000001 -0.0087236282999999994  0 0.031386335000000001 -0.017509960000000001  0 0.027016200000000001 -0.029331700000000002 
+ 0 6 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 5 11 6
+Polygon3D 0
+PolygonOnTriangulations 0
+Surfaces 0
+Triangulations 0
+
+TShapes 37
+Ve
+1e-07
+1.43365 0.649968 -6.505
+0 0
+
+0101100
+*
+Ve
+1e-07
+0 -0.0153654 -6.505
+0 0
+
+0101100
+*
+Ed
+ 1e-10 1 1 0
+1  1 0 4 11
+0
+
+0101000
++37 0 -36 0 *
+Ve
+1e-07
+1.4743 0.667204 -5.94543
+0 0
+
+0101100
+*
+Ve
+1e-07
+0 -0.0864654 -5.93979
+0 0
+
+0101100
+*
+Ed
+ 1e-10 1 1 0
+1  2 0 4 11
+0
+
+0101000
++34 0 -33 0 *
+Ve
+1e-07
+1.48959 0.704383 -4.7363
+0 0
+
+0101100
+*
+Ve
+1e-07
+0 -0.180851 -4.72966
+0 0
+
+0101100
+*
+Ed
+ 1e-10 1 1 0
+1  3 0 4 11
+0
+
+0101000
++31 0 -30 0 *
+Ve
+1e-07
+1.48612 0.707048 -4.6495
+0 0
+
+0101100
+*
+Ve
+1e-07
+0 -0.184599 -4.64368
+0 0
+
+0101100
+*
+Ed
+ 1e-10 1 1 0
+1  4 0 4 11
+0
+
+0101000
++28 0 -27 0 *
+Ve
+1e-07
+1.39004 0.742403 -3.49125
+0 0
+
+0101100
+*
+Ve
+1e-07
+0 -0.20128 -3.49321
+0 0
+
+0101100
+*
+Ed
+ 1e-10 1 1 0
+1  5 0 4 11
+0
+
+0101000
++25 0 -24 0 *
+Ve
+1e-07
+1.32691 0.75413 -3.11059
+0 0
+
+0101100
+*
+Ve
+1e-07
+0 -0.195061 -3.11103
+0 0
+
+0101100
+*
+Ed
+ 1e-10 1 1 0
+1  6 0 4 11
+0
+
+0101000
++22 0 -21 0 *
+Ve
+1e-07
+1.24427 0.765686 -2.73993
+0 0
+
+0101100
+*
+Ve
+1e-07
+0 -0.184494 -2.74249
+0 0
+
+0101100
+*
+Ed
+ 1e-10 1 1 0
+1  7 0 4 11
+0
+
+0101000
++19 0 -18 0 *
+Ve
+1e-07
+1.01504 0.788879 -2.00015
+0 0
+
+0101100
+*
+Ve
+1e-07
+0 -0.14908 -1.99201
+0 0
+
+0101100
+*
+Ed
+ 1e-10 1 1 0
+1  8 0 4 11
+0
+
+0101000
++16 0 -15 0 *
+Ve
+1e-07
+0.921812 0.796364 -1.75937
+0 0
+
+0101100
+*
+Ve
+1e-07
+0 -0.133031 -1.74211
+0 0
+
+0101100
+*
+Ed
+ 1e-10 1 1 0
+1  9 0 4 11
+0
+
+0101000
++13 0 -12 0 *
+Ve
+1e-07
+0.865169 0.800548 -1.62368
+0 0
+
+0101100
+*
+Ve
+1e-07
+0 -0.122915 -1.59975
+0 0
+
+0101100
+*
+Ed
+ 1e-10 1 1 0
+1  10 0 4 11
+0
+
+0101000
++10 0 -9 0 *
+Ve
+1e-07
+0.265435 0.837777 -0.397543
+0 0
+
+0101100
+*
+Ve
+1e-07
+0 -0.012247 -0.391153
+0 0
+
+0101100
+*
+Ed
+ 1e-10 1 1 0
+1  11 0 4 11
+0
+
+0101000
++7 0 -6 0 *
+Ve
+1e-07
+0 0.85 0
+0 0
+
+0101100
+*
+Ve
+1e-07
+0 0.0270162 -0.0293317
+0 0
+
+0101100
+*
+Ed
+ 1e-10 1 1 0
+1  12 0 4 11
+0
+
+0101000
++4 0 -3 0 *
+Co
+
+1100000
++35 9 +32 9 +29 9 +26 9 +23 9 +20 9 +17 9 +14 9 +11 9 +8 9 
++5 9 +2 9 *
+
++1 0 
+0
+
diff --git a/examples/test18.med b/examples/test18.med
new file mode 100644 (file)
index 0000000..c04787d
Binary files /dev/null and b/examples/test18.med differ
index d58070da26452d456a8d58ae4702d95e6e9f5402..c30b5e22fb5acacb0ad4ae781cbbe99af65afd21 100644 (file)
@@ -16,6 +16,7 @@ module SALOME_Logger
          {
            //put message into one special place for all servers using Logger
            oneway void putMessage (in string message);
+            void ping (); 
          };
 };
 
index 68cb407566ef866b316109365d8bb04aba65741e..8033ab2b02cec0396c94c89a3935f89d0ac14481 100644 (file)
@@ -24,7 +24,8 @@ IDL_FILES = \
   TypeData.idl \
   MPIObject.idl \
   MPIContainer.idl \
-  Logger.idl
+  Logger.idl \
+  SALOME_GenericObj.idl
 
 PY_CLIENT_IDL = $(IDL_FILES)
 
@@ -55,7 +56,7 @@ install: install-pyidl install-idl
 # create directory $(idldir) and copy idl files into it
 install-idl: $(IDL_FILES)
        $(INSTALL) -d  $(idldir)
-       $(INSTALL_DATA) $^ $(idldir)
+       cp -p $^ $(idldir)
 
 
 install-pyidl: $(IDL_FILES)
index 5fcb8c16a80a38135759912dbd011d0ae9564911..686297a177b385294053b54bb50d033f99a75147 100644 (file)
@@ -2,20 +2,20 @@
 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
 // 
 //  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
 //
 //
 //
 //  Author : Yves FRICAUD
 //  $Header$
 
-/*! \mainpage 
+/*! \mainpage
     \image html Application-About.png
-    
-*/
-/*! \page page1 Mapping of IDL definitions to Python language.
-\section Intro Introduction
-%SALOME PRO is a distributed client/server application using the Common Object Request Broker Architecture (CORBA).
-CORBA architecture uses the Interface Definition Language (IDL), which specifies interfaces between CORBA objects. So with help of IDL 
-CORBA's language independence is ensured . Because interfaces described in IDL can be mapped to the most of currently used programming languages, CORBA applications and components are thus
-independent of the language(s) used to implement them. In other words, a client written in C++ can communicate with a server written in Java, which in turn can communicate with
-another server written in COBOL, and so forth.
-
-One important thing to remember about IDL is that it is not an implementation language. That is, applications can't be written in IDL. The sole purpose of IDL is to define interfaces;
-providing implementations for these interfaces is performed using some other language.
-This page contains an abridged reference manual for mapping of IDL definitions to Python language. It will be useful for Python programmers who are not familiar 
-with IDL language. All examples are taken from %SALOME PRO source files.
-The complete version of Python Language Mapping Specification can be found <A HREF="http://www.omg.org">here.</A>
-
-<BR><STRONG>CONTENTS:</STRONG>
-- \ref subsection1
-- \ref subsection2
-- \ref subsection3
-- \ref subsection4
-- \ref subsection5
-- \ref subsection6
-- \ref subsection7
-
-\subsection subsection1 Using Scoped Names
-
-Python implements a module concept that is similar to the IDL scoping mechanisms,
-except that it does not allow for nested modules. In addition, Python requires each
-object to be implemented in a module; globally visible objects are not supported.
-
-Because of these constraints, scoped names are translated into Python using the
-following rules:
-
-\95 An IDL module mapped into a Python module. Modules containing modules are
-mapped to packages (i.e., directories with an <STRONG>__init__</STRONG> module containing all
-definitions excluding the nested modules). An implementation can chose to map toplevel
-definitions (including the module CORBA) to modules in an implementationdefined
-package, to allow concurrent installations of different CORBA runtime
-libraries. In that case, the implementation must provide additional modules so that
-toplevel modules can be used without importing them from a package.
-
-\95 For all other scopes, a Python class is introduced that contains all the definitions
-inside this scope.
-
-\95 Other global definitions (except modules) appear in a module whose name is
-implementation dependent. Implementations are encouraged to use the name of the
-IDL file when defining the name of that module.
-
-For instance,
-
-\verbatim
-module SALOMEDS {
- interface StudyManager {
-  void  Close(in Study aStudy);
- };
-};
-\endverbatim 
-
-would introduce a module SALOMEDS.py, which contains the following definitions:
-
-\verbatim
-# module SALOMEDS.py
-class StudyManager:
-  def _Close(self,aStudy):
-   pass #interfaces are discussed later
-\endverbatim
-
-To avoid conflicts, IDL names that are also Python identifiers are prefixed with an underscore (\91_\92).
-
-\subsection subsection2 Mapping for Template and Array Types
-
-Both the bounded and the unbounded string type of IDL are mapped to the Python
-string type. Wide strings are represented by an implementation-defined type with the
-following properties:
-
-\95 For the wide string X and the integer n, X[n] returns the nth character, which is a
-wide string of length 1.
-
-\95 len(X) returns the number of characters of wide string X.
-
-\95 CORBA.wstr(c) returns a wide character with the code point c in an
-implementation-defined encoding.
-
-\95 X+Y returns the concatenation of wide strings X and Y.
-
-\95 CORBA.word(CORBA.wstr(c)) == c
-
-The sequence template is mapped to sequence objects (e.g., tuples or lists).
-Applications should not assume that values of a sequence type are mutable. Sequences
-and arrays of octets and characters are mapped to the string type for efficiency reasons.
-
-For example, given the IDL definitions
-
-\verbatim
-module SALOMEDS {
-  typedef sequence <string> StringSeq;
-   
-   interface AttributeTableOfInteger : GenericAttribute {
-
-    void SetRowTitles(in StringSeq theTitles) raises(IncorrectArgumentLength);
- };
-};
-\endverbatim
-
-a client could invoke the operation
-
-\verbatim
-print My_AttributeTableOfInteger.SetRowTitles(["X","F"])
-\endverbatim
-
-Array types are mapped like sequence templates. The application in this example also expects an
-IncorrectArgumentLength exception if it passes sequences that violate the bounds constraint or
-arrays of wrong size.
-
-Another example with arrays. The following IDL definition
-
-\verbatim
-module SALOMEDS {
- typedef sequence<GenericAttribute> ListOfAttributes;
- interface SObject {
-  ListOfAttributes     GetAllAttributes();
- };
-};
-\endverbatim
-
-is equal to 
-
-\verbatim
-import SALOMEDS
-
-attributes=[]
-attributes = My_SObject.GetAllAttributes()
-
-length = len(attributes)
-
-print "Attributes number = ", length
-print attributes
-\endverbatim
-
-\subsection subsection3 Mapping for Objects and Operations
-
-A CORBA object reference is represented as a Python object at run-time. This object
-provides all the operations that are available on the interface of the object. Although
-this specification does not mandate the use of classes for stub objects, the following
-discussion uses classes to indicate the interface.
-
-The nil object is represented by <STRONG>None</STRONG>.
-
-If an operation expects parameters of the IDL Object type, any Python object
-representing an object reference might be passed as actual argument.
-
-If an operation expects a parameter of an abstract interface, either an object
-implementing that interface, or a value supporting this interface may be passed as
-actual argument. The semantics of abstract values then define whether the argument is
-passed by value or by reference.
-
-Operations of an interface map to methods available on the object references.
-Parameters with a parameter attribute of <STRONG>in</STRONG> or <STRONG>inout</STRONG> 
-are passed from left to right tothe method, skipping <STRONG>out</STRONG> parameters.
-The return value of a method depends on the number of <STRONG>out</STRONG> parameters 
-and the return type. If the operation returns a value, this
-value forms the first <VAR>result value</VAR>. All <STRONG>inout</STRONG> or <STRONG>out</STRONG> 
-parameters form consecutive <VAR>result values</VAR>. The method result depends then on the number
-of <VAR>result values</VAR>:
-
-\95 If there is no <VAR>result value</VAR>, the method returns None.
-
-\95 If there is exactly one <VAR>result value</VAR>, it is returned as a single value.
-
-\95 If there is more than one <VAR>result value</VAR>, all of them are packed into a tuple, and this
-tuple is returned.
-
-Assuming the IDL definition
-
-\verbatim
-module SALOMEDS{
- interface StudyBuilder{
-  boolean FindAttribute  ( in SObject anObject, 
-                           out GenericAttribute anAttribute, 
-                           in string aTypeOfAttribute );
- };
-};
-\endverbatim
-                                          
-a client could write
-
-\verbatim
-from SALOMEDS import StudyBuilder;
-my_StudyBuilder=...
-  
-  res,A=my_StudyBuilder.FindAttribute(Sobj, "AttributeSequenceOfReal")
-\endverbatim
-
-In this example <STRONG>A</STRONG> corresponds to the return value <STRONG>anAttribute</STRONG> and  
-<STRONG>res</STRONG> to the <STRONG>boolean</STRONG> return value. 
-
-If an interface defines an <STRONG>attribute name</STRONG>, for example, the attribute is mapped into an
-operation <STRONG>_get_name</STRONG>. If the attribute is not <STRONG>readonly</STRONG>, there is an
-additional operation <STRONG>_set_name</STRONG>.
-
-The IDL definition
-
-\verbatim
-module SALOMEDS{
- interface Study{
-  attribute string Name;
- };
-};
-\endverbatim
-
-is equal to the following
-
-\verbatim
-from SALOMEDS import Study
-My_Study=...
-  Name=My_Study._get_name();
-  Name=My_Study._set_name();
-\endverbatim
-
-\subsection subsection4 Narrowing Object References
-
-Python objects returned from CORBA operations or pseudo-operations (such as
-string_to_object) might have a dynamic type, which is more specific than the
-static type as defined in the operation signature.
-
-Since there is no efficient and reliable way of automatically creating the most specific
-type, explicit narrowing is necessary. To narrow an object reference <STRONG>A</STRONG> to an interface
-class <STRONG>AttributeSequenceOfReal</STRONG>, the client can use the following operation 
-
-\verbatim
-A = A._narrow(SALOMEDS.AttributeSequenceOfReal)
-\endverbatim
-
-\subsection subsection5 Mapping for Exceptions
-
-An   IDL   exception   is   translated   into   a   Python  class  derived  from
-CORBA.UserException.  System  exceptions are derived from CORBA.SystemException.
-Both  base  classes  are  derived  from  CORBA.Exception.  The parameters of the
-exception  are mapped in the same way as the fields of a struct definition. When
-raising  an  exception,  a new instance of the class is created; the constructor
-expects the exception parameters. For example, the definition
-
-\verbatim
-module SALOMEDS{
- interface StudyBuilder{
-  exception LockProtection {};
-  void CommitCommand() raises(LockProtection);
- };
-};
-\endverbatim
-
-could be used caught as
-
-\verbatim
-from SALOMEDS import StudyBuilder;
-my_StudyBuilder=...
-try:
-  my_StudyBuilder.CommitCommand();
-except StudyBuilder.LockProtection,value:
-  print "Error! Study is locked for modifications"
-\endverbatim
-
-
-\subsection subsection6 Mapping for Enumeration Types
-
-An enumeration is mapped into a number of constant objects in the name space where
-the enumeration is defined. An application may only test for equivalence of two
-enumeration values, and not assume that they behave like numbers.
-For example, the definition
-
-\verbatim
-module VISU {
- interface PrsObject{
-  enum PrsObjType{ TCURVE, TTABLE, TMESH, TCONTAINER,
-                   TSCALARMAP, TISOSURFACE, TDEFORMEDSHAPE,
-                   TCUTPLANES, TVECTORS };
- };
-};
-\endverbatim
-
-introduces the objects
-
-\verbatim
-from VISU import PrsObject
-VISU.PrsObjType.TCURVE,VISU.PrsObjType.TTABLE,VISU.PrsObjType.TMESH,VISU.PrsObjType.TCONTAINER,
-VISU.PrsObjType.TSCALARMAP,VISU.PrsObjType.TISOSURFACE,VISU.PrsObjType.TDEFORMEDSHAPE,VISU.PrsObjType.TCUTPLANES,
-VISU.PrsObjType.TVECTORS
-\endverbatim
-
-\subsection subsection7 Mapping for Structured Types
-
-An IDL struct definition is mapped into a Python class or type. For each field in the
-struct, there is a corresponding attribute in the class with the same name as the field.
-The constructor of the class expects the field values, from left to right.
-For example, the IDL definition
-
-\verbatim
-struct SDate {
-               short Second;
-               short Minute;
-               short Hour;
-               short Day;
-               short Month;
-               short Year;
-             };
-\endverbatim
-
-could be used in the Python statements
-
-\verbatim
-Date=SDate(30, 12, 15, 26, 1, 79)
-print Date.Second,Date.Minute,Date.Hour,Date.Day,Date.Month,Date.Year
-\endverbatim
-*/
-/*! \page page2 Mapping of SALOME IDL definitions to Python language.
-
-
-  - <B>%SALOME STUDY module</B>
-     - <A href=HTML/SALOMEDS.html>Mapping of %SALOMEDS functions</A>
-     - <A href=HTML/SALOMEDS_Attributes.html>Mapping of SALOMEDS_Attributes functions</A>
-  - <B>%SAlOME KERNEL module</B>
-     - <A href=HTML/Med_Gen.html>Mapping of %Med_Gen functions</A>
-     - <A href=HTML/SALOME_Session.html>Mapping of %SALOME_Session functions</A>
-     - <A href=HTML/SALOME_ModuleCatalog.html>Mapping of %SALOME_ModuleCatalog functions</A>
-     - <A href=HTML/SALOME_Exception.html>Mapping of %SALOME_Exception functions</A>
-     - <A href=HTML/SALOME_Component.html>Mapping of %SALOME_Component functions</A>
-  - <B>%SALOME MED component</B>
-     - <A href=HTML/MED.html>Mapping of %Med functions</A>
-  - <B>%SALOME SUPERVISION module</B>
-     - <A href=HTML/SUPERV.html>Mapping of %SUPERV functions</A>
-  - <B>%SALOME %VISU module</B>
-     - <A href=HTML/VISU_Gen.html>Mapping of %VISU_Gen functions</A>
-
-*/
-
-/*! \defgroup Study SALOME STUDY module
 */
 
 /*!
@@ -377,7 +37,7 @@ print Date.Second,Date.Minute,Date.Hour,Date.Day,Date.Month,Date.Year
 
 #include "SALOME_Exception.idl"
 
-/*! \ingroup Study
+/*!
      This package contains the interfaces used for creation, managment
      and modification of the %Study
 */
@@ -400,19 +60,22 @@ module SALOMEDS
 /*! IOR of the study in %SALOME application
 */
   typedef string SalomeReference;
-/*! List of names of open studies in a %SALOME session
+
+/*! List of the names of studies which are currently open in this %SALOME session.
+Since %SALOME is a multi-study application, it allows to open a lot of studies
+during each working session.
 */
   typedef sequence<string> ListOfOpenStudies;
 /*! List of file names
 */
   typedef sequence<string> ListOfFileNames;
-/*! List of modification dates of the study
+/*! List of modification dates of a study
 */
   typedef sequence<string> ListOfDates ;
 /*! An unbounded sequence of strings
 */
   typedef sequence<string> ListOfStrings ;
-/*! A byte stream which is used for binary data transfer between components
+/*! A byte stream which is used for binary data transfer between different components
 */
   typedef sequence<octet> TMPFile;
 
@@ -436,10 +99,12 @@ module SALOMEDS
   interface UseCaseIterator;
   interface UseCaseBuilder;
   interface Callback;
-/*! List of attributes
+
+/*! List of attributes of %SObjects
 */
   typedef sequence<GenericAttribute> ListOfAttributes;
-/*! Exception indicating that this feature hasn't been implemented
+
+/*! Exception indicating that this feature hasn't been implemented in %SALOME PRO application.
 */
   exception NotImplemented {};
 
@@ -462,6 +127,7 @@ module SALOMEDS
 
   interface Study
   {
+
     exception StudyInvalidContext {};
     exception StudyInvalidComponent {};
 /*! Invalid directory of the %study exception
@@ -489,7 +155,7 @@ module SALOMEDS
 */
     typedef sequence<SObject> ListOfSObject;
 /*!
-  Gets a persistent reference to the %Study.
+  Gets the persistent reference to the %Study.
 */
     PersistentReference  GetPersistentReference();
 /*!
@@ -515,25 +181,40 @@ module SALOMEDS
     SComponent FindComponentID(in ID aComponentID);
 /*!
     Allows to find a %SObject by the Name Attribute of this %SObject
+
+    \param anObjectName String parameter defining the name of the object
+    \return The obtained %SObject
+
 <BR><VAR>See also <A href=exemple/Example19.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
     SObject       FindObject      (in string anObjectName);
 /*!
     Allows to find a %SObject by its ID
+    \param aObjectID This parameter defines the ID of the required object
+    \return The obtained %SObject
+
 */
     SObject       FindObjectID    (in ID aObjectID);
 /*!
     Allows to find a %SObject by IOR of the object belonging to this %SObject.
+    \param anObjectName This parameter defines the IOR of the object
+    \return The obtained %SObject
+
 */
     SObject       FindObjectIOR   (in ID aObjectIOR);
 /*!
-    Returns a list of %SObjects belonging to this %Component. The Name Attribute
-    of these %SObjects should correspond to <VAR>anObjectName</VAR>.
+    Finds in the study all %SObjects produced by a given %Component.
+    \param anObjectName The Name Attribute of the searched %SObjects should correspond to <VAR>anObjectName</VAR>.
+    \param aComponentName The name of the component, which objects are searched for.
 */
     ListOfSObject FindObjectByName(in string anObjectName, in string aComponentName);
 /*!
     Allows to find a %SObject by the path to it.
+
+    \param thePath The path to the required %SObject.
+    \return The obtained %SObject.
+
 */
     SObject FindObjectByPath(in string thePath);
 /*!
@@ -543,12 +224,15 @@ module SALOMEDS
 
 /*!
     Sets the context of the %Study.
+    \param thePath String parameter defining the context of the study.
+
 <BR><VAR>See also <A href=exemple/Example23.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
     void SetContext(in string thePath);
 /*!
-    Gets the context of the %Study
+    Gets the context of the %Study.
+    
 <BR><VAR>See also <A href=exemple/Example23.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
@@ -573,19 +257,24 @@ module SALOMEDS
    \note  If the parameter <VAR>theContext</VAR> is empty, then the current context will be used.
 */
     ListOfStrings GetComponentNames(in string theContext);
-/*! \brief Creation of a new iterator of child levels
-
-    Creates a new iterator of child levels of the %SObject
+/*!
+    Creates a new iterator of child levels of the given %SObject.
+    \param aSO The given %SObject
+    \return A new iterator of child levels of the given %SObject.
 */
     ChildIterator      NewChildIterator(in SObject aSO);
-/*! \brief Creation of a new iterator of the %SComponent
+/*!
+
+    Creates a new iterator of the %SComponents.
 
-    Creates a new iterator of the %SComponent.
+    \return A new iterator of the %SComponents.
 */
     SComponentIterator NewComponentIterator();
-/*! \brief Creation of a %StudyBuilder
-
+/*!
    Creates a new %StudyBuilder to add or modify an object in the study.
+
+   \return A new %StudyBuilder.
+
 <BR><VAR>See also <A href=exemple/Example20.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
@@ -599,6 +288,7 @@ module SALOMEDS
 /*! \brief Getting properties of the study
 
    Returns the attriubte, which contains the properties of this study.
+
 <BR><VAR>See also <A href=exemple/Example20.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
@@ -659,6 +349,17 @@ module SALOMEDS
     Enables(if isEnabled = True)/disables automatic addition of new %SObjects to the use case.
 */
     void EnableUseCaseAutoFilling(in boolean isEnabled);
+
+/*!
+    Functions for internal usage only
+*/
+    void AddPostponed(in string theIOR);
+
+    void AddCreatedPostponed(in string theIOR);
+
+    void RemovePostponed(in long theUndoLimit);
+
+    void UndoPostponed(in long theWay);
   };
 
   //==========================================================================
@@ -689,49 +390,66 @@ module SALOMEDS
 <BR><VAR>See also <A href=exemple/Example17.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
-    SComponent NewComponent(in string ComponentDataType);
+    SComponent NewComponent(in string ComponentDataType) raises(LockProtection);
 /*! \brief Definition of the instance to the %SComponent
 
     Defines the instance to the %SComponent.
 */
-    void       DefineComponentInstance (in SComponent aComponent,in Object ComponentIOR);
-/*! \brief Deletion of the %SComponent
+    void       DefineComponentInstance (in SComponent aComponent,in Object ComponentIOR) raises(LockProtection);
+/*! \brief Deletion of a %SComponent
 
-  Removes the %SComponent.
+  Removes a %SComponent.
 */
-    void       RemoveComponent(in SComponent aComponent);
+    void       RemoveComponent(in SComponent aComponent) raises(LockProtection);
 
 /*! \brief Creation of a new %SObject
 
-   Creates a new %SObject.
+   Creates a new %SObject under a definite father %SObject.
+
+   \param theFatherObject The father %SObject under which this one should be created.
+   \return New %SObject
+
 <BR><VAR>See also <A href=exemple/Example18.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
-    SObject NewObject      (in SObject theFatherObject);
+
+    SObject NewObject      (in SObject theFatherObject) raises(LockProtection);
+
 /*! \brief Creation of a new %SObject with a definite %tag
 
    Creates a new %SObject with a definite %tag.
+
+   \param atag Long value corresponding to the tag of the new %SObject.
+   \return New %SObject
+
 */
-    SObject NewObjectToTag (in SObject theFatherObject, in long atag);
+    SObject NewObjectToTag (in SObject theFatherObject, in long atag) raises(LockProtection);
 /*! \brief Deletion of the %SObject
 
   Removes a %SObject from the %StudyBuilder.
+
+  \param anObject The %SObject to be deleted.
 */
-    void    RemoveObject   (in SObject anObject);
+    void    RemoveObject   (in SObject anObject) raises(LockProtection);
 /*! \brief Deletion of the %SObject with all his child objects.
 
   Removes the %SObject with all his child objects.
+
+  \param anObject The %SObject to be deleted with all child objects.
 */
-    void    RemoveObjectWithChildren(in SObject anObject);
+    void    RemoveObjectWithChildren(in SObject anObject) raises(LockProtection);
 
 /*!
    Loads a %SComponent.
+
 <BR><VAR>See also <A href=exemple/Example19.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
     void  LoadWith (in SComponent sco, in Driver Engine) raises (SALOME::SALOME_Exception);
 /*!
    Loads a %SObject.
+
+   \param sco %SObject to be loaded.
 */
     void  Load (in SObject sco);
 
@@ -745,9 +463,9 @@ module SALOMEDS
 */
 
     GenericAttribute FindOrCreateAttribute(in  SObject        anObject,
-                                        in  string         aTypeOfAttribute);
+                                        in  string         aTypeOfAttribute) raises(LockProtection);
 
-/*! \brief Looking for an attribute assigned to %SObject
+/*! \brief Looking for an attribute assigned to %SObject
 
     Allows to find an attribute of a specific type which is assigned to the object.
     \param anObject        The %SObject corresponding to the attribute which is looked for.
@@ -768,37 +486,46 @@ module SALOMEDS
 <BR><VAR>See also <A href=exemple/Example17.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     void RemoveAttribute(in  SObject        anObject,
-                               in  string         aTypeOfAttribute);
-/*! \brief Addition of a reference
-
+                        in  string         aTypeOfAttribute) raises(LockProtection);
+/*!
     Adds a reference between %anObject and %theReferencedObject.
+    \param anObject The %SObject which will get a reference
+    \param theReferencedObject The %SObject having a reference
 */
 
     void Addreference(in SObject anObject,
                      in SObject theReferencedObject) ;
 /*!
    Adds a directory in the %Study.
+   \param theName String parameter defining the name of the directory.
+
 <BR><VAR>See also <A href=exemple/Example23.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
-    void AddDirectory(in string theName);
+    void AddDirectory(in string theName) raises(LockProtection);
 
 /*! \brief Identification of the %SObject's substructure.
 
       Identification of the %SObject's substructure by GUID.
-      It has the following format "00000000-0000-0000-0000-000000000000"
+
+
+      \param anObject The %SObject which will be identified
+      \param theGUID GUID has the following format "00000000-0000-0000-0000-000000000000"
 */
 
-     void SetGUID(in SObject anObject, in string theGUID);
+     void SetGUID(in SObject anObject, in string theGUID) raises(LockProtection);
 /*!
+Searches for a definite %SObject with a definite GUID and returns True if it finds it.
 
-   Returns True if the %SObject has GUID.
+\param anObject A definite %SObject which will be identified
+\param theGUID GUID has the following format "00000000-0000-0000-0000-000000000000"
 */
      boolean IsGUID(in SObject anObject, in string theGUID);
 
 /*! \brief Creation of a new command
 
    Creates a new command which can contain several different actions.
+   
 <BR><VAR>See also <A href=exemple/Example3.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
@@ -806,6 +533,9 @@ module SALOMEDS
 /*! \brief Execution of the command
 
    Commits all actions declared within this command.
+
+   \exception LockProtection This exception is raised, when trying to perform this command a study, which is protected for modifications.
+
 <BR><VAR>See also <A href=exemple/Example16.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
@@ -817,6 +547,7 @@ module SALOMEDS
 /*! \brief Cancelation of the command
 
     Cancels all actions declared within the command.
+    
 <BR><VAR>See also <A href=exemple/Example17.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     void AbortCommand(); // command management
@@ -828,6 +559,9 @@ module SALOMEDS
 /*! \brief Undo method
 
     Cancels all actions of the last command.
+
+    \exception LockProtection This exception is raised, when trying to perform this command a study, which is protected for modifications.
+
 <BR><VAR>See also <A href=exemple/Example16.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
@@ -835,28 +569,40 @@ module SALOMEDS
 /*! \brief Redo method
 
     Redoes all actions of the last command.
+
+\exception LockProtection This exception is raised, when trying to perform this command a study, which is protected for modifications.
+
  <BR><VAR>See also <A href=exemple/Example16.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
     void Redo() raises (LockProtection);
 /*!
     Returns True if at this moment there are any actions which can be canceled.
+    
    <BR><VAR>See also <A href=exemple/Example16.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
     boolean GetAvailableUndos();
 /*!
     Returns True if at this moment there are any actions which can be redone.
+
    <BR><VAR>See also <A href=exemple/Example3.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
     boolean GetAvailableRedos();
 /*!
-    Sets the callback for addition of the given %SObject. Returns the previous callback.
+    This method is called when adding an object into study.
+    It sets the callback for addition of the given %SObject.
+    \param theCallback New assigned callback.
+    \return The previous callback.
 */
     Callback SetOnAddSObject(in Callback theCallback);
 /*!
-    Sets the callback for removal of the given %SObject. Returns the previous callback.
+    This method is called when adding an object into study.
+    It sets the callback for removal of the given %SObject.
+
+    \return The previous callback.
+    \param theCallback New assigned callback.
 */
     Callback SetOnRemoveSObject(in Callback theCallback);
 
@@ -880,9 +626,12 @@ module SALOMEDS
 */
     void ping();
 
-/*! \brief Creation of a new %Study
+/*! \brief Creation of a new study
+
+     Creates a new study with a definite name.
+
+     \param study_name String parameter defining the name of the study
 
-     Creates a new %Study with a definite name.
 <BR><VAR>See also <A href=exemple/Example17.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
@@ -891,34 +640,54 @@ module SALOMEDS
 /*! \brief Open a study
 
      Reads and activates the structure of the study %Objects.
+     \param aStudyUrl The path to the study
     \warning This method doesn't activate the corba objects. Only a component can do it.
+
 <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     Study Open (in URL aStudyUrl) raises (SALOME::SALOME_Exception);
 
 /*! \brief Closing the study
 
-    Closes the study.
+    Closes a study.
 */
     void  Close(in Study aStudy);
-/*! \brief Saving the study
+/*! \brief Saving the study in a HDF file (or files).
+
+    Saves a study.
+
+    \param theMultiFile If this parameter is True the study will be saved in several files.
 
-    Saves the study.
 <BR><VAR>See also <A href=exemple/Example19.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
     void  Save(in  Study aStudy, in boolean theMultiFile);
+/*! \brief Saving a study in a ASCII file (or files).
 
+    Saves a study in an ASCII format file (or files).
+    \param theMultiFile If this parameter is True the study will be saved in several files.
+*/
     void  SaveASCII(in  Study aStudy, in boolean theMultiFile);
-/*! \brief Saving the study in a file
+/*! \brief Saving the study in a specified HDF file (or files).
+
+    Saves the study in a specified file (or files).
+    \param aUrl The path to the definite file in whcih the study will be saved
+    \param aStudy The study which will be saved
+    \param theMultiFile If this parameter is True the study will be saved in several files.
 
-    Saves the study in a specified file.
  <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     void  SaveAs(in URL   aUrl, // if the file already exists
                in Study aStudy,
                in boolean theMultiFile); // overwrite (as option)
+/*! \brief Saving the study in a specified ASCII file (or files).
 
+    Saves the study in a specified ASCII file (or files).
+
+    \param aUrl The path to the definite file in whcih the study will be saved
+    \param aStudy The study which will be saved
+    \param theMultiFile If this parameter is True the study will be saved in several files.
+*/
     void  SaveAsASCII(in URL   aUrl, // if the file already exists
                      in Study aStudy,
                      in boolean theMultiFile); // overwrite (as option)
@@ -926,21 +695,25 @@ module SALOMEDS
 
 /*! \brief List of open studies.
 
-    Returns the list of open studies in the current session.
+Gets the list of open studies
+
+    \return A list of open studies in the current session.
 */
     ListOfOpenStudies GetOpenStudies();
 
 /*! \brief Getting a particular %Study picked by name
 
     Activates a particular %Study
-    amongst the session collection picking it by name.
+    among the session collection picking it by name.
+    \param aStudyName The name of the study
 */
     Study GetStudyByName  (in string aStudyName);
 
 /*! \brief Getting a particular %Study picked by ID
 
     Activates a particular %Study
-    amongst the session collection picking it by ID.
+    among the session collection picking it by ID.
+    \param aStudyID The ID of the study
 */
     Study GetStudyByID  (in short aStudyID);
 
@@ -952,14 +725,19 @@ module SALOMEDS
     boolean CanCopy(in SObject theObject);
 /*!
     Returns True, if the given %SObject is copied to the clipboard.
+    \param theObject The %SObject which will be copied
 */
     boolean Copy(in SObject theObject);
 /*!
     Returns True, if the object from the clipboard can be pasted to the given %SObject.
+    \param theObject The %SObject stored in the clipboard.
 */
     boolean CanPaste(in SObject theObject);
 /*!
     Returns the %SObject in which the object from the clipboard was pasted to.
+    \param theObject The %SObject which will be pasted
+    \exception SALOMEDS::StudyBuilder::LockProtection This exception is raised, when trying to paste
+    an object into a study, which is protected for modifications.
 */
     SObject Paste(in SObject theObject) raises (SALOMEDS::StudyBuilder::LockProtection);
   };
@@ -971,6 +749,7 @@ module SALOMEDS
    The objects in the %study are built by the %StudyBuilder. The %SObject interface
    provides methods for elementary inquiries, like getting an object %ID or its attribuites.
  \note
    <BR><VAR>Tag</VAR> of an item in %SALOME application is an integer value uniquely defining an item
    in the tree-type data structure.
    <BR><VAR>ID</VAR> of an item is a description of item's position in the tree-type data structure.
@@ -983,54 +762,59 @@ module SALOMEDS
 /*! Name of the %SObject
 */
     attribute string Name; // equivalent to setName() & getName()
-/*! \brief Getting an object %ID
+/*! Gets an object %ID
 
-   Returns ID of the %SObject.
+   \return ID of the %SObject.
 */
     ID GetID();
-/*! \brief Acquisition of the father %Component of the %SObject
+/*!  Acquisition of the father %Component of the %SObject
 
-  Returns the father %Component of the %SObject.
+  \return The father %Component of the %SObject.
 */
     SComponent GetFatherComponent();
-/*! \brief Acquisition of the father %SObject of the %SObject
+/*! Acquisition of the father %SObject of the %SObject
 
-   Returns the father %SObject of the given %SObject.
+   \return the father %SObject of the given %SObject.
 */
     SObject    GetFather();
-/*! \brief %Tag of %SObject
+/*! Gets the %tag of a %SObject
 
-    Returns the %tag of the %SObject.
+    \return the %tag of a %SObject.
 */
     short      Tag();
-/*! \brief Looking for subobjects of an object.
+/*! Looks for subobjects of a given %SObject.
 
-    Returns True if it finds a subobject of the %SObject with a definite tag.
+    \param atag Tag of the given %SObject
+    \return True if it finds a subobject of the %SObject with a definite tag as well as the required subobject.
 */
 
     boolean FindSubObject (in long atag, out SObject obj);
-/*! \brief Looking for attributes of the %SObject
+/*! Looks for attributes of a given %SObject
+
+   \param aTypeOfAttribute String value defining the type of the required attribute of the given %SObject.
+   \return True if it finds an attribute of a definite type of the given %SObject as well as the discovered attribute.
 
-   Returns True if it finds an attribute of a definite type of the %SObject.
 <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     boolean FindAttribute(out GenericAttribute anAttribute,
                                  in  string         aTypeOfAttribute);
-/*!
-    Returns the object which this %SObject refers to. It also returns True if it finds
+/*! Looks for a %SObject which the given %SObject refers to.
+
+    \return The object which the given %SObject refers to as well as True if it finds
     this object.
 */
     boolean ReferencedObject(out SObject obj); // A REVOIR
-/*! \brief Getting all attributes of the %SObject
+/*! Gets all attributes of a given %SObject
+
+    \return The list of all attributes of the given %SObject.
 
-    Returns the list of all attributes of the %SObject.
 <BR><VAR>See also <A href=exemple/Example17.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
     ListOfAttributes     GetAllAttributes();
-/*! \brief Returning the study
+/*! Gets the study of a given %SObject.
 
-    Returns the study containing the given %SObject.
+    /return The study containing the given %SObject.
 */
     Study GetStudy();
   };
@@ -1039,8 +823,7 @@ module SALOMEDS
   //==========================================================================
 /*! \brief %Generic attribute interface
 
-   %Generic attribute is a base interface for all attributes which inherit
-   its methods.
+   %Generic attribute is a base interface for all attributes which can be assigned to the SObjects created in the study.
 */
   //==========================================================================
   interface GenericAttribute
@@ -1053,7 +836,8 @@ module SALOMEDS
 /*! \brief Method CheckLocked
 
    Checks whether the %Study is protected for modifications.
-   \note <BR>This exception is raised only outside the transaction.
+
+   \note <BR>This exception is raised only outside a transaction.
 */
     void CheckLocked() raises (LockProtection);
   };
@@ -1063,19 +847,21 @@ module SALOMEDS
   //==========================================================================
 /*! \brief %SComponent interface
 
+   The %SComponent interface establishes in the study a permanent assocition to the Components integrated into %SALOME platform.
    The %SComponent interface is a specialization of the %SObject interface.
    It inherits the most of its methods from the %SObject interface.
 */
   //==========================================================================
   interface SComponent : SObject
   {
-/*! \brief Data type of the %SComponent
+/*! Gets the data type of the given %SComponent
 
-    Returns the data type of the %SComponent.
+    \return The data type of this %SComponent.
 */
     string  ComponentDataType();
-/*!
-  Returns IOR of the according component.
+/*! Gets the IOR of the given component
+
+  \return True (if there is an instance of the given component) and its IOR.
 */
     boolean ComponentIOR (out ID theID); //returns True if there is an instance
                                          //In this case ID identifies this one
@@ -1091,23 +877,22 @@ module SALOMEDS
   //==========================================================================
   interface SComponentIterator
   {
-/*! \brief Initialization of the Iterator
-
+/*!
 Activates the %SComponentIterator.
 */
     void Init();
-/*! \brief Method More
+/*!  Method More
 
-   Returns True if there is one more %SComponent in the list.
+   \return True if there is one more %SComponent in the list.
 */
     boolean More();
-/*! \brief Moving the iterator to the next %SComponent
-
+/*!
 Moves the iterator to the next %SComponent in the list.
 */
     void Next();
 /*!
     Returns the %SComponent corresponding to the current %SComponent found by the iterator.
+
  <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
@@ -1123,19 +908,21 @@ Moves the iterator to the next %SComponent in the list.
   //==========================================================================
   interface ChildIterator
   {
-/*! \brief Initialization of the Iterator.
+/*!
 
 Activates the %ChildIterator.
 */
     void Init();
-/*! \brief Initialization of the Iterator for all child levels.
+/*!
+
+Activates the %ChildIterator for all child levels.
 
-Activates the %ChildIterator (if True) for all child levels.
+\param allLevels If this boolean parameter is True, the %ChildIterator will be activated for all child levels.
 */
     void InitEx(in boolean allLevels);
-/*! \brief Method More
+/*! Method More
 
-    Returns True if the %ChildIterator finds one more child level.
+   \return True if there is one more %ChildIterator in the list.
 */
     boolean More();
 /*!
@@ -1156,14 +943,14 @@ Activates the %ChildIterator (if True) for all child levels.
 */
   interface UseCaseIterator
   {
-/*! \brief Initialization of the Iterator.
-
-Activates the %UseCaseIterator. If <VAR>allLevels</VAR> is True the Iterator is activated for all subobjects.
+/*!
+Activates the %UseCaseIterator.
+\param allLevels If the value of this parameter is True the Iterator is activated for all subobjects.
 */
     void Init(in boolean allLevels);
-/*! \brief Method More
+/*! Method More
 
-    Returns True if the %UseCaseIterator finds one more object.
+    \return True if the %UseCaseIterator finds one more object.
 */
     boolean More();
 /*!
@@ -1186,11 +973,17 @@ Activates the %UseCaseIterator. If <VAR>allLevels</VAR> is True the Iterator is
   interface UseCaseBuilder
   {
 /*!
-   Adds to the use case an object <VAR>theObject</VAR> as a child of the current object of the use case.
+   Adds to the use case an object as a child of the current object of the use case.
+
+   \param theObject The added %SObject.
+   \return True if this %SObject has been added in the use case.
 */
     boolean Append(in SObject theObject);
 /*!
-   Removes an object <VAR>theObject</VAR> from the use case.
+   Removes an object from the use case.
+
+   \param theObject The deleted %SObject
+   \return True if this %SObject has been deleted from the use case.
 */
     boolean Remove(in SObject theObject);
 /*!
@@ -1240,7 +1033,7 @@ Activates the %UseCaseIterator. If <VAR>allLevels</VAR> is True the Iterator is
   };
   //==========================================================================
   //==========================================================================
-/*! \brief The callback interface  
+/*! \brief The callback interface
 
   The %StudyBuilder can be created with the method <VAR>NewBuilder</VAR>. While invocation of this method a new object of the class <VAR>Callback</VAR> is created
   and this object is assigned to the newly created Builder as callback which should be called when adding and removing of the ojects.
@@ -1260,17 +1053,26 @@ Activates the %UseCaseIterator. If <VAR>allLevels</VAR> is True the Iterator is
   //==========================================================================
 /*! \brief %Driver interface
 
-    This interface contains a set of methods used for the management
-     of the object produced in the %study by a component.
+This class represents a common tool for all components integrated into SALOME application, that allows them to communicate with the study. It contains a set of methods which
+can be called by any component and which provide the following functionality:
+<ul>
+    <li> publishing in the study of the objects created by a definite component
+    <li> saving/loading of the data created by a definite component. These methods are called by the StudyManager when loading/saving a study containing the data created by a definite component.
+    <li> transforming of the transient references into persistant references (or vice versa) of the SObjects when saving (or loading) a study
+    <li> copy/paste common functionality. These methods can be called by any component in order to copy/paste its object created in the study
+</ul>
+
 */
   //==========================================================================
   interface Driver
   {
 
-    /*! \brief Saving the data.
+    /*! \brief Saving the data produced by a definite component.
 
         This method is called by the StudyManager when saving a study.
        \param theComponent    %SComponent corresponding to this Component
+       \param theURL  The path to the file in which the data will be saved.
+       \param isMultiFile  If the value of this boolean parameter is True, the data will be saved in several files.
        \return A byte stream TMPFile that contains all saved data
 
 <BR><VAR>See also <A href=exemple/Example19.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
@@ -1280,6 +1082,17 @@ Activates the %UseCaseIterator. If <VAR>allLevels</VAR> is True the Iterator is
 
     TMPFile Save(in SComponent theComponent, in string theURL, in boolean isMultiFile);
 
+/*! \brief Saving the data in ASCII format produced by a definite component.
+
+        This method is called by the StudyManager when saving a study in ASCII format.
+       \param theComponent    %SComponent corresponding to this Component
+       \param theURL  The path to the file in which the data will be saved.
+       \param isMultiFile  If the value of this boolean parameter is True, the data will be saved in several files.
+       \return A byte stream TMPFile that will contain all saved data
+
+<BR><VAR>See also <A href=exemple/Example19.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
+
+     */
     TMPFile SaveASCII(in SComponent theComponent, in string theURL, in boolean isMultiFile);
 
     /*! \brief Loading the data.
@@ -1287,32 +1100,53 @@ Activates the %UseCaseIterator. If <VAR>allLevels</VAR> is True the Iterator is
        This method is called by the StudyManager when opening a study.
        \param theComponent      %SComponent corresponding to this Component
        \param theStream   The file which contains all data saved by the component on Save method
+       \param isMultiFile  If the value of this boolean parameter is True, the data will be loaded from several files
+
      */
 
     boolean Load(in SComponent theComponent, in TMPFile theStream, in string theURL, in boolean isMultiFile);
 
+    /*! \brief Loading the data from files in ASCII format.
+
+       This method is called by the StudyManager when opening a study.
+       \param theComponent      %SComponent corresponding to this Component
+       \param theStream   The file which contains all data saved by the component on Save method
+       \param isMultiFile  If the value of this boolean parameter is True, the data will be loaded from several files
+
+     */
+
     boolean LoadASCII(in SComponent theComponent, in TMPFile theStream, in string theURL, in boolean isMultiFile);
 
     /*! \brief Closing of the study
 
       This method Close is called by the StudyManager when closing a study.
-
+    \param aSComponent The according %SComponent
      */
 
     void Close (in SComponent aSComponent);
     //void Close ( in string  aIORSComponent);
 
-    /*! \brief The type of the data
+    /*! Gets the type of the data
 
-        Returns the type of data produced by the Component in the study.
+        \return The type of data produced by the Component in the study.
      */
 
      string ComponentDataType();
 
     // Driver Transient -> persistent called for each object in study
 /*!
-   Transforms IOR into PersistentID of the object. It is called for each
+   Transforms IOR of a given %SObject into PersistentID. It is called for each
    object in the %study.
+\note <br> In %SALOME the objects which are present in an active study are identified by an IOR, when this
+study is saved these references are transformed into persintent IDs.
+
+   \param theSObject The given %SObject.
+   \param IORString The IOR of the given %SObject.
+   \param isMultiFile If this parameter is True the study containing the given %SObject is stored in several files.
+   \param isASCII If this parameter is True the study containing the given %SObject is stored in ASCII format.
+
+   \return The persistent ID of the given %SObject
+
 */
     string IORToLocalPersistentID (in SObject theSObject,
                                   in string IORString,
@@ -1321,6 +1155,17 @@ Activates the %UseCaseIterator. If <VAR>allLevels</VAR> is True the Iterator is
 /*!
   Transforms PersistentID into IOR of the object. It is called for each
    object in the %study.
+
+   \note <br> In %SALOME the objects which are present in an saved study (file) are identified by a persistent ID, when this
+study is open, these references are transformed into persintent IORs.
+
+   \param theSObject The given %SObject.
+   \param IORString The IOR of the given %SObject.
+   \param isMultiFile If this parameter is True the study containing the given %SObject is stored in several files.
+   \param isASCII If this parameter is True the study containing the given %SObject is stored in ASCII format.
+
+   \return The IOR of the given %SObject
+
 */
     string LocalPersistentIDToIOR (in SObject theSObject,
                                   in string aLocalPersistentID,
@@ -1329,9 +1174,10 @@ Activates the %UseCaseIterator. If <VAR>allLevels</VAR> is True the Iterator is
       raises (SALOME::SALOME_Exception);
 
     // Publishing in the study
-/*! \brief Publishing in the study
+/*! Publishing in the study
 
-    Returns True if the given %Component can publish the %object in the %study.
+    \return True if the given %Component can publish a definite object with a given IOR in the %study.
+    \param theIOR The IOR of a definite object
 */
     boolean CanPublishInStudy(in Object theIOR) raises (SALOME::SALOME_Exception);
 /*! \brief Publishing in the study
@@ -1343,6 +1189,8 @@ Activates the %UseCaseIterator. If <VAR>allLevels</VAR> is True the Iterator is
     \param theObject      The object which is published
     \param theName      The name of the published object. If this parameter is empty, the name is generated
     automatically by the component.
+
+    \return The published %SObject.
 */
     SObject PublishInStudy(in Study theStudy, in SObject theSObject, in Object theObject, in string theName);
 
@@ -1350,6 +1198,8 @@ Activates the %UseCaseIterator. If <VAR>allLevels</VAR> is True the Iterator is
 
 /*!
     Returns True, if the given %SObject can be copied to the clipboard.
+
+    \param theObject The given %SObject which should be copied.
 */
     boolean CanCopy(in SObject theObject);
 /*!
@@ -1367,5 +1217,5 @@ Activates the %UseCaseIterator. If <VAR>allLevels</VAR> is True the Iterator is
 
   };
 };
+
 #endif
index b47f39beac209f742009b2c9e67837e4cb0e2ff0..27f1f6dbdcf70322f462f17e75bbc08987ea33cb 100644 (file)
@@ -42,18 +42,19 @@ module SALOMEDS
 /*! Sequence of string values
 */
   typedef sequence <string> StringSeq;
-/*! \struct Color 
-   This structure stores a set of elements defining the color based on RGB.
+/*! \struct Color
+   This structure stores a set of elements defining the color based on RGB palette. These elements are
+   used as input parameters for methods necessary for color definition of different items.
 */
   struct Color {
 /*! Red color
-*/  
+*/
    double R;
 /*! Green color
-*/ 
+*/
    double G;
 /*! Blue color
-*/ 
+*/
    double B;
   };
   //==========================================================================
@@ -66,11 +67,13 @@ module SALOMEDS
   {
 /*!
     Returns the value of this attribute.
+
 <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     double Value();
 /*!
    Sets the value of this attribute.
+
 <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     void   SetValue(in double value);
@@ -85,11 +88,13 @@ module SALOMEDS
   {
 /*!
     Returns the value of this attribute
+
 <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     long   Value();
 /*!
    Sets the value of this attribute
+
 <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     void   SetValue(in long value);
@@ -113,6 +118,7 @@ module SALOMEDS
     DoubleSeq CorbaSequence();
 /*!
    Adds to the end of the sequence a real number.
+
    \param value    A real number added to the sequence.
 
 <BR><VAR>See also <A href=exemple/Example3.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
@@ -121,22 +127,30 @@ module SALOMEDS
 /*!
     Removes a real number with a definite index
     from the sequence of real numbers stored in the Attribute.
+
+    \param index The index of the given real number
 */
     void      Remove(in long index);
 /*!
-    Substitutes a real number with a definite index for another real number.
+    Substitutes a given real number with a definite index for another real number.
+    \param index The index of the given real number.
+    \param value The value of another real number.
+
 <BR><VAR>See also <A href=exemple/Example3.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
     void      ChangeValue(in long index, in double value);
 /*!
-  Returns a real number with a definite index
+  Returns a given real number with a definite index
     in the sequence of real numbers stored in the Attribute.
+    \param index The index of the given real number.
+
 <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     double    Value(in short index);
 /*!
     Returns the length of the sequence of real numbers stored in the Attribute.
+
 <BR><VAR>See also <A href=exemple/Example3.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
@@ -151,7 +165,7 @@ module SALOMEDS
   interface AttributeSequenceOfInteger : GenericAttribute
   {
 /*!
-   Initialization of the attribute with initial data.
+   Initialisation of the attribute with initial data.
    \param other    Initially assigned sequence of integer numbers.
 */
     void      Assign (in LongSeq other);
@@ -170,22 +184,30 @@ module SALOMEDS
 /*!
     Removes an integer number with a definite index
     from the sequence of integer numbers stored in the Attribute.
+    \param index The index of the given integer number.
+
 <BR><VAR>See also <A href=exemple/Example3.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
     void      Remove(in long index);
 /*!
     Substitutes an integer number with a definite index for another integer number.
+    \param index The index of the given integer number.
+    \param value The value of another integer number.
+
 */
     void      ChangeValue(in long index, in long value);
 /*!
-   Returns an integer number with a definite index
+   Returns a given integer number with a definite index
     in the sequence of integer numbers stored in the Attribute.
+    \param index The index of the given integer number.
+
 <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     long      Value(in short index);
 /*!
     Returns the length of the sequence of integer numbers stored in the Attribute.
+
 <BR><VAR>See also <A href=exemple/Example3.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
@@ -204,11 +226,15 @@ module SALOMEDS
   {
 /*!
     Returns the value of this attribute
+
 <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     string Value();
 /*!
    Sets the value of this attribute
+
+   \param value This parameter defines the value of this attribute.
+
 <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     void   SetValue(in string value);
@@ -225,11 +251,14 @@ module SALOMEDS
   {
 /*!
     Returns the value of this attribute
+
 <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     string Value();
 /*!
    Sets the value of this attribute
+   \param value This string parameter defines the value of this attribute - a description of a %SObject.
+
 <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     void   SetValue(in string value);
@@ -245,11 +274,14 @@ module SALOMEDS
   {
 /*!
     Returns the value of this attribute
+
 <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     string Value();
 /*!
    Sets the value of this attribute
+   \param value This parameter defines the value of this attribute - IOR of a %SObject.
+
 <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     void   SetValue(in string value);
@@ -265,6 +297,49 @@ module SALOMEDS
   {
 /*!
     Returns the value of this attribute
+
+<BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
+*/
+    string Value();
+/*!
+   Sets the value of this attribute
+   \param value This parameter defines the value of this attribute.
+
+<BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
+*/
+    void   SetValue(in string value);
+  };
+
+  //==========================================================================
+/*! \brief External File definition
+
+     This attribute stores a path to an External File.
+*/
+  //==========================================================================
+  interface AttributeExternalFileDef: GenericAttribute
+  {
+/*!
+    Returns the value of this attribute
+<BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
+*/
+    string Value();
+/*!
+   Sets the value of this attribute
+<BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
+*/
+    void   SetValue(in string value);
+  };
+
+  //==========================================================================
+/*! \brief File Type definition
+
+     This attribute stores an external File Type (see ExternalFileDef attribute).
+*/
+  //==========================================================================
+  interface AttributeFileType: GenericAttribute
+  {
+/*!
+    Returns the value of this attribute
 <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     string Value();
@@ -283,20 +358,24 @@ module SALOMEDS
   //==========================================================================
 /*! \brief Drawable flag Attribute.
 
-   This is a presentation attribute necessary for display of the study tree in the browser.
-   The item associated to SObject is created/displayed if TRUE.
+   This is a presentation attribute necessary for display of a study tree in the browser.
+   The item associated to a %SObject is created/displayed if TRUE.
 */
   //==========================================================================
   interface AttributeDrawable : GenericAttribute
   {
 /*!
    Returns TRUE if the item is drawable (as it is by default) and FALSE if it isn't.
+
 <BR><VAR>See also <A href=exemple/Example8.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
     boolean IsDrawable();
 /*!
-Sets the items to be drawable if <VAR>value</VAR> is TRUE (the default) or not to be selectable if <VAR>value</VAR>is FALSE.
+Sets the item to be drawable.
+
+\param value If the value of this boolean parameter is TRUE (default) the item will be drawable.
+
 <BR><VAR>See also <A href=exemple/Example8.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
@@ -314,12 +393,17 @@ Sets the items to be drawable if <VAR>value</VAR> is TRUE (the default) or not t
   {
 /*!
    Returns TRUE if the item is selectable (as it is by default) and FALSE if it isn't.
+
+
 <BR><VAR>See also <A href=exemple/Example9.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
     boolean IsSelectable();
 /*!
-Sets the items to be selectable if <VAR>value</VAR> is TRUE (the default) or not to be selectable if <VAR>value</VAR>is FALSE.
+Sets the item to be selectable
+
+\param value If the value of this parameter is TRUE (the default) the item will be set as selectable.
+
 <BR><VAR>See also <A href=exemple/Example9.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
@@ -338,13 +422,15 @@ Sets the items to be selectable if <VAR>value</VAR> is TRUE (the default) or not
   {
 /*!
     Returns TRUE if this item is expandable even when it has no children.
+
 <BR><VAR>See also <A href=exemple/Example10.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
     boolean IsExpandable();
-/*!
-   Sets this item to be expandable even if it has no children if <VAR>value</VAR> is TRUE, and to be
-   expandable only if it has children if <VAR>value</VAR> is FALSE (the default).
+/*! Sets this item to be expandable even if it has no children.
+
+ \param value If the value of this boolean parameter is TRUE, this item will be set as expandable.
+
 <BR><VAR>See also <A href=exemple/Example10.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
@@ -363,13 +449,17 @@ Sets the items to be selectable if <VAR>value</VAR> is TRUE (the default) or not
   {
 /*!
     Returns TRUE if this item is open (its children are visible) and FALSE if it isn't.
+
 <BR><VAR>See also <A href=exemple/Example11.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
     boolean IsOpened();
 /*!
-   Sets this item to be open (its children are visible) if <VAR>value</VAR> is TRUE, and to be closed
-(its children are not visible) if <VAR>value</VAR> is FALSE.
+   Sets this item to be open (its children are visible)
+
+   \param value If the value of this boolean parameter is TRUE this item will be set as open,
+    and as closed if FALSE.
+
 <BR><VAR>See also <A href=exemple/Example11.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
@@ -385,12 +475,16 @@ Sets the items to be selectable if <VAR>value</VAR> is TRUE (the default) or not
   {
 /*!
    Returns the color of an item.
+
 <BR><VAR>See also <A href=exemple/Example12.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
     Color TextColor();
 /*!
    Sets the color of an item.
+
+   \param value This parameter defines the color of the item.
+
 <BR><VAR>See also <A href=exemple/Example12.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
@@ -407,12 +501,17 @@ Sets the items to be selectable if <VAR>value</VAR> is TRUE (the default) or not
   {
 /*!
    Returns the highlight color of an item.
+
+
+
 <BR><VAR>See also <A href=exemple/Example13.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
     Color TextHighlightColor();
 /*!
    Sets the highlight color of an item.
+   \param value This parameter defines the highlight color of the item.
+
 <BR><VAR>See also <A href=exemple/Example13.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
@@ -427,17 +526,20 @@ Sets the items to be selectable if <VAR>value</VAR> is TRUE (the default) or not
   interface AttributePixMap : GenericAttribute
   {
 /*!
-   Returns True if there is an icon before the name of the item.
+   Returns True if there is an icon before the name of the given item.
 */
     boolean HasPixMap();
 /*!
-   Returns the name of the icon.
+   Returns the name of the icon in the format of a string.
+
 <BR><VAR>See also <A href=exemple/Example14.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
     string  GetPixMap();
 /*!
    Sets the name of the icon.
+   \param value This string parameter defines the name of the icon.
+
 <BR><VAR>See also <A href=exemple/Example14.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
@@ -450,6 +552,7 @@ Sets the items to be selectable if <VAR>value</VAR> is TRUE (the default) or not
    A set of these attributes on the %SObjects of the %study forms an inner auxiliary
    tree whith its own structure and identifier. The quantity of such trees with different
    identifiers can be arbitrary.
+
 <BR><VAR>See also <A href=exemple/Example18.html> an example </A> of usage of the methods of this interface in batchmode of %SALOME application.</VAR>
 
 */
@@ -457,108 +560,112 @@ Sets the items to be selectable if <VAR>value</VAR> is TRUE (the default) or not
   interface AttributeTreeNode : GenericAttribute
   {
 /*!
-  Sets the father TreeNode to this TreeNode.
+  Assigns the father tree node to this tree node.
 */
     void              SetFather(in AttributeTreeNode value);
 /*!
-  Returns True if there is the father TreeNode of this TreeNode.
+  Returns True if there is a father tree node of this tree node.
 */
     boolean           HasFather();
 /*!
-  Returns the father Treenode of this TreeNode.
+  Returns the father tree node of this tree node.
 */
     AttributeTreeNode GetFather();
 /*!
-  Sets the previous brother TreeNode to this treeNode.
+  Assigns the previous brother tree node to the given tree node.
 */
     void              SetPrevious(in AttributeTreeNode value);
 /*!
-  Returns True if there is the previous brother TreeNode of this TreeNode.
+  Returns True if there is the previous brother tree node of this tree node.
 */
     boolean           HasPrevious();
 /*!
-  Returns the previous brother TreeNode of this TreeNode.
+  Returns the previous brother tree node of this tree node.
 */
     AttributeTreeNode GetPrevious();
 /*!
-  Sets the next brother TreeNode to this treeNode.
+  Sets the next brother tree node to this tree node.
 */
     void              SetNext(in AttributeTreeNode value);
 /*!
-  Returns True if there is the next brother TreeNode of this TreeNode.
+  Returns True if there is the next brother tree node of this tree node.
 */
     boolean           HasNext();
 /*!
-  Returns the previous brother TreeNode of this TreeNode.
+  Returns the previous brother tree node of this tree node.
 */
     AttributeTreeNode GetNext();
 /*!
-  Sets the first child TreeNode to this treeNode.
+  Sets the first child tree node to this tree node.
 */
     void              SetFirst(in AttributeTreeNode value);
 /*!
-  Returns True if there is the first child TreeNode of this TreeNode.
+  Returns True if there is the first child tree node of this tree node.
 */
     boolean           HasFirst();
 /*!
-  Returns the first child TreeNode of this TreeNode.
+  Returns the first child tree node of this tree node.
 */
     AttributeTreeNode GetFirst();
 /*!
-  Sets ID of the tree. TreeNodes of one tree have the same ID.
+  Sets ID of a tree.
+  \param value String parameter defining the ID of a tree.
+  \note <br>Tree nodes of one tree have the same ID.
 */
     void              SetTreeID(in string value);
 /*!
-  Gets ID of the tree.
+  Gets ID of a tree.
+  \return An ID of a tree in the format of a string.
 */
     string            GetTreeID();
 
 /*!
-   Adds a child TreeNode to the end of the list of children of this Treenode.
+   Adds a child tree node to the end of the list of children of this tree node.
 */
     void              Append(in AttributeTreeNode value);
 /*!
-   Adds a child TreeNode to the beginning of the list of children of this Treenode.
+   Adds a child tree node to the beginning of the list of children of this tree node.
 
 */
     void              Prepend(in AttributeTreeNode value);
 /*!
-   Adds a brother TreeNode before this Treenode.
-    In this case the both TreeNodes will belong to the same father.
+   Adds a brother tree node before this tree node.
+    In this case the both tree nodes will belong to the same father.
 */
     void              InsertBefore(in AttributeTreeNode value);
 /*!
-   Adds a brother TreeNode after this Treenode.
-    In this case the both TreeNodes will belong to the same father.
+   Adds a brother tree node after this tree node.
+    In this case the both tree nodes will belong to the same father.
 */
     void              InsertAfter(in AttributeTreeNode value);
 /*!
-   Deletes a TreeNode.
+   Deletes a tree node.
+
 <BR><VAR>See also <A href=exemple/Example3.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 
 */
     void              Remove();
 
 /*!
-   Returns  the  depth  of the TreeNode in the
-   structure, it means the  number of  fathers of the given TreeNode.
-   (i.e.: the depth of the root TreeNode is 0).
+   Returns  the  depth  of the tree node in the
+   structure, it means the  number of  fathers of the given tree node.
+   (i.e.: the depth of the root tree node is 0).
 */
     long              Depth();
 /*!
-    Returns True if it is a root TreeNode.
+    Returns True if it is a root tree node.
 */
     boolean           IsRoot();
 /*!
-    Returns True if this TreeNode is a descendant of the TreeNode.
+    Returns True if this tree node is a descendant of the tree node.
 */
     boolean           IsDescendant(in AttributeTreeNode value);
 /*!
-    Returns True if this TreeNode is the father of the TreeNode.
+    Returns True if this tree node is the father of the tree node.
 */
     boolean           IsFather(in AttributeTreeNode value);
 /*!
-    Returns True if this TreeNode is a child of the TreeNode.
+    Returns True if this tree node is a child of the tree node.
 */
     boolean           IsChild(in AttributeTreeNode value);
 /*!
@@ -576,11 +683,15 @@ Sets the items to be selectable if <VAR>value</VAR> is TRUE (the default) or not
   {
 /*!
    Returns the value of this attribute.
+
 <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     long   Value();
 /*!
    Sets the value of this attribute.
+
+   \param value This parameter defines the local ID which will be set.
+
 <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     void   SetValue(in long value);
@@ -596,11 +707,13 @@ Sets the items to be selectable if <VAR>value</VAR> is TRUE (the default) or not
   {
 /*!
    Returns the value of this attribute
+
 <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     string Value();
 /*!
    Sets the value of this attribute
+
 <BR><VAR>See also <A href=exemple/Example1.html> an example </A> of this method usage in batchmode of %SALOME application.</VAR>
 */
     void   SetValue(in string value);
@@ -625,7 +738,7 @@ Sets the items to be selectable if <VAR>value</VAR> is TRUE (the default) or not
 */
     void          Add(in SObject anObject);
 /*!
-    Returns the list of %SObjects which refer to this %SObject.
+    Returns a list of %SObjects which refer to this %SObject.
 */
     SALOMEDS::Study::ListOfSObject Get();
 /*!
@@ -641,6 +754,7 @@ Sets the items to be selectable if <VAR>value</VAR> is TRUE (the default) or not
 
    This attribute allows to store a table of integers (indexing from 1 like in CASCADE)
     and string titles of this table, of each row, of each column.
+
 <BR><VAR>See also <A href=exemple/Example21.html> an example </A> of usage of these methods in batchmode of %SALOME application.</VAR>
 
 */
@@ -718,24 +832,35 @@ Sets the items to be selectable if <VAR>value</VAR> is TRUE (the default) or not
     // operations with rows
 /*!
    Adds a row to the end of the table.
+   \param theData A sequence of long values which will be set as elements of the added row.
 */
     void AddRow(in LongSeq theData) raises(IncorrectArgumentLength);
 /*!
-   Sets the values of all elements of the row.
+   Sets the elements of a definite row.
+   \param theRow The number of the row.
+   \param theData A sequence of long values which will be set as elements of this row.
+
 */
     void SetRow(in long theRow, in LongSeq theData) raises(IncorrectArgumentLength, IncorrectIndex);
 /*!
-   Returns the row of the table.
+   Gets the row of the table.
+
+   \param theRow The number of the row.
+   \return A sequence of long values which are set as elements of this row.
 */
     LongSeq GetRow(in long theRow) raises(IncorrectIndex);
 
     // operations with columns
 /*!
    Adds a column to the end of the table.
+
+   \param theData A sequence of long values which will be set as elements of this column.
 */
     void AddColumn(in LongSeq theData) raises(IncorrectArgumentLength);
 /*!
    Sets the values of all elements of the column.
+
+  \param theData A sequence of long values which will be set as elements of this column.
 */
     void SetColumn(in long theColumn, in LongSeq theData) raises(IncorrectArgumentLength, IncorrectIndex);
 /*!
index 085bf919be17a3ae64e6d97d9d22fec5efb12ff1..ad9be3b06762bab1e8daa8ac0d13ed580da310e1 100644 (file)
@@ -25,7 +25,7 @@
 
 #ifndef _SALOME_COMPONENT_IDL_
 #define _SALOME_COMPONENT_IDL_
-/*!  \ingroup Kernel 
+/*!  
 
 This is a package of interfaces used for connecting new components to %SALOME application. It also contains a set of interfaces used
 for management of %MED component in %SALOME application.
@@ -37,12 +37,14 @@ module Engines
 /*! \brief Interface of the %Container
 
    This interface defines the process of loading and registration
-    of new components in SALOME application
+    of new components in %SALOME application
 */
   interface Container
   {
 /*!
     Initializes the %container with a definite name.
+    \param ContainerName Name of the container
+    \return an initialized container
 */
     Container start_impl( in string ContainerName ) ;
 
@@ -50,11 +52,13 @@ module Engines
     Loads into the container a new component, registers it and starts it's CORBA servant.
     \param nameToRegister     Name of the component which will be registered in Registry (or Name Service)
     \param componentName     Name of the constructed library of the %component
+    \return a loaded component
 */
     Component load_impl(in string nameToRegister, in string componentName);
 
 /*!
-       Stops the component servant, and deletes all related objects
+    Stops the component servant, and deletes all related objects
+    \param component_i     Component to be removed
 */
     void remove_impl(in Component component_i);
 
@@ -109,6 +113,8 @@ module Engines
     Container GetContainerRef() ;
 /*!
    This method is used by the %SUPERVISOR component. It sets the names of the graph and of the node.
+   \param aGraphName Name of graph
+   \param aNodeName Name of node
 */
     void Names( in string aGraphName , in string aNodeName ) ;
 /*!
index 6c559445b4fa1b8f375f05f260074a6184d37718..fd6a224c4a01dec3526638e87d3de1d6fab18a4d 100644 (file)
 //  $Header$
 
 /*! \file SALOME_Exception.idl This file contains the objects defining the main exception used
-in %SALOME application.
+in %SALOME application. The idl SALOME_Exception provides a generic CORBA exception for SALOME,
+ with an attribute that gives an exception type,a message, plus optional source file name and line number. 
+This idl is intended to serve for all user CORBA exceptions raised in SALOME code, as IDL specification 
+does not support exception inheritance. So, all the user CORBA exceptions from SALOME could be 
+handled in a single catch. 
+
 */ 
 #ifndef _SALOME_EXCEPTION_IDL_
 #define _SALOME_EXCEPTION_IDL_
 
 /*! 
-Module SALOME regroups all idl definitions for SALOME Kernel
+Module %SALOME regroups all idl definitions for %SALOME Kernel component
 */ 
 
 module SALOME
 {
 /*! 
-This enumeration contains the elements indicating the type of the exception.
+This enumeration contains the elements indicating the type of the exception 
+which can be raised during %SALOME session.
 */  
   enum ExceptionType
     { 
       COMM,             /*!< Communication problem */
       BAD_PARAM,        /*!< Bad User parameters */
-      INTERNAL_ERROR    /*!< SALOME Bug, irrecoverable */ 
+      INTERNAL_ERROR    /*!< Application level problem, irrecoverable */ 
     };
 /*! 
 This struct contains a set of fields defining the structure of the exception.
@@ -59,7 +65,7 @@ The main exception in %SALOME application.
 */
   exception SALOME_Exception
   {
-    ExceptionStruct details;
+    ExceptionStruct details; /*!<Structure of the exception.*/
   };
 
 };
diff --git a/idl/SALOME_GenericObj.idl b/idl/SALOME_GenericObj.idl
new file mode 100644 (file)
index 0000000..03d730a
--- /dev/null
@@ -0,0 +1,42 @@
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOME_Component.idl
+//  Author : Alexey Petrov, OPEN CASCADE
+//  $Header$
+
+#ifndef _SALOME_GENERICOBJ_IDL_
+#define _SALOME_GENERICOBJ_IDL_
+/*!  
+
+This is a package of interfaces used for providing of common bechavior 
+of SALOME transient CORBA objects in %SALOME application.
+*/
+module SALOME{
+  interface GenericObj{
+    /*! Increase the reference count (mark as used by another object).*/
+    void Register();
+    /*! Decrease the reference count (release by another object).*/
+    void Destroy();
+  };
+};
+
+#endif
index 431f61ef861330ce4d727e5a52d90faa75690e6e..227c6b7e0e77eb45b37f68cf5c8205d433ea0201 100644 (file)
   creation of the catalog of components in %SALOME application
 */
 
-/*! \ingroup Kernel 
+/*!  
 The main package of interfaces used for creation of the module catalog in %SALOME application.
+Module catalog allows to manage components of %SALOME application, to call specified in the
+xml files interfaces with the help of AComponent interface.
 */
 module SALOME_ModuleCatalog
 {
   // Type Definitions
 /*! 
-This enumeration contains a set of definitions of %SALOME modules.
+This enumeration contains a current set of definitions of the components integrated
+into %SALOME application.
 */
   enum ComponentType {  GEOM,  /*!<Module %GEOM */
                         MESH,  /*!<Module %MESH */
@@ -46,7 +49,7 @@ This enumeration contains a set of definitions of %SALOME modules.
                        OTHER   /*!<Any other type of module */
                      } ;
 /*! 
-This struct contains fields defining the parameters of the services.
+This struct contains fields defining the parameter of the service.
 */
 
   struct ServicesParameter
@@ -55,7 +58,12 @@ This struct contains fields defining the parameters of the services.
     string Parametername; /*!<Name of the parameter.*/
   } ;
 
+/*! 
+The list of the parameters of service.
+*/
+
   typedef sequence<ServicesParameter> ListOfServicesParameter;
+
 /*! 
 This struct contains fields completely defining each service.
 */
@@ -64,7 +72,7 @@ This struct contains fields completely defining each service.
   {
     string                  ServiceName; /*!<Name of the service.*/
     ListOfServicesParameter ServiceinParameter; /*!< List of input parameters of the services.*/
-    ListOfServicesParameter ServiceoutParameter; /*!< List of input parameters of the services.*/
+    ListOfServicesParameter ServiceoutParameter; /*!< List of output parameters of the services.*/
     boolean                 Servicebydefault; /*!<True if the service is taken with its defult fields.*/
   } ;
 /*! 
@@ -88,7 +96,7 @@ List of interface definitions.
 */
   typedef sequence<DefinitionInterface> ListOfDefInterface ;
 /*! 
-List of interfaces.
+List of names of interfaces.
 */
   typedef sequence<string> ListOfInterfaces ;
 /*! 
@@ -105,6 +113,7 @@ This struct contains GUI elements used for representation of the module in %IAPP
   struct IAPP_Affich
   {
     string modulename; /*!<Name of the module.*/
+    string moduleusername; /*!<UserName of the module.*/
     string moduleicone; /*!<Icone representing the module.*/
   };
 /*!
@@ -121,12 +130,16 @@ List of pair GUI elements (component name, component icone)
     string what ; /*!<Indicates if it's a %component, a %service or a % pathPrefix.*/
   } ;
 
+  /*!
+   This interface provides the common funcionality information of corresponding component.
+   Information is loaded from specific xml files.
+  */
   interface Acomponent
   {
     // GetInterfaceList : operation to get a list of the interfaces name of
     //                    a component
   /*!
-   Gets a list of names of interfaces of the component
+   Gets the list of names of interfaces of the component
     \return a list of interfaces of the component 
   */
     ListOfInterfaces GetInterfaceList() ;
@@ -144,7 +157,7 @@ List of pair GUI elements (component name, component icone)
     // GetServiceList : operation to get a list of the services name of
     //                  an interface of a component
  /*! 
-   Gets a list of names of services of a definite interface belonging to the component.
+   Gets the list of names of services of a definite interface belonging to the component.
    \note <BR>If the specified interface doesn't exist, Notfound exception is thrown.
    \param interfacename Name of the interface 
    \return List of services of the required interface
@@ -197,8 +210,13 @@ Sets/gets the name of the component
 */
     readonly attribute string componentname;
 
+/*!
+Sets/gets the user name of the component
+*/
+    readonly attribute string componentusername;
+
 /*! 
-Defines whether the component can be multistudy or not
+Defines whether the component is multistudy or not
 */
     readonly attribute boolean multistudy;
 
index d0c95e827f7968e4d0599c852eb289c0ad1e5665..f42ccde7ef4b37f1abcaab1db364ca19127109c2 100644 (file)
 //  $Header$
 
 #include "SALOME_Component.idl"
-/*! \defgroup Kernel SALOME KERNEL module
-*/
 
-/*!  \ingroup Kernel 
-   
+/*!   
   This package contains interfaces used for management of the session in %SALOME application.
 */
 module SALOME
@@ -38,7 +35,9 @@ module SALOME
    This enumeration contains values defining the state of the session
   
 */ 
-  enum SessionState {asleep, running} ;
+  enum SessionState {asleep, /*! Session is inactive */
+                    running /*! Session is running */
+  } ;
 
 /*! \brief %Session State and Statistics
 
@@ -83,7 +82,11 @@ module SALOME
    Launches GUI in the session
 */
     void GetInterface(); 
-    Engines::Component GetVisuGen();
+
+/*! 
+   Returns the Visu component
+*/
+    Engines::Component GetVisuComponent();
 
 /*! 
   Stops the %Session (It must be idle)
index 4ab6ecba518d03165873e72816b29b09f4c7da33..7b58330d50856e28562e8f9ed80dae72d6e6dda3 100644 (file)
Binary files a/resources/Application-About.png and b/resources/Application-About.png differ
index 8781eff05705ba42c2cb7c602dfef6a3438d1e0d..7be65180ada6ab17be0313beb31306bcecd57bf0 100644 (file)
Binary files a/resources/Application-Logo.png and b/resources/Application-Logo.png differ
index 5c3d74767f92ae66eff17e97c9f3f37f7287ad7c..7b58330d50856e28562e8f9ed80dae72d6e6dda3 100644 (file)
Binary files a/resources/Application-Splash.png and b/resources/Application-Splash.png differ
diff --git a/resources/CatalogModuleGeneral.xml b/resources/CatalogModuleGeneral.xml
deleted file mode 100644 (file)
index 440af52..0000000
+++ /dev/null
@@ -1,1843 +0,0 @@
-<?xml version='1.0' encoding='us-ascii' ?>
-<!-- XML component catalog -->
-<begin-catalog>
-
-<!-- Path prefix information -->
-
-<path-prefix-list>
-</path-prefix-list>
-
-<!-- Component list -->
-<component-list>
-       <component>
-               <!-- Component identification -->
-               <component-name>Salome</component-name>
-               <component-type>Other</component-type>
-               <component-author>NRI</component-author>
-               <component-version> 1.0</component-version>
-               <component-comment>GUI Neutral Context</component-comment>
-               <component-multistudy>1</component-multistudy>
-
-       <constraint>hostname = muna</constraint>
-       </component>
-       <component>
-               <!-- Component identification -->
-               <component-name>Geometry</component-name>
-               <component-type>Geom</component-type>
-               <component-author>NRI</component-author>
-               <component-version> 1.0</component-version>
-               <component-comment>Geom component - Open CASCADE</component-comment>
-               <component-multistudy>1</component-multistudy>
-               <component-icone>ModuleGeom.png</component-icone>
-
-               <!-- component interface list -->
-               <component-interface-list>
-                       <!-- component interface identification -->
-                       <component-interface-name>Geometry</component-interface-name>
-                       <component-interface-comment>No comment</component-interface-comment>
-
-               <!-- Component service list-->
-                       <component-service-list>
-                                <component-service>
-                                       <service-name>InitGeomEngine</service-name>
-                                       <service-author></service-author>
-                                       <service-version></service-version>
-                                       <service-comment></service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <inParameter-list>
-                                           <inParameter>
-                                                   <inParameter-type>long</inParameter-type>
-                                                   <inParameter-name>StudyID</inParameter-name>
-                                                   <inParameter-comment></inParameter-comment>
-                                           </inParameter>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                           <outParameter>
-                                                   <outParameter-type>Engines::GEOM_Gen</outParameter-type>
-                                                   <outParameter-name>geomEngine</outParameter-name>
-                                                   <outParameter-comment></outParameter-comment>
-                                           </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                    <component-service>
-                        <service-name>MakeAxisStruct</service-name>
-                        <service-author></service-author>
-                        <service-version></service-version>
-                        <service-comment></service-comment>
-                        <service-by-default>1</service-by-default>
-                        <inParameter-list>
-                            <inParameter>
-                                <inParameter-type>double</inParameter-type>
-                                <inParameter-name>x</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                            <inParameter>
-                                <inParameter-type>double</inParameter-type>
-                                <inParameter-name>y</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                            <inParameter>
-                                <inParameter-type>double</inParameter-type>
-                                <inParameter-name>z</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                            <inParameter>
-                                <inParameter-type>double</inParameter-type>
-                                <inParameter-name>vx</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                            <inParameter>
-                                <inParameter-type>double</inParameter-type>
-                                <inParameter-name>vy</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                            <inParameter>
-                                <inParameter-type>double</inParameter-type>
-                                <inParameter-name>vz</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                        </inParameter-list>
-                        <outParameter-list>
-                            <outParameter>
-                                <outParameter-type>AxisStruct</outParameter-type>
-                                <outParameter-name>axis</outParameter-name>
-                                <outParameter-comment></outParameter-comment>
-                            </outParameter>
-                       </outParameter-list>
-                    </component-service>
-                    <component-service>
-                        <service-name>MakePointStruct</service-name>
-                        <service-author></service-author>
-                        <service-version></service-version>
-                        <service-comment></service-comment>
-                        <service-by-default>1</service-by-default>
-                        <inParameter-list>
-                            <inParameter>
-                                <inParameter-type>double</inParameter-type>
-                                <inParameter-name>x</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                            <inParameter>
-                                <inParameter-type>double</inParameter-type>
-                                <inParameter-name>y</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                            <inParameter>
-                                <inParameter-type>double</inParameter-type>
-                                <inParameter-name>z</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                        </inParameter-list>
-                        <outParameter-list>
-                            <outParameter>
-                                <outParameter-type>PointStruct</outParameter-type>
-                                <outParameter-name>point</outParameter-name>
-                                <outParameter-comment></outParameter-comment>
-                            </outParameter>
-                       </outParameter-list>
-                    </component-service>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>MakeBox</service-name>
-                                       <service-author>NRI</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>test XML</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>x1</inParameter-name>
-                                                       <inParameter-comment>X coordinate</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>y1</inParameter-name>
-                                                       <inParameter-comment>Y coordinate</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>z1</inParameter-name>
-                                                       <inParameter-comment>Z coordinate</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>x2</inParameter-name>
-                                                       <inParameter-comment>X coordinate</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>y2</inParameter-name>
-                                                       <inParameter-comment>Y coordinate</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>z2</inParameter-name>
-                                                       <inParameter-comment>Z coordinate</inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                               <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>GEOM_Shape</outParameter-type>
-                                                       <outParameter-name>shape</outParameter-name>
-                                                       <outParameter-comment>boite</outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>MakeSphere</service-name>
-                                       <service-author>NRI</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>test XML</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>x1</inParameter-name>
-                                                       <inParameter-comment>X coordinate</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>y1</inParameter-name>
-                                                       <inParameter-comment>Y coordinate</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>z1</inParameter-name>
-                                                       <inParameter-comment>Z coordinate</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>radius</inParameter-name>
-                                                       <inParameter-comment>Sphere Radius</inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                               <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>GEOM_Shape</outParameter-type>
-                                                       <outParameter-name>shape</outParameter-name>
-                                                       <outParameter-comment>sphere</outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                                <component-service>
-                                        <!-- service-identification -->
-                                        <service-name>MakeTranslation</service-name>
-                                        <service-author>NRI</service-author>
-                                        <service-version>1.0</service-version>
-                                        <service-comment>test XML</service-comment>
-                                        <service-by-default>1</service-by-default>
-                                        <!-- service-connexion -->
-                                        <inParameter-list>
-                                                <inParameter>
-                                                        <inParameter-type>GEOM_Shape</inParameter-type>
-                                                        <inParameter-name>shape1</inParameter-name>
-                                                        <inParameter-comment>Shape</inParameter-comment>
-                                                </inParameter>
-                                                <inParameter>
-                                                        <inParameter-type>double</inParameter-type>
-                                                        <inParameter-name>x1</inParameter-name>
-                                                        <inParameter-comment>..</inParameter-comment>
-                                                </inParameter>
-                                                <inParameter>
-                                                        <inParameter-type>double</inParameter-type>
-                                                        <inParameter-name>y1</inParameter-name>
-                                                        <inParameter-comment>..</inParameter-comment>
-                                                </inParameter>
-                                                <inParameter>
-                                                        <inParameter-type>double</inParameter-type>
-                                                        <inParameter-name>z1</inParameter-name>
-                                                        <inParameter-comment>..</inParameter-comment>
-                                                </inParameter>
-                                        </inParameter-list>
-                                        <outParameter-list>
-                                                <outParameter>
-                                                        <outParameter-type>GEOM_Shape</outParameter-type>
-                                                        <outParameter-name>shape</outParameter-name>
-                                                        <outParameter-comment>Result</outParameter-comment>
-                                                </outParameter>
-                                        </outParameter-list>
-                                </component-service>
-                                <component-service>
-                                        <!-- service-identification -->
-                                        <service-name>MakeCopy</service-name>
-                                        <service-author>NRI</service-author>
-                                        <service-version>1.0</service-version>
-                                        <service-comment>test XML</service-comment>
-                                        <service-by-default>1</service-by-default>
-                                        <!-- service-connexion -->
-                                        <inParameter-list>
-                                                <inParameter>
-                                                        <inParameter-type>GEOM_Shape</inParameter-type>
-                                                        <inParameter-name>shape1</inParameter-name>
-                                                        <inParameter-comment>Shape</inParameter-comment>
-                                                </inParameter>
-                                        </inParameter-list>
-                                        <outParameter-list>
-                                                <outParameter>
-                                                        <outParameter-type>GEOM_Shape</outParameter-type>
-                                                        <outParameter-name>shape</outParameter-name>
-                                                        <outParameter-comment>Result</outParameter-comment>
-                                                </outParameter>
-                                        </outParameter-list>
-                                </component-service>
-                                <component-service>
-                                        <!-- service-identification -->
-                                        <service-name>MakeBoolean</service-name>
-                                        <service-author>NRI</service-author>
-                                        <service-version>1.0</service-version>
-                                        <service-comment>test XML</service-comment>
-                                        <service-by-default>1</service-by-default>
-                                        <!-- service-connexion -->
-                                        <inParameter-list>
-                                                <inParameter>
-                                                        <inParameter-type>GEOM_Shape</inParameter-type>
-                                                        <inParameter-name>shape1</inParameter-name>
-                                                        <inParameter-comment>Shape</inParameter-comment>
-                                                </inParameter>
-                                                <inParameter>
-                                                        <inParameter-type>GEOM_Shape</inParameter-type>
-                                                        <inParameter-name>shape2</inParameter-name>
-                                                        <inParameter-comment>Tools</inParameter-comment>
-                                                </inParameter>
-                                                <inParameter>
-                                                        <inParameter-type>long</inParameter-type>
-                                                        <inParameter-name>operation</inParameter-name>
-                                                        <inParameter-comment>Operation Type</inParameter-comment>
-                                                </inParameter>
-                                        </inParameter-list>
-                                        <outParameter-list>
-                                                <outParameter>
-                                                        <outParameter-type>GEOM_Shape</outParameter-type>
-                                                        <outParameter-name>shape</outParameter-name>
-                                                        <outParameter-comment>Result</outParameter-comment>
-                                                </outParameter>
-                                        </outParameter-list>
-                                </component-service>
-                                <component-service>
-                                        <!-- service-identification -->
-                                        <service-name>MakeFuse</service-name>
-                                        <service-author>NRI</service-author>
-                                        <service-version>1.0</service-version>
-                                        <service-comment>test XML</service-comment>
-                                        <service-by-default>1</service-by-default>
-                                        <!-- service-connexion -->
-                                        <inParameter-list>
-                                                <inParameter>
-                                                        <inParameter-type>GEOM_Shape</inParameter-type>
-                                                        <inParameter-name>shape1</inParameter-name>
-                                                        <inParameter-comment>Shape</inParameter-comment>
-                                                </inParameter>
-                                                <inParameter>
-                                                        <inParameter-type>GEOM_Shape</inParameter-type>
-                                                        <inParameter-name>shape2</inParameter-name>
-                                                        <inParameter-comment>Tools</inParameter-comment>
-                                                </inParameter>
-                                        </inParameter-list>
-                                        <outParameter-list>
-                                                <outParameter>
-                                                        <outParameter-type>GEOM_Shape</outParameter-type>
-                                                        <outParameter-name>shape</outParameter-name>
-                                                        <outParameter-comment>Result</outParameter-comment>
-                                                </outParameter>
-                                        </outParameter-list>
-                                </component-service>
-                       </component-service-list>
-               </component-interface-list>
-       <constraint>hostname = localhost</constraint>
-       </component>
-       <component>
-               <!-- Component identification -->
-               <component-name>SMESH</component-name>
-               <component-type>Mesh</component-type>
-               <component-author>NRI</component-author>
-               <component-version> 1.0</component-version>
-               <component-comment>New Mesh component</component-comment>
-               <component-multistudy>1</component-multistudy>
-               <component-icone>ModuleMesh.png</component-icone>
-
-            <component-interface-list>
-                <component-interface-name>SMESH</component-interface-name>
-                <component-interface-comment></component-interface-comment>
-                <component-service-list>
-                    <component-service>
-                        <service-name>CreateHypothesis</service-name>
-                        <service-author></service-author>
-                        <service-version></service-version>
-                        <service-comment></service-comment>
-                        <service-by-default>1</service-by-default>
-                        <inParameter-list>
-                            <inParameter>
-                                <inParameter-type>string</inParameter-type>
-                                <inParameter-name>anHyp</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                            <inParameter>
-                                <inParameter-type>long</inParameter-type>
-                                <inParameter-name>studyId</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                        </inParameter-list>
-                        <outParameter-list>
-                           <outParameter>
-                                <outParameter-type>SMESH_Hypothesis</outParameter-type>
-                                <outParameter-name>aHyp</outParameter-name>
-                                <outParameter-comment></outParameter-comment>
-                           </outParameter>
-                       </outParameter-list>
-                    </component-service>
-                    <component-service>
-                        <service-name>Init</service-name>
-                        <service-author></service-author>
-                        <service-version></service-version>
-                        <service-comment></service-comment>
-                        <service-by-default>1</service-by-default>
-                        <inParameter-list>
-                            <inParameter>
-                                <inParameter-type>GEOM_Gen</inParameter-type>
-                                <inParameter-name>geomEngine</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                            <inParameter>
-                                <inParameter-type>long</inParameter-type>
-                                <inParameter-name>studyId</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                            <inParameter>
-                                <inParameter-type>GEOM_Shape</inParameter-type>
-                                <inParameter-name>aShape</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                        </inParameter-list>
-                        <outParameter-list>
-                           <outParameter>
-                               <outParameter-type>SMESH_Mesh</outParameter-type>
-                               <outParameter-name>aMesh</outParameter-name>
-                               <outParameter-comment></outParameter-comment>
-                           </outParameter>
-                       </outParameter-list>
-                    </component-service>
-                    <component-service>
-                        <service-name>Compute</service-name>
-                        <service-author></service-author>
-                        <service-version></service-version>
-                        <service-comment></service-comment>
-                        <service-by-default>1</service-by-default>
-                        <inParameter-list>
-                            <inParameter>
-                                <inParameter-type>SMESH_Mesh</inParameter-type>
-                                <inParameter-name>aMesh</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                            <inParameter>
-                                <inParameter-type>GEOM_Shape</inParameter-type>
-                                <inParameter-name>aSubShape</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                        </inParameter-list>
-                        <outParameter-list>
-                            <outParameter>
-                                <outParameter-type>boolean</outParameter-type>
-                                <outParameter-name>res</outParameter-name>
-                                <outParameter-comment>Result</outParameter-comment>
-                            </outParameter>
-                       </outParameter-list>
-                    </component-service>
-                    <component-service>
-                        <service-name>IsReadyToCompute</service-name>
-                        <service-author></service-author>
-                        <service-version></service-version>
-                        <service-comment></service-comment>
-                        <service-by-default>1</service-by-default>
-                        <inParameter-list>
-                            <inParameter>
-                                <inParameter-type>SMESH_Mesh</inParameter-type>
-                                <inParameter-name>aMesh</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                            <inParameter>
-                                <inParameter-type>GEOM_Shape</inParameter-type>
-                                <inParameter-name>aSubShape</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                        </inParameter-list>
-                        <outParameter-list>
-                                <outParameter-type>boolean</outParameter-type>
-                                <outParameter-name>res</outParameter-name>
-                                <outParameter-comment>Result</outParameter-comment>
-                       </outParameter-list>
-                    </component-service>
-                </component-service-list>
-                <component-interface-name>SMESH_Mesh</component-interface-name>
-                <component-interface-comment></component-interface-comment>
-                <component-service-list>
-                    <component-service>
-                        <service-name>AddHypothesis</service-name>
-                        <service-author></service-author>
-                        <service-version></service-version>
-                        <service-comment></service-comment>
-                        <service-by-default>1</service-by-default>
-                        <inParameter-list>
-                            <inParameter>
-                                <inParameter-type>GEOM_Shape</inParameter-type>
-                                <inParameter-name>aSubShape</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                            <inParameter>
-                                <inParameter-type>SMESH_Hypothesis</inParameter-type>
-                                <inParameter-name>aHyp</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                        </inParameter-list>
-                        <outParameter-list>
-                            <outParameter>
-                                <outParameter-type>boolean</outParameter-type>
-                                <outParameter-name>res</outParameter-name>
-                                <outParameter-comment>Result</outParameter-comment>
-                            </outParameter>
-                       </outParameter-list>
-                    </component-service>
-                </component-service-list>
-            </component-interface-list>
-       <constraint>hostname = localhost</constraint>
-       </component>
-       <component>
-               <!-- Component identification -->
-               <component-name>Visu</component-name>
-               <component-type>VISU</component-type>
-               <component-author>NRI</component-author>
-               <component-version> 1.0</component-version>
-               <component-comment>Visu component - Maquette septembre</component-comment>
-               <component-multistudy>1</component-multistudy>
-               <component-icone>ModuleVisu.png</component-icone>
-       <constraint>hostname = localhost</constraint>
-       </component>
-       <component>
-               <!-- Component identification -->
-               <component-name>Supervision</component-name>
-               <component-type>Supervision</component-type>
-               <component-author>ARS</component-author>
-               <component-version> 1.0</component-version>
-               <component-comment>Supervision control GUI</component-comment>
-               <component-multistudy>1</component-multistudy>
-               <component-icone>ModuleSupervision.png</component-icone>
-                <constraint>hostname = localhost</constraint>
-               <component-interface-list>
-                       <component-interface-name>SuperG</component-interface-name>
-                       <component-interface-comment>SupervisionEngine</component-interface-comment>
-               </component-interface-list>
-       </component>
-       <component>
-               <!-- Component identification -->
-               <component-name>Med</component-name>
-               <component-type>Mesh</component-type>
-               <component-author>Patrick GOLDBRONN</component-author>
-               <component-version> 1.0</component-version>
-               <component-comment>MED memoire</component-comment>
-               <component-multistudy>1</component-multistudy>
-               <component-icone>ModuleMed.png</component-icone>
-
-               <!-- component interface list -->
-               <component-interface-list>
-                       <!-- component interface identification -->
-                       <component-interface-name>MED</component-interface-name>
-                       <component-interface-comment>No comment</component-interface-comment>
-
-                       <!-- Component service list-->
-                       <component-service-list>
-                       </component-service-list>
-               </component-interface-list>
-        <!-- <constraint>hostname = localhost</constraint> -->
-        </component>
-
-       <component>
-               <!-- Component identification -->
-               <component-name>AddComponent</component-name>
-               <component-type>SuperVisionTest</component-type>
-               <component-author>MTJ</component-author>
-               <component-version> 1.0</component-version>
-               <component-comment>Test SuperVision SALOME/src/SALOME_SWIG/supervisionexample[1].py </component-comment>
-               <component-multistudy>0</component-multistudy>
-
-               <component-interface-list>
-                       <component-interface-name>AddComponent</component-interface-name>
-                       <component-interface-comment> + ... </component-interface-comment>
-
-                       <component-service-list>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>Addition</service-name>
-                                       <service-author>MTJ</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>Floating add</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                       </inParameter-list>
-                                               <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>Adder</outParameter-type>
-                                                       <outParameter-name>Adder</outParameter-name>
-                                                       <outParameter-comment>Adder object</outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>Add</service-name>
-                                       <service-author>MTJ</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>Floating add</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>x</inParameter-name>
-                                                       <inParameter-comment>First number</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>y</inParameter-name>
-                                                       <inParameter-comment>Second number</inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                               <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>double</outParameter-type>
-                                                       <outParameter-name>FuncValue</outParameter-name>
-                                                       <outParameter-comment>Substract result</outParameter-comment>
-                                               </outParameter>
-                                               <outParameter>
-                                                       <outParameter-type>double</outParameter-type>
-                                                       <outParameter-name>z</outParameter-name>
-                                                       <outParameter-comment>Addition result</outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                       </component-service-list>
-                       <component-interface-name>Adder</component-interface-name>
-                       <component-interface-comment> + ... </component-interface-comment>
-
-                       <component-service-list>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>Add</service-name>
-                                       <service-author>MTJ</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>Floating add</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>Adder</inParameter-type>
-                                                       <inParameter-name>Adder</inParameter-name>
-                                                       <inParameter-comment>Adder Object</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>x</inParameter-name>
-                                                       <inParameter-comment>First number</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>y</inParameter-name>
-                                                       <inParameter-comment>Second number</inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                               <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>double</outParameter-type>
-                                                       <outParameter-name>FuncValue</outParameter-name>
-                                                       <outParameter-comment>Substract result</outParameter-comment>
-                                               </outParameter>
-                                               <outParameter>
-                                                       <outParameter-type>double</outParameter-type>
-                                                       <outParameter-name>z</outParameter-name>
-                                                       <outParameter-comment>Addition result</outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>AddAndCompare</service-name>
-                                       <service-author>MTJ</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>Floating add</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>Adder</inParameter-type>
-                                                       <inParameter-name>Adder</inParameter-name>
-                                                       <inParameter-comment>Adder Object</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>x</inParameter-name>
-                                                       <inParameter-comment>First number</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>y</inParameter-name>
-                                                       <inParameter-comment>Second number</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>Adder</inParameter-type>
-                                                       <inParameter-name>anOtherAdder</inParameter-name>
-                                                       <inParameter-comment>Adder Object</inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                               <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>double</outParameter-type>
-                                                       <outParameter-name>FuncValue</outParameter-name>
-                                                       <outParameter-comment>Substract result</outParameter-comment>
-                                               </outParameter>
-                                               <outParameter>
-                                                       <outParameter-type>double</outParameter-type>
-                                                       <outParameter-name>z</outParameter-name>
-                                                       <outParameter-comment>Addition result</outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>SetLastResult</service-name>
-                                       <service-author>MTJ</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>set the last result field</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>Adder</inParameter-type>
-                                                       <inParameter-name>Adder</inParameter-name>
-                                                       <inParameter-comment>Adder Object</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>z</inParameter-name>
-                                                       <inParameter-comment>number</inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                               <outParameter-list>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>LastResult</service-name>
-                                       <service-author>MTJ</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>get the last result field</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>Adder</inParameter-type>
-                                                       <inParameter-name>Adder</inParameter-name>
-                                                       <inParameter-comment>Adder Object</inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                               <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>double</outParameter-type>
-                                                       <outParameter-name>z</outParameter-name>
-                                                       <outParameter-comment>number</outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                       </component-service-list>
-               </component-interface-list>
-       </component>
-
-       <component>
-               <!-- Component identification -->
-               <component-name>SubComponent</component-name>
-               <component-type>SuperVisionTest</component-type>
-               <component-author>MTJ</component-author>
-               <component-version> 1.0</component-version>
-               <component-comment>Test SuperVision SALOME/src/SALOME_SWIG/supervisionexample[1].py </component-comment>
-               <component-multistudy>0</component-multistudy>
-
-               <component-interface-list>
-                       <component-interface-name>SubComponent</component-interface-name>
-                       <component-interface-comment> - ... </component-interface-comment>
-
-                       <component-service-list>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>Sub</service-name>
-                                       <service-author>MTJ</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>Floating substract</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>x</inParameter-name>
-                                                       <inParameter-comment>First number</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>y</inParameter-name>
-                                                       <inParameter-comment>Second number</inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                               <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>double</outParameter-type>
-                                                       <outParameter-name>z</outParameter-name>
-                                                       <outParameter-comment>Substraction result</outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                       </component-service-list>
-               </component-interface-list>
-       </component>
-
-       <component>
-               <!-- Component identification -->
-               <component-name>MulComponent</component-name>
-               <component-type>SuperVisionTest</component-type>
-               <component-author>MTJ</component-author>
-               <component-version> 1.0</component-version>
-               <component-comment>Test SuperVision SALOME/src/SALOME_SWIG/supervisionexample[1].py </component-comment>
-               <component-multistudy>0</component-multistudy>
-
-               <component-interface-list>
-                       <component-interface-name>MulComponent</component-interface-name>
-                       <component-interface-comment> * ... </component-interface-comment>
-
-                       <component-service-list>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>Mul</service-name>
-                                       <service-author>MTJ</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>Float multiply</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>x</inParameter-name>
-                                                       <inParameter-comment>First number</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>y</inParameter-name>
-                                                       <inParameter-comment>Second number</inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                               <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>double</outParameter-type>
-                                                       <outParameter-name>z</outParameter-name>
-                                                       <outParameter-comment>Multiplication result</outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                       </component-service-list>
-               </component-interface-list>
-       </component>
-
-       <component>
-               <!-- Component identification -->
-               <component-name>DivComponent</component-name>
-               <component-type>SuperVisionTest</component-type>
-               <component-author>MTJ</component-author>
-               <component-version> 1.0</component-version>
-               <component-comment>Test SuperVision SALOME/src/SALOME_SWIG/supervisionexample[1].py </component-comment>
-               <component-multistudy>0</component-multistudy>
-
-               <component-interface-list>
-                       <component-interface-name>DivComponent</component-interface-name>
-                       <component-interface-comment> / ... </component-interface-comment>
-
-                       <component-service-list>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>Div</service-name>
-                                       <service-author>MTJ</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>Floating divide</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>x</inParameter-name>
-                                                       <inParameter-comment>First number</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>y</inParameter-name>
-                                                       <inParameter-comment>Second number</inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                               <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>double</outParameter-type>
-                                                       <outParameter-name>z</outParameter-name>
-                                                       <outParameter-comment>Division result</outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                       </component-service-list>
-               </component-interface-list>
-       </component>
-
-       <component>
-               <component-name>SyrComponent</component-name>
-               <component-type>SuperVisionTest</component-type>
-               <component-author>JR</component-author>
-               <component-version></component-version>
-               <component-comment>SuperVisionTest</component-comment>
-               <component-multistudy>1</component-multistudy>
-               <component-icone></component-icone>
-               <constraint></constraint>
-               <component-interface-list>
-                       <component-interface-name>SyrComponent</component-interface-name>
-                       <component-interface-comment></component-interface-comment>
-                       <component-service-list>
-                               <component-service>
-                                       <service-name>C_ISEVEN</service-name>
-                                       <service-author></service-author>
-                                       <service-version></service-version>
-                                       <service-comment></service-comment>
-                                       <service-by-default>0</service-by-default>
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>long</inParameter-type>
-                                                       <inParameter-name>anInteger</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>long</outParameter-type>
-                                                       <outParameter-name>BoolEven</outParameter-name>
-                                                       <outParameter-comment></outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <service-name>C_ISONE</service-name>
-                                       <service-author></service-author>
-                                       <service-version></service-version>
-                                       <service-comment></service-comment>
-                                       <service-by-default>0</service-by-default>
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>long</inParameter-type>
-                                                       <inParameter-name>anInteger</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>long</outParameter-type>
-                                                       <outParameter-name>BoolOne</outParameter-name>
-                                                       <outParameter-comment></outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <service-name>C_M3</service-name>
-                                       <service-author></service-author>
-                                       <service-version></service-version>
-                                       <service-comment></service-comment>
-                                       <service-by-default>0</service-by-default>
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>long</inParameter-type>
-                                                       <inParameter-name>anOddInteger</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>long</outParameter-type>
-                                                       <outParameter-name>anInteger</outParameter-name>
-                                                       <outParameter-comment></outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <service-name>C_M3P1</service-name>
-                                       <service-author></service-author>
-                                       <service-version></service-version>
-                                       <service-comment></service-comment>
-                                       <service-by-default>0</service-by-default>
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>long</inParameter-type>
-                                                       <inParameter-name>anOddInteger</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>long</outParameter-type>
-                                                       <outParameter-name>anEvenInteger</outParameter-name>
-                                                       <outParameter-comment></outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <service-name>C_DIV2</service-name>
-                                       <service-author></service-author>
-                                       <service-version></service-version>
-                                       <service-comment></service-comment>
-                                       <service-by-default>0</service-by-default>
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>long</inParameter-type>
-                                                       <inParameter-name>anEvenInteger</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>long</outParameter-type>
-                                                       <outParameter-name>anInteger</outParameter-name>
-                                                       <outParameter-comment></outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <service-name>C_INCR</service-name>
-                                       <service-author></service-author>
-                                       <service-version></service-version>
-                                       <service-comment></service-comment>
-                                       <service-by-default>0</service-by-default>
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>long</inParameter-type>
-                                                       <inParameter-name>aCount</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>long</outParameter-type>
-                                                       <outParameter-name>aNewCount</outParameter-name>
-                                                       <outParameter-comment></outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <service-name>C_MIN</service-name>
-                                       <service-author></service-author>
-                                       <service-version></service-version>
-                                       <service-comment></service-comment>
-                                       <service-by-default>0</service-by-default>
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>long</inParameter-type>
-                                                       <inParameter-name>aMinVal</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>long</inParameter-type>
-                                                       <inParameter-name>anInteger</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>long</outParameter-type>
-                                                       <outParameter-name>aNewMinVal</outParameter-name>
-                                                       <outParameter-comment></outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <service-name>C_MAX</service-name>
-                                       <service-author></service-author>
-                                       <service-version></service-version>
-                                       <service-comment></service-comment>
-                                       <service-by-default>0</service-by-default>
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>long</inParameter-type>
-                                                       <inParameter-name>aMaxVal</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>long</inParameter-type>
-                                                       <inParameter-name>anInteger</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>long</outParameter-type>
-                                                       <outParameter-name>aNewMaxVal</outParameter-name>
-                                                       <outParameter-comment></outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <service-name>C_LISTOFSYR</service-name>
-                                       <service-author></service-author>
-                                       <service-version></service-version>
-                                       <service-comment></service-comment>
-                                       <service-by-default>0</service-by-default>
-                                       <inParameter-list>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>ListOfSyr</outParameter-type>
-                                                       <outParameter-name>aListOfSyr</outParameter-name>
-                                                       <outParameter-comment></outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <service-name>C_AVERAGE</service-name>
-                                       <service-author></service-author>
-                                       <service-version></service-version>
-                                       <service-comment></service-comment>
-                                       <service-by-default>0</service-by-default>
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>ListOfSyr</inParameter-type>
-                                                       <inParameter-name>aListOfSyr</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>long</inParameter-type>
-                                                       <inParameter-name>anInteger</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>long</inParameter-type>
-                                                       <inParameter-name>aCount</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>ListOfSyr</outParameter-type>
-                                                       <outParameter-name>aNewListOfSyr</outParameter-name>
-                                                       <outParameter-comment></outParameter-comment>
-                                               </outParameter>
-                                               <outParameter>
-                                                       <outParameter-type>double</outParameter-type>
-                                                       <outParameter-name>anAverage</outParameter-name>
-                                                       <outParameter-comment></outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <service-name>Init</service-name>
-                                       <service-author></service-author>
-                                       <service-version></service-version>
-                                       <service-comment></service-comment>
-                                       <service-by-default>0</service-by-default>
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>long</inParameter-type>
-                                                       <inParameter-name>anOddInteger</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>Syr</outParameter-type>
-                                                       <outParameter-name>aSyracuse</outParameter-name>
-                                                       <outParameter-comment></outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                       </component-service-list>
-                       <component-interface-name>Syr</component-interface-name>
-                       <component-interface-comment></component-interface-comment>
-                       <component-service-list>
-                               <component-service>
-                                       <service-name>Count</service-name>
-                                       <service-author></service-author>
-                                       <service-version></service-version>
-                                       <service-comment></service-comment>
-                                       <service-by-default>0</service-by-default>
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>Syr</inParameter-type>
-                                                       <inParameter-name>aSyracuse</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>long</outParameter-type>
-                                                       <outParameter-name>aCount</outParameter-name>
-                                                       <outParameter-comment></outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <service-name>Current</service-name>
-                                       <service-author></service-author>
-                                       <service-version></service-version>
-                                       <service-comment></service-comment>
-                                       <service-by-default>0</service-by-default>
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>Syr</inParameter-type>
-                                                       <inParameter-name>aSyracuse</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>long</outParameter-type>
-                                                       <outParameter-name>aCurrent</outParameter-name>
-                                                       <outParameter-comment></outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <service-name>IsEven</service-name>
-                                       <service-author></service-author>
-                                       <service-version></service-version>
-                                       <service-comment></service-comment>
-                                       <service-by-default>0</service-by-default>
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>Syr</inParameter-type>
-                                                       <inParameter-name>aSyracuse</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>long</outParameter-type>
-                                                       <outParameter-name>BoolEven</outParameter-name>
-                                                       <outParameter-comment></outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <service-name>IsOne</service-name>
-                                       <service-author></service-author>
-                                       <service-version></service-version>
-                                       <service-comment></service-comment>
-                                       <service-by-default>0</service-by-default>
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>Syr</inParameter-type>
-                                                       <inParameter-name>aSyracuse</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>long</outParameter-type>
-                                                       <outParameter-name>BoolOne</outParameter-name>
-                                                       <outParameter-comment></outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <service-name>M3p1</service-name>
-                                       <service-author></service-author>
-                                       <service-version></service-version>
-                                       <service-comment></service-comment>
-                                       <service-by-default>0</service-by-default>
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>Syr</inParameter-type>
-                                                       <inParameter-name>aSyracuse</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <service-name>Div2</service-name>
-                                       <service-author></service-author>
-                                       <service-version></service-version>
-                                       <service-comment></service-comment>
-                                       <service-by-default>0</service-by-default>
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>Syr</inParameter-type>
-                                                       <inParameter-name>aSyracuse</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                       </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <service-name>Incr</service-name>
-                                       <service-author></service-author>
-                                       <service-version></service-version>
-                                       <service-comment></service-comment>
-                                       <service-by-default>0</service-by-default>
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>Syr</inParameter-type>
-                                                       <inParameter-name>aSyracuse</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                       </outParameter-list>
-                               </component-service>
-                       </component-service-list>
-               </component-interface-list>
-       </component>
-
-       <component>
-                       <!-- Component identification -->
-               <component-name>FactorialComponent</component-name>
-               <component-type>SuperVisionTest</component-type>
-               <component-author>Malvagi, Tajchman</component-author>
-               <component-version> 1.0</component-version>
-               <component-comment>Factorial</component-comment>
-               <component-multistudy>0</component-multistudy>
-               <component-icone></component-icone>
-               <component-interface-list>
-                       <component-interface-name>FactorialComponent</component-interface-name>
-                       <component-interface-comment>No comment</component-interface-comment>
-
-                       <component-service-list>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>eval</service-name>
-                                       <service-author>MT-FM</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>Factorial</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>long</inParameter-type>
-                                                       <inParameter-name>n</inParameter-name>
-                                                       <inParameter-comment></inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                       <outParameter-list>
-                                               <outParameter>
-                                                       <outParameter-type>long</outParameter-type>
-                                                       <outParameter-name>f</outParameter-name>
-                                                       <outParameter-comment>result</outParameter-comment>
-                                               </outParameter>
-                                       </outParameter-list>
-                               </component-service>
-                       </component-service-list>
-               </component-interface-list>
-       </component>
-
-        <component>
-            <component-name>SyrControlComponent</component-name>
-            <component-type>SuperVisionTest</component-type>
-            <component-author>JR</component-author>
-            <component-version></component-version>
-            <component-comment>SuperVisionTest</component-comment>
-            <component-multistudy>1</component-multistudy>
-            <component-icone></component-icone>
-            <constraint></constraint>
-            <component-interface-list>
-                <component-interface-name>SyrControlComponent</component-interface-name>
-                <component-interface-comment></component-interface-comment>
-                <component-service-list>
-                    <component-service>
-                        <service-name>L_OneEven</service-name>
-                        <service-author></service-author>
-                        <service-version></service-version>
-                        <service-comment></service-comment>
-                        <service-by-default>0</service-by-default>
-                        <inParameter-list>
-                            <inParameter>
-                                <inParameter-type>long</inParameter-type>
-                                <inParameter-name>ValOne</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                            <inParameter>
-                                <inParameter-type>long</inParameter-type>
-                                <inParameter-name>ValEven</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                        </inParameter-list>
-                        <outParameter-list>
-                            <outParameter>
-                                <outParameter-type>long</outParameter-type>
-                                <outParameter-name>Finished</outParameter-name>
-                                <outParameter-comment></outParameter-comment>
-                            </outParameter>
-                            <outParameter>
-                                <outParameter-type>long</outParameter-type>
-                                <outParameter-name>Incr</outParameter-name>
-                                <outParameter-comment></outParameter-comment>
-                            </outParameter>
-                            <outParameter>
-                                <outParameter-type>long</outParameter-type>
-                                <outParameter-name>Even</outParameter-name>
-                                <outParameter-comment></outParameter-comment>
-                            </outParameter>
-                            <outParameter>
-                                <outParameter-type>long</outParameter-type>
-                                <outParameter-name>Odd</outParameter-name>
-                                <outParameter-comment></outParameter-comment>
-                            </outParameter>
-                        </outParameter-list>
-                    </component-service>
-                    <component-service>
-                        <service-name>C_NotOneIsEven</service-name>
-                        <service-author></service-author>
-                        <service-version></service-version>
-                        <service-comment></service-comment>
-                        <service-by-default>0</service-by-default>
-                        <inParameter-list></inParameter-list>
-                        <outParameter-list>
-                            <outParameter>
-                                <outParameter-type>long</outParameter-type>
-                                <outParameter-name>ValOne</outParameter-name>
-                                <outParameter-comment></outParameter-comment>
-                            </outParameter>
-                            <outParameter>
-                                <outParameter-type>long</outParameter-type>
-                                <outParameter-name>ValEven</outParameter-name>
-                                <outParameter-comment></outParameter-comment>
-                            </outParameter>
-                        </outParameter-list>
-                    </component-service>
-                    <component-service>
-                        <service-name>LOOPN</service-name>
-                        <service-author></service-author>
-                        <service-version></service-version>
-                        <service-comment></service-comment>
-                        <service-by-default>0</service-by-default>
-                        <inParameter-list>
-                            <inParameter>
-                                <inParameter-type>long</inParameter-type>
-                                <inParameter-name>InLoop</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                            <inParameter>
-                                <inParameter-type>long</inParameter-type>
-                                <inParameter-name>NN</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                            <inParameter>
-                                <inParameter-type>long</inParameter-type>
-                                <inParameter-name>KK</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                            <inParameter>
-                                <inParameter-type>long</inParameter-type>
-                                <inParameter-name>min</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                            <inParameter>
-                                <inParameter-type>long</inParameter-type>
-                                <inParameter-name>max</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                        </inParameter-list>
-                        <outParameter-list>
-                            <outParameter>
-                                <outParameter-type>long</outParameter-type>
-                                <outParameter-name>OutLoop</outParameter-name>
-                                <outParameter-comment></outParameter-comment>
-                            </outParameter>
-                            <outParameter>
-                                <outParameter-type>long</outParameter-type>
-                                <outParameter-name>N</outParameter-name>
-                                <outParameter-comment></outParameter-comment>
-                            </outParameter>
-                            <outParameter>
-                                <outParameter-type>long</outParameter-type>
-                                <outParameter-name>K</outParameter-name>
-                                <outParameter-comment></outParameter-comment>
-                            </outParameter>
-                        </outParameter-list>
-                    </component-service>
-                    <component-service>
-                        <service-name>WHILENOTONE</service-name>
-                        <service-author></service-author>
-                        <service-version></service-version>
-                        <service-comment></service-comment>
-                        <service-by-default>0</service-by-default>
-                        <inParameter-list>
-                            <inParameter>
-                                <inParameter-type>long</inParameter-type>
-                                <inParameter-name>N</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                        </inParameter-list>
-                        <outParameter-list>
-                            <outParameter>
-                                <outParameter-type>long</outParameter-type>
-                                <outParameter-name>OutLoop</outParameter-name>
-                                <outParameter-comment></outParameter-comment>
-                            </outParameter>
-                        </outParameter-list>
-                    </component-service>
-                    <component-service>
-                        <service-name>IFNOTEVEN</service-name>
-                        <service-author></service-author>
-                        <service-version></service-version>
-                        <service-comment></service-comment>
-                        <service-by-default>0</service-by-default>
-                        <inParameter-list>
-                            <inParameter>
-                                <inParameter-type>long</inParameter-type>
-                                <inParameter-name>N</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                        </inParameter-list>
-                        <outParameter-list>
-                            <outParameter>
-                                <outParameter-type>long</outParameter-type>
-                                <outParameter-name>Odd</outParameter-name>
-                                <outParameter-comment></outParameter-comment>
-                            </outParameter>
-                            <outParameter>
-                                <outParameter-type>long</outParameter-type>
-                                <outParameter-name>Even</outParameter-name>
-                                <outParameter-comment></outParameter-comment>
-                            </outParameter>
-                        </outParameter-list>
-                    </component-service>
-                    <component-service>
-                        <service-name>LOOPi</service-name>
-                        <service-author></service-author>
-                        <service-version></service-version>
-                        <service-comment></service-comment>
-                        <service-by-default>0</service-by-default>
-                        <inParameter-list>
-                            <inParameter>
-                                <inParameter-type>long</inParameter-type>
-                                <inParameter-name>InLoop</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                            <inParameter>
-                                <inParameter-type>long</inParameter-type>
-                                <inParameter-name>ii</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                        </inParameter-list>
-                        <outParameter-list>
-                            <outParameter>
-                                <outParameter-type>long</outParameter-type>
-                                <outParameter-name>OutLoop</outParameter-name>
-                                <outParameter-comment></outParameter-comment>
-                            </outParameter>
-                            <outParameter>
-                                <outParameter-type>long</outParameter-type>
-                                <outParameter-name>i</outParameter-name>
-                                <outParameter-comment></outParameter-comment>
-                            </outParameter>
-                        </outParameter-list>
-                    </component-service>
-                    <component-service>
-                        <service-name>WHILEEVEN</service-name>
-                        <service-author></service-author>
-                        <service-version></service-version>
-                        <service-comment></service-comment>
-                        <service-by-default>0</service-by-default>
-                        <inParameter-list>
-                            <inParameter>
-                                <inParameter-type>long</inParameter-type>
-                                <inParameter-name>N</inParameter-name>
-                                <inParameter-comment></inParameter-comment>
-                            </inParameter>
-                        </inParameter-list>
-                        <outParameter-list>
-                            <outParameter>
-                                <outParameter-type>long</outParameter-type>
-                                <outParameter-name>OutLoop</outParameter-name>
-                                <outParameter-comment></outParameter-comment>
-                            </outParameter>
-                        </outParameter-list>
-                    </component-service>
-                </component-service-list>
-            </component-interface-list>
-        </component>
-
-               <component>
-               <!-- Component identification -->
-               <component-name>Calculator</component-name>
-               <component-type>SOLVER</component-type>
-               <component-author>LD</component-author>
-               <component-version> 1.0</component-version>
-               <component-comment>Test component (Arithmetic operations with MED_Field) - SALOME component </component-comment>
-               <component-multistudy>0</component-multistudy>
-               <constraint>hostname = localhost</constraint>
-
-               <component-interface-list>
-                       <component-interface-name>Calculator</component-interface-name>
-                       <component-interface-comment>No comment</component-interface-comment>
-
-                       <component-service-list>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>Mul</service-name>
-                                       <service-author>LD</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>Multiplication of 2 fields of double</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>FIELDDOUBLE</inParameter-type>
-                                                       <inParameter-name>field1</inParameter-name>
-                                                       <inParameter-comment>initial field of double</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>x1</inParameter-name>
-                                                       <inParameter-comment>multiplicator</inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                        <outParameter-list>
-                                                 <outParameter>
-                                                        <outParameter-type>FIELDDOUBLE</outParameter-type>
-                                                        <outParameter-name>return</outParameter-name>
-                                                        <outParameter-comment>result</outParameter-comment>
-                                                 </outParameter>
-                                        </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>Add</service-name>
-                                       <service-author>LD</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>Addition of 2 fields of double</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>FIELDDOUBLE</inParameter-type>
-                                                       <inParameter-name>field1</inParameter-name>
-                                                       <inParameter-comment>first field of double</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>FIELDDOUBLE</inParameter-type>
-                                                       <inParameter-name>field2</inParameter-name>
-                                                       <inParameter-comment>second field of double</inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                        <outParameter-list>
-                                                 <outParameter>
-                                                        <outParameter-type>FIELDDOUBLE</outParameter-type>
-                                                        <outParameter-name>return</outParameter-name>
-                                                        <outParameter-comment>result</outParameter-comment>
-                                                 </outParameter>
-                                        </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>Constant</service-name>
-                                       <service-author>LD</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>Build a constant field of doubles</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>FIELDDOUBLE</inParameter-type>
-                                                       <inParameter-name>field1</inParameter-name>
-                                                       <inParameter-comment>allows to build the support</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>x1</inParameter-name>
-                                                       <inParameter-comment>the constant</inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                        <outParameter-list>
-                                                 <outParameter>
-                                                        <outParameter-type>FIELDDOUBLE</outParameter-type>
-                                                        <outParameter-name>return</outParameter-name>
-                                                        <outParameter-comment>result based on first field support</outParameter-comment>
-                                                 </outParameter>
-                                        </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>PutToStudy</service-name>
-                                       <service-author>mpv</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>Put field to the study stucture</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>FIELDDOUBLE</inParameter-type>
-                                                       <inParameter-name>field1</inParameter-name>
-                                                       <inParameter-comment>field to put to study</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>long</inParameter-type>
-                                                       <inParameter-name>StudyId</inParameter-name>
-                                                       <inParameter-comment>the ID of the study</inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                        <outParameter-list>
-                                                 <outParameter>
-                                                        <outParameter-type>FIELDDOUBLE</outParameter-type>
-                                                        <outParameter-name>return</outParameter-name>
-                                                        <outParameter-comment>the same field like in input</outParameter-comment>
-                                                 </outParameter>
-                                        </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>writeMEDfile</service-name>
-                                       <service-author>LD</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>write a field in a Med file</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>FIELDDOUBLE</inParameter-type>
-                                                       <inParameter-name>field1</inParameter-name>
-                                                       <inParameter-comment>transient Med field</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>string</inParameter-type>
-                                                       <inParameter-name>filename</inParameter-name>
-                                                       <inParameter-comment>Med filename</inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                               </component-service>
-                       </component-service-list>
-               </component-interface-list>
-       </component>
-               <component>
-               <!-- Component identification -->
-               <component-name>CalculatorPy</component-name>
-               <component-type>SOLVER</component-type>
-               <component-author>NB</component-author>
-               <component-version> 1.0</component-version>
-               <component-comment>Test component (Arithmetic operations with MED_Field) - SALOME component </component-comment>
-               <component-multistudy>0</component-multistudy>
-               <constraint>hostname = localhost</constraint>
-
-               <component-interface-list>
-                       <component-interface-name>CalculatorPy</component-interface-name>
-                       <component-interface-comment>No comment</component-interface-comment>
-
-                       <component-service-list>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>Mul</service-name>
-                                       <service-author>NB</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>Multiplication of 2 fields of double</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>FIELDDOUBLE</inParameter-type>
-                                                       <inParameter-name>field1</inParameter-name>
-                                                       <inParameter-comment>initial field of double</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>x1</inParameter-name>
-                                                       <inParameter-comment>multiplicator</inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                        <outParameter-list>
-                                                 <outParameter>
-                                                        <outParameter-type>FIELDDOUBLE</outParameter-type>
-                                                        <outParameter-name>return</outParameter-name>
-                                                        <outParameter-comment>result</outParameter-comment>
-                                                 </outParameter>
-                                        </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>Add</service-name>
-                                       <service-author>NB</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>Addition of 2 fields of double</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>FIELDDOUBLE</inParameter-type>
-                                                       <inParameter-name>field1</inParameter-name>
-                                                       <inParameter-comment>first field of double</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>FIELDDOUBLE</inParameter-type>
-                                                       <inParameter-name>field2</inParameter-name>
-                                                       <inParameter-comment>second field of double</inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                        <outParameter-list>
-                                                 <outParameter>
-                                                        <outParameter-type>FIELDDOUBLE</outParameter-type>
-                                                        <outParameter-name>return</outParameter-name>
-                                                        <outParameter-comment>result</outParameter-comment>
-                                                 </outParameter>
-                                        </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>Constant</service-name>
-                                       <service-author>NB</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>Build a constant field of doubles</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>FIELDDOUBLE</inParameter-type>
-                                                       <inParameter-name>field1</inParameter-name>
-                                                       <inParameter-comment>allows to build the support</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>double</inParameter-type>
-                                                       <inParameter-name>x1</inParameter-name>
-                                                       <inParameter-comment>the constant</inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                                        <outParameter-list>
-                                                 <outParameter>
-                                                        <outParameter-type>FIELDDOUBLE</outParameter-type>
-                                                        <outParameter-name>return</outParameter-name>
-                                                        <outParameter-comment>result based on first field support</outParameter-comment>
-                                                 </outParameter>
-                                        </outParameter-list>
-                               </component-service>
-                               <component-service>
-                                       <!-- service-identification -->
-                                       <service-name>writeMEDfile</service-name>
-                                       <service-author>NB</service-author>
-                                       <service-version>1.0</service-version>
-                                       <service-comment>write a field in a Med file</service-comment>
-                                       <service-by-default>1</service-by-default>
-                                       <!-- service-connexion -->
-                                       <inParameter-list>
-                                               <inParameter>
-                                                       <inParameter-type>FIELDDOUBLE</inParameter-type>
-                                                       <inParameter-name>field1</inParameter-name>
-                                                       <inParameter-comment>transient Med field</inParameter-comment>
-                                               </inParameter>
-                                               <inParameter>
-                                                       <inParameter-type>string</inParameter-type>
-                                                       <inParameter-name>filename</inParameter-name>
-                                                       <inParameter-comment>Med filename</inParameter-comment>
-                                               </inParameter>
-                                       </inParameter-list>
-                               </component-service>
-                       </component-service-list>
-               </component-interface-list>
-       </component>
-</component-list>
-</begin-catalog>
diff --git a/resources/KERNELCatalog.xml b/resources/KERNELCatalog.xml
new file mode 100644 (file)
index 0000000..b704919
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version='1.0' encoding='us-ascii' ?>
+<!-- XML component catalog -->
+<begin-catalog>
+
+<!-- Path prefix information -->
+
+<path-prefix-list>
+</path-prefix-list>
+
+<!-- Component list -->
+<component-list>
+       <component>
+               <!-- Component identification -->
+               <component-name>KERNEL</component-name>
+               <component-username>Salome</component-username>
+               <component-type>Other</component-type>
+               <component-author>NRI</component-author>
+               <component-version> 1.0</component-version>
+               <component-comment>GUI Neutral Context</component-comment>
+               <component-multistudy>1</component-multistudy>
+
+       <constraint>hostname = muna</constraint>
+       </component>
+</component-list>
+</begin-catalog>
index 8aec5d87d81dfd2997ab4717ff3212be4e85ca16..2b8d551052eaebc28e8c0c8cc55d6febab9df672 100644 (file)
@@ -1,6 +1,6 @@
 formatlist:SALOME_STUDY
 
-SALOME_STUDY.Description: Stars Document Version 1.0
+SALOME_STUDY.Description: SALOME Document Version 1.0
 SALOME_STUDY.FileExtension: std
 SALOME_STUDY.StoragePlugin: ad696000-5b34-11d1-b5ba-00a0c9064368
 SALOME_STUDY.RetrievalPlugin: ad696001-5b34-11d1-b5ba-00a0c9064368
diff --git a/salome_adm/Makefile.in b/salome_adm/Makefile.in
new file mode 100644 (file)
index 0000000..9a6d458
--- /dev/null
@@ -0,0 +1,42 @@
+# source path
+top_srcdir=@top_srcdir@
+top_builddir=..
+srcdir=@srcdir@
+VPATH=.:$(srcdir)/salome_adm
+
+
+all:
+       cp -rf @top_srcdir@/salome_adm @prefix@
+
+install: all
+
+bin:
+
+resources :
+
+inc:
+
+lib:
+
+include/salome/SALOMEconfig.h:
+
+include/salome/sstream:
+
+depend:
+
+depend_idl:
+
+install-end:
+
+install-include:
+
+install-bin:
+
+uninstall:
+
+uninstall-idl:
+
+distclean:
+
+distclean-other:
+
diff --git a/salome_adm/unix/config_files/check_Kernel.m4 b/salome_adm/unix/config_files/check_Kernel.m4
new file mode 100644 (file)
index 0000000..ce2e458
--- /dev/null
@@ -0,0 +1,58 @@
+# Check availability of Salome's KERNEL binary distribution
+#
+# Author : Jerome Roy (CEA, 2003)
+#
+
+AC_DEFUN([CHECK_KERNEL],[
+
+AC_CHECKING(for Kernel)
+
+Kernel_ok=no
+
+AC_ARG_WITH(kernel,
+           [  --with-kernel=DIR               root directory path of KERNEL installation ],
+           KERNEL_DIR="$withval",KERNEL_DIR="")
+
+if test "x$KERNEL_DIR" == "x" ; then
+
+# no --with-kernel-dir option used
+
+   if test "x$KERNEL_ROOT_DIR" != "x" ; then
+
+    # KERNEL_ROOT_DIR environment variable defined
+      KERNEL_DIR=$KERNEL_ROOT_DIR
+
+   else
+
+    # search Kernel binaries in PATH variable
+      AC_PATH_PROG(TEMP, runSalome)
+      if test "x$TEMP" != "x" ; then
+         KERNEL_BIN_DIR=`dirname $TEMP`
+         KERNEL_DIR=`dirname $KERNEL_BIN_DIR`
+      fi
+      
+   fi
+# 
+fi
+
+if test -f ${KERNEL_DIR}/bin/salome/runSalome ; then
+   Kernel_ok=yes
+   AC_MSG_RESULT(Using Kernel module distribution in ${KERNEL_DIR})
+
+   if test "x$KERNEL_ROOT_DIR" == "x" ; then
+      KERNEL_ROOT_DIR=${KERNEL_DIR}
+   fi
+   if test "x$KERNEL_SITE_DIR" == "x" ; then
+      KERNEL_SITE_DIR=${KERNEL_ROOT_DIR}
+   fi
+   AC_SUBST(KERNEL_ROOT_DIR)
+   AC_SUBST(KERNEL_SITE_DIR)
+
+else
+   AC_MSG_WARN("Cannot find compiled Kernel module distribution")
+fi
+  
+AC_MSG_RESULT(for Kernel: $Kernel_ok)
+])dnl
index d96d1dcccb06f9083d60a70d477ab8012eceafd8..405cefa83b22b858324f68e37bb983715d34d365 100644 (file)
@@ -37,10 +37,11 @@ AC_SUBST(CAS_OCAF)
 AC_SUBST(CAS_DATAEXCHANGE)
 AC_SUBST(CAS_LDFLAGS)
 
+AC_SUBST(CAS_LDPATH)
+
 CAS_CPPFLAGS=""
 CAS_CXXFLAGS=""
 CAS_LDFLAGS=""
-
 occ_ok=no
 
 dnl libraries directory location
@@ -73,6 +74,14 @@ if test -z $CASROOT; then
   AC_MSG_WARN(You must provide CASROOT variable : see OCC installation manual)
 else
   occ_ok=yes
+  OCC_VERSION_MAJOR=0
+  ff=$CASROOT/inc/Standard_Version.hxx
+  if test -f $ff ; then
+    grep "define OCC_VERSION_MAJOR" $ff > /dev/null
+    if test $? = 0 ; then
+      OCC_VERSION_MAJOR=`grep "define OCC_VERSION_MAJOR" $ff | awk '{i=3 ; print $i}'`
+    fi
+  fi
 fi
 
 if test "x$occ_ok" = "xyes"; then
@@ -80,7 +89,7 @@ if test "x$occ_ok" = "xyes"; then
 dnl cascade headers
 
   CPPFLAGS_old="$CPPFLAGS"
-  CPPFLAGS="$CPPFLAGS -DLIN -DLINTEL -DCSFDB -DNO_CXX_EXCEPTION -DNo_exception -I$CASROOT/inc"
+  CPPFLAGS="$CPPFLAGS -DLIN -DLINTEL -DCSFDB -DNO_CXX_EXCEPTION -DNo_exception -I$CASROOT/inc -Wno-deprecated"
   CXXFLAGS_old="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS -funsigned-char"
 
@@ -92,18 +101,17 @@ fi
 
 if test "x$occ_ok" = xyes ; then
 
-  CAS_CPPFLAGS="-DLIN -DLINTEL -DCSFDB -DNO_CXX_EXCEPTION -DNo_exception -I$CASROOT/inc"
+  CAS_CPPFLAGS="-DOCC_VERSION_MAJOR=$OCC_VERSION_MAJOR -DLIN -DLINTEL -DCSFDB -DNO_CXX_EXCEPTION -DNo_exception -I$CASROOT/inc"
   CAS_CXXFLAGS="-funsigned-char"
 
   AC_MSG_CHECKING(for OpenCascade libraries)
 
   CPPFLAGS_old="$CPPFLAGS"
-  CPPFLAGS="$CPPFLAGS $CAS_CPPFLAGS"
+  CPPFLAGS="$CPPFLAGS $CAS_CPPFLAGS -Wno-deprecated"
   CXXFLAGS_old="$CXXFLAGS"
   CXXFLAGS="$CXXFLAGS $CAS_CXXFLAGS"
   LIBS_old="$LIBS"
   LIBS="$LIBS -L$CASROOT/$casdir/lib -lTKernel"
-  
   AC_CACHE_VAL(salome_cv_lib_occ,[
     AC_TRY_LINK(
 #include <Standard_Type.hxx>
@@ -125,16 +133,18 @@ if test "x$occ_ok" = xno ; then
   AC_MSG_WARN(Opencascade libraries not found)
 else
   AC_MSG_RESULT(yes)
-  CAS_KERNEL="-L$CASROOT/$casdir/lib -lTKernel -lTKMath"
-  CAS_OCAF="-L$CASROOT/$casdir/lib -lPTKernel -lTKCAF -lFWOSPlugin -lTKPShape -lTKPCAF -lTKStdSchema -lTKShapeSchema -lPAppStdPlugin -lTKPAppStd -lTKCDF"
+  CAS_LDPATH="-L$CASROOT/$casdir/lib "
+  CAS_KERNEL="$CAS_LDPATH -lTKernel -lTKMath"
+  CAS_OCAF="$CAS_LDPATH -lPTKernel -lTKCAF -lFWOSPlugin -lTKPShape -lTKPCAF -lTKStdSchema -lTKShapeSchema -lPAppStdPlugin -lTKPAppStd -lTKCDF"
 dnl  CAS_VIEWER="-L$CASROOT/$casdir/lib -lTKOpenGl -lTKV3d -lTKV2d -lTKService"
-  CAS_VIEWER="-L$CASROOT/$casdir/lib -lTKOpenGl -lTKV3d -lTKService"
+  CAS_VIEWER="$CAS_LDPATH -lTKOpenGl -lTKV3d -lTKService"
 #  CAS_MODELER="-L$CASROOT/$casdir/lib -lTKG2d -lTKG3d -lTKGeomBase -lTKBRep -lTKGeomAlgo -lTKTopAlgo -lTKPrim -lTKBool -lTKHLR -lTKFillet -lTKFeat -lTKOffset"
-  CAS_MODELER="-L$CASROOT/$casdir/lib -lTKG2d -lTKG3d -lTKGeomBase -lTKBRep -lTKGeomAlgo -lTKTopAlgo -lTKPrim -lTKBool -lTKHLR -lTKFillet -lTKOffset"
+  CAS_MODELER="$CAS_LDPATH -lTKG2d -lTKG3d -lTKGeomBase -lTKBRep -lTKGeomAlgo -lTKTopAlgo -lTKPrim -lTKBool -lTKHLR -lTKFillet -lTKOffset"
 dnl  CAS_DATAEXCHANGE="-L$CASROOT/$casdir/lib -lTKXSBase -lTKIGES -lTKSTEP -lTKShHealing -lTKShHealingStd -lTKSTL -lTKVRML "
-  CAS_DATAEXCHANGE="-L$CASROOT/$casdir/lib -lTKXSBase -lTKIGES -lTKSTEP -lTKShHealing -lTKShHealingStd"
-  CAS_LDFLAGS="$CAS_KERNEL $CAS_OCAF $CAS_VIEWER $CAS_MODELER $CAS_DATAEXCHANGE"
-
+  CAS_DATAEXCHANGE="$CAS_LDPATH -lTKXSBase -lTKIGES -lTKSTEP -lTKShHealing -lTKShHealingStd"
+  CAS_LDFLAGS="$CAS_KERNEL $CAS_OCAF $CAS_VIEWER $CAS_MODELER $CAS_DATAEXCHANGE"  
+  
+  
 fi
 
 AC_LANG_RESTORE
index eb4e3fff74779fe8fb10304dd410c86e75ca2a2a..e0d320185963199119d40a40229934e3bad147aa 100644 (file)
@@ -5,9 +5,28 @@ AC_REQUIRE([CHECK_PYTHON])dnl
 
 AC_CHECKING(for pyqt)
 
-pyqt_ok=yes
+pyqt_ok=no
 
-dnl were is pyqt ?
+PYTHON_SITE_PACKPYQT=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
+AC_CHECK_FILES($PYTHON_SITE_PACKPYQT/qt.py $PYTHON_SITE_PACKPYQT/libqtcmodule.so,pyqt_ok=yes,pyqt_ok=no)
+if test "x$pyqt_ok" = xyes ; then
+   PYQT_INCLUDES="-I $PYTHON_SITE_PACKPYQT"
+   PYQT_LIBS="-L$PYTHON_SITE_PACKPYQT -lqtcmodule"
+fi
+
+if test "x$pyqt_ok" = xyes ; then
+   AC_CHECK_FILES(/usr/share/sip/qt/qtmod.sip,pyqt_ok=yes,pyqt_ok=no)
+   if test "x$pyqt_ok" = xyes ; then
+      PYQT_SIPS="/usr/share/sip/qt"
+   fi
+   AC_SUBST(PYQT_INCLUDES)
+   AC_SUBST(PYQT_LIBS)
+   AC_SUBST(PYQT_SIPS)
+   AC_MSG_RESULT(yes)
+else
+
+  pyqt_ok=yes
+  dnl were is pyqt ?
 
 AC_ARG_WITH(pyqt,
     [  --with-pyqt=DIR      root directory path to PyQt installation ],
@@ -53,48 +72,42 @@ if test -z $PYUIC; then
    PYUIC="/usr/bin/pyuic"      
 fi
 
-AC_CHECK_FILES("$PYQTDIR/qt.py","$PYQTDIR/qt/qt.py",pyqt_ok=yes,pyqt_ok=no)
+PYQT_ROOT=$PYQTDIR
+PYQT_INCLUDES="-I$PYQT_SIPS"
+PYQT_LIBS="-L$PYQTDIR -lqtcmodule"
+
+AC_CHECK_FILES($PYQTDIR/qt.py $PYQTDIR/qt/qt.py $PYQTDIR/lib/qt.py,pyqt_ok=yes,pyqt_ok=no)
 if test "x$pyqt_ok" = xno ; then
-   AC_MSG_RESULT(no)
-   AC_MSG_WARN(pyqt not found)
+   AC_MSG_WARN(qt.py not found)
 else
    AC_CHECK_FILE("$PYQTDIR/libqtcmodule.so",pyqt_ok=yes,pyqt_ok=no)
-   if test "x$pyqt_ok" = xno ; then
-      AC_MSG_RESULT(no)
-      AC_MSG_WARN(pyqt not found)
-   else
+   if test "x$pyqt_ok" = xyes ; then
       PYQT_ROOT=$PYQTDIR
       PYQT_LIBS="-L$PYQTDIR -lqtcmodule"
    fi
-   AC_CHECK_FILE("$PYQT_SIPS/copying.sip",pyqt_ok=yes,pyqt_ok=no)
    if test "x$pyqt_ok" = xno ; then
-      AC_MSG_RESULT(no)
-      AC_MSG_WARN(pyqt not found)
-   else
-      PYQT_INCLUDES="-I$PYQT_SIPS"
+      AC_CHECK_FILE("$PYQTDIR/lib/libqtcmodule.so",pyqt_ok=yes,pyqt_ok=no)
+      if test "x$pyqt_ok" = xyes ; then
+         PYQT_ROOT=$PYQTDIR
+         PYQT_LIBS="-L$PYQTDIR/lib -lqtcmodule"
+      fi
    fi
 
-   AC_SUBST(PYQT_ROOT)
-   AC_SUBST(PYQT_INCLUDES)
-   AC_SUBST(PYQT_LIBS)
-
-   AC_MSG_RESULT(yes)
+   AC_CHECK_FILE("$PYQT_SIPS/copying.sip",pyqt_ok=$pyqt_ok,pyqt_ok=no)
+   if test "x$pyqt_ok" = xyes ; then
+      PYQT_INCLUDES="-I$PYQT_SIPS"
+   fi
 fi
 
-PYQT_ROOT=$PYQTDIR
-PYQT_INCLUDES="-I$PYQT_SIPS"
-PYQT_LIBS="-L$PYQTDIR -lqtcmodule"
-
 AC_SUBST(PYQT_ROOT)
 AC_SUBST(PYQT_INCLUDES)
 AC_SUBST(PYUIC)
 AC_SUBST(PYQT_SIPS)
 AC_SUBST(PYQT_LIBS)
 
-
-
 AC_MSG_RESULT(for pyqt: $pyqt_ok)
 
+fi
 ])dnl
 dnl
 
index bb0f4527826485dc8bfb3fc9ea71fcd49770c133..feecb0dde36a765e526746b4d7181d88e4fb6227 100644 (file)
@@ -18,14 +18,45 @@ then
     sip_ok=no
     AC_MSG_RESULT(sip not in PATH variable)
 else
-       if test $SIPDIR ; then
-               SIP_ROOT="$SIPDIR"
-               SIP_INCLUDES="-I${SIPDIR}"
-               SIP_LIBS="-L${SIPDIR} -lsip"
+    version=`sip -V`
+    case "$version" in
+         3.2*)
+           sip_vers=old ;;
+         3.3*)
+           sip_vers=old ;;
+         3.4*)
+           sip_vers=new ;;
+         3.5*)
+           sip_vers=new ;;
+           *)
+           sip_vers=no ;;
+    esac
+
+    sip_ok=no
+
+    if test "x$sip_vers" = "xold"
+    then
+        sip_ok=yes
+       SIP_ROOT="$SIPDIR"
+       SIP_INCLUDES="${PYTHON_INCLUDES} -I${SIPDIR}"
+       SIP_LIBS="-L${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages -L${SIPDIR} -lsip"
+    fi
+
+    if test "x$sip_vers" = "xnew"
+    then
+       if test -d ${SIPDIR}/include ; then
+          sip_ok=yes
+          SIP_ROOT="$SIPDIR"
+          SIP_INCLUDES="${PYTHON_INCLUDES} -I${SIPDIR}/include"
+          SIP_LIBS="-L${SIPDIR}/lib -lsip"
        else
-               SIP_INCLUDES="${PYTHON_INCLUDES}"
-               SIP_LIBS="-L${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages -lsip"
-       fi
+          sip_ok=yes
+          SIP_ROOT="$SIPDIR"
+          SIP_INCLUDES="-I${SIPDIR}"
+          SIP_LIBS="-L${SIPDIR} -lsip"
+        fi
+    fi
+
 fi
 
 AC_SUBST(SIP)
index 636c4b6441b9997dc76bff71831ff229999f30a3..1b1a8d1a1845e3a92347e0306cabfec012e1afdc 100644 (file)
@@ -50,7 +50,7 @@ fi
 
 
 LOCAL_INCLUDES="$OGL_INCLUDES"
-LOCAL_LIBS="-lvtkCommon -lvtkGraphics -lvtkImaging -lvtkPatented -lvtkFiltering -lvtkIO -lvtkRendering -lvtkHybrid $OGL_LIBS -L$x_libraries -lX11 -lXt"
+LOCAL_LIBS="-lvtkCommon -lvtkGraphics -lvtkImaging -lvtkFiltering -lvtkIO -lvtkRendering -lvtkHybrid $OGL_LIBS -L$x_libraries -lX11 -lXt"
 TRY_LINK_LIBS="-lvtkCommon $OGL_LIBS -L$x_libraries -lX11 -lXt"
 
 if test -z $VTKHOME
@@ -64,7 +64,7 @@ fi
 
 dnl vtk headers
 CPPFLAGS_old="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $LOCAL_INCLUDES"
+CPPFLAGS="$CPPFLAGS $LOCAL_INCLUDES -Wno-deprecated"
 
 AC_CHECK_HEADER(vtkPlane.h,vtk_ok="yes",vtk_ok="no")
 
@@ -78,11 +78,11 @@ AC_CHECK_HEADER(vtkPlane.h,vtk_ok="yes",vtk_ok="no")
 
    AC_MSG_CHECKING(linking VTK library)
 
-   LIBS_old="$LIBS"
- #  LIBS="$LIBS $TRY_LINK_LIBS"
-   LIBS="$LIBS $LOCAL_LIBS"
-   CPPFLAGS_old="$CPPFLAGS"
-   CPPFLAGS="$CPPFLAGS $VTK_INCLUDES"
+  LIBS_old="$LIBS"
+#  LIBS="$LIBS $TRY_LINK_LIBS"
+  LIBS="$LIBS $LOCAL_LIBS"
+  CPPFLAGS_old="$CPPFLAGS"
+  CPPFLAGS="$CPPFLAGS $VTK_INCLUDES -Wno-deprecated"
 
  dnl  VTKPY_MODULES="$VTKHOME/python"
 
index a8b3487250f8a1b16d9e10dce77e35f4f5923720..a970492b1dddd9e14a313595571ebdc60cc41040 100644 (file)
@@ -1,5 +1,5 @@
 # common directories to put headerfiles
-inc_builddir=$(top_builddir)/include
+inc_builddir=$(top_builddir)/include/salome
 
 @SET_MAKE@
 SHELL=/bin/sh
@@ -10,7 +10,7 @@ HAVE_SSTREAM=@HAVE_SSTREAM@
 
 
 LIBS=@LIBS@ 
-LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib -Xlinker -rpath-link -Xlinker $(top_builddir)/lib
+LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib/salome -Xlinker -rpath-link -Xlinker -L$(top_builddir)/lib/salome
 # add libstdc++ to link c++ library with libtool !
 LDFLAGS+= -lstdc++
 
@@ -47,9 +47,8 @@ PYTHONHOME = @PYTHONHOME@
 PYTHON_INCLUDES = @PYTHON_INCLUDES@
 PYTHON_LIBS = @PYTHON_LIBS@
 PYTHON_VERSION = @PYTHON_VERSION@
-PYTHON_SITE = @PYTHON_SITE@
-PYTHON_SITE_INSTALL = @PYTHON_SITE_INSTALL@
-
+PYTHON_SITE = $(prefix)/lib/python$(PYTHON_VERSION)/site-packages
+PYTHON_SITE_INSTALL = $(prefix)/lib/python$(PYTHON_VERSION)/site-packages/salome
 # QT
 
 QT_ROOT = @QT_ROOT@
@@ -100,12 +99,19 @@ MED2_MT_LIBS=@MED2_MT_LIBS@
 
 OCC_INCLUDES=@CAS_CPPFLAGS@
 OCC_CXXFLAGS=@CAS_CXXFLAGS@
-OCC_LIBS=@CAS_LDFLAGS@
+
+#OCC_KERNEL_LIBS=@CAS_KERNEL@
+#OCC_OCAF_LIBS=@CAS_OCAF@
+#OCC_VIEWER_LIBS=@CAS_VIEWER@
+#OCC_MODELER_LIBS=@CAS_MODELER@
+#OCC_DATAEXCHANGE_LIBS=@CAS_DATAEXCHANGE@
+#OCC_LIBS=@CAS_LDFLAGS@
 CAS_KERNEL=@CAS_KERNEL@
 CAS_OCAF=@CAS_OCAF@
 CAS_VIEWER=@CAS_VIEWER@
 CAS_MODELER=@CAS_MODELER@
 CAS_DATAEXCHANGE=@CAS_DATAEXCHANGE@
+CAS_LDPATH=@CAS_LDPATH@
 # MPICH
 
 MPICH_INCLUDES=@MPICH_INCLUDES@
@@ -125,7 +131,7 @@ OMNIORB_CXXFLAGS    = @OMNIORB_CXXFLAGS@
 
 OMNIORB_IDL         = @OMNIORB_IDL@
 OMNIORB_IDLCXXFLAGS = @OMNIORB_IDLCXXFLAGS@
-OMNIORB_IDLPYFLAGS  = @OMNIORB_IDLPYFLAGS@ -I$(top_srcdir)/share/salome/idl
+OMNIORB_IDLPYFLAGS  = @OMNIORB_IDLPYFLAGS@ -I$(top_builddir)/idl
 
 OMNIORB_IDL_CLN_H   = @OMNIORB_IDL_CLN_H@
 OMNIORB_IDL_CLN_CXX = @OMNIORB_IDL_CLN_CXX@
@@ -142,7 +148,7 @@ CORBA_INCLUDES    = @CORBA_INCLUDES@
 CORBA_LIBS        = @CORBA_LIBS@
 CORBA_CXXFLAGS    = @CORBA_CXXFLAGS@
 
-IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(top_builddir)/share/salome/idl -I$(srcdir) 
+IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(top_builddir)/idl
 IDLPYFLAGS  = @IDLPYFLAGS@
 
 IDL = @IDL@
@@ -162,6 +168,8 @@ CXXFLAGS+= $(CORBA_CXXFLAGS)
 #LDFLAGS+= $(CORBA_LIBS)
 LIBS+=$(CORBA_LIBS)
 
+DOXYGEN = @DOXYGEN@
+
 ## Shared libraries
 LT_STATIC_EXEC=@LT_STATIC_EXEC@
 DYNAMIC_DIRS=@DYNAMIC_DIRS@
@@ -185,21 +193,22 @@ LN_S=@LN_S@
 ## Installation points
 prefix=@prefix@
 exec_prefix=@exec_prefix@
-bindir=@bindir@
-libdir=@libdir@
+bindir=@bindir@/salome
+libdir=@libdir@/salome
 # warning : if user give this path in configure we could have salome/salome :-(
 includedir=@includedir@/salome
 datadir=@datadir@/salome
-idldir=$(datadir)/idl
+idldir=${prefix}/idl/salome
 sharedpydir=@libdir@/python$(PYTHON_VERSION)/site-packages/salome/shared_modules
+incmakedir=${prefix}/salome_adm/unix
 
-docdir=@exec_prefix@/doc
+docdir=$(datadir)/doc
 
 #
 # begin of package rules
 #
 
-.PHONY: all lib bin inc resources tests install uninstall dep depend depend_idl cleandep mostlyclean clean distclean
+.PHONY: all lib bin inc resources data doc tests install uninstall dep depend depend_idl cleandep mostlyclean clean distclean
 
 .SUFFIXES: .cxx .cc .c .f .o .lo .idl .py .i .ui .po .qm
 
@@ -210,6 +219,7 @@ all:
        $(MAKE) lib
        $(MAKE) bin
        $(MAKE) resources
+       $(MAKE) data
 
 #
 # add target to build administrative files
@@ -243,6 +253,5 @@ ac_cxx_typename.m4                check_pthreads.m4  check_cas.m4   \
 ac_cc_warnings.m4                 check_qt.m4        check_med2.m4      \
 check_swig.m4 
 
-$(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=$(top_srcdir)/adm/unix/config_files/%)
-       cd $(top_srcdir) ; aclocal --acdir=./adm/unix/config_files
-
+$(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=@KERNEL_ROOT_DIR@/salome_adm/unix/config_files/%)
+       cd $(top_srcdir) ; aclocal --acdir=adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files
index a9843ce38218acb3ac446c4e4ee27e7d43a4b053..fe43d0e54706985d1855324cc2066f0be1f4c2ec 100644 (file)
@@ -35,9 +35,9 @@ LIB_OBJ_F    = $(patsubst %.f,   %.lo, $(filter %.f, $(LIB_SRC)))
 # all libtool obj file in library
 LIB_OBJ = $(LIB_OBJ_CXX) $(LIB_OBJ_CC) $(LIB_OBJ_C) $(LIB_CLIENT_OBJ:%.o=%.lo) $(LIB_SERVER_OBJ:%.o=%.lo) $(LIB_SWIG_OBJ) $(LIB_OBJ_F)
 
-# LIB_BUILD = $(LIB:%.la=$(top_builddir)/lib/%.la)
-LIB_BUILD = $(patsubst %.la, $(top_builddir)/lib/%.la, $(filter %.la, $(LIB)))
-LIB_BUILD_A = $(patsubst %.a, $(top_builddir)/lib/%.a, $(filter %.a, $(LIB)))
+# LIB_BUILD = $(LIB:%.la=$(top_builddir)/lib/salome/%.la)
+LIB_BUILD = $(patsubst %.la, $(top_builddir)/lib/salome/%.la, $(filter %.la, $(LIB)))
+LIB_BUILD_A = $(patsubst %.a, $(top_builddir)/lib/salome/%.a, $(filter %.a, $(LIB)))
 
 ifneq ($(findstring cmodule.la,$(filter %.la, $(LIB))),)
 LIB_SWIG = $(patsubst %cmodule.la,%.so, $(filter %.la, $(LIB)))
@@ -48,7 +48,7 @@ endif
 lib: $(LIB_BUILD) $(LIB_CLIENT_PY)
 # we don't build static library !
 
-$(LIB_BUILD): $(top_builddir)/lib/%.la: %.la
+$(LIB_BUILD): $(top_builddir)/lib/salome/%.la: %.la
        -$(RM) $@
        -$(RM) $(patsubst %.la, %.so, $@)
        -$(RM) $(patsubst %.la, %.a, $@)
@@ -59,10 +59,10 @@ $(LIB_BUILD): $(top_builddir)/lib/%.la: %.la
              $(patsubst %.la, %.so, $@).0 || true
 
        if ! test -z $(LIB_SWIG) ; then \
-          ln -sf $(patsubst %.la,%.so, $(CURDIR)/.libs/$<) $(top_builddir)/lib/_$(LIB_SWIG) || true;\
+          ln -sf $(patsubst %.la,%.so, $(CURDIR)/.libs/$<) $(top_builddir)/lib/salome/_$(LIB_SWIG) || true;\
        fi;
 
-$(LIB_BUILD_A): $(top_builddir)/lib/%.a: %.a
+$(LIB_BUILD_A): $(top_builddir)/lib/salome/%.a: %.a
        -$(RM) $@
        ln -sf $(CURDIR)/$< $@ || true
 
@@ -86,22 +86,22 @@ BIN_OBJ_CXX = $(patsubst %.cxx,  %.o, $(filter %.cxx, $(BIN_SRC)))
 # all obj file in bin target
 BIN_OBJ = $(BIN_OBJ_CC) $(BIN_OBJ_CXX) $(BIN_OBJ_C) $(BIN_CLIENT_OBJ) $(BIN_SERVER_OBJ) 
 
-bin: $(BIN:%=$(top_builddir)/bin/%) $(BIN) $(LIB) pyscripts sharedpyscripts
+bin: $(BIN:%=$(top_builddir)/bin/salome/%) $(BIN) $(LIB) pyscripts sharedpyscripts
 
 BIN_LIB=$(LIB:lib%.la=-l%)
 
-$(BIN:%=$(top_builddir)/bin/%) $(TEST_PROGS:%=$(top_builddir)/bin/%): $(top_builddir)/bin/%: %
+$(BIN:%=$(top_builddir)/bin/salome/%) $(TEST_PROGS:%=$(top_builddir)/bin/salome/%): $(top_builddir)/bin/salome/%: %
        -$(RM) $@
        ln -sf $(CURDIR)/$< $@
 
 $(BIN) $(TEST_PROGS): %: %.lo $(BIN_OBJ)
        $(CXX) $(CXXFLAGS) -o $@ $^ $(BIN_LIB) $(LDFLAGS) $(LIBS)
 
-# copy python scripts in $(top_builddir)/bin
+# copy python scripts in $(top_builddir)/bin/salome
 #
-DEST_PYSCRIPTS = $(EXPORT_PYSCRIPTS:%=$(top_builddir)/bin/%)
+DEST_PYSCRIPTS = $(EXPORT_PYSCRIPTS:%=$(top_builddir)/bin/salome/%)
 pyscripts: $(DEST_PYSCRIPTS)
-$(DEST_PYSCRIPTS): $(top_builddir)/bin/%: %
+$(DEST_PYSCRIPTS): $(top_builddir)/bin/salome/%: %
        cp -f $< $@
 
 # copy pyqt files in $(PYTHON_SHARED_SITE)
@@ -120,7 +120,7 @@ check: test
 
 tests: test
 
-test: $(LIB) $(TEST_PROGS:%=$(top_builddir)/bin/%) 
+test: $(LIB) $(TEST_PROGS:%=$(top_builddir)/bin/salome/%) 
 
 
 # copy header file in $(inc_builddir)
@@ -161,7 +161,7 @@ install: $(LIB) $(BIN) $(TEST_PROGS) $(libdir) $(includedir) $(bindir) $(datadir
 # Install exported includes in includedir
        @for f in X $(EXPORT_HEADERS:%=$(srcdir)/%); do                       \
           if test $$f != X; then                                             \
-            ($(INSTALL_DATA) $$f $(includedir)/. || exit 1);                 \
+            (cp -p $$f $(includedir) || exit 1);                             \
           fi;                                                                \
        done
 
@@ -260,10 +260,10 @@ clean: mostlyclean
        -$(RM) $(LIB) $(TEST_PROGS) $(BIN) $(CLEAN)
        -$(RM) TAGS *~ *# core *.core 
        -$(RM) -r .libs
-       -$(RM) $(top_builddir)/lib/$(LIB)
-       -$(RM) $(patsubst %,$(top_builddir)/bin/%, $(BIN))
-       -$(RM) $(patsubst %.la, %.so, $(top_builddir)/lib/$(LIB))
-       -$(RM) $(patsubst %.la, %.a, $(top_builddir)/lib/$(LIB))
+       -$(RM) $(top_builddir)/lib/salome/$(LIB)
+       -$(RM) $(patsubst %,$(top_builddir)/bin/salome/%, $(BIN))
+       -$(RM) $(patsubst %.la, %.so, $(top_builddir)/lib/salome/$(LIB))
+       -$(RM) $(patsubst %.la, %.a, $(top_builddir)/lib/salome/$(LIB))
 # remove idl generated files (sources)
        -$(RM) $(LIB_CLIENT_SRC) $(LIB_SERVER_SRC) $(BIN_CLIENT_SRC) $(BIN_SERVER_SRC)
 # remove idl generated files (headers)
@@ -327,7 +327,11 @@ distclean: clean
        $(SWIG) $(SWIG_FLAGS) -o $@ $<
 
 $(top_builddir)/share/salome/resources/%.qm: %.po
-       $(top_builddir)/bin/msg2qm $< $@
+       if test -e ${KERNEL_ROOT_DIR}/bin/salome/msg2qm ; then \
+               ${KERNEL_ROOT_DIR}/bin/salome/msg2qm $< $@ ; \
+       else \
+               $(top_builddir)/bin/salome/msg2qm $< $@ ; \
+       fi
 
 #------------------------------------------------------------------------------
 # The following section of this makefile contains dependencies between the
index 315ad68e76d60542a705aaa5c4f6bf576257d8b7..983342227ad73788a60c080761f672e3a8219248 100644 (file)
@@ -53,6 +53,15 @@ resources: $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%)
 $(RESOURCES_FILES:%=$(top_builddir)/share/salome/resources/%): $(top_builddir)/share/salome/resources/% : %
        cp -f $< $@
 
+data:
+       @if test "X$(top_builddir)" = "X."; then                                                         \
+       ((cd examples && $(MAKE) $@) || exit 1);                         \
+       fi;
+       
+doc:   
+       @if test "X$(top_builddir)" = "X."; then \
+       ((cd doc && $(MAKE) $@) || exit 1); \
+       fi;     
 
 install: install-resources
        @@SETX@; for d in $(SUBDIRS); do        \
index 723b4f84b7e9934ff4d29a36e9f0b37a969a33a3..c92e682e6cca8c88302d3c986ac5acab2ff4aad0 100644 (file)
@@ -16,7 +16,7 @@
 #IDLOBJ=$(IDLSRC:%.idl=%$(IDL_CLN_OBJ))
 
 # dependancies between idl and it's generated files
-%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${top_builddir}/share/salome/idl/%.idl
+%$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${top_builddir}/idl/%.idl
        $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
 
 # dependncies between idl files
diff --git a/salome_adm/unix/toto b/salome_adm/unix/toto
deleted file mode 100644 (file)
index 022922c..0000000
+++ /dev/null
@@ -1,1338 +0,0 @@
-Only in /Salome2/KERNEL_SRC/salome_adm/unix/: CVS
-diff -r ./Doxyfile /Salome2/KERNEL_SRC/salome_adm/unix/Doxyfile
-1,21d0
-< #  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< #  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< # 
-< #  This library is free software; you can redistribute it and/or 
-< #  modify it under the terms of the GNU Lesser General Public 
-< #  License as published by the Free Software Foundation; either 
-< #  version 2.1 of the License. 
-< # 
-< #  This library is distributed in the hope that it will be useful, 
-< #  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< #  Lesser General Public License for more details. 
-< # 
-< #  You should have received a copy of the GNU Lesser General Public 
-< #  License along with this library; if not, write to the Free Software 
-< #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< # 
-< #  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< #
-< #
-< 
-diff -r ./F77config.h.in /Salome2/KERNEL_SRC/salome_adm/unix/F77config.h.in
-1,21d0
-< /*----------------------------------------------------------------------------------
-<   Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-<   CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-<  
-<   This library is free software; you can redistribute it and/or 
-<   modify it under the terms of the GNU Lesser General Public 
-<   License as published by the Free Software Foundation; either 
-<   version 2.1 of the License. 
-<  
-<   This library is distributed in the hope that it will be useful, 
-<   but WITHOUT ANY WARRANTY; without even the implied warranty of 
-<   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-<   Lesser General Public License for more details. 
-<  
-<   You should have received a copy of the GNU Lesser General Public 
-<   License along with this library; if not, write to the Free Software 
-<   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-<  
-<   See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< ------------------------------------------------------------------------------------*/
-< 
-diff -r ./SALOMEconfig.h.in /Salome2/KERNEL_SRC/salome_adm/unix/SALOMEconfig.h.in
-1,21d0
-< /*----------------------------------------------------------------------------------
-<   Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-<   CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-<  
-<   This library is free software; you can redistribute it and/or 
-<   modify it under the terms of the GNU Lesser General Public 
-<   License as published by the Free Software Foundation; either 
-<   version 2.1 of the License. 
-<  
-<   This library is distributed in the hope that it will be useful, 
-<   but WITHOUT ANY WARRANTY; without even the implied warranty of 
-<   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-<   Lesser General Public License for more details. 
-<  
-<   You should have received a copy of the GNU Lesser General Public 
-<   License along with this library; if not, write to the Free Software 
-<   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-<  
-<   See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< ------------------------------------------------------------------------------------*/
-< 
-Only in /Salome2/KERNEL_SRC/salome_adm/unix/config_files: CVS
-diff -r ./config_files/ac_cc_warnings.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/ac_cc_warnings.m4
-1,2c1
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
----
-> dnl Synopsis
-4,22c3
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-< dnl Synopsis :    AC_CC_WARNINGS([ANSI]) 
----
-> dnl         AC_CC_WARNINGS([ANSI]) 
-24c5
-< dnl Version  :    1.1 (2000/12/31) 
----
-> dnl Version
-26c7
-< dnl Author   :    Ville Laurikari <vl@iki.fi> 
----
-> dnl         1.1 (2000/12/31) 
-28c9,13
-< dnl Description :
----
-> dnl Author
-> dnl 
-> dnl         Ville Laurikari <vl@iki.fi> 
-> dnl 
-> dnl Description
-119c104
-< ])
----
-> ])
-\ No newline at end of file
-diff -r ./config_files/ac_cxx_bool.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/ac_cxx_bool.m4
-1,21d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-29c8
-< dnl @version $Id$
----
-> dnl @version $Id$
-diff -r ./config_files/ac_cxx_depend_flag.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/ac_cxx_depend_flag.m4
-1,21d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-27c6
-< dnl @version $Id$
----
-> dnl @version $Id$
-diff -r ./config_files/ac_cxx_have_sstream.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/ac_cxx_have_sstream.m4
-1,21d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-27c6
-< dnl @version $Id$
----
-> dnl @version $Id$
-diff -r ./config_files/ac_cxx_mutable.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/ac_cxx_mutable.m4
-1,21d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-28c7
-< dnl @version $Id$
----
-> dnl @version $Id$
-diff -r ./config_files/ac_cxx_namespaces.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/ac_cxx_namespaces.m4
-1,21d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-27c6
-< dnl @version $Id$
----
-> dnl @version $Id$
-diff -r ./config_files/ac_cxx_partial_specialization.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/ac_cxx_partial_specialization.m4
-1,21d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-27c6
-< dnl @version $Id$
----
-> dnl @version $Id$
-30d8
-< 
-diff -r ./config_files/ac_cxx_typename.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/ac_cxx_typename.m4
-1,22c1
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-< ddnl @synopsis AC_CXX_TYPENAME
----
-> dnl @synopsis AC_CXX_TYPENAME
-26c5
-< dnl @version $Id$
----
-> dnl @version $Id$
-Only in /Salome2/KERNEL_SRC/salome_adm/unix/config_files: check_Kernel.m4
-diff -r ./config_files/check_Salome.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/check_Salome.m4
-1,18c1
-< #  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< #  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< # 
-< #  This library is free software; you can redistribute it and/or 
-< #  modify it under the terms of the GNU Lesser General Public 
-< #  License as published by the Free Software Foundation; either 
-< #  version 2.1 of the License. 
-< # 
-< #  This library is distributed in the hope that it will be useful, 
-< #  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< #  Lesser General Public License for more details. 
-< # 
-< #  You should have received a copy of the GNU Lesser General Public 
-< #  License along with this library; if not, write to the Free Software 
-< #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< # 
-< #  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
----
-> # Check availability of Salome binary distribution
-20,21c3
-< #------------------------------------------------------------
-< #  Check availability of Salome binary distribution
----
-> # Author : Marc Tajchman (CEA, 2002)
-23,24d4
-< #  Author : Marc Tajchman (CEA, 2002)
-< #------------------------------------------------------------
-diff -r ./config_files/check_cas.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/check_cas.m4
-1,21d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-83c62
-<   CPPFLAGS="$CPPFLAGS -DLIN -DLINTEL -DCSFDB -DNO_CXX_EXCEPTION -DNo_exception -I$CASROOT/inc"
----
->   CPPFLAGS="$CPPFLAGS -DLIN -DLINTEL -DCSFDB -DNO_CXX_EXCEPTION -DNo_exception -I$CASROOT/inc -Wno-deprecated"
-101c80
-<   CPPFLAGS="$CPPFLAGS $CAS_CPPFLAGS"
----
->   CPPFLAGS="$CPPFLAGS $CAS_CPPFLAGS -Wno-deprecated"
-diff -r ./config_files/check_corba.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/check_corba.m4
-1,20d0
-< #  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< #  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< # 
-< #  This library is free software; you can redistribute it and/or 
-< #  modify it under the terms of the GNU Lesser General Public 
-< #  License as published by the Free Software Foundation; either 
-< #  version 2.1 of the License. 
-< # 
-< #  This library is distributed in the hope that it will be useful, 
-< #  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< #  Lesser General Public License for more details. 
-< # 
-< #  You should have received a copy of the GNU Lesser General Public 
-< #  License along with this library; if not, write to the Free Software 
-< #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< # 
-< #  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< #
-< #
-diff -r ./config_files/check_f77.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/check_f77.m4
-1,21d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-diff -r ./config_files/check_hdf5.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/check_hdf5.m4
-1,20d0
-< #  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< #  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< # 
-< #  This library is free software; you can redistribute it and/or 
-< #  modify it under the terms of the GNU Lesser General Public 
-< #  License as published by the Free Software Foundation; either 
-< #  version 2.1 of the License. 
-< # 
-< #  This library is distributed in the hope that it will be useful, 
-< #  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< #  Lesser General Public License for more details. 
-< # 
-< #  You should have received a copy of the GNU Lesser General Public 
-< #  License along with this library; if not, write to the Free Software 
-< #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< # 
-< #  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< #
-< #
-diff -r ./config_files/check_htmlgen.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/check_htmlgen.m4
-1,2d0
-< dnl Copyright (C) 2003  CEA/DEN, EDF R&D
-< 
-diff -r ./config_files/check_java.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/check_java.m4
-1,21d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-diff -r ./config_files/check_med2.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/check_med2.m4
-1,22d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-< 
-diff -r ./config_files/check_mico.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/check_mico.m4
-1,21d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-diff -r ./config_files/check_mpich.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/check_mpich.m4
-1,22d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-< 
-diff -r ./config_files/check_omniorb.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/check_omniorb.m4
-40d39
-< dnl  OMNIORB_INCLUDES="-I$OMNIORB_ROOT/include -I$OMNIORB_ROOT/include/omniORB4 -I$OMNIORB_ROOT/include/COS"
-82,83d80
-< dnl omniORB_ok=yes
-< 
-114,115d110
-< 
-< dnl omniORB_ok=yes
-124d118
-< dnl  OMNIORB_LIBS="$OMNIORB_LDFLAGS -lomniORB4 -lomniDynamic4 -lomnithread -lCOS4 -lCOSDynamic4"
-140d133
-<   omniORB_ok=yes
-156c149
-<   OMNIORB_IDLCXXFLAGS="-I$OMNIORB_ROOT/idl"
----
->   OMNIORB_IDLCXXFLAGS="-bcxx -I$OMNIORB_ROOT/idl"
-diff -r ./config_files/check_opengl.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/check_opengl.m4
-1,21d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-diff -r ./config_files/check_pthreads.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/check_pthreads.m4
-1,21d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-29c8
-< dnl@id $Id$
----
-> dnl@id $Id$
-diff -r ./config_files/check_pyqt.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/check_pyqt.m4
-1d0
-< dnl Copyright (C) 2003  CEA/DEN, EDF R&D
-8c7
-< pyqt_ok=yes
----
-> pyqt_ok=no
-10c9,14
-< dnl were is pyqt ?
----
-> PYTHON_SITE_PACKPYQT=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
-> AC_CHECK_FILES($PYTHON_SITE_PACKPYQT/qt.py $PYTHON_SITE_PACKPYQT/libqtcmodule.so,pyqt_ok=yes,pyqt_ok=no)
-> if test "x$pyqt_ok" = xyes ; then
->    PYQT_INCLUDES="-I $PYTHON_SITE_PACKPYQT"
->    PYQT_LIBS="-L$PYTHON_SITE_PACKPYQT -lqtcmodule"
-> fi
-12,16c16,25
-< AC_ARG_WITH(pyqt,
-<     [  --with-pyqt=DIR      root directory path to PyQt installation ],
-<     [PYQTDIR="$withval"
-<       AC_MSG_RESULT("select $withval as path to PyQt")
-<     ])
----
-> if test "x$pyqt_ok" = xyes ; then
->    AC_CHECK_FILES(/usr/share/sip/qt/qtmod.sip,pyqt_ok=yes,pyqt_ok=no)
->    if test "x$pyqt_ok" = xyes ; then
->       PYQT_SIPS="/usr/share/sip/qt"
->    fi
->    AC_SUBST(PYQT_INCLUDES)
->    AC_SUBST(PYQT_LIBS)
->    AC_SUBST(PYQT_SIPS)
->    AC_MSG_RESULT(yes)
-> else
-18,22c27
-< AC_ARG_WITH(pyqt_sips,
-<     [  --with-pyqt_sips=DIR      a directory path to PyQt sips installation ],
-<     [PYQT_SIPS="$withval"
-<       AC_MSG_RESULT("select $withval as path to PyQt sips")
-<     ])
----
->   dnl were is pyqt ?
-23a29,89
->   if test -z $PYQTDIR; then
->     AC_MSG_WARN(You must provide PYQTDIR variable)
->   else
->     pyqt_ok=yes
->   fi
-> 
->   version=`python -c "import qt;print qt.PYQT_VERSION"`
->   case "$version" in
->      3.2*)
->        pyqt_vers=old ;;
->      3.3*)
->        pyqt_vers=old ;;
->      3.4*)
->        pyqt_vers=new ;;
->      3.5*)
->        pyqt_vers=new ;;
->         *)
->        pyqt_vers=no ;;
->   esac
-> 
->   if test "x$pyqt_ok" = xno -o ! -d "$PYQTDIR" ; then
->     AC_MSG_RESULT(no)
->     AC_MSG_WARN(pyqt not found)
->   else
-> 
->     pyqt_ok=no
-> 
->     if test "x$pyqt_vers" = "xold"
->     then
->         AC_CHECK_FILES("$PYQTDIR"/qt.py "$PYQTDIR"/libqtcmodule.so,pyqt_ok=yes,pyqt_ok=no) 
->         if test "x$pyqt_ok" = xno -o ! -d "$PYQTDIR"/sip ; then
->            AC_MSG_RESULT(no)
->            AC_MSG_WARN(pyqt not found)
->         else
->            PYQT_ROOT=$PYQTDIR
->            PYQT_INCLUDES="-I$PYQTDIR/sip"
->         PYQT_LIBS="-L${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages -L$PYQTDIR -lqtcmodule"
->            AC_SUBST(PYQT_ROOT)
->            AC_SUBST(PYQT_INCLUDES)
->            AC_SUBST(PYQT_LIBS)
->            AC_MSG_RESULT(yes)
->         fi
->     fi
-> 
->     if test "x$pyqt_vers" = "xnew"
->     then
->         AC_CHECK_FILES("$PYQTDIR"/lib/qt.py "$PYQTDIR"/lib/libqtcmodule.so,pyqt_ok=yes,pyqt_ok=no) 
->         if test "x$pyqt_ok" = xno ; then
->            AC_MSG_RESULT(no)
->            AC_MSG_WARN(pyqt not found)
->         else
->            PYQT_ROOT=$PYQTDIR
->            PYQT_INCLUDES="-I$PYQTDIR/sip"
->            PYQT_LIBS="-L$PYQTDIR/lib -lqtcmodule"
->            AC_SUBST(PYQT_ROOT)
->            AC_SUBST(PYQT_INCLUDES)
->            AC_SUBST(PYQT_LIBS)
->            AC_MSG_RESULT(yes)
->         fi
->     fi
->   fi
-25c91
-< AC_ARG_WITH(pyuic,
----
->   AC_ARG_WITH(pyuic,
-28a95,96
->     ], [
->       AC_PATH_PROG(PYUIC, pyuic)
-30a99,110
->   if test "x$PYUIC" = "x"
->   then
->     pyqt_ok=no
->     AC_MSG_RESULT(pyuic not in PATH variable)
->   else
->      if test -z $PYQT_SIPS; then
->        AC_MSG_WARN(You must provide PYQT_SIPS variable)
->        pyqt_ok=no
->      else
->        PYQT_SIPS=${PYQT_SIPS}
->      fi
->   fi
-32,46c112,113
-< if test -z $PYQTDIR; then
-<    PYQTDIR="/usr/lib/python${PYTHON_VERSION}/site-packages"  
-< else
-<    if test -z $PYQT_SIPS; then
-<       PYQT_SIPS="$PYQTDIR/sip"       
-<    fi        
-<    if test -z $PYUIC; then
-<       AC_CHECK_FILE("$PYQTDIR/pyuic",pyqt_ok=yes,pyqt_ok=no)
-<       if test "x$pyqt_ok" = xyes ; then      
-<          PYUIC="$PYQTDIR/pyuic"
-<       else
-<          AC_PATH_PROG(PYUIC, pyuic)
-<       fi     
-<    fi        
-< fi
----
->   AC_SUBST(PYUIC)
->   AC_SUBST(PYQT_SIPS)
-48,49c115
-< if test -z $PYQT_SIPS; then
-<    PYQT_SIPS="/usr/share/sip/qt"     
----
->   AC_MSG_RESULT(for pyqt: $pyqt_ok)
-51,96d116
-< 
-< if test -z $PYUIC; then
-<    PYUIC="/usr/bin/pyuic"    
-< fi
-< 
-< AC_CHECK_FILES("$PYQTDIR/qt.py","$PYQTDIR/qt/qt.py",pyqt_ok=yes,pyqt_ok=no)
-< if test "x$pyqt_ok" = xno ; then
-<    AC_MSG_RESULT(no)
-<    AC_MSG_WARN(pyqt not found)
-< else
-<    AC_CHECK_FILE("$PYQTDIR/libqtcmodule.so",pyqt_ok=yes,pyqt_ok=no)
-<    if test "x$pyqt_ok" = xno ; then
-<       AC_MSG_RESULT(no)
-<       AC_MSG_WARN(pyqt not found)
-<    else
-<       PYQT_ROOT=$PYQTDIR
-<       PYQT_LIBS="-L$PYQTDIR -lqtcmodule"
-<    fi
-<    AC_CHECK_FILE("$PYQT_SIPS/copying.sip",pyqt_ok=yes,pyqt_ok=no)
-<    if test "x$pyqt_ok" = xno ; then
-<       AC_MSG_RESULT(no)
-<       AC_MSG_WARN(pyqt not found)
-<    else
-<       PYQT_INCLUDES="-I$PYQT_SIPS"
-<    fi
-< 
-<    AC_SUBST(PYQT_ROOT)
-<    AC_SUBST(PYQT_INCLUDES)
-<    AC_SUBST(PYQT_LIBS)
-< 
-<    AC_MSG_RESULT(yes)
-< fi
-< 
-< PYQT_ROOT=$PYQTDIR
-< PYQT_INCLUDES="-I$PYQT_SIPS"
-< PYQT_LIBS="-L$PYQTDIR -lqtcmodule"
-< 
-< AC_SUBST(PYQT_ROOT)
-< AC_SUBST(PYQT_INCLUDES)
-< AC_SUBST(PYUIC)
-< AC_SUBST(PYQT_SIPS)
-< AC_SUBST(PYQT_LIBS)
-< 
-< 
-< 
-< AC_MSG_RESULT(for pyqt: $pyqt_ok)
-diff -r ./config_files/check_qt.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/check_qt.m4
-1,21d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-diff -r ./config_files/check_qwt.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/check_qwt.m4
-1,2d0
-< dnl Copyright (C) 2003  CEA/DEN, EDF R&D
-< 
-8c6
-< qwt_ok=yes
----
-> qwt_ok=no
-11,23d8
-< 
-< AC_ARG_WITH(qwt,
-<     [  --with-qwt=DIR     directory path to QWT installation ],
-<     [QWTHOME="$withval"
-<       AC_MSG_RESULT("select $withval as path to QWT")
-<     ])
-< 
-< AC_ARG_WITH(qwt_inc,
-<     [  --with-qwt_inc=DIR   directory path to QWT includes ],
-<     [QWT_INCLUDES="$withval"
-<       AC_MSG_RESULT("select $withval as path to QWT includes")
-<     ])
-< 
-25,37c10
-<   exits_ok=no        
-<   AC_CHECK_FILE("/usr/local/lib/libqwt.so",exits_ok=yes,exits_ok=no)
-<   if test "x$exits_ok" = "xyes"; then
-<      QWTHOME="/usr/local/lib"    
-<      if test -z $QWT_INCLUDES; then
-<         QWT_INCLUDES="/usr/local/include/qwt"
-<      fi
-<   else
-<      QWTHOME="/usr/lib"   
-<      if test -z $QWT_INCLUDES; then
-<         QWT_INCLUDES="/usr/include/qwt"
-<      fi
-<   fi 
----
->   AC_MSG_WARN(You must provide QWTHOME variable)
-39,41c12
-<   if test -z $QWT_INCLUDES; then
-<      QWT_INCLUDES="$QWTHOME/include"
-<   fi         
----
->   qwt_ok=yes
-47d17
-<   qwt_ok=no
-48a19
->   
-52c23
-<    CPPFLAGS="$CPPFLAGS -I$QWT_INCLUDES"
----
->    CPPFLAGS="$CPPFLAGS -I$QWTHOME/include"
-73c44
-<   CXXFLAGS="$CXXFLAGS -I$QTDIR/include -I$QWT_INCLUDES"
----
->   CXXFLAGS="$CXXFLAGS -I$QTDIR/include -I$QWTHOME/include"
-94c65
-<     QWT_INCLUDES="-I$QWT_INCLUDES"
----
->     QWT_INCLUDES="-I$QWTHOME/include"
-diff -r ./config_files/check_sip.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/check_sip.m4
-1d0
-< dnl Copyright (C) 2003  CEA/DEN, EDF R&D
-21,28c20,51
-<      if test $SIPDIR ; then
-<              SIP_ROOT="$SIPDIR"
-<              SIP_INCLUDES="-I${SIPDIR}"
-<              SIP_LIBS="-L${SIPDIR} -lsip"
-<      else
-<              SIP_INCLUDES="${PYTHON_INCLUDES}"
-<              SIP_LIBS="-L${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages -lsip"
-<      fi
----
->     version=`sip -V`
->     case "$version" in
->          3.2*)
->            sip_vers=old ;;
->          3.3*)
->            sip_vers=old ;;
->          3.4*)
->            sip_vers=new ;;
->          3.5*)
->            sip_vers=new ;;
->            *)
->            sip_vers=no ;;
->     esac
-> 
->     sip_ok=no
-> 
->     if test "x$sip_vers" = "xold"
->     then
->         sip_ok=yes
->      SIP_ROOT="$SIPDIR"
->      SIP_INCLUDES="${PYTHON_INCLUDES} -I${SIPDIR}"
->      SIP_LIBS="-L${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/site-packages -L${SIPDIR} -lsip"
->     fi
-> 
->     if test "x$sip_vers" = "xnew"
->     then
->         sip_ok=yes
->      SIP_ROOT="$SIPDIR"
->      SIP_INCLUDES="${PYTHON_INCLUDES} -I${SIPDIR}/include"
->      SIP_LIBS="-L${SIPDIR}/lib -lsip"
->     fi
-> 
-diff -r ./config_files/check_swig.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/check_swig.m4
-1,21d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-diff -r ./config_files/check_vtk.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/check_vtk.m4
-1,22d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-< 
-53,54c31,32
-< LOCAL_LIBS="-lvtkCommon -lvtkGraphics -lvtkImaging -lvtkPatented -lvtkFiltering -lvtkIO -lvtkRendering -lvtkHybrid $OGL_LIBS -L$x_libraries -lX11 -lXt"
-< TRY_LINK_LIBS="-lvtkCommon $OGL_LIBS -L$x_libraries -lX11 -lXt"
----
-> LOCAL_LIBS="-lVTKCommon -lVTKGraphics -lVTKImaging -lVTKContrib $OGL_LIBS -L$x_libraries -lX11 -lXt"
-> TRY_LINK_LIBS="-lVTKCommon $OGL_LIBS -L$x_libraries -lX11 -lXt"
-60,62c38,40
-<    LOCAL_INCLUDES="-I$VTKHOME/include/vtk $LOCAL_INCLUDES"
-<    LOCAL_LIBS="-L$VTKHOME/lib/vtk $LOCAL_LIBS"
-<    TRY_LINK_LIBS="-L$VTKHOME/lib/vtk $TRY_LINK_LIBS"
----
->    LOCAL_INCLUDES="-I$VTKHOME/common -I$VTKHOME/imaging -I$VTKHOME/graphics -I$VTKHOME/contrib $LOCAL_INCLUDES"
->    LOCAL_LIBS="-L$VTKHOME/lib -L$VTKHOME/common -L$VTKHOME/graphics -L$VTKHOME/imaging -L$VTKHOME/contrib $LOCAL_LIBS"
->    TRY_LINK_LIBS="-L$VTKHOME/lib -L$VTKHOME/common $TRY_LINK_LIBS"
-67c45
-< CPPFLAGS="$CPPFLAGS $LOCAL_INCLUDES"
----
-> CPPFLAGS="$CPPFLAGS $LOCAL_INCLUDES -Wno-deprecated"
-69c47
-< AC_CHECK_HEADER(vtkPlane.h,vtk_ok="yes",vtk_ok="no")
----
-> AC_CHECK_HEADER(vtk.h,vtk_ok="yes",vtk_ok="no")
-71c49
-<  CPPFLAGS="$CPPFLAGS_old"
----
-> CPPFLAGS="$CPPFLAGS_old"
-73,75c51,53
-<  if  test "x$vtk_ok" = "xyes"
-<  then
-<    VTK_INCLUDES="$LOCAL_INCLUDES"
----
-> if  test "x$vtk_ok" = "xyes"
-> then
->   VTK_INCLUDES="$LOCAL_INCLUDES"
-77c55
-<  dnl vtk libraries
----
-> dnl vtk libraries
-79c57
-<    AC_MSG_CHECKING(linking VTK library)
----
->   AC_MSG_CHECKING(linking VTK library)
-81,85c59,63
-<    LIBS_old="$LIBS"
-<  #  LIBS="$LIBS $TRY_LINK_LIBS"
-<    LIBS="$LIBS $LOCAL_LIBS"
-<    CPPFLAGS_old="$CPPFLAGS"
-<    CPPFLAGS="$CPPFLAGS $VTK_INCLUDES"
----
->   LIBS_old="$LIBS"
-> #  LIBS="$LIBS $TRY_LINK_LIBS"
->   LIBS="$LIBS $LOCAL_LIBS"
->   CPPFLAGS_old="$CPPFLAGS"
->   CPPFLAGS="$CPPFLAGS $VTK_INCLUDES -Wno-deprecated"
-87c65
-<  dnl  VTKPY_MODULES="$VTKHOME/python"
----
-> dnl  VTKPY_MODULES="$VTKHOME/python"
-89,91c67,69
-<    AC_CACHE_VAL(salome_cv_lib_vtk,[
-<      AC_TRY_LINK(
-< #include "vtkPlane.h"
----
->   AC_CACHE_VAL(salome_cv_lib_vtk,[
->     AC_TRY_LINK(
-> #include <vtk.h>
-119,120d96
-< 
-< 
-diff -r ./config_files/enable_pthreads.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/enable_pthreads.m4
-1,21d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-27c6
-< dnl@id  $Id$
----
-> dnl@id  $Id$
-diff -r ./config_files/mkinstalldirs /Salome2/KERNEL_SRC/salome_adm/unix/config_files/mkinstalldirs
-7c7
-< # $Id$
----
-> # $Id$
-diff -r ./config_files/production.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/production.m4
-1,21d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-27c6
-< dnl version $Id$
----
-> dnl version $Id$
-58c37
-<   CXXFLAGS="$CXXFLAGS -O -Wno-deprecated "
----
->   CXXFLAGS="$CXXFLAGS -O"
-92c71
-<   CXXFLAGS="$CXXFLAGS -g -D_DEBUG_ -Wno-deprecated "
----
->   CXXFLAGS="$CXXFLAGS -g -D_DEBUG_ "
-diff -r ./config_files/pyembed.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/pyembed.m4
-1,21d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-diff -r ./config_files/python.m4 /Salome2/KERNEL_SRC/salome_adm/unix/config_files/python.m4
-1,21d0
-< dnl  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-< dnl  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-< dnl 
-< dnl  This library is free software; you can redistribute it and/or 
-< dnl  modify it under the terms of the GNU Lesser General Public 
-< dnl  License as published by the Free Software Foundation; either 
-< dnl  version 2.1 of the License. 
-< dnl 
-< dnl  This library is distributed in the hope that it will be useful, 
-< dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-< dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-< dnl  Lesser General Public License for more details. 
-< dnl 
-< dnl  You should have received a copy of the GNU Lesser General Public 
-< dnl  License along with this library; if not, write to the Free Software 
-< dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-< dnl 
-< dnl  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-< dnl
-< dnl
-< dnl
-diff -r ./depend.in /Salome2/KERNEL_SRC/salome_adm/unix/depend.in
-28c28
-<          perl -p $(top_srcdir)/bin/distdep .depend >>$@;                   \
----
->          perl -p $(top_srcdir)/bin/salome/distdep .depend >>$@;                    \
-diff -r ./envScript.in /Salome2/KERNEL_SRC/salome_adm/unix/envScript.in
-12c12
-< export LD_LIBRARY_PATH=${SALOME_HOME_DIR}/lib:${LD_LIBRARY_PATH}
----
-> export LD_LIBRARY_PATH=${SALOME_HOME_DIR}/lib/salome:${LD_LIBRARY_PATH}
-18c18
-< export PYTHONPATH=${PYTHONPATH}:${SALOME_HOME_DIR}/idl:${SALOME_HOME_DIR}/bin:${SALOME_HOME_DIR}/lib:${PYVTK_PATH}:${EXEC_DIR}
----
-> export PYTHONPATH=${PYTHONPATH}:${SALOME_HOME_DIR}/idl:${SALOME_HOME_DIR}/bin/salome:${SALOME_HOME_DIR}/lib/salome:${PYVTK_PATH}:${EXEC_DIR}
-diff -r ./make_commence.in /Salome2/KERNEL_SRC/salome_adm/unix/make_commence.in
-2c2
-< inc_builddir=$(top_builddir)/include
----
-> inc_builddir=$(top_builddir)/include/salome
-13c13
-< LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib -Xlinker -rpath-link -Xlinker $(top_builddir)/lib
----
-> LDFLAGS=@LDFLAGS@ -L$(top_builddir)/lib/salome -Xlinker -rpath-link -Xlinker -L$(top_builddir)/lib/salome
-50,52c50,51
-< PYTHON_SITE = @PYTHON_SITE@
-< PYTHON_SITE_INSTALL = @PYTHON_SITE_INSTALL@
-< 
----
-> PYTHON_SITE = $(prefix)/lib/python$(PYTHON_VERSION)/site-packages
-> PYTHON_SITE_INSTALL = $(prefix)/lib/python$(PYTHON_VERSION)/site-packages/salome
-102a102,107
-> 
-> OCC_KERNEL_LIBS=@CAS_KERNEL@
-> OCC_OCAF_LIBS=@CAS_OCAF@
-> OCC_VIEWER_LIBS=@CAS_VIEWER@
-> OCC_MODELER_LIBS=@CAS_MODELER@
-> OCC_DATAEXCHANGE_LIBS=@CAS_DATAEXCHANGE@
-104,108c109
-< CAS_KERNEL=@CAS_KERNEL@
-< CAS_OCAF=@CAS_OCAF@
-< CAS_VIEWER=@CAS_VIEWER@
-< CAS_MODELER=@CAS_MODELER@
-< CAS_DATAEXCHANGE=@CAS_DATAEXCHANGE@
----
-> 
-128c129
-< OMNIORB_IDLPYFLAGS  = @OMNIORB_IDLPYFLAGS@ -I$(top_srcdir)/share/salome/idl
----
-> OMNIORB_IDLPYFLAGS  = @OMNIORB_IDLPYFLAGS@ -I$(top_builddir)/idl
-145c146
-< IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(top_builddir)/share/salome/idl -I$(srcdir) 
----
-> IDLCXXFLAGS = @IDLCXXFLAGS@ -I$(top_builddir)/idl
-188,189c189,190
-< bindir=@bindir@
-< libdir=@libdir@
----
-> bindir=@bindir@/salome
-> libdir=@libdir@/salome
-193c194
-< idldir=$(datadir)/idl
----
-> idldir=${prefix}/idl/salome
-194a196
-> incmakedir=${prefix}/salome_adm/unix
-196c198
-< docdir=@exec_prefix@/doc
----
-> docdir=$(datadir)/doc
-246,248c248,249
-< $(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=$(top_srcdir)/adm/unix/config_files/%)
-<      cd $(top_srcdir) ; aclocal --acdir=./adm/unix/config_files
-< 
----
-> $(top_srcdir)/aclocal.m4: $(ACLOCAL_SRC:%=@KERNEL_ROOT_DIR@/salome_adm/unix/config_files/%)
->      cd $(top_srcdir) ; aclocal --acdir=adm_local/unix/config_files -I @KERNEL_ROOT_DIR@/salome_adm/unix/config_files
-diff -r ./make_conclude.in /Salome2/KERNEL_SRC/salome_adm/unix/make_conclude.in
-10c10
-< # $Header$
----
-> # $Header$
-38,40c38,40
-< # LIB_BUILD = $(LIB:%.la=$(top_builddir)/lib/%.la)
-< LIB_BUILD = $(patsubst %.la, $(top_builddir)/lib/%.la, $(filter %.la, $(LIB)))
-< LIB_BUILD_A = $(patsubst %.a, $(top_builddir)/lib/%.a, $(filter %.a, $(LIB)))
----
-> # LIB_BUILD = $(LIB:%.la=$(top_builddir)/lib/salome/%.la)
-> LIB_BUILD = $(patsubst %.la, $(top_builddir)/lib/salome/%.la, $(filter %.la, $(LIB)))
-> LIB_BUILD_A = $(patsubst %.a, $(top_builddir)/lib/salome/%.a, $(filter %.a, $(LIB)))
-51c51
-< $(LIB_BUILD): $(top_builddir)/lib/%.la: %.la
----
-> $(LIB_BUILD): $(top_builddir)/lib/salome/%.la: %.la
-55,56c55,56
-<      ln -sf $(CURDIR)/$< $@ || true
-<      ln -sf $(patsubst %.la, %.so, $(CURDIR)/.libs/$<) \
----
->      ln -s $(CURDIR)/$< $@ || true
->      ln -s $(patsubst %.la, %.so, $(CURDIR)/.libs/$<) \
-58c58
-<      ln -sf $(patsubst %.la, %.so, $(CURDIR)/.libs/$<).0 \
----
->      ln -s $(patsubst %.la, %.so, $(CURDIR)/.libs/$<).0 \
-62c62
-<         ln -sf $(patsubst %.la,%.so, $(CURDIR)/.libs/$<) $(top_builddir)/lib/_$(LIB_SWIG) || true;\
----
->         ln -s $(patsubst %.la,%.so, $(CURDIR)/.libs/$<) $(top_builddir)/lib/salome/_$(LIB_SWIG) || true;\
-65c65
-< $(LIB_BUILD_A): $(top_builddir)/lib/%.a: %.a
----
-> $(LIB_BUILD_A): $(top_builddir)/lib/salome/%.a: %.a
-67c67
-<      ln -sf $(CURDIR)/$< $@ || true
----
->      ln -s $(CURDIR)/$< $@ || true
-89c89
-< bin: $(BIN:%=$(top_builddir)/bin/%) $(BIN) $(LIB) pyscripts sharedpyscripts
----
-> bin: $(BIN:%=$(top_builddir)/bin/salome/%) $(BIN) $(LIB) pyscripts sharedpyscripts
-93c93
-< $(BIN:%=$(top_builddir)/bin/%) $(TEST_PROGS:%=$(top_builddir)/bin/%): $(top_builddir)/bin/%: %
----
-> $(BIN:%=$(top_builddir)/bin/salome/%) $(TEST_PROGS:%=$(top_builddir)/bin/salome/%): $(top_builddir)/bin/salome/%: %
-95c95
-<      ln -sf $(CURDIR)/$< $@
----
->      ln -s $(CURDIR)/$< $@
-100c100
-< # copy python scripts in $(top_builddir)/bin
----
-> # copy python scripts in $(top_builddir)/bin/salome
-102c102
-< DEST_PYSCRIPTS = $(EXPORT_PYSCRIPTS:%=$(top_builddir)/bin/%)
----
-> DEST_PYSCRIPTS = $(EXPORT_PYSCRIPTS:%=$(top_builddir)/bin/salome/%)
-104c104
-< $(DEST_PYSCRIPTS): $(top_builddir)/bin/%: %
----
-> $(DEST_PYSCRIPTS): $(top_builddir)/bin/salome/%: %
-123c123
-< test: $(LIB) $(TEST_PROGS:%=$(top_builddir)/bin/%) 
----
-> test: $(LIB) $(TEST_PROGS:%=$(top_builddir)/bin/salome/%) 
-148c148
-<        (cd $(libdir); ln -sf $(patsubst %.so, %cmodule.so, $(LIB_SWIG)) _$(LIB_SWIG)  || true); \
----
->        (cd $(libdir); ln -s $(patsubst %.so, %cmodule.so, $(LIB_SWIG)) _$(LIB_SWIG)  || true); \
-164c164
-<           ($(INSTALL_DATA) $$f $(includedir)/. || exit 1);                 \
----
->           (cp -p $$f $(includedir) || exit 1);                             \
-263,266c263,266
-<      -$(RM) $(top_builddir)/lib/$(LIB)
-<      -$(RM) $(patsubst %,$(top_builddir)/bin/%, $(BIN))
-<      -$(RM) $(patsubst %.la, %.so, $(top_builddir)/lib/$(LIB))
-<      -$(RM) $(patsubst %.la, %.a, $(top_builddir)/lib/$(LIB))
----
->      -$(RM) $(top_builddir)/lib/salome/$(LIB)
->      -$(RM) $(patsubst %,$(top_builddir)/bin/salome/%, $(BIN))
->      -$(RM) $(patsubst %.la, %.so, $(top_builddir)/lib/salome/$(LIB))
->      -$(RM) $(patsubst %.la, %.a, $(top_builddir)/lib/salome/$(LIB))
-330c330,334
-<      $(top_builddir)/bin/msg2qm $< $@
----
->      if test -e ${KERNEL_ROOT_DIR}/bin/salome/msg2qm ; then \
->              ${KERNEL_ROOT_DIR}/bin/salome/msg2qm $< $@ ; \
->      else \
->              $(top_builddir)/bin/salome/msg2qm $< $@ ; \
->      fi
-diff -r ./make_omniorb.in /Salome2/KERNEL_SRC/salome_adm/unix/make_omniorb.in
-10c10
-< # $Header$
----
-> # $Header$
-19c19
-< %$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${top_builddir}/share/salome/idl/%.idl
----
-> %$(OMNIORB_IDL_CLN_CXX) %$(OMNIORB_IDL_CLN_H): ${top_builddir}/idl/%.idl
-Only in .: toto
index ee5063df1bc235d00b15dc7b76eb31e05847d912..87f372867be63617a21151acb89a7a8d3f1cc5c9 100644 (file)
@@ -27,7 +27,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
@@ -53,7 +53,7 @@ BIN_SERVER_IDL = SALOME_Component.idl
 
 CPPFLAGS+= $(PYTHON_INCLUDES)
 
-LDFLAGS+= -lSalomeNS -lRegistry -lOpUtil -lSalomeNotification -lSalomeLoggerServer
+LDFLAGS+= -lSalomeNS -lRegistry -lOpUtil -lSalomeNotification -lSALOMELocalTrace
 
 LIBS += -Xlinker -export-dynamic $(PYTHON_LIBS)
 
index ce8c05628e828dd287590121683474295a4cec21..77a06b9de0584040b723c7b8164e37168fb2b643 100644 (file)
 //  Module : SALOME
 //  $Header$
 
-using namespace std;
-using namespace std;
 #include <stdio.h>
 
-# include "Utils_ORB_INIT.hxx"
-# include "Utils_SINGLETON.hxx"
+#include "Utils_ORB_INIT.hxx"
+#include "Utils_SINGLETON.hxx"
 #include "SALOME_NamingService.hxx"
 #include "SALOME_Container_i.hxx"
 #include <iostream>
 #include <string>
 #include "utilities.h"
+using namespace std;
 
-//#define CHECKTIME
 #ifdef CHECKTIME
 #include <Utils_Timer.hxx>
 #endif
 
 #include <Python.h>
 
-static PyMethodDef MethodPyVoidMethod[] = {
-  { NULL,        NULL }
-};
+static PyMethodDef MethodPyVoidMethod[] =
+  {
+    { NULL, NULL }
+  };
 
 int main(int argc, char* argv[])
 {
   INFOS_COMPILATION;
   BEGIN_OF(argv[0])
 
-  Py_Initialize() ;
+    Py_Initialize() ;
   PySys_SetArgv( argc , argv ) ;
   Py_InitModule( "InitPyRunMethod" , MethodPyVoidMethod ) ;
 
-  try {
+  try
+    {
     
-    // Initialise the ORB.
-//     CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);
-    ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
-    ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting()) ;
-    CORBA::ORB_var &orb = init( argc , argv ) ;
+      // Initialise the ORB.
+      ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
+      ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting()) ;
+      CORBA::ORB_var &orb = init( argc , argv ) ;
  
-    // Obtain a reference to the root POA.
-    // obtain the root poa manager
-    //
-    long TIMESleep = 250000000;
-    int NumberOfTries = 40;
-    int a;
-    timespec ts_req;
-    ts_req.tv_nsec=TIMESleep;
-    ts_req.tv_sec=0;
-    timespec ts_rem;
-    ts_rem.tv_nsec=0;
-    ts_rem.tv_sec=0;
-    CosNaming::NamingContext_var inc;
-    PortableServer::POA_var root_poa;
-    CORBA::Object_var theObj;
-    CORBA::Object_var obj;
-    CORBA::Object_var object;
-    SALOME_Logger::Logger_var log;
-    SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
-    int CONTAINER=0;
-    const char * Env = getenv("USE_LOGGER");
-    int EnvL =0;
-    if ((Env!=NULL) && (strlen(Env)))
-      EnvL=1;
-
-    CosNaming::Name name;
-    name.length(1);
-    name[0].id=CORBA::string_dup("Logger");    
-    PortableServer::POAManager_var pman; 
-    for (int i = 1; i<=NumberOfTries; i++){
-      if (i!=1) 
-       a=nanosleep(&ts_req,&ts_rem);
-      try{ 
-       obj = orb->resolve_initial_references("RootPOA");
-       if(!CORBA::is_nil(obj))
-         root_poa = PortableServer::POA::_narrow(obj);
-       if(!CORBA::is_nil(root_poa))
-         pman = root_poa->the_POAManager();
-       if(!CORBA::is_nil(orb)) 
-         theObj = orb->resolve_initial_references("NameService");
-       if (!CORBA::is_nil(theObj))
-         inc = CosNaming::NamingContext::_narrow(theObj);
-      }
-      catch( CORBA::COMM_FAILURE& )
+      // Obtain a reference to the root POA.
+      // obtain the root poa manager
+      //
+      long TIMESleep = 250000000;
+      int NumberOfTries = 40;
+      int a;
+      timespec ts_req;
+      ts_req.tv_nsec=TIMESleep;
+      ts_req.tv_sec=0;
+      timespec ts_rem;
+      ts_rem.tv_nsec=0;
+      ts_rem.tv_sec=0;
+      CosNaming::NamingContext_var inc;
+      PortableServer::POA_var root_poa;
+      CORBA::Object_var theObj;
+      CORBA::Object_var obj;
+      CORBA::Object_var object;
+      SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
+      int CONTAINER=0;
+      const char * Env = getenv("USE_LOGGER");
+      int EnvL =0;
+      if ((Env!=NULL) && (strlen(Env)))
+       EnvL=1;
+
+      CosNaming::Name name;
+      name.length(1);
+      name[0].id=CORBA::string_dup("Logger");    
+      PortableServer::POAManager_var pman; 
+      for (int i = 1; i<=NumberOfTries; i++)
        {
-         MESSAGE( "Container: CORBA::COMM_FAILURE: Unable to contact the Naming Service" )
+         if (i!=1) 
+           a=nanosleep(&ts_req,&ts_rem);
+         try
+           { 
+             obj = orb->resolve_initial_references("RootPOA");
+             if(!CORBA::is_nil(obj))
+               root_poa = PortableServer::POA::_narrow(obj);
+             if(!CORBA::is_nil(root_poa))
+               pman = root_poa->the_POAManager();
+             if(!CORBA::is_nil(orb)) 
+               theObj = orb->resolve_initial_references("NameService");
+             if (!CORBA::is_nil(theObj))
+               inc = CosNaming::NamingContext::_narrow(theObj);
+           }
+         catch( CORBA::COMM_FAILURE& )
+           {
+             MESSAGE( "Container: CORBA::COMM_FAILURE: Unable to contact the Naming Service" );
            }
-      if(!CORBA::is_nil(inc)) {
-       MESSAGE( "Container: Naming Service was found" )
-         if(EnvL==1){
-           for(int j=1; j<=NumberOfTries; j++){
-             if (j!=1) 
-               a=nanosleep(&ts_req, &ts_rem);
-             try{
-                   object = inc->resolve(name);
-                 }
-                 catch(CosNaming::NamingContext::NotFound){ MESSAGE( "Container: Logger Server wasn't found" ) }
-                 catch(...){ MESSAGE( "Container: Unknown exception" ) }
-                 if (!CORBA::is_nil(object))
-                   log = SALOME_Logger::Logger::_narrow(object);
-                 if (!CORBA::is_nil(log)){
-                   MESSAGE( "Container: Logger Server was found" )
-                     log->ping();
-                    CONTAINER=1;
-                   break;
-                 }
-               }}
-         }
-      if ((CONTAINER==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
+         if(!CORBA::is_nil(inc)) 
+           {
+             MESSAGE( "Container: Naming Service was found" );
+             if(EnvL==1)
+               {
+                 for(int j=1; j<=NumberOfTries; j++)
+                   {
+                     if (j!=1) 
+                       a=nanosleep(&ts_req, &ts_rem);
+                     try
+                       {
+                         object = inc->resolve(name);
+                       }
+                     catch(CosNaming::NamingContext::NotFound)
+                       {
+                         MESSAGE( "Container: Logger Server wasn't found" );
+                       }
+                     catch(...)
+                       {
+                         MESSAGE( "Container: Unknown exception" );
+                       }
+                     if (!CORBA::is_nil(object))
+                       {
+                         MESSAGE( "Container: Logger Server was found" );
+                         CONTAINER=1;
+                         break;
+                       }
+                   }
+               }
+           }
+         if ((CONTAINER==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
             break;
-             }    
+       }    
 
-     // 
-    // define policy objects     
-    PortableServer::ImplicitActivationPolicy_var implicitActivation =
-      root_poa->create_implicit_activation_policy(PortableServer::NO_IMPLICIT_ACTIVATION) ;
+      // define policy objects     
+      PortableServer::ImplicitActivationPolicy_var implicitActivation =
+       root_poa->create_implicit_activation_policy(PortableServer::NO_IMPLICIT_ACTIVATION) ;
 
-    // default = NO_IMPLICIT_ACTIVATION
-    PortableServer::ThreadPolicy_var threadPolicy =
-      root_poa->create_thread_policy(PortableServer::ORB_CTRL_MODEL) ;
-    // default = ORB_CTRL_MODEL, other choice SINGLE_THREAD_MODEL
+      // default = NO_IMPLICIT_ACTIVATION
+      PortableServer::ThreadPolicy_var threadPolicy =
+       root_poa->create_thread_policy(PortableServer::ORB_CTRL_MODEL) ;
+      // default = ORB_CTRL_MODEL, other choice SINGLE_THREAD_MODEL
     
-    // create policy list
-    CORBA::PolicyList policyList;
-    policyList.length(2);
-    policyList[0] = PortableServer::ImplicitActivationPolicy::_duplicate(implicitActivation) ;
-    policyList[1] = PortableServer::ThreadPolicy::_duplicate(threadPolicy) ;
-
-    // create the child POA
-    PortableServer::POAManager_var nil_mgr = PortableServer::POAManager::_nil() ;
-    PortableServer::POA_var factory_poa =
-      root_poa->create_POA("factory_poa", pman, policyList) ;
+      // create policy list
+      CORBA::PolicyList policyList;
+      policyList.length(2);
+      policyList[0] = PortableServer::ImplicitActivationPolicy::_duplicate(implicitActivation) ;
+      policyList[1] = PortableServer::ThreadPolicy::_duplicate(threadPolicy) ;
+
+      // create the child POA
+      PortableServer::POAManager_var nil_mgr = PortableServer::POAManager::_nil() ;
+      PortableServer::POA_var factory_poa =
+       root_poa->create_POA("factory_poa", pman, policyList) ;
       //with nil_mgr instead of pman, a new POA manager is created with the new POA
     
-    // destroy policy objects
-    implicitActivation->destroy() ;
-    threadPolicy->destroy() ;
+      // destroy policy objects
+      implicitActivation->destroy() ;
+      threadPolicy->destroy() ;
 
-    char *containerName = "";
-    if (argc >1) 
-    {
-       containerName = argv[1] ;
-    }
+      char *containerName = "";
+      if (argc >1) 
+       {
+         containerName = argv[1] ;
+       }
     
-    Engines_Container_i * myContainer 
-     = new Engines_Container_i(orb, factory_poa, containerName , argc , argv );
+      Engines_Container_i * myContainer 
+       = new Engines_Container_i(orb, factory_poa, containerName , argc , argv );
 
-//     Engines_Container_i * myContainer 
-//      = new Engines_Container_i(string(argv[1]),string(argv[2]), orb, factory_poa);
+      //     Engines_Container_i * myContainer 
+      //      = new Engines_Container_i(string(argv[1]),string(argv[2]), orb, factory_poa);
 
-    // use naming service
-//     myContainer->_NS.init_orb(orb);
-//     Engines::Container_ptr pCont = Engines::Container::_narrow(myContainer->_this());
-//     myContainer->_NS.Register(pCont, argv[2]); 
+      // use naming service
+      //     myContainer->_NS.init_orb(orb);
+      //     Engines::Container_ptr pCont = Engines::Container::_narrow(myContainer->_this());
+      //     myContainer->_NS.Register(pCont, argv[2]); 
     
-    pman->activate();
+      pman->activate();
 
 #ifdef CHECKTIME
-    Utils_Timer timer;
-    timer.Start();
-    timer.Stop();
-    MESSAGE("SALOME_Registry_Server.cxx - orb->run()");
-    timer.ShowAbsolute();
+      Utils_Timer timer;
+      timer.Start();
+      timer.Stop();
+      MESSAGE("SALOME_Registry_Server.cxx - orb->run()");
+      timer.ShowAbsolute();
 #endif
-    orb->run();
+      orb->run();
 
-    orb->destroy();
-  }
+      orb->destroy();
+    }
   catch(CORBA::SystemException&)
-  {
-    INFOS("Caught CORBA::SystemException.")
-  }
+    {
+      INFOS("Caught CORBA::SystemException.")
+       }
   catch(PortableServer::POA::WrongPolicy&)
-  {
-    INFOS("Caught CORBA::WrongPolicyException.")
-  }
+    {
+      INFOS("Caught CORBA::WrongPolicyException.")
+       }
   catch(PortableServer::POA::ServantAlreadyActive&)
-  {
-    INFOS("Caught CORBA::ServantAlreadyActiveException")
-  }
+    {
+      INFOS("Caught CORBA::ServantAlreadyActiveException")
+       }
   catch(CORBA::Exception&)
-  {
-    INFOS("Caught CORBA::Exception.")
-  }
+    {
+      INFOS("Caught CORBA::Exception.")
+       }
   catch(...)
-  {
-    INFOS("Caught unknown exception.")
-  }
+    {
+      INFOS("Caught unknown exception.")
+       }
   END_OF(argv[0]);
 }
 
index 4d906f84de61e1ea23a9551894dc2fcb46840eb8..6444ef148dc70a8ef04cb63e819d057d1d57b351 100755 (executable)
@@ -85,12 +85,29 @@ class SALOME_ContainerPy_i (Engines__POA.Container):
             else :
                 MESSAGE( "SALOME_ContainerPy_i::start_impl " + str(ContainerName) + ".object found without runSession" )
             return container
-        shstr = os.getenv( "PWD" ) + "/"
-        shstr += "runSession ./SALOME_ContainerPy.py "
+        #shstr = os.getenv( "PWD" ) + "/"
+        #shstr += "runSession ./SALOME_ContainerPy.py "
+        shstr = "runSession SALOME_ContainerPy.py "
         shstr += ContainerName
-        shstr += " > /tmp/"
-        shstr += ContainerName
-        shstr += ".log 2>&1 &"
+
+        # mpv: fix for SAL4731 - allways create new file to write log of server
+        num = 1
+        fileName = ""
+        while 1:
+            fileName = "/tmp/"+ContainerName+"_%i.log"%num
+            if not os.path.exists(fileName):
+                break
+            num += 1
+            pass
+        
+        shstr += " > "
+        shstr += fileName
+        shstr += " 2>&1 &"
+        
+        #shstr += " > /tmp/"
+        #shstr += ContainerName
+        #shstr += ".log 2>&1 &"
+        
         MESSAGE(  "SALOME_ContainerPy_i::start_impl " + "os.system(" + str(shstr) + ")" )
         os.system( shstr )
         count = 21
index 83ec2a9c0288dd307c6fb9a3f9a0987fa124c20e..5759b3b468fbadaf55f86727ca6a22041b0c1df4 100644 (file)
@@ -27,7 +27,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
@@ -54,6 +54,6 @@ BIN_SERVER_IDL = SALOME_DataTypeCatalog.idl
 
 CPPFLAGS+= $(QT_MT_INCLUDES) 
 CXXFLAGS+= 
-LDFLAGS+= $(QT_MT_LIBS) $(OGL_LIBS) -lSalomeNS -lOpUtil -lSalomeLoggerServer
+LDFLAGS+= $(QT_MT_LIBS) $(OGL_LIBS) -lSalomeNS -lOpUtil -lSALOMELocalTrace
 
 @CONCLUDE@
index 95c4ce6a1fb1e47842998e0ce8e1a79de28d1fbf..a29401c51644720df8528bf20b2c7be0343efd8e 100644 (file)
 //  Module : SALOME
 //  $Header$
 
-using namespace std;
 #include <iostream.h>
 #include "SALOME_NamingService.hxx"
 #include "SALOME_DataTypeCatalog_impl.hxx"
 #include "utilities.h"
-# include "Utils_SINGLETON.hxx"
+#include "Utils_SINGLETON.hxx"
+using namespace std;
+
 int main(int argc,char **argv)
 {
-  try {
-  CosNaming::NamingContext_var _rootContext, catalogContext;
-  // initialize the ORB
-  CORBA::ORB_ptr orb = CORBA::ORB_init (argc, argv);
-  // initialize POA
-  //
-  long TIMESleep = 250000000;
-  int NumberOfTries = 40;
-  int a;
-  timespec ts_req;
-  ts_req.tv_nsec=TIMESleep;
-  ts_req.tv_sec=0;
-  timespec ts_rem;
-  ts_rem.tv_nsec=0;
-  ts_rem.tv_sec=0;
-  CosNaming::NamingContext_var inc;
-  PortableServer::POA_var poa;
-  CORBA::Object_var theObj;
-  CORBA::Object_var obj;
-  CORBA::Object_var object;
-  SALOME_Logger::Logger_var log;
-  int DATA_TYPE_CATALOG=0;
-  const char * Env = getenv("USE_LOGGER"); 
-  int EnvL =0;
-  if ((Env!=NULL) && (strlen(Env)))
-    EnvL=1;  
-  CosNaming::Name name;
-  name.length(1);
-  name[0].id=CORBA::string_dup("Logger");    
-  PortableServer::POAManager_var mgr; 
+  try 
+    {
+      CosNaming::NamingContext_var _rootContext, catalogContext;
+      // initialize the ORB
+      CORBA::ORB_ptr orb = CORBA::ORB_init (argc, argv);
+      // initialize POA
+      //
+      long TIMESleep = 250000000;
+      int NumberOfTries = 40;
+      int a;
+      timespec ts_req;
+      ts_req.tv_nsec=TIMESleep;
+      ts_req.tv_sec=0;
+      timespec ts_rem;
+      ts_rem.tv_nsec=0;
+      ts_rem.tv_sec=0;
+      CosNaming::NamingContext_var inc;
+      PortableServer::POA_var poa;
+      CORBA::Object_var theObj;
+      CORBA::Object_var obj;
+      CORBA::Object_var object;
+      int DATA_TYPE_CATALOG=0;
+      const char * Env = getenv("USE_LOGGER"); 
+      int EnvL =0;
+      if ((Env!=NULL) && (strlen(Env)))
+       EnvL=1;  
+      CosNaming::Name name;
+      name.length(1);
+      name[0].id=CORBA::string_dup("Logger");    
+      PortableServer::POAManager_var mgr; 
  
-  for (int i = 1; i<=NumberOfTries; i++){
-    if (i!=1) 
-      a=nanosleep(&ts_req,&ts_rem);
-    try{ 
-      obj = orb->resolve_initial_references("RootPOA");
-      if(!CORBA::is_nil(obj))
-       poa = PortableServer::POA::_narrow(obj);
-      if(!CORBA::is_nil(poa))
-       mgr = poa->the_POAManager();
-      if(!CORBA::is_nil(orb)) 
-       theObj = orb->resolve_initial_references("NameService");
-      if (!CORBA::is_nil(theObj))
-       inc = CosNaming::NamingContext::_narrow(theObj);}
-    catch( CORBA::COMM_FAILURE& )
-      {
-       MESSAGE( "Data Type Catalog: CORBA::COMM_FAILURE: Unable to contact the Naming Service" )
-         }
-    if(!CORBA::is_nil(inc)) {
-      MESSAGE( "Data Type Catalog: Naming Service was found" )
-       if(EnvL==1){
-         CORBA::ORB_var orb1 = CORBA::ORB_init(argc,argv) ;
-         SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance() ;
-         NS.init_orb( orb1 ) ;
-         for(int j=1; j<=NumberOfTries; j++){
-           if (j!=1) 
-                 a=nanosleep(&ts_req, &ts_rem);
-           try{
-             object = inc->resolve(name);}
-           catch(CosNaming::NamingContext::NotFound){ MESSAGE( "Data Type Catalog: Logger Server wasn't found" ) }
-           catch(...){ MESSAGE( "Data Type Catalog: Unknown exception" ) }
-           if (!CORBA::is_nil(object))
-             log = SALOME_Logger::Logger::_narrow(object);
-           if (!CORBA::is_nil(log)){
-             MESSAGE( "Data Type Catalog: Logger Server was found" )
-               log->ping();
-             DATA_TYPE_CATALOG=1;
-                 break;
+      for (int i = 1; i<=NumberOfTries; i++)
+       {
+         if (i!=1) 
+           a=nanosleep(&ts_req,&ts_rem);
+         try
+           { 
+             obj = orb->resolve_initial_references("RootPOA");
+             if(!CORBA::is_nil(obj))
+               poa = PortableServer::POA::_narrow(obj);
+             if(!CORBA::is_nil(poa))
+               mgr = poa->the_POAManager();
+             if(!CORBA::is_nil(orb)) 
+               theObj = orb->resolve_initial_references("NameService");
+             if (!CORBA::is_nil(theObj))
+               inc = CosNaming::NamingContext::_narrow(theObj);}
+         catch( CORBA::COMM_FAILURE& )
+           {
+             MESSAGE( "Data Type Catalog: CORBA::COMM_FAILURE: Unable to contact the Naming Service" );
            }
+         if(!CORBA::is_nil(inc))
+           {
+             MESSAGE( "Data Type Catalog: Naming Service was found" );
+             if(EnvL==1)
+               {
+                 CORBA::ORB_var orb1 = CORBA::ORB_init(argc,argv) ;
+                 SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance() ;
+                 NS.init_orb( orb1 ) ;
+                 for(int j=1; j<=NumberOfTries; j++)
+                   {
+                     if (j!=1) 
+                       a=nanosleep(&ts_req, &ts_rem);
+                     try
+                       {
+                         object = inc->resolve(name);
+                       }
+                     catch(CosNaming::NamingContext::NotFound)
+                       {
+                         MESSAGE( "Data Type Catalog: Logger Server wasn't found" );
+                       }
+                     catch(...)
+                       {
+                         MESSAGE( "Data Type Catalog: Unknown exception" );
+                       }
+                     if (!CORBA::is_nil(object))
+                       {
+                         MESSAGE( "Data Type Catalog: Logger Server was found" );
+                         DATA_TYPE_CATALOG=1;
+                         break;
+                       }
            
-         }}
-    }
-    if ((DATA_TYPE_CATALOG==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
-      break;
+                   }
+               }
            }
+         if ((DATA_TYPE_CATALOG==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
+           break;
+       }
 
-  //
-  // Active catalog
+      // Active catalog
 
-  SALOME_DataTypeCatalogImpl* Catalogue_i = new SALOME_DataTypeCatalogImpl(argc, argv);
-  poa->activate_object (Catalogue_i);
+      SALOME_DataTypeCatalogImpl* Catalogue_i = new SALOME_DataTypeCatalogImpl(argc, argv);
+      poa->activate_object (Catalogue_i);
 
-  mgr->activate();
+      mgr->activate();
 
   
-  CORBA::Object_ptr myCata = Catalogue_i->_this();
+      CORBA::Object_ptr myCata = Catalogue_i->_this();
 
-  // initialise Naming Service
-  SALOME_NamingService *_NS;
-  _NS = new SALOME_NamingService(orb);
-  // register Catalog in Naming Service
-  _NS->Register(myCata ,"/Kernel/DataTypeCatalog");
+      // initialise Naming Service
+      SALOME_NamingService *_NS;
+      _NS = new SALOME_NamingService(orb);
+      // register Catalog in Naming Service
+      _NS->Register(myCata ,"/Kernel/DataTypeCatalog");
 
-  MESSAGE("Running DataType Catalog Server.")
+      MESSAGE("Running DataType Catalog Server.")
 
-  orb->run();
+       orb->run();
  
-  poa->destroy(1,1);
+      poa->destroy(1,1);
  
- }
-    catch(CORBA::SystemException&) {
   }
+  catch(CORBA::SystemException&) {
     INFOS("Caught CORBA::SystemException.")
-  }
-    catch(CORBA::Exception&) {
+      }
+  catch(CORBA::Exception&) {
     INFOS("Caught CORBA::Exception.")
-  }
+      }
 
   return 0;
 }
diff --git a/src/GenericObj/Makefile.in b/src/GenericObj/Makefile.in
new file mode 100644 (file)
index 0000000..5839dfa
--- /dev/null
@@ -0,0 +1,46 @@
+#  Copyright (C) 2003  CEA/DEN, EDF R&D
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Alexey Petrov
+#  Module : VISU
+#  $Header: 
+
+top_srcdir=@top_srcdir@
+top_builddir=../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl
+
+
+@COMMENCE@
+
+# Libraries targets
+LIB = libSalomeGenericObj.la
+LIB_SRC = SALOME_GenericObj_i.cc
+
+LIB_SERVER_IDL = SALOME_GenericObj.idl
+LIB_CLIENT_IDL = 
+
+# Executables targets
+BIN = 
+BIN_SRC = 
+
+BIN_CLIENT_IDL =  
+BIN_SERVER_IDL =
+EXPORT_HEADERS = SALOME_GenericObj_i.hh
+
+# additionnal information to compil and link file
+CPPFLAGS += 
+
+LDFLAGS += 
+
+LIBS += 
+
+# additional file to be cleaned
+MOSTLYCLEAN +=
+CLEAN +=
+DISTCLEAN +=
+
+@CONCLUDE@
\ No newline at end of file
diff --git a/src/GenericObj/SALOME_GenericObj_i.cc b/src/GenericObj/SALOME_GenericObj_i.cc
new file mode 100644 (file)
index 0000000..93aaa9d
--- /dev/null
@@ -0,0 +1,61 @@
+//  SALOME_GenericObj_i_CC
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//  File   : SALOME_GenericObj_i.cc
+//  Author : Alexey PETROV
+//  Module : SALOME
+
+#include "SALOME_GenericObj_i.hh"
+#include "utilities.h"
+
+using namespace SALOME;
+
+GenericObj_i::GenericObj_i(PortableServer::POA_ptr thePOA): myRefCounter(1){
+  INFOS("GenericObj_i::GenericObj_i() - this = "<<this<<
+       "; CORBA::is_nil(thePOA) = "<<CORBA::is_nil(thePOA));
+  if(CORBA::is_nil(thePOA))
+    myPOA = PortableServer::RefCountServantBase::_default_POA();
+  else
+    myPOA = PortableServer::POA::_duplicate(thePOA);
+}
+
+
+PortableServer::POA_ptr GenericObj_i::_default_POA(){
+  //return PortableServer::RefCountServantBase::_default_POA();
+  return PortableServer::POA::_duplicate(myPOA);
+}
+
+
+void GenericObj_i::Register(){
+  INFOS("GenericObj_i::Register "<<this<<"; myRefCounter = "<<myRefCounter)
+  ++myRefCounter;
+}
+
+
+void GenericObj_i::Destroy(){
+  INFOS("GenericObj_i::Destroy "<<this<<"; myRefCounter = "<<myRefCounter)
+  if(--myRefCounter <= 0){
+    PortableServer::ObjectId_var anObjectId = myPOA->servant_to_id(this);
+    myPOA->deactivate_object(anObjectId.in());
+    _remove_ref();
+  }
+}
diff --git a/src/GenericObj/SALOME_GenericObj_i.hh b/src/GenericObj/SALOME_GenericObj_i.hh
new file mode 100644 (file)
index 0000000..715b0a9
--- /dev/null
@@ -0,0 +1,56 @@
+//  SALOME_GenericObj_i_HH
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//  File   : SALOME_GenericObj_i.hh
+//  Author : Alexey PETROV
+//  Module : SALOME
+
+#ifndef SALOME_GenericObj_i_HH
+#define SALOME_GenericObj_i_HH
+
+// IDL headers
+#include "SALOMEconfig.h"
+#include CORBA_SERVER_HEADER(SALOME_GenericObj)
+
+namespace SALOME{
+  class GenericObj_i : 
+    public virtual POA_SALOME::GenericObj,
+    public virtual PortableServer::RefCountServantBase
+  {
+  protected:
+    PortableServer::POA_var myPOA;
+    int myRefCounter;
+  public:
+    // In the constructor you can provide default POA for the servant
+    GenericObj_i(PortableServer::POA_ptr thePOA = PortableServer::POA::_nil());
+    // The function is used implicetly in "_this" function
+    virtual PortableServer::POA_ptr _default_POA();
+  public: // Follow functions is IDL defined
+    /*! Increase the reference count (mark as used by another object).*/
+    virtual void Register();
+    /*! Decrease the reference count (release by another object).*/
+    virtual void Destroy();
+  };
+};
+
+#endif
+
index 84212da676e63f7bc48c8362b92ec1e4e802659d..6fe8916d26bb9abebae07fd2f5fbeadfc7355a19 100644 (file)
@@ -27,7 +27,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
index 788d83ef2ac6a80ead92f1bef275d9fb9b554ca0..33ee1ac8177237a20a2c510aa58d01382ffae7be 100644 (file)
@@ -27,7 +27,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
@@ -51,7 +51,7 @@ BIN_SRC =
 BIN_CLIENT_IDL = SALOME_Component.idl SALOME_TestComponent.idl \
                 SALOME_ModuleCatalog.idl
 
-LDFLAGS += -lSalomeNS -lOpUtil -lSalomeLoggerServer
+LDFLAGS += -lSalomeNS -lOpUtil -lSALOMELocalTrace
 
 @CONCLUDE@
 
index 846e405c763f41c2363f60b1bd9103de25989286..b80547c9d3a88deeaa30b38ee4abc622e8da26cb 100644 (file)
@@ -52,6 +52,7 @@ static QString addSlash( const QString& path );
 InquireServersGUI::InquireServersGUI()
      : QVBox(0, "SFA splash", Qt::WDestructiveClose | Qt::WStyle_Customize | Qt::WStyle_NoBorder )
 {
+  myGUI = false;
   myThread = new InquireServersQThread(this);
 
   // 1. Polish the appearance
@@ -139,6 +140,7 @@ void InquireServersGUI::ClickOnCancel()
 {
   //it's necessary to stop asking servers
   myThread->stop();
+  myGUI = false;
   //Also we should send QCloseEvent in order to close this widget (and remove from screen) 
   //QThread::postEvent ( this, new QCloseEvent() );
   qApp->exit(1);
@@ -199,7 +201,7 @@ InquireServersQThread::InquireServersQThread( InquireServersGUI* r )
   char* cenv;
 
   IsChecking = true;
-  myServersCount = 8;
+  myServersCount = 5;
   //how many times we should repeat attempts to get response from all needed for launching SALOME servers
   myRepeat = 30; // default value, user can change it by setting CSF_RepeatServerRequest env.variable
   cenv = getenv( "CSF_RepeatServerRequest" );
@@ -213,23 +215,51 @@ InquireServersQThread::InquireServersQThread( InquireServersGUI* r )
   QString str = "Loading: ";
   myMessages[0] = "Checking naming service...";
   myMessages[1] = str + "SALOME_Registry_Server" + "...";
-  myMessages[2] = str + "SALOME_Container SuperVisionContainer" + "...";
+  myMessages[2] = str + "SALOMEDS_Server" + "...";
   myMessages[3] = str + "SALOME_ModuleCatalog_Server" + "...";
-  myMessages[4] = str + "SALOME_ContainerPy.py FactoryServerPy" + "...";
-  myMessages[5] = str + "SALOME_Container FactoryServer" + "...";
-  myMessages[6] = str + "SALOMEDS_Server" + "...";
-  myMessages[7] = str + "SALOME_Session_Server" + "...";
+  myMessages[4] = str + "SALOME_Session_Server" + "...";
+  myMessages[5] = "";
+  myMessages[6] = "";
+  myMessages[7] = "";
 
   r->getArgs( _argc, &_argv);
 
+  // NRI : Temporary solution for SuperVisionContainer
+  for ( int i=1; i<=(_argc-1); i++) {
+    if (strcmp(_argv[i],"CPP")==0) {
+      myMessages[5] = str + "SALOME_Container FactoryServer" + "...";
+      myServersCount++;
+    }
+    if (strcmp(_argv[i],"PYTHON")==0) {
+      myMessages[6] = str + "SALOME_ContainerPy.py FactoryServerPy" + "...";
+      myServersCount++;
+    }
+    if (strcmp(_argv[i],"SUPERV")==0) {
+      myMessages[7] = str + "SALOME_Container SuperVisionContainer" + "...";
+      myServersCount++;
+    }
+    if (strcmp(_argv[i],"GUI")==0) {
+      r->withGUI(true);
+    }
+  }
 }
 
 void InquireServersQThread::run()
 {
 while (IsChecking)
   {
-    for (int i=1; i<=myServersCount; i++)
+    for (int i=1; i<=8; i++)
       {
+       if ( myMessages[i-1].isEmpty() ) {
+         if (i==8) {
+           IsChecking = false;
+           //myExitStatus should be 0 because all servers exist and work
+           myExitStatus = 0;
+           //we should send QCloseEvent in order to close this widget (and remove from screen) 
+           QThread::postEvent ( receiver , new QCloseEvent() );
+         } else
+           continue;
+       }
        QString *message = new QString(myMessages[i-1]);
        QThread::postEvent( receiver, new InquireEvent( ( QEvent::Type )InquireEvent::ProgressEventLabel, message ) );
        QThread::usleep(200000);
@@ -238,7 +268,7 @@ while (IsChecking)
        if (result)
          {
            QThread::postEvent( receiver, new InquireEvent( ( QEvent::Type )InquireEvent::ProgressEvent, new int( i ) ) );
-           if (i==myServersCount)
+           if (i==8)
              {
                IsChecking = false;
                //myExitStatus should be 0 because all servers exist and work
@@ -297,18 +327,18 @@ bool InquireServersQThread::AskServer(int iteration, QString ** errMessage)
     case 2:
       //checking - existence of SALOME_Registry_Server
     case 3:
-      //checking - existence of SALOME_Container SuperVisionContainer
+      //checking - existence of SALOMEDS_Server
     case 4:
       //checking - existence of SALOME_ModuleCatalog_Server
     case 5:
-      //checking - existence of SALOME_ContainerPy.py FactoryServerPy
+      //checking - existence of SALOME_Session_Server
     case 6:
       //checking - existence of SALOME_Container FactoryServer
     case 7:
-      //checking - existence of SALOMEDS_Server
+      //checking - existence of SALOME_ContainerPy.py FactoryServerPy
     case 8:
-      //checking - existence of SALOME_Session_Server
-      
+      //checking - existence of SALOME_Container SuperVisionContainer
+
 
       IsPassed = pingServer(iteration, errDescription);
       if (!IsPassed)
@@ -347,20 +377,21 @@ bool InquireServersQThread::pingServer(int iteration, QString& errMessage)
                  }
              }
              break;
-           case 3:     
-              {
-               string hostname = GetHostname();
-               string containerName = "/Containers/";
-               containerName += hostname;
-               containerName += "/SuperVisionContainer";
-               
-               CORBA::Object_var obj = NS.Resolve(containerName.c_str());
-               Engines::Container_var SVcontainer = Engines::Container::_narrow(obj) ;
-               if (!CORBA::is_nil(SVcontainer))
+           case 3:
+             {
+               CORBA::Object_var obj = NS.Resolve("/myStudyManager");
+               SALOMEDS::StudyManager_var studyManager = SALOMEDS::StudyManager::_narrow(obj) ;
+               if (!CORBA::is_nil(studyManager))
+
+
+
+
+
                  {
-                   SVcontainer->ping();
+                   MESSAGE("/myStudyManager is found");
+                   studyManager->ping();
                    result = true;
-                   MESSAGE("SuperVisionContainer container was activated");
+                   MESSAGE("StudyManager was activated");
                    return result;
                  }
              }
@@ -379,7 +410,7 @@ bool InquireServersQThread::pingServer(int iteration, QString& errMessage)
                  }
              }
              break;
-           case 8:
+           case 5:
              {
                CORBA::Object_var obj = NS.Resolve("Kernel/Session");
                SALOME::Session_var session = SALOME::Session::_narrow(obj) ;
@@ -411,7 +442,7 @@ bool InquireServersQThread::pingServer(int iteration, QString& errMessage)
                  }
              }
              break;
-           case 5:
+           case 7:
              {
                string hostname = GetHostname();
                string containerName = "/Containers/";
@@ -429,16 +460,21 @@ bool InquireServersQThread::pingServer(int iteration, QString& errMessage)
                  }
              }
              break;
-           case 7:
-              {
-               CORBA::Object_var obj = NS.Resolve("/myStudyManager");
-               SALOMEDS::StudyManager_var studyManager = SALOMEDS::StudyManager::_narrow(obj) ;
-               if (!CORBA::is_nil(studyManager))
+           case 8:
+             {
+               string hostname = GetHostname();
+               string containerName = "/Containers/";
+               containerName += hostname;
+               containerName += "/SuperVisionContainer";
+               
+               CORBA::Object_var obj = NS.Resolve(containerName.c_str());
+               Engines::Container_var SVcontainer = Engines::Container::_narrow(obj) ;
+               if (!CORBA::is_nil(SVcontainer))
                  {
-                   MESSAGE("/myStudyManager is found");
-                   studyManager->ping();
+                   SVcontainer->ping();
+
                    result = true;
-                   MESSAGE("StudyManager was activated");
+                   MESSAGE("SuperVisionContainer container was activated");
                    return result;
                  }
              }
@@ -480,22 +516,22 @@ bool InquireServersQThread::pingServer(int iteration, QString& errMessage)
        case 2:
          serverName = "SALOME_Registry_Server is not loaded. ";
          break;
-       case 7:
+       case 3:
          serverName = "SALOMEDS_Server is not loaded. ";
          break;
        case 4:
          serverName = "SALOME_ModuleCatalog_Server is not loaded. ";
          break;
-       case 8:
+       case 5:
          serverName = "SALOME_Session_Server is not loaded. ";
          break;
        case 6:
          serverName = "SALOME_Container FactoryServer is not loaded. ";
          break;
-       case 5:
+       case 7:
          serverName = "SALOME_ContainerPy.py FactoryServerPy is not loaded. ";
          break;
-       case 3:
+       case 8:
          serverName = "SALOME_Container SuperVisionContainer is not loaded. ";
          break;
        }
@@ -511,26 +547,15 @@ QString findFile( QString filename )
   QString dir;
   char* cenv;
   
-  // Try CSF_ResourcesDefaults env.var directory ( or directory list )
-  cenv = getenv( "CSF_ResourcesDefaults" );
-  if ( cenv ) {
-    dir.sprintf( "%s", cenv );
-    if ( !dir.isEmpty() ) {
-      QStringList dirList = QStringList::split( SEPARATOR, dir, false ); // skip empty entries
-      for ( int i = 0; i < dirList.count(); i++ ) {
-       QFileInfo fileInfo( addSlash( dirList[ i ] ) + filename );
-       if ( fileInfo.isFile() && fileInfo.exists() )
-         return fileInfo.filePath();
-      }
-    }
-  }
-  // Try ${HOME}/.salome/resources directory
-  cenv = getenv( "HOME" );
+  // Try ${KERNEL_ROOT_DIR}/share/salome/resources directory
+  cenv = getenv( "KERNEL_ROOT_DIR" );
   if ( cenv ) {
     dir.sprintf( "%s", cenv );
     if ( !dir.isEmpty() ) {
       dir = addSlash(dir) ;
-      dir = dir + ".salome" ;
+      dir = dir + "share" ;
+      dir = addSlash(dir) ;
+      dir = dir + "salome" ;
       dir = addSlash(dir) ;
       dir = dir + "resources" ;
       dir = addSlash(dir) ;
@@ -539,32 +564,26 @@ QString findFile( QString filename )
        return fileInfo.filePath();
     }
   }
-  // Try ${SALOME_SITE_DIR}/share/salome/resources directory
-  cenv = getenv( "SALOME_SITE_DIR" );
+  // Try CSF_ResourcesDefaults env.var directory ( or directory list )
+  cenv = getenv( "CSF_ResourcesDefaults" );
   if ( cenv ) {
     dir.sprintf( "%s", cenv );
     if ( !dir.isEmpty() ) {
-      dir = addSlash(dir) ;
-      dir = dir + "share" ;
-      dir = addSlash(dir) ;
-      dir = dir + "salome" ;
-      dir = addSlash(dir) ;
-      dir = dir + "resources" ;
-      dir = addSlash(dir) ;
-      QFileInfo fileInfo( dir + filename );
-      if ( fileInfo.isFile() && fileInfo.exists() )
-       return fileInfo.filePath();
+      QStringList dirList = QStringList::split( SEPARATOR, dir, false ); // skip empty entries
+      for ( int i = 0; i < dirList.count(); i++ ) {
+       QFileInfo fileInfo( addSlash( dirList[ i ] ) + filename );
+       if ( fileInfo.isFile() && fileInfo.exists() )
+         return fileInfo.filePath();
+      }
     }
   }
-  // Try ${SALOME_ROOT_DIR}/share/salome/resources directory
-  cenv = getenv( "SALOME_ROOT_DIR" );
+  // Try ${HOME}/.salome/resources directory
+  cenv = getenv( "HOME" );
   if ( cenv ) {
     dir.sprintf( "%s", cenv );
     if ( !dir.isEmpty() ) {
       dir = addSlash(dir) ;
-      dir = dir + "share" ;
-      dir = addSlash(dir) ;
-      dir = dir + "salome" ;
+      dir = dir + ".salome" ;
       dir = addSlash(dir) ;
       dir = dir + "resources" ;
       dir = addSlash(dir) ;
index 89927d1449cddf5af1856ad54329c709c62fa43d..a9efd61d9523579bddddf8aa4b7c6482ae9063c9 100644 (file)
@@ -94,6 +94,9 @@ public:
   void getArgs(  int& _argc, char *** _argv);
   //return exit status: 0 - OK, >0 - BAD (some servers doesn't exists or user click cancel button) 
   int getExitStatus();
+  //launch IAPP
+  bool withGUI() { return myGUI; }
+  void withGUI(bool gui) { myGUI = gui; }
 
 protected:
   virtual void customEvent( QCustomEvent* ); 
@@ -104,6 +107,7 @@ private:
   QProgressBar* myPrgBar;
   //this string contains description of currently asked server
   QLabel* myLabel;
+  bool myGUI;
 
 private slots:
 
index 412118e71ac409ca0b4af5b2d21e0ef2fa5a7853..6caf10e2c80688243d23a00bb47eb7974dab3400 100644 (file)
@@ -8,7 +8,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
@@ -16,7 +16,7 @@ VPATH=.:@srcdir@:@top_srcdir@/idl
 @COMMENCE@
 
 # Executables targets
-BIN = SALOME_Session_loader
+BIN = SALOME_Session_Loader
 
 BIN_MOC = InquireServersQThread.h
 BIN_SRC = InquireServersQThread.cxx
@@ -31,7 +31,7 @@ BIN_CLIENT_IDL = SALOME_Session.idl \
 
 CPPFLAGS+=$(QT_MT_INCLUDES)
 CXXFLAGS+=$(OCC_CXXFLAGS)
-LDFLAGS+=$(QT_MT_LIBS) -lSalomeNS -lOpUtil -lSalomeLoggerServer
+LDFLAGS+=$(QT_MT_LIBS) -lSalomeNS -lOpUtil -lSALOMELocalTrace
 
 
 @CONCLUDE@
diff --git a/src/Loader/SALOME_Session_Loader.cxx b/src/Loader/SALOME_Session_Loader.cxx
new file mode 100644 (file)
index 0000000..3aff045
--- /dev/null
@@ -0,0 +1,92 @@
+//  Copyright (C) 2003  CEA/DEN, EDF R&D
+//
+//
+//
+//  File   : SALOME_Session_loader.cxx
+//  Author : Paul RASCLE, EDF
+//  Module : SALOME
+//  $Header$
+
+using namespace std;
+/*! \file SALOME_Session_loader.cxx
+ */
+
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(SALOME_Session)
+#include CORBA_CLIENT_HEADER(Logger)
+
+#include "Utils_ORB_INIT.hxx"
+#include "Utils_SINGLETON.hxx"
+#include "SALOME_NamingService.hxx"
+#include "utilities.h"
+
+//! CORBA client for SALOME Session server : launch GUI
+/*!
+ *  SALOME_Session Loader launches a SALOME GUI on the SALOME session servant process
+ */
+
+#include <qapplication.h>
+#include "InquireServersQThread.h"
+
+int main(int argc, char **argv)
+{
+//VRV: T2.4 - Trace management improvement
+  QApplication myQApp(argc, argv) ;
+  InquireServersGUI myIS;
+  myQApp.setMainWidget(&myIS);
+  ASSERT(QObject::connect(&myQApp, SIGNAL(lastWindowClosed()), &myQApp, SLOT(quit()) ) );
+  myIS.show();
+  myQApp.exec();
+
+  if (myIS.getExitStatus())
+    exit(1);
+//VRV: T2.4 - Trace management improvement
+  if (myIS.withGUI()) {
+    try
+      {
+       CORBA::ORB_ptr orb = CORBA::ORB_init(argc,argv) ;
+       
+       SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance() ;
+       ASSERT(SINGLETON_<SALOME_NamingService>::IsAlreadyExisting()) ;
+       NS.init_orb( orb ) ;
+       
+       CORBA::Object_var obj = NS.Resolve("/Kernel/Session");
+       
+       SALOME::Session_var session = SALOME::Session::_narrow(obj) ;
+       ASSERT(! CORBA::is_nil(session));
+       MESSAGE("SALOME::Session::_narrow(obj)");
+       INFOS("Corba initialisation, Distant server");
+       
+       // -------------------------------------------------------------
+       
+       session->GetInterface() ;
+
+       // -------------------------------------------------------------
+       
+       orb->destroy() ;
+      }
+    catch (ServiceUnreachable&)
+      {
+       INFOS("Caught exception: Naming Service Unreachable");
+      }
+    catch (CORBA::COMM_FAILURE&)
+      {
+       INFOS("Caught CORBA::SystemException CommFailure.");
+      }
+    catch (CORBA::SystemException&)
+      {
+       INFOS("Caught CORBA::SystemException.");
+      }
+    catch (CORBA::Exception&)
+      {
+       INFOS("Caught CORBA::Exception.");
+      }
+    catch (...)
+      {
+       INFOS("Caught unknown exception.");
+      }
+    return 0 ;
+  }
+}
+
+
diff --git a/src/Loader/SALOME_Session_loader.cxx b/src/Loader/SALOME_Session_loader.cxx
deleted file mode 100644 (file)
index 825fd04..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
-//
-//
-//
-//  File   : SALOME_Session_loader.cxx
-//  Author : Paul RASCLE, EDF
-//  Module : SALOME
-//  $Header$
-
-using namespace std;
-/*! \file SALOME_Session_loader.cxx
- */
-
-#include <SALOMEconfig.h>
-#include CORBA_CLIENT_HEADER(SALOME_Session)
-
-#include "Utils_ORB_INIT.hxx"
-#include "Utils_SINGLETON.hxx"
-#include "SALOME_NamingService.hxx"
-#include "utilities.h"
-
-//! CORBA client for SALOME Session server : launch GUI
-/*!
- *  SALOME_Session Loader launches a SALOME GUI on the SALOME session servant process
- */
-
-#include <qapplication.h>
-#include "InquireServersQThread.h"
-
-int main(int argc, char **argv)
-{
-//VRV: T2.4 - Trace management improvement
-  QApplication myQApp(argc, argv) ;
-  InquireServersGUI myIS;
-  myQApp.setMainWidget(&myIS);
-  ASSERT(QObject::connect(&myQApp, SIGNAL(lastWindowClosed()), &myQApp, SLOT(quit()) ) );
-  myIS.show();
-  myQApp.exec();
-
-  if (myIS.getExitStatus())
-    exit(1);
-//VRV: T2.4 - Trace management improvement
-  try
-    {
-      CORBA::ORB_ptr orb = CORBA::ORB_init(argc,argv) ;
-
-      SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance() ;
-      ASSERT(SINGLETON_<SALOME_NamingService>::IsAlreadyExisting()) ;
-      NS.init_orb( orb ) ;
-
-      CORBA::Object_var obj = NS.Resolve("/Kernel/Session");
-
-      SALOME::Session_var session = SALOME::Session::_narrow(obj) ;
-      ASSERT(! CORBA::is_nil(session));
-      MESSAGE("SALOME::Session::_narrow(obj)");
-      INFOS("Corba initialisation, Distant server");
-
-      // -------------------------------------------------------------
-
-      session->GetInterface() ;
-
-      // -------------------------------------------------------------
-
-      orb->destroy() ;
-    }
-   catch (ServiceUnreachable&)
-     {
-       INFOS("Caught exception: Naming Service Unreachable");
-     }
-  catch (CORBA::COMM_FAILURE&)
-    {
-      INFOS("Caught CORBA::SystemException CommFailure.");
-    }
-  catch (CORBA::SystemException&)
-    {
-      INFOS("Caught CORBA::SystemException.");
-    }
-  catch (CORBA::Exception&)
-    {
-      INFOS("Caught CORBA::Exception.");
-    }
-  catch (...)
-    {
-      INFOS("Caught unknown exception.");
-    }
-  return 0 ;
-}
-
-
index 1d51437b87377b853f3a352d47cc05a1d289acab..f03c9adde4ff71bfcd757524798f08a98added61 100644 (file)
@@ -10,7 +10,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
index c3f7acce130c8aaa2e9052a581823d2fac008483..5d1b3a4a756de74ad3f3c7f44f8d8b8bb49dfc9d 100644 (file)
@@ -53,7 +53,7 @@ void Logger::putMessage(const char* message)
 
 void Logger::ping()
 {
-  cout<<" Logger::ping() pid "<< getpid()<<endl;
+  //cout<<" Logger::ping() pid "<< getpid()<<endl;
 }
 
 int main(int argc, char **argv)
@@ -66,59 +66,58 @@ int main(int argc, char **argv)
   try
     {
       //Initialize the ORB
-      long TIMESleep = 250000000;
-      int NumberOfTries = 40;
-      int a;
-      timespec ts_req;
-      ts_req.tv_nsec=TIMESleep;
-      ts_req.tv_sec=0;
-      timespec ts_rem;
-      ts_rem.tv_nsec=0;
-      ts_rem.tv_sec=0;
+      const long TIMESleep = 250000000;
+      const int NumberOfTries = 40;
+      int i;
+      timespec ts_req = {0, TIMESleep};
+      timespec ts_rem = {0, 0};
       CosNaming::NamingContext_var inc;
-      CORBA::ORB_var orb; 
       SALOME_Logger::Logger_var myLoggerRef;
       CORBA::Object_var theObj;
       Logger* myLogger;
       CORBA::Object_var obj;
       PortableServer::POA_var poa;
       PortableServer::POAManager_var pman;   
-      orb = CORBA::ORB_init(argc,argv) ;     
-      for (int i = 1; i<=NumberOfTries; i++){        
-       if (i!=1) 
-         a=nanosleep(&ts_req,&ts_rem);  
-       obj = orb->resolve_initial_references("RootPOA") ;
-       if(!CORBA::is_nil(obj))
-         poa = PortableServer::POA::_narrow(obj) ;
-       pman = poa->the_POAManager();
-       // NB. You can activate the POA before or after
-       // activating objects in that POA.
-       
-       // This activates the object in the root POA (by default), and
-       // returns a reference to it.
-       //NB. You can't use SALOME_NamingService class because it uses MESSAGE macro
-       //Otherwise, you will get segmentation fault.   
-       //Get initial naming context
-       try{
-      if(!CORBA::is_nil(orb)) 
-       theObj = orb->resolve_initial_references("NameService");
-      //Narrow to NamingContext
-      if (!CORBA::is_nil(theObj)){
-       inc = CosNaming::NamingContext::_narrow(theObj);
-      }
-      }catch(CORBA::COMM_FAILURE&)
-       {
-        cout<<"Logger Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service"<<endl;
-          }
-      catch(...){ cout<<"Logger Server: Unknown exception dealed with Naming Service" <<endl; } 
-       if (!CORBA::is_nil(inc)){
-         cout<<"Logger Server: Naming Service was found"<<endl; 
-         break;}
+
+      CORBA::ORB_var orb = CORBA::ORB_init(argc, argv) ;
+
+      for (int i = 1; i <= NumberOfTries; i++){        
+       if (i != 1) nanosleep(&ts_req, &ts_rem);
+       try {
+         obj = orb->resolve_initial_references("RootPOA") ;
+         if(!CORBA::is_nil(obj))
+           poa = PortableServer::POA::_narrow(obj) ;
+         pman = poa->the_POAManager();
+         // NB. You can activate the POA before or after
+         // activating objects in that POA.
+         
+         // This activates the object in the root POA (by default), and
+         // returns a reference to it.
+         //NB. You can't use SALOME_NamingService class because it uses MESSAGE macro
+         //Otherwise, you will get segmentation fault.   
+         //Get initial naming context
+         if(!CORBA::is_nil(orb)) 
+           theObj = orb->resolve_initial_references("NameService");
+         //Narrow to NamingContext
+         if (!CORBA::is_nil(theObj))
+           inc = CosNaming::NamingContext::_narrow(theObj);
+       } catch(CORBA::COMM_FAILURE&) {
+         //cout<<"Logger Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service"<<endl;
+       }
+       catch(...) {
+         //cout<<"Logger Server: Unknown exception dealed with Naming Service" <<endl;
+       }
+       if (!CORBA::is_nil(inc)) {
+//       cout<<"Logger Server: Naming Service was found"<<endl; 
+         break;
+       }
       }
       if (argc == 1)
        myLogger = new Logger();
       else
        myLogger = new Logger(argv[1]);
+
+
       myLoggerRef = myLogger->_this();
       CosNaming::Name name;
       name.length(1);
index e3185daf6120a226e3b6a7515fd74b359d65b650..d139476c1aaad1fe780e6053335f64e0cac933ea 100644 (file)
@@ -22,80 +22,7 @@ using namespace std;
 
 SALOME_Trace::SALOME_Trace()
 {
-  //get reference on object reference from NS
-  //and initialize m_pInterfaceLogger 
-
-  int argc = 1;
-  char* argv[1] = {"application"};
-  try
-    {
-      //NB. You can't use SALOME_NamingService class because it uses MESSAGE macro
-      //Otherwise, you will get segmentation fault.   
-
-      //Initialize the ORB
-      CORBA::ORB_var orb = CORBA::ORB_init(argc,argv) ;
-      long TIMESleep = 250000000;
-      int NumberOfTries = 40;
-      int a;
-      timespec ts_req;
-      ts_req.tv_nsec=TIMESleep;
-      ts_req.tv_sec=0;
-      timespec ts_rem;
-      ts_rem.tv_nsec=0;
-      ts_rem.tv_sec=0;
-      CosNaming::NamingContext_var inc;
-      CORBA::Object_var theObj;
-      CORBA::Object_var obj;
-      CosNaming::Name name;
-      name.length(1);
-      name[0].id = CORBA::string_dup("Logger");
-      for (int i = 1; i<=NumberOfTries; i++){
-       if (i!=1) 
-           a=nanosleep(&ts_req,&ts_rem);
-         try{ 
-           if(!CORBA::is_nil(orb)) 
-             theObj = orb->resolve_initial_references("NameService");
-           if (!CORBA::is_nil(theObj))
-             inc = CosNaming::NamingContext::_narrow(theObj);
-         }  
-         catch( CORBA::COMM_FAILURE& )
-           {
-             cout<<"SALOME_TRACE: CORBA::COMM_FAILURE: Unable to contact the Naming Service" <<endl;
-           }
-          catch(...){ cout<< "SALOME_TRACE: Unknown exception dealed with Naming Service" <<endl; }
-         
-         if(!CORBA::is_nil(inc)) {
-           obj = inc->resolve(name);
-           m_pInterfaceLogger = SALOME_Logger::Logger::_narrow(obj);
-           if (!CORBA::is_nil(m_pInterfaceLogger))
-             cout<<"SALOME_TRACE: Logger Server was found"<<endl;
-           break;
-           
-         }
-      }
-          
-    }
-      catch (const CosNaming::NamingContext::NotFound&)
-       {
-         //       cout << "Caught exception: Naming Service can't found Logger";
-       }
-      catch (CORBA::COMM_FAILURE&)
-       {
-         //       cout << "Caught CORBA::SystemException CommFailure.";
-    }
-  catch (CORBA::SystemException&)
-    {
-//       cout << "Caught CORBA::SystemException.";
-    }
-  catch (CORBA::Exception&)
-    {
-//       cout << "Caught CORBA::Exception.";
-    }
-  catch (...)
-    {
-//       cout << "Caught unknown exception.";
-    }
-  //cerr << "-----SALOME_Trace::SALOME_Trace----"<<endl;
+  isInitialized = 0;
 }
 
 SALOME_Trace::~SALOME_Trace()
@@ -108,8 +35,80 @@ SALOME_Trace& SALOME_Trace::Instance()
        return instance;
 }
 
+int SALOME_Trace::Initialize(CORBA::ORB_ptr theOrb) {
+  //get reference on object reference from NS
+  //and initialize m_pInterfaceLogger 
+  if (isInitialized && !CORBA::is_nil(m_pInterfaceLogger))
+    return 1;
+
+  const long TIMESleep = 250000000;
+  const int NumberOfTries = 40;
+  int i;
+  timespec ts_req = {0, TIMESleep};
+  timespec ts_rem = {0, 0};
+
+  CosNaming::NamingContext_var inc;
+  CORBA::Object_var theObj;
+  CORBA::Object_var obj;
+
+  // searchin for naming service for 0.25*40=10 seconds
+  for (i = 1; i <= NumberOfTries; i++) {
+    if (i != 1) nanosleep(&ts_req,&ts_rem);
+    try{ 
+      if(CORBA::is_nil(obj))
+       obj = theOrb->resolve_initial_references("RootPOA");
+      if(CORBA::is_nil(theObj))
+       theObj = theOrb->resolve_initial_references("NameService"); 
+      if (!CORBA::is_nil(theObj))
+       inc = CosNaming::NamingContext::_narrow(theObj);
+      if (!CORBA::is_nil(inc)) break;
+    } catch( CORBA::COMM_FAILURE& ) {
+    } catch (...) {
+    }
+  }
+  
+  if (CORBA::is_nil(inc)) {
+    cout<<"SALOME_Trace can not find NameService"<<endl;
+    return 0;
+  }
+  
+  //cout<<"SALOME_Trace : NameService was found"<<endl;
+  
+  const char * Env = getenv("USE_LOGGER");
+  int EnvL = (Env != NULL && strlen(Env))?1:0;
+  
+  // the try to get Logger server if it is necessary
+  if(EnvL) {
+    CosNaming::Name name;
+    name.length(1);
+    name[0].id=CORBA::string_dup("Logger");    
+    
+    for(i = 1; i <= NumberOfTries; i++){
+      if (i != 1) nanosleep(&ts_req, &ts_rem);
+      try {
+       obj = inc->resolve(name);
+       if (!CORBA::is_nil(obj)) m_pInterfaceLogger = SALOME_Logger::Logger::_narrow(obj);
+      } catch(CosNaming::NamingContext::NotFound) {
+      } catch(...) {
+      }
+      if (!CORBA::is_nil(m_pInterfaceLogger)) {
+       //cout<<"SALOME_Trace : Logger Server was found"<<endl;
+       m_pInterfaceLogger->ping();
+       break;
+      }
+    }
+    if (CORBA::is_nil(m_pInterfaceLogger)) {
+      cout<<"SALOME_Trace can not find Logger"<<endl;
+      return 0;
+    }
+  }
+  isInitialized = 1;
+  return 1;
+}
+
 void SALOME_Trace::putMessage(ostream& msg)
 {
+  //if (!isInitialized) cout<<"!!! SALOME_Trace is used without initialising !!!"<<endl;
   //write resulting string into Logger CORBA server
   //concatenate string from passing parameters for transfering into Logger CORBA server
 
index e24239e8dd3a6ac107669f1c4c6c7d8945b06684..90fbfd06fd441aa2e4a81594c52c4cc2e3754c61 100644 (file)
@@ -52,11 +52,14 @@ class SALOME_Trace : public ostrstream
 public:
        virtual ~SALOME_Trace();
         static Standard_EXPORT SALOME_Trace& Instance();
+       // initializes Logger (if USE_LOGGER variable is set) and returns true, in case success
+       int Initialize(CORBA::ORB_ptr theOrb);
        Standard_EXPORT void putMessage(std::ostream& msg);
 protected:
        //disable creation of instances. It's necessary to use static SALOME_Logger& Instance()
        SALOME_Trace();
        SALOME_Logger::Logger_var m_pInterfaceLogger;// object reference on Logger server.
+       int isInitialized;
 };
 
 #define GLogger SALOME_Trace::Instance()
index 04dbcc35c92262642fc20ca1aed111279449556d..ab30f3379d505bce3e1bfa47c813b6ac5d2f87fa 100644 (file)
@@ -11,31 +11,48 @@ import sys
 import CosNaming
 from omniORB import CORBA
 import SALOME_Logger
+import time
+import os
+
+trace="local"
+if (os.environ["SALOME_trace"] == "with_logger"):
+    trace="logger"
 
 class SALOME_Trace :
     def __init__(self):
         self.m_pInterfaceLogger = None
-        try:
-            orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID)
-            theObj = orb.resolve_initial_references("NameService")
-            inc = theObj._narrow(CosNaming.NamingContext)
-            name = [CosNaming.NameComponent("Logger","")]
-            obj = inc.resolve(name);
-            
-            self.m_pInterfaceLogger = obj._narrow(SALOME_Logger.Logger)
-
-        except CosNaming.NamingContext.NotFound, e :
-                print "Caught exception: Naming Service can't found Logger"
-        except CORBA.COMM_FAILURE, e:
-                print "Caught CORBA::SystemException CommFailure"
-        except CORBA.SystemException, e:
-                print "Caught CORBA::SystemException."
-        except CORBA.Exception, e:
-                print "Caught CORBA::Exception."
-        except Exception, e:
-                print "Caught unknown exception."
-                
+        if trace=="logger":
+            ok = 0
+            steps = 40
+            while steps > 0 and ok == 0:
+
+              try:
+                orb = CORBA.ORB_init(sys.argv, CORBA.ORB_ID)
+                theObj = orb.resolve_initial_references("NameService")
+                inc = theObj._narrow(CosNaming.NamingContext)
+                name = [CosNaming.NameComponent("Logger","")]
+                obj = inc.resolve(name);
+
+                self.m_pInterfaceLogger = obj._narrow(SALOME_Logger.Logger)
+
+                if not self.m_pInterfaceLogger is None:
+                  ok = 1
+
+              except CosNaming.NamingContext.NotFound, e :
+                    if steps == 1: print "Caught exception: Naming Service can't found Logger"
+              except CORBA.COMM_FAILURE, e:
+                    if steps == 1: print "Caught CORBA::SystemException CommFailure"
+              except CORBA.SystemException, e:
+                    if steps == 1: print "Caught CORBA::SystemException."
+              except CORBA.Exception, e:
+                    if steps == 1: print "Caught CORBA::Exception."
+              except Exception, e:
+                    if steps == 1: print "Caught unknown exception."
 
+              time.sleep(0.25)
+              steps = steps - 1
+         
+         
     def putMessage ( self, LogMsg ) :
         
         if (CORBA.is_nil(self.m_pInterfaceLogger)):
index 229107d91f0097a9ae312426df2c754936fd9edb..da4e295d95186e4f043a718bddbfcd47a69d1bb4 100644 (file)
@@ -27,7 +27,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
index 544bfb6b0322fe5fd67c056cef07faf254e927a0..0cf36702e8734758f69a81d3703f054b18b00e66 100644 (file)
@@ -25,7 +25,7 @@
 #  Module : SALOME
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
index 44e371730504c8f8b29e12104413955ad67dc78c..f35650e424aae48b820a39d744966c8a9dfb80bd 100644 (file)
 # $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../..
+top_builddir=..
 srcdir=@srcdir@
 VPATH=.:@srcdir@
 
 
 @COMMENCE@
 
-SUBDIRS = MSG2QM Logger Utils PatchQt NamingService Registry ModuleCatalog DataTypeCatalog \
-         RessourcesCatalog Notification NOTIFICATION_SWIG Container TestContainer LifeCycleCORBA \
-          HDFPersist VTKFilter OBJECT TOOLSDS SALOMEDS SALOMEGUI Plot2d VTKViewer OCCViewer SUPERVGraph \
-         Session SALOME_SWIG TOOLSGUI SALOME_PY RegistryDisplay ModuleGenerator SALOME_PYQT Loader
+SUBDIRS = MSG2QM SALOMELocalTrace Logger SALOMELogger Utils PatchQt \
+          GenericObj NamingService Registry \
+         ModuleCatalog DataTypeCatalog RessourcesCatalog \
+          Notification  NOTIFICATION_SWIG \
+         Container TestContainer LifeCycleCORBA HDFPersist \
+         VTKFilter OBJECT \
+          TOOLSDS SALOMEDS \
+          SALOMEGUI Plot2d VTKViewer OCCViewer \
+         SUPERVGraph \
+         Session SALOME_SWIG TOOLSGUI SALOME_PY \
+          RegistryDisplay ModuleGenerator SALOME_PYQT Loader
 
 ifeq (@WITHMPICH@,yes)
   SUBDIRS+= MPIContainer
index 18b89b3fcb9b12eaddd559fb0087556462a7c404..97a1d981600889196840388049344006062c2f67 100644 (file)
@@ -27,7 +27,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
@@ -57,6 +57,6 @@ BIN_SERVER_IDL = SALOME_ModuleCatalog.idl
 
 CPPFLAGS+= $(QT_MT_INCLUDES) 
 CXXFLAGS+= -ftemplate-depth-42
-LDFLAGS+= $(QT_MT_LIBS) -lSalomeNS -lOpUtil -lSalomeLoggerServer
+LDFLAGS+= $(QT_MT_LIBS) -lSalomeNS -lOpUtil -lSALOMELocalTrace
 
 @CONCLUDE@
index 66672f7a0e85dbc03b8d6dc4a2694d65aa2a2511..35e5c2e3e49beef18b9ef8b721741cd41bb1a4b8 100644 (file)
@@ -39,6 +39,7 @@ using namespace std;
 //----------------------------------------------------------------------  
 SALOME_ModuleCatalog_AcomponentImpl::SALOME_ModuleCatalog_AcomponentImpl(
                    const char* name,
+                   const char* username,
                   const char* constraint,  
                   SALOME_ModuleCatalog::ComponentType componenttype,
                   CORBA::Boolean componentmultistudy,
@@ -51,6 +52,10 @@ SALOME_ModuleCatalog_AcomponentImpl::SALOME_ModuleCatalog_AcomponentImpl(
   _component_name = new char[strlen(name)+1];
  strcpy(_component_name, name);
 
+  // Affect component user name
+  _component_user_name = new char[strlen(username)+1];
+ strcpy(_component_user_name, username);
+
  // Affect constraint
  _constraint =new char[strlen(constraint)+1];
  strcpy(_constraint, constraint);
@@ -83,6 +88,7 @@ SALOME_ModuleCatalog_AcomponentImpl::~SALOME_ModuleCatalog_AcomponentImpl()
   MESSAGE("Component destruction")
   // empty memory
   delete [] _component_name;
+  delete [] _component_user_name;
   delete [] _constraint;
 }
 
@@ -389,6 +395,15 @@ char* SALOME_ModuleCatalog_AcomponentImpl::componentname()
   return CORBA::string_dup(_component_name);
 }
 
+//----------------------------------------------------------------------
+// Function : componentusername
+// Purpose  : obtain the componentusername
+//----------------------------------------------------------------------
+char* SALOME_ModuleCatalog_AcomponentImpl::componentusername()
+{
+  return CORBA::string_dup(_component_user_name);
+}
+
 //----------------------------------------------------------------------
 // Function : multistudy
 // Purpose  : define if a component can be multistudy or not
index 7c64ee719a6303df3758ec6bcd8f4baa8df46bc7..0a7c715d5d4b3c49c890e7723c11de383b64d163 100644 (file)
@@ -40,6 +40,7 @@ class SALOME_ModuleCatalog_AcomponentImpl: public POA_SALOME_ModuleCatalog::Acom
 public:
   //! standard constructor
   SALOME_ModuleCatalog_AcomponentImpl(const char* name, 
+                                     const char* username, 
                                      const char* constraint, 
                                      SALOME_ModuleCatalog::ComponentType componenttype, 
                                      CORBA::Boolean componentmultistudy,
@@ -116,6 +117,12 @@ public:
   */
   virtual char* componentname();
 
+  //! method to obtain the componentusername
+  /*!
+    \return the component user name
+  */
+  virtual char* componentusername();
+
   //! method to define if a component can be multistudy or not
   /*!
     \return true if the component supports multistudy
@@ -136,6 +143,7 @@ public:
 
 private :
   char* _component_name ;
+  char* _component_user_name ;
   char* _constraint;
   char* _icone;
   SALOME_ModuleCatalog::ComponentType _componenttype;
index 41b444c97be08b0c8bec790ec3777b765572c182..8f8f0e241dc6c2b909af630a0224c2c824496d78 100644 (file)
@@ -44,6 +44,7 @@ SALOME_ModuleCatalog_Handler::SALOME_ModuleCatalog_Handler()
   test_path_prefix = "path-prefix" ;
 
   test_component_name = "component-name";
+  test_component_username = "component-username";
   test_component_type = "component-type" ;
   test_component_multistudy="component-multistudy";
   test_component_icone="component-icone" ;
@@ -140,6 +141,9 @@ bool SALOME_ModuleCatalog_Handler::endElement(const QString&,
   // tag test_component_name
   if((qName.compare(QString(test_component_name))==0)) 
     _amodule.Parsercomponentname = content ;
+  // tag test_component_username
+  if((qName.compare(QString(test_component_username))==0)) 
+    _amodule.Parsercomponentusername = content ;
   // tag test_component_type
    if((qName.compare(QString(test_component_type))==0)) 
      {
index 2363b07a7b904532fbf55e18c447d7ecc0b7f923..c12c49cef7c9a83b8dca8839515c98346673d74c 100644 (file)
@@ -111,6 +111,7 @@ private:
   const char* test_path_prefix ;
 
   const char* test_component_name;
+  const char* test_component_username;
   const char* test_component_type ;
   const char* test_component_multistudy ;
   const char* test_component_icone ;
index fd2eebacf523a11bdfab701aa57473d58b413750..236763abb839a78225953a758ce0b64fc2f30701 100644 (file)
@@ -72,6 +72,7 @@ typedef vector<ParserDefInterface> ListOfDefinitionInterface;
 struct ParserComponent
 {
   string Parsercomponentname;
+  string Parsercomponentusername;
   ParserComponentType Parsercomponenttype;
   bool Parsercomponentmultistudy ;
   string Parsercomponenticone;
index c76af7d3ce49ed82ed149129f61f7aed3ce4f76d..c206cc8463dcb7b18facf19dc7c41a7447ea5fb2 100644 (file)
 //  File   : SALOME_ModuleCatalog_Server.cxx
 //  Module : SALOME
 
-using namespace std;
 /* $Header$ */
+
 #include <iostream.h>
 #include "SALOME_NamingService.hxx"
 #include "SALOME_ModuleCatalog_impl.hxx"
 #include "utilities.h"
-# include "Utils_SINGLETON.hxx"
+#include "Utils_SINGLETON.hxx"
 
-//#define CHECKTIME
 #ifdef CHECKTIME
 #include <Utils_Timer.hxx>
 #endif
+using namespace std;
 
 int main(int argc,char **argv)
 {
-  try {
-  CosNaming::NamingContext_var _rootContext, catalogContext;
+  try 
+    {
+      CosNaming::NamingContext_var _rootContext, catalogContext;
 
-  // initialize the ORB
+      // initialize the ORB
 
-  CORBA::ORB_ptr orb = CORBA::ORB_init (argc, argv);
+      CORBA::ORB_ptr orb = CORBA::ORB_init (argc, argv);
 
-  // initialize POA
-  //
-   long TIMESleep = 250000000;
-   int NumberOfTries = 40;
-   int a;
-   timespec ts_req;
-   ts_req.tv_nsec=TIMESleep;
-   ts_req.tv_sec=0;
-   timespec ts_rem;
-   ts_rem.tv_nsec=0;
-   ts_rem.tv_sec=0;
-   CosNaming::NamingContext_var inc;
-   PortableServer::POA_var poa;
-   CORBA::Object_var theObj;
-   CORBA::Object_var obj;
-   CORBA::Object_var object;
-   SALOME_Logger::Logger_var log;
-   int MODULE_CATALOG=0;
-   const char * Env = getenv("USE_LOGGER");
-   int EnvL =0;
-   if ((Env!=NULL) && (strlen(Env)))
-     EnvL=1;
-   CosNaming::Name name;
-   name.length(1);
-   name[0].id=CORBA::string_dup("Logger");    
-   PortableServer::POAManager_var mgr; 
-   for (int i = 1; i<=NumberOfTries; i++){
-     if (i!=1) 
-       a=nanosleep(&ts_req,&ts_rem);
-     try{ 
-       obj = orb->resolve_initial_references("RootPOA");
-       if(!CORBA::is_nil(obj))
-        poa = PortableServer::POA::_narrow(obj);
-       if(!CORBA::is_nil(poa))
-           mgr = poa->the_POAManager();
-       if(!CORBA::is_nil(orb)) 
-        theObj = orb->resolve_initial_references("NameService"); 
-     }
-     catch( CORBA::COMM_FAILURE& )
-       {
-        MESSAGE( "Module Catalog Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service" )
-          }
-     if (!CORBA::is_nil(theObj)){
-       inc = CosNaming::NamingContext::_narrow(theObj);
-       if(!CORBA::is_nil(inc)) {
-        MESSAGE( "Module Catalog Server: Naming Service was found" )
-        if(EnvL==1){
-          CORBA::ORB_var orb1 = CORBA::ORB_init(argc,argv) ;
-          SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance() ;
-          NS.init_orb( orb1 ) ;
-          for(int j=1; j<=NumberOfTries; j++){
-            if (j!=1) 
-              a=nanosleep(&ts_req, &ts_rem);
-            try{
-              object = inc->resolve(name);}
-            catch(CosNaming::NamingContext::NotFound){ MESSAGE( "Logger Server wasn't found" ) }
-            catch(...){ MESSAGE( "Module Catalog Server: Unknown exception" ) }
-            if (!CORBA::is_nil(object))
-              log = SALOME_Logger::Logger::_narrow(object);
-            if (!CORBA::is_nil(log)){
-              MESSAGE( "Module Catalog Server: Logger Server was found" )
-              log->ping();
-              MODULE_CATALOG=1;
-              break;
-            }
-                }}
-       }}
-     if ((MODULE_CATALOG==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
-       break;
-        }
+      // initialize POA
+      //
+      long TIMESleep = 250000000;
+      int NumberOfTries = 40;
+      int a;
+      timespec ts_req;
+      ts_req.tv_nsec=TIMESleep;
+      ts_req.tv_sec=0;
+      timespec ts_rem;
+      ts_rem.tv_nsec=0;
+      ts_rem.tv_sec=0;
+      CosNaming::NamingContext_var inc;
+      PortableServer::POA_var poa;
+      CORBA::Object_var theObj;
+      CORBA::Object_var obj;
+      CORBA::Object_var object;
+      int MODULE_CATALOG=0;
+      const char * Env = getenv("USE_LOGGER");
+      int EnvL =0;
+      if ((Env!=NULL) && (strlen(Env)))
+       EnvL=1;
+      CosNaming::Name name;
+      name.length(1);
+      name[0].id=CORBA::string_dup("Logger");    
+      PortableServer::POAManager_var mgr; 
+      for (int i = 1; i<=NumberOfTries; i++)
+       {
+         if (i!=1) 
+           a=nanosleep(&ts_req,&ts_rem);
+         try
+           { 
+             obj = orb->resolve_initial_references("RootPOA");
+             if(!CORBA::is_nil(obj))
+               poa = PortableServer::POA::_narrow(obj);
+             if(!CORBA::is_nil(poa))
+               mgr = poa->the_POAManager();
+             if(!CORBA::is_nil(orb)) 
+               theObj = orb->resolve_initial_references("NameService"); 
+           }
+         catch( CORBA::COMM_FAILURE& )
+           {
+             MESSAGE( "Module Catalog Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service" );
+           }
+         if (!CORBA::is_nil(theObj))
+           {
+             inc = CosNaming::NamingContext::_narrow(theObj);
+             if(!CORBA::is_nil(inc))
+               {
+                 MESSAGE( "Module Catalog Server: Naming Service was found" );
+                 if(EnvL==1)
+                   {
+                     CORBA::ORB_var orb1 = CORBA::ORB_init(argc,argv) ;
+                     SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance() ;
+                     NS.init_orb( orb1 ) ;
+                     for(int j=1; j<=NumberOfTries; j++)
+                       {
+                         if (j!=1) 
+                           a=nanosleep(&ts_req, &ts_rem);
+                         try{
+                           object = inc->resolve(name);}
+                         catch(CosNaming::NamingContext::NotFound)
+                           {
+                             MESSAGE( "Logger Server wasn't found" );
+                           }
+                         catch(...)
+                           {
+                             MESSAGE( "Module Catalog Server: Unknown exception" ) ;
+                           }
+                         if (!CORBA::is_nil(object))
+                           {
+                             MESSAGE( "Module Catalog Server: Logger Server was found" );
+                             MODULE_CATALOG=1;
+                             break;
+                           }
+                       }
+                   }
+               }
+           }
+         if ((MODULE_CATALOG==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
+           break;
+       }
   
-   //
-  // Active catalog
+      // Active catalog
 
-  SALOME_ModuleCatalogImpl* Catalogue_i = new SALOME_ModuleCatalogImpl(argc, argv);
-  poa->activate_object (Catalogue_i);
+      SALOME_ModuleCatalogImpl* Catalogue_i = new SALOME_ModuleCatalogImpl(argc, argv);
+      poa->activate_object (Catalogue_i);
 
-  mgr->activate();
+      mgr->activate();
 
   
-  CORBA::Object_ptr myCata = Catalogue_i->_this();
+      CORBA::Object_ptr myCata = Catalogue_i->_this();
 
-  // initialise Naming Service
-  SALOME_NamingService *_NS;
-  _NS = new SALOME_NamingService(orb);
-  // register Catalog in Naming Service
-  _NS->Register(myCata ,"/Kernel/ModulCatalog");
+      // initialise Naming Service
+      SALOME_NamingService *_NS;
+      _NS = new SALOME_NamingService(orb);
+      // register Catalog in Naming Service
+      _NS->Register(myCata ,"/Kernel/ModulCatalog");
 
-  MESSAGE("Running CatalogServer.");
+      MESSAGE("Running CatalogServer.");
 
 #ifdef CHECKTIME
-  Utils_Timer timer;
-  timer.Start();
-  timer.Stop();
-  MESSAGE("SALOME_Registry_Server.cxx - orb->run()");
-  timer.ShowAbsolute();
+      Utils_Timer timer;
+      timer.Start();
+      timer.Stop();
+      MESSAGE("SALOME_Registry_Server.cxx - orb->run()");
+      timer.ShowAbsolute();
 #endif
-  orb->run();
+      orb->run();
  
-  poa->destroy(1,1);
+      poa->destroy(1,1);
  
-  }
-    catch(CORBA::SystemException&) {
+    }
+  catch(CORBA::SystemException&) {
     INFOS("Caught CORBA::SystemException.")
-  }
-    catch(CORBA::Exception&) {
+      }
+  catch(CORBA::Exception&) {
     INFOS("Caught CORBA::Exception.")
-  }
+      }
 
   return 0;
 }
index b6533ad5040e6d5b5e500fc30cabe69917765016..9f912a7d3b4f430c6e9ccfac9a38999c055a39d6 100644 (file)
@@ -186,7 +186,7 @@ SALOME_ModuleCatalogImpl::GetComponentList()
   for (unsigned int ind=0; ind < _personal_module_list.size();ind++)
     {
        _list_components[ind]=(_personal_module_list[ind].Parsercomponentname).c_str();
-       //SCRUTE(_list_components[ind]) ;
+       SCRUTE(_list_components[ind]) ;
     }
 
   int indice = _personal_module_list.size() ;
@@ -206,18 +206,19 @@ SALOME_ModuleCatalogImpl::GetComponentList()
        }
       if (!_find)
        {
-         //MESSAGE("A new component " << _general_module_list[ind].Parsercomponentname << " has to be to added in the list");
+         MESSAGE("A new component " << _general_module_list[ind].Parsercomponentname << " has to be to added in the list");
           _list_components->length(indice+1);
          // The component is not already defined => has to be taken
          _list_components[indice]=(_general_module_list[ind].Parsercomponentname).c_str();   
-         //SCRUTE(_list_components[indice]) ;
+         SCRUTE(_list_components[indice]) ;
 
          indice++;
        }
-      // else 
-       //MESSAGE("The component " <<_general_module_list[ind].Parsercomponentname << " was already defined in the personal catalog") ;
+      else 
+       MESSAGE("The component " <<_general_module_list[ind].Parsercomponentname << " was already defined in the personal catalog") ;
      }
 
+  MESSAGE ( "End of GetComponentList" )
   return _list_components._retn();
 }
 
@@ -243,6 +244,7 @@ SALOME_ModuleCatalogImpl::GetComponentIconeList()
   for (unsigned int ind=0; ind < _personal_module_list.size();ind++)
     {
        _list_components_icone[ind].modulename=(_personal_module_list[ind].Parsercomponentname).c_str();
+       _list_components_icone[ind].moduleusername=(_personal_module_list[ind].Parsercomponentusername).c_str();
        _list_components_icone[ind].moduleicone=(_personal_module_list[ind].Parsercomponenticone).c_str();
        //SCRUTE(_list_components_icone[ind].modulename); 
        //SCRUTE(_list_components_icone[ind].moduleicone);
@@ -269,6 +271,7 @@ SALOME_ModuleCatalogImpl::GetComponentIconeList()
           _list_components_icone->length(indice+1);
          // The component is not already defined => has to be taken
          _list_components_icone[indice].modulename=(_general_module_list[ind].Parsercomponentname).c_str();  
+         _list_components_icone[indice].moduleusername=(_general_module_list[ind].Parsercomponentusername).c_str();  
          _list_components_icone[indice].moduleicone=(_general_module_list[ind].Parsercomponenticone).c_str(); 
          //SCRUTE(_list_components_icone[indice].modulename) ;
          //SCRUTE(_list_components_icone[indice].moduleicone);
@@ -391,6 +394,7 @@ SALOME_ModuleCatalogImpl::GetComponent(const char* componentname)
   _list_interfaces.length(0);
   char* _constraint = NULL;
   char* _icone = NULL;
+  char* _componentusername = NULL;
   SALOME_ModuleCatalog::ComponentType _componenttype = SALOME_ModuleCatalog::OTHER; // default initialisation
   CORBA::Boolean _componentmultistudy = false ; // default initialisation
   ListOfPathPrefix _pathes ;
@@ -451,6 +455,9 @@ SALOME_ModuleCatalogImpl::GetComponent(const char* componentname)
          // get component icone
          _icone = CORBA::string_dup(_personal_module_list[ind].Parsercomponenticone.c_str());
 
+         // get component user name
+         _componentusername = CORBA::string_dup(_personal_module_list[ind].Parsercomponentusername.c_str());
+
          // get component interfaces
          _list_interfaces = duplicate_interfaces(_personal_module_list[ind].ParserListInterface);
 
@@ -464,6 +471,7 @@ SALOME_ModuleCatalogImpl::GetComponent(const char* componentname)
     {
       SALOME_ModuleCatalog_AcomponentImpl* aComponentImpl = 
        new SALOME_ModuleCatalog_AcomponentImpl(componentname,
+                                               _componentusername,
                                                _constraint,
                                                _componenttype,
                                                _componentmultistudy,
@@ -523,6 +531,9 @@ SALOME_ModuleCatalogImpl::GetComponent(const char* componentname)
              // get component icone
              _icone = CORBA::string_dup(_general_module_list[ind].Parsercomponenticone.c_str());
 
+             // get component user name
+             _componentusername = CORBA::string_dup(_general_module_list[ind].Parsercomponentusername.c_str());
+
              // get component interfaces
              _list_interfaces = duplicate_interfaces(_general_module_list[ind].ParserListInterface);
 
@@ -535,6 +546,7 @@ SALOME_ModuleCatalogImpl::GetComponent(const char* componentname)
        {
          SALOME_ModuleCatalog_AcomponentImpl* aComponentImpl = 
            new SALOME_ModuleCatalog_AcomponentImpl(componentname,
+                                                   _componentusername,
                                                    _constraint,
                                                    _componenttype,
                                                    _componentmultistudy,
index 44af77590f11cde21699c1ccba33ea0b0617bc59..1743563c6d3b9773ce1666a2d6b5159d95d2023c 100644 (file)
@@ -29,15 +29,37 @@ import pdb
 from xml.sax.handler import *
 from omniidl import idlast, idltype, idlvisitor, idlutil, output
 
-#values of this map are used in some nodes defenition
-common_data={"AUTHOR"   : "",
-             "ICON"     : "",
-             "VERSION"  : "",
-             "COMP_TYPE": "",
-             "COMP_NAME": "",
-             "COMP_MULT": "1"
+# parameters not found in IDL file, user's specified in optional parameters
+common_data={"AUTHOR"     : "",
+             "ICON"       : "",
+             "VERSION"    : "",
+             "COMP_TYPE"  : "",
+             "COMP_NAME"  : "",
+             "COMP_UNAME" : "",
+             "COMP_MULT"  : ""
              }
 
+nb_components = 0
+
+#--------------------------------------------------
+# extract value of <param_name> from <args> list
+# it's proposed that the matching <args> item
+# looks like <param_name>=<value>, for example,
+# catalog=/tmp/myxml.xml
+#--------------------------------------------------
+def getParamValue( param_name, default_value, args ):
+    pattern=param_name+"="
+
+    res = default_value        #initial value
+    for opt in args:
+        s = re.compile(pattern).search(opt)
+        if s:
+            res = opt[s.end():]
+            break     #found
+
+    return res    
+
+
 #--------------------------------------------------
 # print error message
 #--------------------------------------------------
@@ -168,7 +190,7 @@ class Tree:
 #--------------------------------------------------
 class inParameter(Tree):
     
-    def __init__(self, name=None, type='', comment=''):
+    def __init__(self, name=None, type='', comment='unknown'):
         Tree.__init__(self, 'inParameter')
         if name is None:  return
         
@@ -186,7 +208,7 @@ class inParameter(Tree):
 #--------------------------------------------------
 class outParameter(Tree):
     
-    def __init__(self, name=None, type='', comment = ''):
+    def __init__(self, name=None, type='', comment = 'unknown'):
         
         Tree.__init__(self, 'outParameter')
         if name is None:  return
@@ -205,7 +227,7 @@ class outParameter(Tree):
 #--------------------------------------------------
 class Service(Tree):
     
-    def __init__(self, name=None):
+    def __init__(self, name=None, comment = 'unknown'):
         
         Tree.__init__(self, 'component-service')
         if name is None:  return
@@ -213,7 +235,7 @@ class Service(Tree):
         self.addNamedChild('service-name', name)
         self.addNamedChild('service-author',common_data["AUTHOR"])
         self.addNamedChild('service-version',common_data["VERSION"])
-        self.addNamedChild('service-comment')
+        self.addNamedChild('service-comment', comment)
         self.addNamedChild('service-by-default', "0")
         self.addNamedChild('inParameter-list')
         self.addNamedChild('outParameter-list')
@@ -304,14 +326,14 @@ class Service(Tree):
 #--------------------------------------------------
 class Interface(Tree):
     
-    def __init__(self, name=None):
+    def __init__(self, name=None, comment='unknown'):
                
         Tree.__init__(self)
 
         if name is None:  return
         
         self.addNamedChild('component-interface-name', name)
-        self.addNamedChild('component-interface-comment');
+        self.addNamedChild('component-interface-comment', comment);
         self.addNamedChild('component-service-list')
             
     def createService(self, name):
@@ -362,18 +384,17 @@ class Interface(Tree):
 # implements Component tree
 #--------------------------------------------------
 class Component(Tree):
-    def __init__(self, name=None):
+    def __init__(self):
         Tree.__init__(self, 'component')
-
-        if name is None: return
-        
-        self.addNamedChild('component-name', name)
-        self.addNamedChild('component-type',common_data["COMP_TYPE"])
-        self.addNamedChild('component-author',common_data["AUTHOR"])
-        self.addNamedChild('component-version',common_data["VERSION"])
-        self.addNamedChild('component-comment')
+                 
+        self.addNamedChild('component-name',       common_data["COMP_NAME"]) 
+        self.addNamedChild('component-username',   common_data["COMP_UNAME"])
+        self.addNamedChild('component-type',       common_data["COMP_TYPE"])
+        self.addNamedChild('component-author',     common_data["AUTHOR"])
+        self.addNamedChild('component-version',    common_data["VERSION"])
+        self.addNamedChild('component-comment',    'unknown')
         self.addNamedChild('component-multistudy', common_data["COMP_MULT"])
-        self.addNamedChild('component-icone',common_data["ICON"])
+        self.addNamedChild('component-icone',      common_data["ICON"])
         self.addNamedChild('constraint')
         self.addNamedChild('component-interface-list')
             
@@ -387,41 +408,17 @@ class Component(Tree):
         return i
 
     def merge(self, C):
-        ext=C.getChild('component-author')
-        int=self.getChild('component-author')
-        if int is not None  and  ext is not None  and  len(ext.content):
-            int.content = ext.content
-            
-        ext=C.getChild('component-type')
-        int=self.getChild('component-type')
-        if int is not None  and  ext is not None  and  len(ext.content):
-            int.content = ext.content
-
-        ext=C.getChild('component-icone')
-        int=self.getChild('component-icone')
-        if int is not None  and  ext is not None  and  len(ext.content):
-            int.content = ext.content
-
-        ext=C.getChild('component-version')
-        int=self.getChild('component-version')
-        if int is not None  and  ext is not None  and  len(ext.content):
-            int.content = ext.content
-
-        ext=C.getChild('component-comment')
-        int=self.getChild('component-comment')
-        if int is not None  and  ext is not None  and  len(ext.content):
-            int.content = ext.content
-
-        ext=C.getChild('component-multistudy')
-        int=self.getChild('component-multistudy')
-        if int is not None  and  ext is not None  and  len(ext.content):
-            int.content = ext.content
-            
-        ext=C.getChild('constraint')
-        int=self.getChild('constraint')
-        if int is not None  and  ext is not None  and  len(ext.content):
-            int.content = ext.content
-             
+
+        for i in ['component-username', 'component-author',
+                  'component-type', 'component-icone', 'component-version',
+                  'component-comment', 'component-multistudy', 'constraint']:
+            ext = C.getChild(i)
+            int = self.getChild(i)
+            if int is None:
+                int = ext
+            elif ext is not None and len(ext.content):
+                int.content = ext.content
+                
         L_ext = C.getChild('component-interface-list')
         L_int = self.getChild('component-interface-list')
         if L_ext is None or L_int is None:
@@ -602,8 +599,7 @@ class ModuleCatalogVisitor (idlvisitor.AstVisitor):
                 if ((s[0] == "Engines") & (s[1] == "Component")):
                     self.EngineType = 1; break
                 
-            if common_data["COMP_NAME"] :  Comp = Component(common_data["COMP_NAME"])
-            else :  Comp = Component(node.identifier())
+            Comp = Component()
             
             self.currentInterface = Comp.createInterface(node.identifier())
         
@@ -612,6 +608,8 @@ class ModuleCatalogVisitor (idlvisitor.AstVisitor):
                     c.accept(self)
 
             if (self.EngineType):
+                global nb_components
+                nb_components = nb_components + 1
                 self.catalog.mergeComponent(Comp)
 
             self.EngineType = 0
@@ -648,52 +646,29 @@ class ModuleCatalogVisitor (idlvisitor.AstVisitor):
             self.currentService.createOutParameter \
                      (node.identifier(), self.currentType)
         
-#--------------------------------------------------
-# extract value of <param_name> from <args> list
-# it's proposed that the matching <args> item
-# looks like <param_name>=<value>, for example,
-# catalog=/tmp/myxml.xml
-#--------------------------------------------------
-def getParamValue( param_name, args ):
-    pattern="^"+param_name+"="
-
-    res = ""        #initial value
-    for opt in args:
-        s = re.compile(pattern).search(opt)
-        if s:
-            res = opt[s.end():]
-            break     #found
-
-    return res    
-
 #--------------------------------------------------
 # parse idl and store xml file
 #--------------------------------------------------
 def run(tree, args):
-    CatalogFileName=getParamValue("catalog",args)
-    if CatalogFileName is None:
-        CatalogFileName = 'CatalogModulePersonnel.xml'
+    print args
     
-    if (re.compile(".*?.xml$").match(CatalogFileName, 1) is None):
+    CatalogFileName=getParamValue("catalog", "CatalogModulePersonnel.xml", args)
+    print CatalogFileName
+    if re.compile(".*?.xml$").match(CatalogFileName, 1) is None:
         CatalogFileName = CatalogFileName + '.xml'
 
     #=========  Read parameters  ======================    
-    common_data["ICON"] = getParamValue("icon",args)              # get icon file
-
-    common_data["AUTHOR"] = getParamValue("author",args)          # get author name
-    if common_data["AUTHOR"] is None:   common_data["AUTHOR"] = os.getenv("USER");
+    common_data["ICON"]       = getParamValue("icon",       "",                args)
+    common_data["AUTHOR"]     = getParamValue("author",     os.getenv("USER"), args)
+    common_data["VERSION"]    = getParamValue("version",    "1",               args)
+    common_data["COMP_NAME"]  = getParamValue("name",       "",                args)
+    common_data["COMP_UNAME"] = getParamValue("username",   "",                args)
+    common_data["COMP_TYPE"]  = getParamValue("type",       "OTHER",           args)
+    common_data["COMP_MULT"]  = getParamValue("multistudy", "1",               args)
+
+    print common_data
     
-    common_data["VERSION"] = getParamValue("version",args)        # get version
-
-    common_data["COMP_NAME"] = getParamValue("name",args)         # get icon file
-
-    val = getParamValue("type",args)                              # get icon file
-    if val:   common_data["COMP_TYPE"] = val
-
-    val = getParamValue("multistudy",args)                        # get icon file
-    if val :    common_data["COMP_MULT"]  = val
-
-    remove_comp = getParamValue("remove", args)
+    remove_comp = getParamValue("remove", "", args)
     
     #==================================================    
     
@@ -701,9 +676,9 @@ def run(tree, args):
         print "Importing", CatalogFileName
         C = Catalog(CatalogFileName)
     else:
-        print "Warning : ",CatalogFileName, " was not found."
+        print "Creating ",CatalogFileName
         C = Catalog()
-        
+    
     print "Reading idl file"
     
     visitor = ModuleCatalogVisitor(C)
@@ -735,5 +710,5 @@ def run(tree, args):
 
 if __name__ == "__main__":
     print
-    print "Usage : omniidl -bIDLparser -Wbcatalog=<my_catalog.xml>[,icon=<pngfile>][,version=<num>][,author=<name>][,name=<component_name>][,multistudy=<component_multistudy>][,remove=component_name] <file.idl>"
+    print "Usage : omniidl -bIDLparser [-I<catalog files directory>]* -Wbcatalog=<my_catalog.xml>[,icon=<pngfile>][,version=<num>][,author=<name>][,name=<component_name>][,username=<component_username>][,multistudy=<component_multistudy>] <file.idl>"
     print
index 9944da580a94afc1035da686c44dd3ccf7cba8fd..5abeb527008b88fa3091936a7e35b892d7a7a3ff 100644 (file)
@@ -25,7 +25,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
index 4be86c5cceb9c2dec59c628e49280de6d7781ba7..c6d7071161b4fc1bb4a485e052245f4dd76fd7e4 100644 (file)
@@ -27,7 +27,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
index 5aae16804baf8696d0901a53ad7a0ce248c95398..395e929221a1a0f75730df5feb7b6f2c4657dd44 100644 (file)
@@ -27,7 +27,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
index 8b41f25bed92501afef8dd5c8c0c570bda57dcc5..2bc3c553ca4cfa4c7969215bbf70fab90c6c338f 100644 (file)
@@ -46,7 +46,7 @@ class SALOME_NamingServicePy_i:
     #-------------------------------------------------------------------------
 
     def __init__(self, orb):
-        MESSAGE ( "SALOME_NamingServicePy_i::__init__" )
+        #MESSAGE ( "SALOME_NamingServicePy_i::__init__" )
         self._orb = orb
         # initialize root context and current context
        ok = 0
@@ -138,7 +138,7 @@ class SALOME_NamingServicePy_i:
             
     #-------------------------------------------------------------------------
     def Resolve(self, Path):
-        MESSAGE ( "SALOME_NamingServicePy_i::Resolve" )
+        #MESSAGE ( "SALOME_NamingServicePy_i::Resolve" )
         path_list = list(Path)
         if path_list[0]=='/':
             self._current_context = self._root_context
index 42c5ac12e0934d9133995114dfa798b35922f716..4d43c67a5f67a0b1f8041c1b916b018a4f0601f5 100644 (file)
@@ -27,7 +27,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
@@ -47,7 +47,7 @@ LIB_SRC = NOTIFICATION.cxx          \
           NOTIFICATION_Supplier.cxx \
           NOTIFICATION_Consumer.cxx
 
-LDFLAGS+= -lOpUtil
+LDFLAGS+= -lOpUtil -lSALOMELocalTrace
 OMNIORB_IDLCXXFLAGS+= -Wbtp
 
 @CONCLUDE@
index f881efad695ee01accc105f0b0efdc4187846b17..4bb0d399bf95c25d099a90076278be5d984fde94 100644 (file)
@@ -1,31 +1,6 @@
-#  SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers
-#
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File   : Makefile.in
-#  Module : SALOME
-
+# source path
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
@@ -41,6 +16,7 @@ EXPORT_HEADERS = SALOME_InteractiveObject.hxx \
                 Handle_SALOME_AISObject.hxx \
                 VTKViewer_Common.h
 
+
 # Libraries targets
 
 LIB = libSalomeObject.la
index 8029335ebb34d14f9bc34070c70f7f264e6d56dc..db7a30cf2e6a18a29302fdb99ac802c823d1222b 100644 (file)
 #include <vtkPolyDataMapper.h>
 #include <vtkTransformPolyDataFilter.h>
 
+// For test
+#include <vtkMapperCollection.h>
+#include "vtkTimerLog.h"
+
 using namespace std;
 
 int SALOME_POINT_SIZE = 3;
 
-void SALOME_Actor::Render(vtkRenderer *ren, vtkMapper *Mapper )
-{
-  if (this->Mapper == NULL) {
-    MESSAGE ("No mapper for actor.")
-    return;
-  }
-  
-  vtkMapper *bestMapper;
-  bestMapper = this->Mapper;
-
-  /* render the property */
-  if (!this->Property) {
-    // force creation of a property
-    this->GetProperty();
-  }
-
-  this->Property->Render(this, ren);
-  if (this->BackfaceProperty) {
-    this->BackfaceProperty->BackfaceRender(this, ren);
-    this->Device->SetBackfaceProperty(this->BackfaceProperty);
-  }
-  this->Device->SetProperty(this->Property);
-  
-  
-  /* render the texture */
-  if (this->Texture) {
-    this->Texture->Render(ren);
-  }
-  
-  
-  // Store information on time it takes to render.
-  // We might want to estimate time from the number of polygons in mapper.
-  this->Device->Render(ren,bestMapper);
-  this->EstimatedRenderTime = bestMapper->GetTimeToDraw();
-}
-
-int SALOME_Actor::RenderOpaqueGeometry(vtkViewport *vp)
-{
-  int renderedSomething = 0; 
-  vtkRenderer      *ren = (vtkRenderer *)vp;
-
-  if ( ! this->Mapper ) {
-    return 0;
-  }
-
-  // make sure we have a property
-  if (!this->Property) {
-    // force creation of a property
-    this->GetProperty();
-  }
-
-  // is this actor opaque ?
-  if (this->GetIsOpaque()) {
-    this->Property->Render(this, ren);
-    
-    // render the backface property
-    if (this->BackfaceProperty) {
-      this->BackfaceProperty->BackfaceRender(this, ren);
-    }
-    
-    // render the texture 
-    if (this->Texture) {
-      this->Texture->Render(ren);
-    }
-    this->Render(ren,this->Mapper);
-    
-    renderedSomething = 1;
-  }
-  
-  return renderedSomething; 
-}
-
-void SALOME_Actor::ReleaseGraphicsResources(vtkWindow *renWin)
-{
-  vtkActor::ReleaseGraphicsResources(renWin);
-  this->Mapper->ReleaseGraphicsResources(renWin);
-}
 
+vtkStandardNewMacro(SALOME_Actor);
 
 void SALOME_Actor::AddToRender(vtkRenderer* theRenderer){
   theRenderer->AddActor(this);
@@ -158,12 +86,33 @@ void SALOME_Actor::SetMapper(vtkMapper* theMapper){
 
 void SALOME_Actor::SetTransform(SALOME_Transform* theTransform){
   myTransformFilter->SetTransform(theTransform);
-  myTransformFilter->Modified();
+}
+
+
+unsigned long int SALOME_Actor::GetMTime(){
+  unsigned long mTime = this->Superclass::GetMTime();
+  unsigned long time = myTransformFilter->GetMTime();
+  mTime = ( time > mTime ? time : mTime );
+  return mTime;
 }
 
 
 void SALOME_Actor::SetRepresentation(int theMode) { 
-  myRepresentation = theMode;
+  switch(myRepresentation){
+  case 0 : 
+  case 2 : 
+    myProperty->DeepCopy(GetProperty());
+  }    
+  switch(theMode){
+  case 0 : 
+  case 2 : 
+    GetProperty()->DeepCopy(myProperty);
+    break;
+  default:
+    GetProperty()->SetAmbient(1.0);
+    GetProperty()->SetDiffuse(0.0);
+    GetProperty()->SetSpecular(0.0);
+  }
   switch(theMode){
   case 3 : 
     myPassFilter[0]->SetInside(true);
@@ -172,9 +121,10 @@ void SALOME_Actor::SetRepresentation(int theMode) {
   case 0 : 
     GetProperty()->SetPointSize(SALOME_POINT_SIZE);  
   default :
-    GetProperty()->SetRepresentation(myRepresentation);
+    GetProperty()->SetRepresentation(theMode);
     myPassFilter[0]->SetInside(false);
   }
+  myRepresentation = theMode;
 }
 int SALOME_Actor::GetRepresentation(){ 
   return myRepresentation;
@@ -183,6 +133,8 @@ int SALOME_Actor::GetRepresentation(){
 
 SALOME_Actor::SALOME_Actor(){
   PreviewProperty = NULL;
+  ispreselected = Standard_False;
+  myProperty = vtkProperty::New();
   myRepresentation = 2;
   myTransformFilter = SALOME_TransformFilter::New();
   myPassFilter.push_back(SALOME_PassThroughFilter::New());
@@ -195,6 +147,9 @@ SALOME_Actor::~SALOME_Actor(){
   myTransformFilter->Delete();
   SetPreviewProperty(NULL);
   for(int i = 0, iEnd = myPassFilter.size(); i < iEnd; i++)
-    if(myPassFilter[i] != NULL) 
+    if(myPassFilter[i] != NULL){
+      myPassFilter[i]->UnRegisterAllOutputs(); 
       myPassFilter[i]->Delete();
+    }
+  myProperty->Delete();
 }
index ea35d47ef07d50a14ed8021b8927b7cc39b60a5e..03758fee9870e4aba7bdd4f4d19a6fb239b69348 100644 (file)
@@ -50,23 +50,25 @@ class SALOME_Actor : public vtkLODActor{
   SALOME_Actor();
   ~SALOME_Actor();
  public:
-  vtkTypeMacro(SALOME_Actor,vtkActor);
+  static SALOME_Actor* New();
+
+  vtkTypeMacro(SALOME_Actor,vtkLODActor);
 
   // Description:
   // This causes the actor to be rendered. It, in turn, will render the actor`s
   // property and then mapper.
-  virtual void Render(vtkRenderer *, vtkMapper *);
+  //virtual void Render(vtkRenderer *, vtkMapper *);
 
   // Description:
   // This method is used internally by the rendering process.
   // We overide the superclass method to properly set the estimated render time.
-  virtual int RenderOpaqueGeometry(vtkViewport *viewport);
+  //virtual int RenderOpaqueGeometry(vtkViewport *viewport);
 
   // Description:
   // Release any graphics resources that are being consumed by this actor.
   // The parameter window could be used to determine which graphic
   // resources to release.
-  virtual void ReleaseGraphicsResources(vtkWindow *);
+  //virtual void ReleaseGraphicsResources(vtkWindow *);
 
   virtual Standard_Boolean hasIO() { return !myIO.IsNull(); }
   virtual Handle_SALOME_InteractiveObject getIO() { return myIO; } 
@@ -105,8 +107,14 @@ class SALOME_Actor : public vtkLODActor{
   virtual void SetMapper(vtkMapper* theMapper); 
   virtual void SetTransform(SALOME_Transform* theTransform); 
 
+  virtual unsigned long int GetMTime();
+
   virtual void SetRepresentation(int theMode);
   virtual int GetRepresentation();
+
+  // Infinitive means actor without size (point for example
+  // which is not taken into account in calculation of boundaries of the scene
+  virtual bool IsInfinitive() { return false; }
     
  protected:
   vtkProperty         *PreviewProperty;
@@ -122,6 +130,7 @@ class SALOME_Actor : public vtkLODActor{
   SALOME_Transform *myTransform;
   std::vector<SALOME_PassThroughFilter*> myPassFilter;
   SALOME_TransformFilter *myTransformFilter;
+  vtkProperty *myProperty;
   int myRepresentation;
 };
 
diff --git a/src/OBJECT/SALOME_Transform.cxx b/src/OBJECT/SALOME_Transform.cxx
deleted file mode 100644 (file)
index d55c5fb..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-// File:       SALOME_Transform.cxx
-// Created:    Wed Jun  4 09:46:59 2003
-// Author:     Alexey PETROV
-//             <apo@ivanox.nnov.matra-dtv.fr>
-
-
-#include "SALOME_Transform.h"
-#include "VTKViewer_Common.h"
-#include <vtkObjectFactory.h>
-#include <vtkGeometryFilter.h>
-#include <vtkMatrix4x4.h>
-using namespace std;
-
-//=======================================================================
-
-SALOME_Transform* SALOME_Transform::New(){
-  vtkObject* ret = vtkObjectFactory::CreateInstance("SALOME_Transform");
-  if(ret) return (SALOME_Transform*)ret;
-  return new SALOME_Transform;
-}
-
-void SALOME_Transform::SetScale(float theScaleX, float theScaleY, float theScaleZ){ 
-  double aMatrix[16] = {theScaleX,0,0,0, 
-                        0,theScaleY,0,0, 
-                        0,0,theScaleZ,0, 
-                        0,0,0,1.0000000};
-  vtkTransform::SetMatrix(aMatrix);
-  //vtkTransform::Pop();
-  //vtkTransform::Scale(theScale);
-}
-
-int SALOME_Transform::IsIdentity(){ 
-  float* aScale = GetScale();
-  return (aScale[0] == 1.0 && aScale[1] == 1.0 && aScale[2] == 1.0);
-}
-
-//=======================================================================
-
-SALOME_TransformFilter* SALOME_TransformFilter::New(){
-  vtkObject* ret = vtkObjectFactory::CreateInstance("SALOME_TransformFilter");
-  if(ret) return (SALOME_TransformFilter*)ret;
-  return new SALOME_TransformFilter;
-}
-
-void SALOME_TransformFilter::Execute(){
-  vtkPoints *inPts;
-  vtkPoints *newPts;
-  int numPts, numCells;
-  vtkPointSet *input = this->GetInput();
-  vtkPointSet *output = this->GetOutput();
-  vtkPointData *pd=input->GetPointData(), *outPD=output->GetPointData();
-  vtkCellData *cd=input->GetCellData(), *outCD=output->GetCellData();
-  output->CopyStructure( input );
-  int anIdentity = 0;
-  if(SALOME_Transform* aTransform = dynamic_cast<SALOME_Transform*>(this->Transform))
-    anIdentity = aTransform->IsIdentity();
-  if(!anIdentity && this->Transform != NULL){
-    inPts = input->GetPoints();
-    if(!inPts){
-      vtkErrorMacro(<<"No input data");
-      return;
-    }
-    numPts = inPts->GetNumberOfPoints();
-    numCells = input->GetNumberOfCells();
-    newPts = vtkPoints::New();
-    newPts->Allocate(numPts);
-    this->UpdateProgress(.2);
-    this->Transform->TransformPoints(inPts,newPts);
-    this->UpdateProgress(.8);
-    output->SetPoints(newPts);
-    newPts->Delete();
-  }
-  outPD->PassData(pd);
-  outCD->PassData(cd);
-}
-
-//=======================================================================
-
-SALOME_PassThroughFilter* SALOME_PassThroughFilter::New(){
-  vtkObject* ret = vtkObjectFactory::CreateInstance("SALOME_PassThroughFilter");
-  if(ret) return (SALOME_PassThroughFilter*)ret;
-  return new SALOME_PassThroughFilter;
-}
-
-SALOME_PassThroughFilter::SALOME_PassThroughFilter(){
-  myGeomFilter = vtkGeometryFilter::New();
-}
-
-SALOME_PassThroughFilter::~SALOME_PassThroughFilter(){
-  myGeomFilter->Delete();
-}
-
-void SALOME_PassThroughFilter::Execute(){
-  vtkDataSet *input = static_cast<vtkDataSet*>(this->GetInput());
-  vtkDataSet *output = static_cast<vtkDataSet*>(this->GetOutput());
-  output->CopyStructure( input );
-  output->GetPointData()->PassData( input->GetPointData() );
-  output->GetCellData()->PassData( input->GetCellData() );
-}
-
-void SALOME_PassThroughFilter::SetInput(vtkDataSet *input){
-  myGeomFilter->SetInput(input);
-  vtkDataSet *oldInput = this->GetInput();
-  if(oldInput != NULL)
-    if(input == NULL || oldInput->GetDataObjectType() != input->GetDataObjectType()){
-      vtkWarningMacro("Changing input type.  Deleting output");
-      this->SetOutput(NULL);
-    }
-  if (input != NULL && this->vtkSource::GetOutput(0) == NULL){
-    this->vtkSource::SetNthOutput(0, input->NewInstance());
-    this->Outputs[0]->ReleaseData();
-    this->Outputs[0]->Delete();
-  }
-  this->vtkProcessObject::SetNthInput(0, input);
-}
-
-vtkPolyData *SALOME_PassThroughFilter::GetPolyDataOutput() {
-  vtkDataSet *ds = this->GetOutput();
-  if(!ds) return NULL;
-  if(ds->GetDataObjectType() == VTK_POLY_DATA) return (vtkPolyData *)ds;
-  myGeomFilter->SetInput(this->GetOutput());
-  return myGeomFilter->GetOutput();
-}
diff --git a/src/OBJECT/SALOME_Transform.h b/src/OBJECT/SALOME_Transform.h
deleted file mode 100644 (file)
index 65fa0b4..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-// File:       SALOME_Transformation.hxx
-// Created:    Wed Jun  4 09:39:09 2003
-// Author:     Alexey PETROV
-//             <apo@ivanox.nnov.matra-dtv.fr>
-
-
-#ifndef SALOME_Transform_HeaderFile
-#define SALOME_Transform_HeaderFile
-
-#include <math.h>
-
-#include <vtkTransform.h>
-#include <vtkTransformFilter.h>
-#include <vtkDataSetToDataSetFilter.h>
-class vtkGeometryFilter;
-
-//=======================================================================
-
-class VTK_EXPORT SALOME_Transform : public vtkTransform{
- public:
-  static SALOME_Transform *New();
-  vtkTypeMacro(SALOME_Transform,vtkTransform);
-  void SetScale(float theScaleX, float theScaleY, float theScaleZ);
-  int IsIdentity();
-protected:
-  SALOME_Transform() {}
-  ~SALOME_Transform() {}
-  SALOME_Transform(const SALOME_Transform&) {}
-  void operator=(const SALOME_Transform&) {}
-};
-
-//=======================================================================
-
-class VTK_EXPORT SALOME_TransformFilter : public vtkTransformFilter{
- public:
-  static SALOME_TransformFilter *New();
-  vtkTypeMacro(SALOME_TransformFilter,vtkTransformFilter);
-protected:
-  SALOME_TransformFilter() {}
-  ~SALOME_TransformFilter() {}
-  SALOME_TransformFilter(const SALOME_TransformFilter&) {}
-  void operator=(const SALOME_TransformFilter&) {}
-  void Execute();
-};
-
-//=======================================================================
-
-class SALOME_PassThroughFilter : public vtkDataSetToDataSetFilter{
- public:
-  vtkTypeMacro(SALOME_PassThroughFilter,vtkDataSetToDataSetFilter);
-  static SALOME_PassThroughFilter *New();
-  void SetInput(vtkDataSet *input);
-  vtkPolyData *GetPolyDataOutput();
- protected:
-  SALOME_PassThroughFilter();
-  virtual ~SALOME_PassThroughFilter();
-  void Execute();
-  vtkGeometryFilter* myGeomFilter;
- private:
-  SALOME_PassThroughFilter(const SALOME_PassThroughFilter&);  // Not implemented.
-  void operator=(const SALOME_PassThroughFilter&);  // Not implemented.
-};
-
-//=======================================================================
-
-#endif
index 42fe2c55c53fb20e8726a296a65e19ce023400b6..5f466d4af9dfb3aeb3d675170777b4fbe70a1399 100644 (file)
@@ -1,31 +1,6 @@
-#  SALOME OCCViewer : build OCC Viewer into Salome desktop
-#
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File   : Makefile.in
-#  Module : SALOME
-
+# source path
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
index c15abf390ed31448c5e9776ca63b95e4f6240079..2ddc4325fc1abc068ffe48db69a951229cc378d5 100644 (file)
@@ -40,6 +40,8 @@ using namespace std;
 #include "QAD_Application.h"
 #include "utilities.h"
 
+#include "QAD_Config.h"
+#include "QAD_Settings.h"
 #include "SALOME_Selection.h"
 #include "SALOME_AISShape.hxx"
 
@@ -49,7 +51,7 @@ using namespace std;
 // Open CASCADE Include
 #include <V3d_View.hxx>
 #include <AIS_ListIteratorOfListOfInteractive.hxx>
-
+#include <Visual3d_View.hxx>
 
 /*!
     Constructor
@@ -380,6 +382,7 @@ void OCCViewer_ViewFrame::onViewTrihedron()
     myViewer->getAISContext()->Display( myViewer->getTrihedron() );
   else
     myViewer->getAISContext()->Erase( myViewer->getTrihedron() );
+  onAdjustTrihedron();
 }
 
 void OCCViewer_ViewFrame::rename( const Handle(SALOME_InteractiveObject)& IObject, QString newName )
@@ -499,11 +502,6 @@ void OCCViewer_ViewFrame::redo(SALOMEDS::Study_var aStudy,
   Repaint();
 }
 
-void OCCViewer_ViewFrame::SetTrihedronSize( int dim )
-{
-  myViewer->setTrihedronSize( dim );
-}
-
 /* selection */
 Handle(SALOME_InteractiveObject) OCCViewer_ViewFrame::FindIObject(const char* Entry)
 {
@@ -658,6 +656,58 @@ void OCCViewer_ViewFrame::EraseAll()
 
 
 
-void OCCViewer_ViewFrame::Repaint(){
+void OCCViewer_ViewFrame::Repaint()
+{
+  onAdjustTrihedron();
   myViewer->getViewer3d()->Update();
 }
+
+void OCCViewer_ViewFrame::onAdjustTrihedron()
+{
+  Handle (AIS_InteractiveContext) ic = myViewer->getAISContext();
+  
+  if (!ic->IsDisplayed(myViewer->getTrihedron())) 
+    return;
+  else 
+    {
+      AIS_ListOfInteractive List;
+      ic->Erase( myViewer->getTrihedron() );
+      ic->DisplayedObjects(List);
+      ic->Display( myViewer->getTrihedron() ); 
+      if (List.IsEmpty())
+       {
+         myViewer->setTrihedronSize(100);
+         return;
+       }
+    }
+  
+  Handle( V3d_View) view3d = ((OCCViewer_ViewPort3d*)myViewPort)->getView();
+  
+  if (!view3d.IsNull())
+    {
+      double Xmin=0, Ymin=0, Zmin=0, Xmax=0, Ymax=0, Zmax=0;
+      double aMaxSide; 
+      double aPercents;
+     
+      view3d->View()->MinMaxValues(Xmin, Ymin, Zmin, Xmax, Ymax, Zmax);
+
+      if (Xmin==RealFirst() || Ymin==RealFirst() || Zmin==RealFirst() ||
+         Xmax==RealLast()  || Ymax==RealLast()  || Zmax==RealLast())
+       return;
+           
+      aMaxSide = Xmax - Xmin;
+      if (aMaxSide < Ymax -Ymin) aMaxSide = Ymax -Ymin;
+      if (aMaxSide < Zmax -Zmin) aMaxSide = Zmax -Zmin;
+      
+      static float aSizeInPercents = 105;
+      QString aSetting = QAD_CONFIG->getSetting("Viewer:TrihedronSize");
+      if (!aSetting.isEmpty()) aSizeInPercents = aSetting.toFloat();
+
+      static float EPS = 5.0E-3;
+      float aSize = myViewer->getTrihedron()->Size();
+      float aNewSize = aMaxSide*aSizeInPercents/100.0;
+      // if the new trihedron size have sufficient difference, then apply the value
+      if(fabs(aNewSize-aSize) > aSize*EPS || fabs(aNewSize-aSize) > aNewSize*EPS)
+       myViewer->setTrihedronSize(aNewSize);
+    }
+}
index 918c9e117ce42a6d723b3d1475903b26bce00eae..61125300fdefef6308040352bb5f55e60de50af1 100644 (file)
@@ -65,9 +65,7 @@ class QAD_EXPORT OCCViewer_ViewFrame : public QAD_ViewFrame
   QCursor           cursor() const;
 
   void              SetSelectionMode( int mode ) {};
-
-  void              SetTrihedronSize( int dim );
-
+  
   /*  popup management */
   void              setPopupServer( QAD_Application* );
 
@@ -134,6 +132,7 @@ class QAD_EXPORT OCCViewer_ViewFrame : public QAD_ViewFrame
   void           onViewBottom();
   void           onViewTop();
   void           onViewTrihedron(); 
+  void           onAdjustTrihedron();
  
  protected:
   OCCViewer_Viewer3d*      myViewer;    // my owner
index 6fa7f5dd4b7d343f9bf7064d97109036691f75b8..81078aa9fdc09be431d5033965952a2cb6a7539d 100644 (file)
@@ -25,7 +25,7 @@
 #  Module : SALOME
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
index 3cf0eb4e89507871a66d807c76cbe8f19d5006d3..580beb4456d356bdd65ce5f81ce786b52ba0506e 100644 (file)
@@ -1,12 +1,6 @@
-#  Copyright (C) 2003  CEA/DEN, EDF R&D
-#
-#
-#
-#  File   : Makefile.in
-#  Module : SALOME
-
+# source path
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
@@ -21,7 +15,7 @@ EXPORT_HEADERS = \
            Plot2d_SetupViewDlg.h \
            Plot2d_SetupPlot2dDlg.h \
            Plot2d_FitDataDlg.h
-          
+
 # .po files to transform in .qm
 #PO_FILES = \
 
@@ -45,16 +39,9 @@ LIB_MOC = \
            Plot2d_FitDataDlg.h
 
 LIB_CLIENT_IDL = SALOMEDS.idl \
-                 SALOMEDS_Attributes.idl \
                 SALOME_ModuleCatalog.idl \
                 SALOME_Component.idl \
                 SALOME_Exception.idl
-#LIB_CLIENT_IDL = SALOMEDS.idl
-
-#CPPFLAGS+=$(QT_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES)
-#CPPFLAGS+=$(QT_INCLUDES) $(QWT_INCLUDES) $(PYTHON_INCLUDES)
-#LDFLAGS+=$(QT_MT_LIBS) $(OCC_LIBS) $(VTK_LIBS) -lSalomeNS -lqsplitterP -lSalomeLifeCycleCORBA -lOpUtil -lSalomeObject
-#LDFLAGS+=$(QT_MT_LIBS) $(QWT_LIBS)
 
 CPPFLAGS+=$(QT_INCLUDES) $(OCC_INCLUDES) $(OGL_INCLUDES) $(PYTHON_INCLUDES) $(QWT_INCLUDES) 
 LDFLAGS+=$(QT_MT_LIBS) $(OGL_LIBS) $(QWT_LIBS) -lSalomeGUI
index 5dddcc5dfa85b02deaf47f7c01b9d65e64739e84..ee92ee7ba4c325980f7cde14cbf9e78e98ef5136 100644 (file)
@@ -45,7 +45,7 @@ public:
   ViewType          getTypeView() const { return VIEW_PLOT2D; }
   QWidget*          getViewWidget();
   void              SetSelectionMode( int mode ) {}
-  void              SetTrihedronSize( int dim ) {}
+  void              onAdjustTrihedron( ) {}
 
   /* popup management */
   void              setPopupServer( QAD_Application* );
index 84293466eb077e1acc9394cc41e3aa8550c7e69a..5ff83cb1d02fabe8361d6869ceac4f0f6c6653c8 100644 (file)
@@ -27,7 +27,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
@@ -50,6 +50,6 @@ BIN = SALOME_Registry_Server
 BIN_SRC = RegistryService.cxx
 BIN_SERVER_IDL = SALOME_Registry.idl
 
-LDFLAGS+= -lSalomeNS -lOpUtil -lSalomeLoggerServer
+LDFLAGS+= -lSalomeNS -lOpUtil -lSALOMELocalTrace 
 
 @CONCLUDE@
index e4aee0f7d45e78ad97e6260f224cb071bab5cba0..3e5a5b636fff0472744be2aa40614c9c3e77fced 100644 (file)
 //  Module : SALOME
 //  $Header$
 
-using namespace std;
-# include <stdlib.h>
-# include <iostream.h>
-# include <fstream.h>
+#include <stdlib.h>
+#include <iostream.h>
+#include <fstream.h>
 
 extern "C"
 {
 # include <stdio.h>
 }
 
-# include "utilities.h"
-# include "Utils_ORB_INIT.hxx"
-# include "Utils_SINGLETON.hxx"
-# include "Utils_SALOME_Exception.hxx"
-# include "Utils_CommException.hxx"
-# include "ServiceUnreachable.hxx"
-# include "SALOME_NamingService.hxx"
-# include "RegistryService.hxx"
+#include "utilities.h"
+#include "Utils_ORB_INIT.hxx"
+#include "Utils_SINGLETON.hxx"
+#include "Utils_SALOME_Exception.hxx"
+#include "Utils_CommException.hxx"
+#include "ServiceUnreachable.hxx"
+#include "SALOME_NamingService.hxx"
+#include "RegistryService.hxx"
 
-//#define CHECKTIME
 #ifdef CHECKTIME
 #include <Utils_Timer.hxx>
 #endif
+using namespace std;
 
 int main( int argc , char **argv )
 {
-       BEGIN_OF( argv[0] )
-       INFOS_COMPILATION 
-       SCRUTE(argc) 
-       if( argc<3 )
+  BEGIN_OF( argv[0] )
+    INFOS_COMPILATION 
+    SCRUTE(argc) 
+    if( argc<3 )
+      {
+       MESSAGE("you must provide the Salome session name when you call SALOME_Registry_Server") ;
+       throw CommException("you must provide the Salome session name when you call SALOME_Registry_Server") ;
+      }
+  const char *ptrSessionName=0 ;
+
+  int k=0 ;
+  for ( k=1 ; k<argc ; k++ )
+    {
+      if( strcmp(argv[k],"--salome_session")==0 )
        {
-               MESSAGE("you must provide the Salome session name when you call SALOME_Registry_Server") ;
-               throw CommException("you must provide the Salome session name when you call SALOME_Registry_Server") ;
+         ptrSessionName=argv[k+1] ;
+         break ;
        }
-       const char *ptrSessionName=0 ;
-
-       int k=0 ;
-       for ( k=1 ; k<argc ; k++ )
+    }
+  ASSERT(ptrSessionName) ;
+  ASSERT(strlen( ptrSessionName )>0) ;
+  const char *registryName = "Registry" ;
+  ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
+  CORBA::ORB_var &orb = init( argc , argv ) ;
+  //
+  long TIMESleep = 250000000;
+  int NumberOfTries = 40;
+  int a;
+  timespec ts_req;
+  ts_req.tv_nsec=TIMESleep;
+  ts_req.tv_sec=0;
+  timespec ts_rem;
+  ts_rem.tv_nsec=0;
+  ts_rem.tv_sec=0;
+  CosNaming::NamingContext_var inc;
+  PortableServer::POA_var poa;
+  CORBA::Object_var theObj;
+  CORBA::Object_var obj;
+  CORBA::Object_var object;
+  SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
+  Registry::Components_var varComponents;
+  int REGISTRY=0;
+  const char * Env = getenv("USE_LOGGER");
+  int EnvL =0;
+  if ((Env!=NULL) && (strlen(Env)))
+    EnvL=1;
+  CosNaming::Name name;
+  name.length(1);
+  name[0].id=CORBA::string_dup("Logger");  
+  PortableServer::POAManager_var manager; 
+  for (int i = 1; i<=NumberOfTries; i++)
+    {
+      if (i!=1) 
+       a=nanosleep(&ts_req,&ts_rem);
+      try
+       { 
+         obj = orb->resolve_initial_references("RootPOA");
+         if(!CORBA::is_nil(obj))
+           poa = PortableServer::POA::_narrow(obj);
+         if(!CORBA::is_nil(poa))
+           manager = poa->the_POAManager();
+         if(!CORBA::is_nil(orb)) 
+           theObj = orb->resolve_initial_references("NameService");
+         if (!CORBA::is_nil(theObj))
+           inc = CosNaming::NamingContext::_narrow(theObj);
+       }
+      catch( CORBA::COMM_FAILURE& )
        {
-               if( strcmp(argv[k],"--salome_session")==0 )
-               {
-                       ptrSessionName=argv[k+1] ;
-                       break ;
-               }
+         MESSAGE( "Registry Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service" );
        }
-       ASSERT(ptrSessionName) ;
-       ASSERT(strlen( ptrSessionName )>0) ;
-       const char *registryName = "Registry" ;
-        ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
-       CORBA::ORB_var &orb = init( argc , argv ) ;
-       //
-       long TIMESleep = 250000000;
-       int NumberOfTries = 40;
-       int a;
-       timespec ts_req;
-       ts_req.tv_nsec=TIMESleep;
-       ts_req.tv_sec=0;
-       timespec ts_rem;
-       ts_rem.tv_nsec=0;
-       ts_rem.tv_sec=0;
-       CosNaming::NamingContext_var inc;
-       PortableServer::POA_var poa;
-       CORBA::Object_var theObj;
-       CORBA::Object_var obj;
-       CORBA::Object_var object;
-       SALOME_Logger::Logger_var log;
-       SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
-       Registry::Components_var varComponents;
-       int REGISTRY=0;
-       const char * Env = getenv("USE_LOGGER");
-        int EnvL =0;
-       if ((Env!=NULL) && (strlen(Env)))
-         EnvL=1;
-       CosNaming::Name name;
-       name.length(1);
-       name[0].id=CORBA::string_dup("Logger");  
-       PortableServer::POAManager_var manager; 
-       for (int i = 1; i<=NumberOfTries; i++){
-         if (i!=1) 
-           a=nanosleep(&ts_req,&ts_rem);
-         try{ 
-           obj = orb->resolve_initial_references("RootPOA");
-           if(!CORBA::is_nil(obj))
-             poa = PortableServer::POA::_narrow(obj);
-           if(!CORBA::is_nil(poa))
-             manager = poa->the_POAManager();
-           if(!CORBA::is_nil(orb)) 
-             theObj = orb->resolve_initial_references("NameService");
-           if (!CORBA::is_nil(theObj))
-             inc = CosNaming::NamingContext::_narrow(theObj);
-           }
-         catch( CORBA::COMM_FAILURE& )
+      if(!CORBA::is_nil(inc))
+       {
+         MESSAGE( "Registry Server: Naming Service was found" );
+         if(EnvL==1)
            {
-             MESSAGE( "Registry Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service" )
-               }
-         if(!CORBA::is_nil(inc)) {
-           MESSAGE( "Registry Server: Naming Service was found" )
-             if(EnvL==1){
-               for(int j=1; j<=NumberOfTries; j++){
+             for(int j=1; j<=NumberOfTries; j++)
+               {
                  if (j!=1) 
                    a=nanosleep(&ts_req, &ts_rem);
-                 try{
-                   object = inc->resolve(name);
-                 }
-                 catch(CosNaming::NamingContext::NotFound){ MESSAGE( "Registry Server: Logger Server wasn't found" ) }
-                 catch(...){ MESSAGE( "Registry Server: Unknown exception" ) }
-                 
+                 try
+                   {
+                     object = inc->resolve(name);
+                   }
+                 catch(CosNaming::NamingContext::NotFound)
+                   {
+                     MESSAGE( "Registry Server: Logger Server wasn't found" );
+                   }
+                 catch(...)
+                   {
+                     MESSAGE( "Registry Server: Unknown exception" );
+                   }
                  if (!CORBA::is_nil(object))
-                   log = SALOME_Logger::Logger::_narrow(object);
-                 if (!CORBA::is_nil(log)){
-                   MESSAGE( "Registry Server: Logger Server was found" )
-                     log->ping();
-                    REGISTRY=1;
-                   break;
-                 }
-               }}
-         }
-         if ((REGISTRY==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
-            break;
-             }
-        //
-       try
-         {
-           naming.init_orb( orb ) ;
-           RegistryService *ptrRegistry = SINGLETON_<RegistryService>::Instance() ;
-           ptrRegistry->SessionName( ptrSessionName ) ;
-           varComponents = ptrRegistry->_this() ;
-           // The RegistryService must not already exist.
+                   {
+                     MESSAGE( "Module Catalog Server: Logger Server was found" );
+                     REGISTRY=1;
+                     break;
+                   }
+               }
+           }
+       }
+      if ((REGISTRY==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
+       break;
+    }
+
+  try
+    {
+      naming.init_orb( orb ) ;
+      RegistryService *ptrRegistry = SINGLETON_<RegistryService>::Instance() ;
+      ptrRegistry->SessionName( ptrSessionName ) ;
+      varComponents = ptrRegistry->_this() ;
+      // The RegistryService must not already exist.
            
-           try
-             {
-               CORBA::Object_var pipo = naming.Resolve( registryName ) ;
-               if (CORBA::is_nil(pipo) )  throw ServiceUnreachable() ;
-               MESSAGE("RegistryService servant already existing" ) ;
-               exit( EXIT_FAILURE ) ;
-             }
-           catch( const ServiceUnreachable &ex )
-             {
-             }
-           catch( const CORBA::Exception &exx )
-             {
-             }
-           string absoluteName = string("/") + registryName;
-           naming.Register( varComponents , absoluteName.c_str() ) ;
-           MESSAGE("On attend les requetes des clients") ;
-           try
-             {
-               // Activation du POA
-               MESSAGE("Activation du POA") ;
-               manager->activate() ;
+      try
+       {
+         CORBA::Object_var pipo = naming.Resolve( registryName ) ;
+         if (CORBA::is_nil(pipo) )  throw ServiceUnreachable() ;
+         MESSAGE("RegistryService servant already existing" ) ;
+         exit( EXIT_FAILURE ) ;
+       }
+      catch( const ServiceUnreachable &ex )
+       {
+       }
+      catch( const CORBA::Exception &exx )
+       {
+       }
+      string absoluteName = string("/") + registryName;
+      naming.Register( varComponents , absoluteName.c_str() ) ;
+      MESSAGE("On attend les requetes des clients") ;
+      try
+       {
+         // Activation du POA
+         MESSAGE("Activation du POA") ;
+         manager->activate() ;
                
-               // Lancement de l'ORB
-               MESSAGE("Lancement de l'ORB") ;
+         // Lancement de l'ORB
+         MESSAGE("Lancement de l'ORB") ;
 #ifdef CHECKTIME
-               Utils_Timer timer;
-               timer.Start();
-               timer.Stop();
-               MESSAGE("SALOME_Registry_Server.cxx - orb->run()");
-               timer.ShowAbsolute();
+         Utils_Timer timer;
+         timer.Start();
+         timer.Stop();
+         MESSAGE("SALOME_Registry_Server.cxx - orb->run()");
+         timer.ShowAbsolute();
 #endif
-               orb->run() ;
-             }
-           catch( const CORBA::Exception &ex )
-             {
-               MESSAGE("Erreur systeme") ;
-               return EXIT_FAILURE ;
-             }
+         orb->run() ;
+       }
+      catch( const CORBA::Exception &ex )
+       {
+         MESSAGE("Erreur systeme") ;
+         return EXIT_FAILURE ;
+       }
            
-         }
-       catch( const SALOME_Exception &ex )
-         {
-           MESSAGE( "Communication Error : " << ex.what() )
-             return EXIT_FAILURE ;
-         }
+    }
+  catch( const SALOME_Exception &ex )
+    {
+      MESSAGE( "Communication Error : " << ex.what() )
+       return EXIT_FAILURE ;
+    }
        
-       END_OF( argv[0] ) ;
-       return 0 ;
+  END_OF( argv[0] ) ;
+  return 0 ;
 }
index bc6e2ee584e157a792769260799760bea8235a9f..1c6fd6a1a834a87720a56064e54c42069bba52e4 100644 (file)
@@ -27,7 +27,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
index 9d02d2f8cb0fec1f12c7240e1cdfafece9e2d0f0..afc79eac91563ac13c72a7944330fa4cf611f9a4 100644 (file)
@@ -52,11 +52,15 @@ using namespace std;
 
 typedef int PIXELS;
 RegWidget* RegWidget::myRegWidgetPtr = 0;
+QString addSlash( const QString& );
+QString findFile( QString filename );
 
 #define BOLD( text ) ( QString( "<b>" ) + QString( text ) + QString( "</b>" ) )
+
 /*!
   Creates components list
 */
+
 Registry::Components_var MakeRegistry( CORBA::ORB_var &orb )
 {
 
@@ -110,13 +114,14 @@ RegWidget::RegWidget(CORBA::ORB_var &orb, QWidget *parent, const char *name )
        _tabWidget(0), _refresh(0), _interval(0),
        myInfoWindow(0), myHelpWindow(0), myIntervalWindow(0)
 {
-  char* dir = getenv( "CSF_ResourcesDefaults" );
+   QString aFile = findFile("default.png");
+ /* char* dir = getenv( "CSF_ResourcesDefaults" );
   QString path( "" );
   if ( dir ) {
     QDir qDir( dir );
     path = qDir.filePath( "default.png" );
-  }
-  QPixmap pm ( path );
+  }*/
+  QPixmap pm ( aFile );
   if ( !pm.isNull() )
     setIcon( pm );
 
@@ -445,7 +450,7 @@ void RegWidget::slotSelectRefresh()
   myIntervalWindow->installEventFilter( this );
   myIntervalWindow->setValue(myRefreshInterval);
   myIntervalWindow->show();
-  connect( myIntervalWindow->Cancel(), SIGNAL( clicked() ), myIntervalWindow, SLOT( reject() ) );
+  connect( myIntervalWindow->Cancel(), SIGNAL( clicked() ), myIntervalWindow, SLOT( close() ) );
   connect( myIntervalWindow->Ok(), SIGNAL( clicked() ), this, SLOT( slotIntervalOk() ) );
   END_OF("slotSelectRefresh");
 }
@@ -574,3 +579,90 @@ void InfoWindow::setText( const QString& text )
 {
   myTextView->setText( text );
 }
+
+static const char* SEPARATOR    = ":";
+
+QString findFile( QString filename )
+{
+  QString dir;
+  char* cenv;
+  
+  // Try ${HOME}/.salome/resources directory
+  cenv = getenv( "HOME" );
+  if ( cenv ) {
+    dir.sprintf( "%s", cenv );
+    if ( !dir.isEmpty() ) {
+      dir = addSlash(dir) ;
+      dir = dir + ".salome" ;
+      dir = addSlash(dir) ;
+      dir = dir + "resources" ;
+      dir = addSlash(dir) ;
+      QFileInfo fileInfo( dir + filename );
+      if ( fileInfo.isFile() && fileInfo.exists() )
+       return fileInfo.filePath();
+    }
+  }
+  // Try ${SALOME_SITE_DIR}/share/salome/resources directory
+  cenv = getenv( "SALOME_SITE_DIR" );
+  if ( cenv ) {
+    dir.sprintf( "%s", cenv );
+    if ( !dir.isEmpty() ) {
+      dir = addSlash(dir) ;
+      dir = dir + "share" ;
+      dir = addSlash(dir) ;
+      cenv = getenv("SALOME_SITE_NAME");
+      if (cenv)  dir = dir + cenv;
+      else       dir = dir + "salome" ;
+      dir = addSlash(dir) ;
+      dir = dir + "resources" ;
+      dir = addSlash(dir) ;
+      QFileInfo fileInfo( dir + filename );
+      if ( fileInfo.isFile() && fileInfo.exists() )
+       return fileInfo.filePath();
+    }
+  }
+  // Try ${SALOME_ROOT_DIR}/share/salome/resources directory
+  cenv = getenv( "SALOME_ROOT_DIR" );
+  if ( cenv ) {
+    dir.sprintf( "%s", cenv );
+    if ( !dir.isEmpty() ) {
+      dir = addSlash(dir) ;
+      dir = dir + "share" ;
+      dir = addSlash(dir) ;
+      dir = dir + "salome" ;
+      dir = addSlash(dir) ;
+      dir = dir + "resources" ;
+      dir = addSlash(dir) ;
+      QFileInfo fileInfo( dir + filename );
+      if ( fileInfo.isFile() && fileInfo.exists() )
+       return fileInfo.filePath();
+    }
+  }
+  // Try CSF_SaloameResources env.var directory ( or directory list )
+  cenv = getenv( "CSF_SalomeResources" );
+  if ( cenv ) {
+    dir.sprintf( "%s", cenv );
+    if ( !dir.isEmpty() ) {
+      QStringList dirList = QStringList::split( SEPARATOR, dir, false ); // skip empty entries
+      for ( int i = 0; i < dirList.count(); i++ ) {
+       QFileInfo fileInfo( addSlash( dirList[ i ] ) + filename );
+       if ( fileInfo.isFile() && fileInfo.exists() )
+         return fileInfo.filePath();
+      }
+    }
+  }
+  return filename;
+}
+QString addSlash( const QString& path )
+{
+  if (!path.isNull()) {
+#ifdef WNT
+    QChar slash ('\\');
+#else
+    QChar slash ('/');
+#endif
+    if ( path.at(path.length()-1) != slash )
+      return path + slash;
+  }
+  return path;
+}
index dcd0a27592c537811f26282495243064919f5bbc..341e60d54f0baea6b924bd49aa3b21c9d9131983 100644 (file)
@@ -37,7 +37,7 @@ void OnGUIEvent( CORBA::ORB_var &orb, QWidget *parent, const char *name )
 {
   // N.B. parent can be 0
  RegWidget* ptrRegWidget = RegWidget::GetRegWidget( orb, parent, name );
- ASSERT ( !ptrRegWidget );
//ASSERT ( !ptrRegWidget );
  ptrRegWidget->show();
  ptrRegWidget->raise();
  ptrRegWidget->setActiveWindow();
index 78694d0d0dd3778f088b46e7e4fceeb2f45188e6..c129dad04db3cd5646bf7387fdaa74165438a6e6 100644 (file)
@@ -27,7 +27,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
@@ -54,7 +54,7 @@ BIN_SERVER_IDL = SALOME_RessourcesCatalog.idl
 
 CPPFLAGS+= $(QT_MT_INCLUDES) 
 CXXFLAGS+= 
-LDFLAGS+= $(QT_MT_LIBS) $(OGL_LIBS) -lSalomeNS -lOpUtil -lSalomeLoggerServer
+LDFLAGS+= $(QT_MT_LIBS) $(OGL_LIBS) -lSalomeNS -lOpUtil -lSALOMELocalTrace
 
 @CONCLUDE@
 
index 827efd482290070a410eb27e229409b79de5bdf5..e9a16146cb778988692de3a3ced950a4e7480154 100644 (file)
 //  Module : SALOME
 //  $Header$
 
-using namespace std;
 #include <iostream.h>
 #include "SALOME_NamingService.hxx"
 #include "SALOME_RessourcesCatalog_impl.hxx"
 #include "utilities.h"
-# include "Utils_SINGLETON.hxx"
+#include "Utils_SINGLETON.hxx"
+using namespace std;
+
 int main(int argc,char **argv)
 {
-  try {
-  CosNaming::NamingContext_var _rootContext, catalogContext;
+  try
+    {
+      CosNaming::NamingContext_var _rootContext, catalogContext;
 
-  // initialize the ORB
+      // initialize the ORB
 
-  CORBA::ORB_ptr orb = CORBA::ORB_init (argc, argv);
+      CORBA::ORB_ptr orb = CORBA::ORB_init (argc, argv);
 
-  // initialize POA
-  //
-  long TIMESleep = 250000000;
-       int NumberOfTries = 40;
-       int a;
-       timespec ts_req;
-       ts_req.tv_nsec=TIMESleep;
-       ts_req.tv_sec=0;
-       timespec ts_rem;
-       ts_rem.tv_nsec=0;
-       ts_rem.tv_sec=0;
-       CosNaming::NamingContext_var inc;
-       PortableServer::POA_var poa;
-       CORBA::Object_var theObj;
-       CORBA::Object_var obj;
-       CORBA::Object_var object;
-       SALOME_Logger::Logger_var log;
-       SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
-       int RESSOURCES_CATALOG=0;
-       const char * Env = getenv("USE_LOGGER");
-        int EnvL =0;
-       if ((Env!=NULL) && (strlen(Env)))
-         EnvL=1;
-       CosNaming::Name name;
-       name.length(1);
-       name[0].id=CORBA::string_dup("Logger");    
-       PortableServer::POAManager_var mgr; 
-       for (int i = 1; i<=NumberOfTries; i++){
+      // initialize POA
+      //
+      long TIMESleep = 250000000;
+      int NumberOfTries = 40;
+      int a;
+      timespec ts_req;
+      ts_req.tv_nsec=TIMESleep;
+      ts_req.tv_sec=0;
+      timespec ts_rem;
+      ts_rem.tv_nsec=0;
+      ts_rem.tv_sec=0;
+      CosNaming::NamingContext_var inc;
+      PortableServer::POA_var poa;
+      CORBA::Object_var theObj;
+      CORBA::Object_var obj;
+      CORBA::Object_var object;
+      SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
+      int RESSOURCES_CATALOG=0;
+      const char * Env = getenv("USE_LOGGER");
+      int EnvL =0;
+      if ((Env!=NULL) && (strlen(Env)))
+       EnvL=1;
+      CosNaming::Name name;
+      name.length(1);
+      name[0].id=CORBA::string_dup("Logger");    
+      PortableServer::POAManager_var mgr; 
+      for (int i = 1; i<=NumberOfTries; i++)
+       {
          if (i!=1) 
            a=nanosleep(&ts_req,&ts_rem);
-         try{ 
-           obj = orb->resolve_initial_references("RootPOA");
-           if(!CORBA::is_nil(obj))
-             poa = PortableServer::POA::_narrow(obj);
-           if(!CORBA::is_nil(poa))
-             mgr = poa->the_POAManager();
-           if(!CORBA::is_nil(orb)) 
-         theObj = orb->resolve_initial_references("NameService");
-           if (!CORBA::is_nil(theObj))
-             inc = CosNaming::NamingContext::_narrow(theObj);
+         try
+           { 
+             obj = orb->resolve_initial_references("RootPOA");
+             if(!CORBA::is_nil(obj))
+               poa = PortableServer::POA::_narrow(obj);
+             if(!CORBA::is_nil(poa))
+               mgr = poa->the_POAManager();
+             if(!CORBA::is_nil(orb)) 
+               theObj = orb->resolve_initial_references("NameService");
+             if (!CORBA::is_nil(theObj))
+               inc = CosNaming::NamingContext::_narrow(theObj);
            }
          catch( CORBA::COMM_FAILURE& )
            {
-             MESSAGE( "Ressources Catalog: CORBA::COMM_FAILURE: Unable to contact the Naming Service" )
+             MESSAGE( "Ressources Catalog: CORBA::COMM_FAILURE: Unable to contact the Naming Service" );
+           }
+         if(!CORBA::is_nil(inc)) 
+           {
+             MESSAGE( "Ressources Catalog: Naming Service was found" );
+             if(EnvL==1)
+               {
+                 for(int j=1; j<=NumberOfTries; j++)
+                   {
+                     if (j!=1) 
+                       a=nanosleep(&ts_req, &ts_rem);
+                     try{
+                       object = inc->resolve(name);
+                     }
+                     catch(CosNaming::NamingContext::NotFound)
+                       { 
+                         MESSAGE( "Ressources Catalog: Logger Server wasn't found" );
+                       }
+                     catch(...)
+                       { 
+                         MESSAGE( "Ressources Catalog: Unknown exception" );
+                       }
+                     if (!CORBA::is_nil(object))
+                       {
+                         MESSAGE( "Ressources Catalog: Loger Server was found" );
+                         RESSOURCES_CATALOG=1;
+                         break;
+                       }
+                   }
                }
-         if(!CORBA::is_nil(inc)) {
-           MESSAGE( "Ressources Catalog: Naming Service was found" )
-             if(EnvL==1){
-               for(int j=1; j<=NumberOfTries; j++){
-                 if (j!=1) 
-                   a=nanosleep(&ts_req, &ts_rem);
-                 try{
-                   object = inc->resolve(name);
-                 }
-                 catch(CosNaming::NamingContext::NotFound){ MESSAGE( "Ressources Catalog: Logger Server wasn't found" ) }
-                 catch(...){ MESSAGE( "Ressources Catalog: Unknown exception" ) }
-                 if (!CORBA::is_nil(object))
-                   log = SALOME_Logger::Logger::_narrow(object);
-                 if (!CORBA::is_nil(log)){
-                   MESSAGE( "Ressources Catalog: Loger Server was found" )
-                     log->ping();
-                    RESSOURCES_CATALOG=1;
-                   break;
-                 }
-               }}
-         }
+           }
          if ((RESSOURCES_CATALOG==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
             break;
-             }
-  //
-  // Active catalog
+       }
+
+      // Active catalog
   
-  SALOME_RessourcesCatalogImpl* Catalogue_i = new SALOME_RessourcesCatalogImpl(argc, argv);
-  poa->activate_object (Catalogue_i);
-  mgr->activate();
-  CORBA::Object_ptr myCata = Catalogue_i->_this();
+      SALOME_RessourcesCatalogImpl* Catalogue_i = new SALOME_RessourcesCatalogImpl(argc, argv);
+      poa->activate_object (Catalogue_i);
+      mgr->activate();
+      CORBA::Object_ptr myCata = Catalogue_i->_this();
 
-  // initialise Naming Service
-  SALOME_NamingService *_NS;
-  _NS = new SALOME_NamingService(orb);
-  // register Catalog in Naming Service
-  _NS->Register(myCata ,"/Kernel/RessourcesCatalog");
+      // initialise Naming Service
+      SALOME_NamingService *_NS;
+      _NS = new SALOME_NamingService(orb);
+      // register Catalog in Naming Service
+      _NS->Register(myCata ,"/Kernel/RessourcesCatalog");
 
-  MESSAGE("Running Ressources Catalog Server.")
+      MESSAGE("Running Ressources Catalog Server.")
 
-  orb->run();
+       orb->run();
  
-  poa->destroy(1,1);
+      poa->destroy(1,1);
  
-  }
-    catch(CORBA::SystemException&) {
+    }
+  catch(CORBA::SystemException&) {
     INFOS("Caught CORBA::SystemException.")
-  }
-    catch(CORBA::Exception&) {
+      }
+  catch(CORBA::Exception&) {
     INFOS("Caught CORBA::Exception.")
-  }
+      }
 
   return 0;
 }
diff --git a/src/SALOMEDS/Handle_SALOMEDS_ExternalFileDef.hxx b/src/SALOMEDS/Handle_SALOMEDS_ExternalFileDef.hxx
new file mode 100644 (file)
index 0000000..124e721
--- /dev/null
@@ -0,0 +1,85 @@
+// File generated by CPPExt (Transient)
+//
+//                     Copyright (C) 1991,1995 by
+//  
+//                      MATRA DATAVISION, FRANCE
+//  
+// This software is furnished in accordance with the terms and conditions
+// of the contract and with the inclusion of the above copyright notice.
+// This software or any other copy thereof may not be provided or otherwise
+// be made available to any other person. No title to an ownership of the
+// software is hereby transferred.
+//  
+// At the termination of the contract, the software and all copies of this
+// software must be deleted.
+
+#ifndef _Handle_SALOMEDS_ExternalFileDef_HeaderFile
+#define _Handle_SALOMEDS_ExternalFileDef_HeaderFile
+
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+
+#ifndef _Handle_TDataStd_Comment_HeaderFile
+#include <Handle_TDataStd_Comment.hxx>
+#endif
+
+class Standard_Transient;
+class Handle_Standard_Type;
+class Handle(TDataStd_Comment);
+class SALOMEDS_ExternalFileDef;
+Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOMEDS_ExternalFileDef);
+
+class Handle(SALOMEDS_ExternalFileDef) : public Handle(TDataStd_Comment) {
+  public:
+    void* operator new(size_t,void* anAddress) 
+      {
+        return anAddress;
+      }
+    void* operator new(size_t size) 
+      { 
+        return Standard::Allocate(size); 
+      }
+    void  operator delete(void *anAddress) 
+      { 
+        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
+      }
+    Handle(SALOMEDS_ExternalFileDef)():Handle(TDataStd_Comment)() {} 
+    Handle(SALOMEDS_ExternalFileDef)(const Handle(SALOMEDS_ExternalFileDef)& aHandle) : Handle(TDataStd_Comment)(aHandle) 
+     {
+     }
+
+    Handle(SALOMEDS_ExternalFileDef)(const SALOMEDS_ExternalFileDef* anItem) : Handle(TDataStd_Comment)((TDataStd_Comment *)anItem) 
+     {
+     }
+
+    Handle(SALOMEDS_ExternalFileDef)& operator=(const Handle(SALOMEDS_ExternalFileDef)& aHandle)
+     {
+      Assign(aHandle.Access());
+      return *this;
+     }
+
+    Handle(SALOMEDS_ExternalFileDef)& operator=(const SALOMEDS_ExternalFileDef* anItem)
+     {
+      Assign((Standard_Transient *)anItem);
+      return *this;
+     }
+
+    SALOMEDS_ExternalFileDef* operator->() 
+     {
+      return (SALOMEDS_ExternalFileDef *)ControlAccess();
+     }
+
+    SALOMEDS_ExternalFileDef* operator->() const 
+     {
+      return (SALOMEDS_ExternalFileDef *)ControlAccess();
+     }
+
+   Standard_EXPORT ~Handle(SALOMEDS_ExternalFileDef)();
+   Standard_EXPORT static const Handle(SALOMEDS_ExternalFileDef) DownCast(const Handle(Standard_Transient)& AnObject);
+};
+#endif
diff --git a/src/SALOMEDS/Handle_SALOMEDS_FileType.hxx b/src/SALOMEDS/Handle_SALOMEDS_FileType.hxx
new file mode 100644 (file)
index 0000000..24b684f
--- /dev/null
@@ -0,0 +1,85 @@
+// File generated by CPPExt (Transient)
+//
+//                     Copyright (C) 1991,1995 by
+//  
+//                      MATRA DATAVISION, FRANCE
+//  
+// This software is furnished in accordance with the terms and conditions
+// of the contract and with the inclusion of the above copyright notice.
+// This software or any other copy thereof may not be provided or otherwise
+// be made available to any other person. No title to an ownership of the
+// software is hereby transferred.
+//  
+// At the termination of the contract, the software and all copies of this
+// software must be deleted.
+
+#ifndef _Handle_SALOMEDS_FileType_HeaderFile
+#define _Handle_SALOMEDS_FileType_HeaderFile
+
+#ifndef _Standard_Macro_HeaderFile
+#include <Standard_Macro.hxx>
+#endif
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+
+#ifndef _Handle_TDataStd_Comment_HeaderFile
+#include <Handle_TDataStd_Comment.hxx>
+#endif
+
+class Standard_Transient;
+class Handle_Standard_Type;
+class Handle(TDataStd_Comment);
+class SALOMEDS_FileType;
+Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(SALOMEDS_FileType);
+
+class Handle(SALOMEDS_FileType) : public Handle(TDataStd_Comment) {
+  public:
+    void* operator new(size_t,void* anAddress) 
+      {
+        return anAddress;
+      }
+    void* operator new(size_t size) 
+      { 
+        return Standard::Allocate(size); 
+      }
+    void  operator delete(void *anAddress) 
+      { 
+        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
+      }
+    Handle(SALOMEDS_FileType)():Handle(TDataStd_Comment)() {} 
+    Handle(SALOMEDS_FileType)(const Handle(SALOMEDS_FileType)& aHandle) : Handle(TDataStd_Comment)(aHandle) 
+     {
+     }
+
+    Handle(SALOMEDS_FileType)(const SALOMEDS_FileType* anItem) : Handle(TDataStd_Comment)((TDataStd_Comment *)anItem) 
+     {
+     }
+
+    Handle(SALOMEDS_FileType)& operator=(const Handle(SALOMEDS_FileType)& aHandle)
+     {
+      Assign(aHandle.Access());
+      return *this;
+     }
+
+    Handle(SALOMEDS_FileType)& operator=(const SALOMEDS_FileType* anItem)
+     {
+      Assign((Standard_Transient *)anItem);
+      return *this;
+     }
+
+    SALOMEDS_FileType* operator->() 
+     {
+      return (SALOMEDS_FileType *)ControlAccess();
+     }
+
+    SALOMEDS_FileType* operator->() const 
+     {
+      return (SALOMEDS_FileType *)ControlAccess();
+     }
+
+   Standard_EXPORT ~Handle(SALOMEDS_FileType)();
+   Standard_EXPORT static const Handle(SALOMEDS_FileType) DownCast(const Handle(Standard_Transient)& AnObject);
+};
+#endif
index 69af4214b051f39e6e1ac62131e65e7d161373c3..84cb2949f9a2bb67315feffa5c6768d619b1ef5a 100644 (file)
@@ -26,7 +26,7 @@
 #  Module : SALOME
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_srcdir)/idl
 
@@ -50,8 +50,12 @@ LIB_SRC =    \
                  SALOMEDS_OCAFApplication.cxx \
                  SALOMEDS_GenericAttribute_i.cxx \
                  SALOMEDS_IORAttribute.cxx \
+                 SALOMEDS_ExternalFileDef.cxx \
+                 SALOMEDS_FileType.cxx \
                  SALOMEDS_PersRefAttribute.cxx \
                  SALOMEDS_AttributeComment_i.cxx \
+                 SALOMEDS_AttributeExternalFileDef_i.cxx \
+                 SALOMEDS_AttributeFileType_i.cxx \
                  SALOMEDS_AttributeIOR_i.cxx \
                  SALOMEDS_AttributeInteger_i.cxx \
                  SALOMEDS_AttributeName_i.cxx \
@@ -107,9 +111,7 @@ BIN_CLIENT_IDL =
 
 CPPFLAGS+=$(OCC_INCLUDES) $(HDF5_INCLUDES)
 CXXFLAGS+=$(OCC_CXXFLAGS)
-LDFLAGS+= $(HDF5_LIBS) -lTOOLSDS -lSalomeNS -lSalomeHDFPersist -lOpUtil -lSalomeLoggerServer $(CAS_LDPATH) -lTKCAF
-# -L/opt/ccmalloc/lib -lccmalloc -ldl
-# -L/opt/efence/lib -lefence
+LDFLAGS+= $(HDF5_LIBS) -lTOOLSDS -lSalomeNS -lSalomeHDFPersist -lOpUtil -lSALOMELocalTrace $(CAS_LDPATH) -lTKCAF -lSalomeGenericObj -lSalomeLifeCycleCORBA
 
 @CONCLUDE@
 
diff --git a/src/SALOMEDS/README_attributes b/src/SALOMEDS/README_attributes
new file mode 100644 (file)
index 0000000..b0c4ff7
--- /dev/null
@@ -0,0 +1,46 @@
+
+$Header$
+
+How to add a new attribute (without WOK): 
+-----------------------------------------
+
+This works only for simple types (ex: string)
+
+example: add attribute FileType (string)
+
+# new files (copied from files specific to ExternalFileDef attribute = string):
+
+? src/SALOMEDS/Handle_SALOMEDS_FileType.hxx      <---  Handle_SALOMEDS_ExternalFileDef.hxx
+? src/SALOMEDS/SALOMEDS_AttributeFileType_i.cxx  <---  SALOMEDS_AttributeExternalFileDef_i.cxx
+? src/SALOMEDS/SALOMEDS_AttributeFileType_i.hxx  <---  SALOMEDS_AttributeExternalFileDef_i.hxx
+? src/SALOMEDS/SALOMEDS_FileType.cdl             <---  SALOMEDS_ExternalFileDef.cdl
+? src/SALOMEDS/SALOMEDS_FileType.cxx             <---  SALOMEDS_ExternalFileDef.cxx
+? src/SALOMEDS/SALOMEDS_FileType.hxx             <---  SALOMEDS_ExternalFileDef.hxx
+? src/SALOMEDS/SALOMEDS_FileType.ixx             <---  SALOMEDS_ExternalFileDef.ixx
+? src/SALOMEDS/SALOMEDS_FileType.jxx             <---  SALOMEDS_ExternalFileDef.jxx
+
+# files modified:
+
+M idl/SALOMEDS_Attributes.idl
+M src/SALOMEDS/Makefile.in
+M src/SALOMEDS/SALOMEDS_SObject_i.cxx
+M src/SALOMEDS/SALOMEDS_StudyBuilder_i.cxx
+
+# detailled modifications:
+
+- in new files,
+change ExternalFileDef in FileType everywhere
+- in SALOMEDS_FileType.cxx,
+Standard_GUID (Global Universal IDentifier) must be changed.
+To obtain a new GUID, it is possible to use guidgen.exe on windows (with visual C++).
+
+- in src/SALOMEDS/Makefile.in,
+add under LIB_SRC = \
+                 SALOMEDS_FileType.cxx \
+                 SALOMEDS_AttributeExternalFileDef_i.cxx \
+
+- in src/SALOMEDS/SALOMEDS_SObject_i.cxx,
+- in src/SALOMEDS/SALOMEDS_StudyBuilder_i.cxx,
+- in idl/SALOMEDS_Attributes.idl,
+find portions of code containing ExternalFileDef, duplicate and replace
+
diff --git a/src/SALOMEDS/SALOMEDS_AttributeExternalFileDef_i.cxx b/src/SALOMEDS/SALOMEDS_AttributeExternalFileDef_i.cxx
new file mode 100644 (file)
index 0000000..94e2a31
--- /dev/null
@@ -0,0 +1,48 @@
+//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOMEDS_AttributeExternalFileDef_i.cxx
+//  Author : Yves FRICAUD
+//  Module : SALOME
+//  $Header$
+
+using namespace std;
+#include "SALOMEDS_AttributeExternalFileDef_i.hxx"
+
+#include <TCollection_ExtendedString.hxx>
+#include "SALOMEDS_SObject_i.hxx"
+
+char* SALOMEDS_AttributeExternalFileDef_i::Value()
+{
+  TCollection_ExtendedString S = Handle(SALOMEDS_ExternalFileDef)::DownCast(_myAttr)->Get();
+  CORBA::String_var c_s = CORBA::string_dup(TCollection_AsciiString(S).ToCString());
+  return c_s._retn();
+}
+
+void SALOMEDS_AttributeExternalFileDef_i::SetValue(const char* value) 
+{
+  CheckLocked();
+  CORBA::String_var Str = CORBA::string_dup(value);
+  //  Handle(SALOMEDS_ExternalFileDef)::DownCast(_myAttr)->Set(TCollection_ExtendedString(Str));
+  Handle(TDataStd_Comment)::DownCast(_myAttr)->Set(TCollection_ExtendedString(Str));
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeExternalFileDef_i.hxx b/src/SALOMEDS/SALOMEDS_AttributeExternalFileDef_i.hxx
new file mode 100644 (file)
index 0000000..b6d5244
--- /dev/null
@@ -0,0 +1,56 @@
+//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOMEDS_AttributeExternalFileDef_i.hxx
+//  Author : Yves FRICAUD
+//  Module : SALOME
+//  $Header$
+
+#ifndef SALOMEDS_AttributeExternalFileDef_i_HeaderFile
+#define SALOMEDS_AttributeExternalFileDef_i_HeaderFile
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDS_ExternalFileDef.hxx"
+
+class SALOMEDS_AttributeExternalFileDef_i: public virtual POA_SALOMEDS::AttributeExternalFileDef,
+                                  public virtual SALOMEDS_GenericAttribute_i {
+public:
+  
+  SALOMEDS_AttributeExternalFileDef_i(const Handle(SALOMEDS_ExternalFileDef)& theCommentAttr, CORBA::ORB_ptr orb) 
+  {
+    _myOrb = CORBA::ORB::_duplicate(orb);
+    _myAttr = theCommentAttr;
+  }
+  ~SALOMEDS_AttributeExternalFileDef_i() {};
+
+  char* Value();
+  void SetValue(const char* value);
+  
+};
+
+
+
+#endif
diff --git a/src/SALOMEDS/SALOMEDS_AttributeFileType_i.cxx b/src/SALOMEDS/SALOMEDS_AttributeFileType_i.cxx
new file mode 100644 (file)
index 0000000..d40a53f
--- /dev/null
@@ -0,0 +1,48 @@
+//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOMEDS_AttributeFileType_i.cxx
+//  Author : Yves FRICAUD
+//  Module : SALOME
+//  $Header$
+
+using namespace std;
+#include "SALOMEDS_AttributeFileType_i.hxx"
+
+#include <TCollection_ExtendedString.hxx>
+#include "SALOMEDS_SObject_i.hxx"
+
+char* SALOMEDS_AttributeFileType_i::Value()
+{
+  TCollection_ExtendedString S = Handle(SALOMEDS_FileType)::DownCast(_myAttr)->Get();
+  CORBA::String_var c_s = CORBA::string_dup(TCollection_AsciiString(S).ToCString());
+  return c_s._retn();
+}
+
+void SALOMEDS_AttributeFileType_i::SetValue(const char* value) 
+{
+  CheckLocked();
+  CORBA::String_var Str = CORBA::string_dup(value);
+  //  Handle(SALOMEDS_FileType)::DownCast(_myAttr)->Set(TCollection_ExtendedString(Str));
+  Handle(TDataStd_Comment)::DownCast(_myAttr)->Set(TCollection_ExtendedString(Str));
+}
diff --git a/src/SALOMEDS/SALOMEDS_AttributeFileType_i.hxx b/src/SALOMEDS/SALOMEDS_AttributeFileType_i.hxx
new file mode 100644 (file)
index 0000000..324c5cb
--- /dev/null
@@ -0,0 +1,56 @@
+//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOMEDS_AttributeFileType_i.hxx
+//  Author : Yves FRICAUD
+//  Module : SALOME
+//  $Header$
+
+#ifndef SALOMEDS_AttributeFileType_i_HeaderFile
+#define SALOMEDS_AttributeFileType_i_HeaderFile
+
+// IDL headers
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOMEDS_Attributes)
+#include "SALOMEDS_GenericAttribute_i.hxx"
+#include "SALOMEDS_FileType.hxx"
+
+class SALOMEDS_AttributeFileType_i: public virtual POA_SALOMEDS::AttributeFileType,
+                                  public virtual SALOMEDS_GenericAttribute_i {
+public:
+  
+  SALOMEDS_AttributeFileType_i(const Handle(SALOMEDS_FileType)& theCommentAttr, CORBA::ORB_ptr orb) 
+  {
+    _myOrb = CORBA::ORB::_duplicate(orb);
+    _myAttr = theCommentAttr;
+  }
+  ~SALOMEDS_AttributeFileType_i() {};
+
+  char* Value();
+  void SetValue(const char* value);
+  
+};
+
+
+
+#endif
index fd338ac711296ec816d9edf27f37af1b18a0fccb..b1ec78bf08f1c4c991f4d09f89e5924529105b5f 100644 (file)
@@ -44,6 +44,11 @@ char* SALOMEDS_AttributeIOR_i::Value()
 void SALOMEDS_AttributeIOR_i::SetValue(const char* value) 
 {
   CheckLocked();
+
+  SALOMEDS::Study_var aStudy = SALOMEDS_Study_i::GetStudy(_myAttr->Label(), _myOrb);
+  aStudy->AddCreatedPostponed(value);
+  aStudy->AddPostponed(Value());
+
   CORBA::String_var Str = CORBA::string_dup(value);
   Handle(TDataStd_Comment)::DownCast(_myAttr)->Set(TCollection_ExtendedString(Str));
   SALOMEDS_Study_i::IORUpdated(Handle(SALOMEDS_IORAttribute)::DownCast(_myAttr),_myOrb);
diff --git a/src/SALOMEDS/SALOMEDS_ExternalFileDef.cdl b/src/SALOMEDS/SALOMEDS_ExternalFileDef.cdl
new file mode 100644 (file)
index 0000000..a5ab6d2
--- /dev/null
@@ -0,0 +1,76 @@
+--  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
+--
+--  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+--  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+-- 
+--  This library is free software; you can redistribute it and/or 
+--  modify it under the terms of the GNU Lesser General Public 
+--  License as published by the Free Software Foundation; either 
+--  version 2.1 of the License. 
+-- 
+--  This library is distributed in the hope that it will be useful, 
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+--  Lesser General Public License for more details. 
+-- 
+--  You should have received a copy of the GNU Lesser General Public 
+--  License along with this library; if not, write to the Free Software 
+--  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+-- 
+--  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+--
+--
+--
+--  File   : SALOMEDS_ExternalFileDef.cdl
+--  Author : Yves FRICAUD
+--  Module : SALOME
+
+class ExternalFileDef from SALOMEDS inherits Comment from TDataStd
+
+       ---Purpose: 
+
+
+uses Attribute         from TDF,
+     Label             from TDF,
+     GUID              from Standard,
+     ExtendedString    from TCollection,
+     DataSet           from TDF,
+     RelocationTable   from TDF,
+     AttributeSequence from TDF,
+     Data              from TDF,
+     Comment           from TDataStd
+
+
+is    
+
+
+    ---Purpose: class methods
+    --          =============
+
+    GetID (myclass)   
+    ---C++: return const &  
+    returns GUID from Standard;    
+
+    Set (myclass; label : Label from TDF; 
+        Name : ExtendedString from TCollection)
+    returns ExternalFileDef from SALOMEDS;
+    
+    ---Purpose: Comment methods
+    --          ============
+    
+    Create 
+    returns mutable ExternalFileDef from SALOMEDS;
+
+    ID (me)
+       ---C++: return const & 
+    returns GUID from Standard;
+
+    Restore (me: mutable; with : Attribute from TDF);
+
+    NewEmpty (me)
+    returns mutable Attribute from TDF;
+
+    Paste (me; into : mutable Attribute from TDF;
+              RT   : mutable RelocationTable from TDF);    
+
+end ExternalFileDef;
diff --git a/src/SALOMEDS/SALOMEDS_ExternalFileDef.cxx b/src/SALOMEDS/SALOMEDS_ExternalFileDef.cxx
new file mode 100644 (file)
index 0000000..2e07b01
--- /dev/null
@@ -0,0 +1,114 @@
+//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOMEDS_ExternalFileDef.cxx
+//  Author : Yves FRICAUD
+//  Module : SALOME
+//  $Header: 
+
+#include "SALOMEDS_ExternalFileDef.ixx"
+#include <TDataStd_Comment.hxx>
+#include <TCollection_ExtendedString.hxx>
+using namespace std;
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDS_ExternalFileDef::GetID () 
+{
+  static Standard_GUID SALOMEDS_ExternalFileDefID ("7123AD4C-ACDB-4e3a-8FDC-70EA164D2CBE");
+  return SALOMEDS_ExternalFileDefID;
+}
+
+
+
+//=======================================================================
+//function : Set
+//purpose  : 
+//=======================================================================
+
+Handle(SALOMEDS_ExternalFileDef) SALOMEDS_ExternalFileDef::Set (const TDF_Label& L,
+                                                               const TCollection_ExtendedString& S) 
+{
+
+  Handle(SALOMEDS_ExternalFileDef) A;
+  if (!L.FindAttribute(SALOMEDS_ExternalFileDef::GetID(),A)) {
+    A = new  SALOMEDS_ExternalFileDef(); 
+    L.AddAttribute(A);
+  }
+  
+  (Handle(TDataStd_Comment)::DownCast(A))->Set (S); 
+  return A;
+}
+
+
+//=======================================================================
+//function : constructor
+//purpose  : 
+//=======================================================================
+SALOMEDS_ExternalFileDef::SALOMEDS_ExternalFileDef()
+{}
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDS_ExternalFileDef::ID () const { return GetID(); }
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+
+Handle(TDF_Attribute) SALOMEDS_ExternalFileDef::NewEmpty () const
+{  
+  return new SALOMEDS_ExternalFileDef(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+
+void SALOMEDS_ExternalFileDef::Restore(const Handle(TDF_Attribute)& with) 
+{
+  TCollection_ExtendedString s = Handle(TDataStd_Comment)::DownCast (with)->Get ();
+  TDataStd_Comment::Set(s);
+  return;
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+
+void SALOMEDS_ExternalFileDef::Paste (const Handle(TDF_Attribute)& into,
+                          const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(TDataStd_Comment)::DownCast (into)->Set (Get());
+}
+
diff --git a/src/SALOMEDS/SALOMEDS_ExternalFileDef.hxx b/src/SALOMEDS/SALOMEDS_ExternalFileDef.hxx
new file mode 100644 (file)
index 0000000..5abb183
--- /dev/null
@@ -0,0 +1,108 @@
+// File generated by CPPExt (Transient)
+//
+//                     Copyright (C) 1991,1995 by
+//  
+//                      MATRA DATAVISION, FRANCE
+//  
+// This software is furnished in accordance with the terms and conditions
+// of the contract and with the inclusion of the above copyright notice.
+// This software or any other copy thereof may not be provided or otherwise
+// be made available to any other person. No title to an ownership of the
+// software is hereby transferred.
+//  
+// At the termination of the contract, the software and all copies of this
+// software must be deleted.
+//
+#ifndef _SALOMEDS_ExternalFileDef_HeaderFile
+#define _SALOMEDS_ExternalFileDef_HeaderFile
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Handle_SALOMEDS_ExternalFileDef_HeaderFile
+#include <Handle_SALOMEDS_ExternalFileDef.hxx>
+#endif
+
+#ifndef _TDataStd_Comment_HeaderFile
+#include <TDataStd_Comment.hxx>
+#endif
+#ifndef _Handle_TDF_Attribute_HeaderFile
+#include <Handle_TDF_Attribute.hxx>
+#endif
+#ifndef _Handle_TDF_RelocationTable_HeaderFile
+#include <Handle_TDF_RelocationTable.hxx>
+#endif
+class Standard_GUID;
+class TDF_Label;
+class TCollection_ExtendedString;
+class TDF_Attribute;
+class TDF_RelocationTable;
+
+
+class SALOMEDS_ExternalFileDef : public TDataStd_Comment {
+
+public:
+
+    void* operator new(size_t,void* anAddress) 
+      {
+        return anAddress;
+      }
+    void* operator new(size_t size) 
+      { 
+        return Standard::Allocate(size); 
+      }
+    void  operator delete(void *anAddress) 
+      { 
+        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
+      }
+ // Methods PUBLIC
+ // 
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT static  Handle_SALOMEDS_ExternalFileDef Set(const TDF_Label& label,const TCollection_ExtendedString& Name) ;
+Standard_EXPORT SALOMEDS_ExternalFileDef();
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDS_ExternalFileDef();
+
+
+
+
+ // Type management
+ //
+ Standard_EXPORT friend Handle_Standard_Type& SALOMEDS_ExternalFileDef_Type_();
+ Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
+ Standard_EXPORT Standard_Boolean             IsKind(const Handle(Standard_Type)&) const;
+
+protected:
+
+ // Methods PROTECTED
+ // 
+
+
+ // Fields PROTECTED
+ //
+
+
+private: 
+
+ // Methods PRIVATE
+ // 
+
+
+ // Fields PRIVATE
+ //
+
+
+};
+
+
+
+
+
+// other Inline functions and methods (like "C++: function call" methods)
+//
+
+
+#endif
diff --git a/src/SALOMEDS/SALOMEDS_ExternalFileDef.ixx b/src/SALOMEDS/SALOMEDS_ExternalFileDef.ixx
new file mode 100644 (file)
index 0000000..2235302
--- /dev/null
@@ -0,0 +1,73 @@
+// File generated by CPPExt (Transient)
+//                     Copyright (C) 1991,1995 by
+//  
+//                      MATRA DATAVISION, FRANCE
+//  
+// This software is furnished in accordance with the terms and conditions
+// of the contract and with the inclusion of the above copyright notice.
+// This software or any other copy thereof may not be provided or otherwise
+// be made available to any other person. No title to an ownership of the
+// software is hereby transferred.
+//  
+// At the termination of the contract, the software and all copies of this
+// software must be deleted.
+//
+#include <SALOMEDS_ExternalFileDef.jxx>
+
+#ifndef _Standard_TypeMismatch_HeaderFile
+#include <Standard_TypeMismatch.hxx>
+#endif
+
+SALOMEDS_ExternalFileDef::~SALOMEDS_ExternalFileDef() {}
+
+
+Standard_EXPORT Handle_Standard_Type& SALOMEDS_ExternalFileDef_Type_()
+{
+
+    static Handle_Standard_Type aType1 = STANDARD_TYPE(TDataStd_Comment);
+  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TDataStd_Comment);
+  static Handle_Standard_Type aType2 = STANDARD_TYPE(TDF_Attribute);
+  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(TDF_Attribute);
+  static Handle_Standard_Type aType3 = STANDARD_TYPE(MMgt_TShared);
+  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(MMgt_TShared);
+  static Handle_Standard_Type aType4 = STANDARD_TYPE(Standard_Transient);
+  if ( aType4.IsNull()) aType4 = STANDARD_TYPE(Standard_Transient);
+
+  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,aType4,NULL};
+  static Handle_Standard_Type _aType = new Standard_Type("SALOMEDS_ExternalFileDef",
+                                                        sizeof(SALOMEDS_ExternalFileDef),
+                                                        1,
+                                                        (Standard_Address)_Ancestors,
+                                                        (Standard_Address)NULL);
+
+  return _aType;
+}
+
+
+// DownCast method
+//   allow safe downcasting
+//
+const Handle(SALOMEDS_ExternalFileDef) Handle(SALOMEDS_ExternalFileDef)::DownCast(const Handle(Standard_Transient)& AnObject) 
+{
+  Handle(SALOMEDS_ExternalFileDef) _anOtherObject;
+
+  if (!AnObject.IsNull()) {
+     if (AnObject->IsKind(STANDARD_TYPE(SALOMEDS_ExternalFileDef))) {
+       _anOtherObject = Handle(SALOMEDS_ExternalFileDef)((Handle(SALOMEDS_ExternalFileDef)&)AnObject);
+     }
+  }
+
+  return _anOtherObject ;
+}
+const Handle(Standard_Type)& SALOMEDS_ExternalFileDef::DynamicType() const 
+{ 
+  return STANDARD_TYPE(SALOMEDS_ExternalFileDef) ; 
+}
+Standard_Boolean SALOMEDS_ExternalFileDef::IsKind(const Handle(Standard_Type)& AType) const 
+{ 
+  return (STANDARD_TYPE(SALOMEDS_ExternalFileDef) == AType || TDataStd_Comment::IsKind(AType)); 
+}
+Handle_SALOMEDS_ExternalFileDef::~Handle_SALOMEDS_ExternalFileDef() {}
+
diff --git a/src/SALOMEDS/SALOMEDS_ExternalFileDef.jxx b/src/SALOMEDS/SALOMEDS_ExternalFileDef.jxx
new file mode 100644 (file)
index 0000000..32adbec
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef _Standard_GUID_HeaderFile
+#include <Standard_GUID.hxx>
+#endif
+#ifndef _TDF_Label_HeaderFile
+#include <TDF_Label.hxx>
+#endif
+#ifndef _TCollection_ExtendedString_HeaderFile
+#include <TCollection_ExtendedString.hxx>
+#endif
+#ifndef _TDF_Attribute_HeaderFile
+#include <TDF_Attribute.hxx>
+#endif
+#ifndef _TDF_RelocationTable_HeaderFile
+#include <TDF_RelocationTable.hxx>
+#endif
+#ifndef _SALOMEDS_ExternalFileDef_HeaderFile
+#include <SALOMEDS_ExternalFileDef.hxx>
+#endif
diff --git a/src/SALOMEDS/SALOMEDS_FileType.cdl b/src/SALOMEDS/SALOMEDS_FileType.cdl
new file mode 100644 (file)
index 0000000..d9e43f2
--- /dev/null
@@ -0,0 +1,76 @@
+--  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
+--
+--  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+--  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+-- 
+--  This library is free software; you can redistribute it and/or 
+--  modify it under the terms of the GNU Lesser General Public 
+--  License as published by the Free Software Foundation; either 
+--  version 2.1 of the License. 
+-- 
+--  This library is distributed in the hope that it will be useful, 
+--  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+--  Lesser General Public License for more details. 
+-- 
+--  You should have received a copy of the GNU Lesser General Public 
+--  License along with this library; if not, write to the Free Software 
+--  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+-- 
+--  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+--
+--
+--
+--  File   : SALOMEDS_FileType.cdl
+--  Author : Yves FRICAUD
+--  Module : SALOME
+
+class FileType from SALOMEDS inherits Comment from TDataStd
+
+       ---Purpose: 
+
+
+uses Attribute         from TDF,
+     Label             from TDF,
+     GUID              from Standard,
+     ExtendedString    from TCollection,
+     DataSet           from TDF,
+     RelocationTable   from TDF,
+     AttributeSequence from TDF,
+     Data              from TDF,
+     Comment           from TDataStd
+
+
+is    
+
+
+    ---Purpose: class methods
+    --          =============
+
+    GetID (myclass)   
+    ---C++: return const &  
+    returns GUID from Standard;    
+
+    Set (myclass; label : Label from TDF; 
+        Name : ExtendedString from TCollection)
+    returns FileType from SALOMEDS;
+    
+    ---Purpose: Comment methods
+    --          ============
+    
+    Create 
+    returns mutable FileType from SALOMEDS;
+
+    ID (me)
+       ---C++: return const & 
+    returns GUID from Standard;
+
+    Restore (me: mutable; with : Attribute from TDF);
+
+    NewEmpty (me)
+    returns mutable Attribute from TDF;
+
+    Paste (me; into : mutable Attribute from TDF;
+              RT   : mutable RelocationTable from TDF);    
+
+end FileType;
diff --git a/src/SALOMEDS/SALOMEDS_FileType.cxx b/src/SALOMEDS/SALOMEDS_FileType.cxx
new file mode 100644 (file)
index 0000000..515bbc5
--- /dev/null
@@ -0,0 +1,114 @@
+//  SALOME SALOMEDS : data structure of SALOME and sources of Salome data server 
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOMEDS_FileType.cxx
+//  Author : Yves FRICAUD
+//  Module : SALOME
+//  $Header: 
+
+#include "SALOMEDS_FileType.ixx"
+#include <TDataStd_Comment.hxx>
+#include <TCollection_ExtendedString.hxx>
+using namespace std;
+
+//=======================================================================
+//function : GetID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDS_FileType::GetID () 
+{
+  static Standard_GUID SALOMEDS_FileTypeID ("0181B525-3F15-4ab2-9DE3-5E2F54B5F340");
+  return SALOMEDS_FileTypeID;
+}
+
+
+
+//=======================================================================
+//function : Set
+//purpose  : 
+//=======================================================================
+
+Handle(SALOMEDS_FileType) SALOMEDS_FileType::Set (const TDF_Label& L,
+                                                               const TCollection_ExtendedString& S) 
+{
+
+  Handle(SALOMEDS_FileType) A;
+  if (!L.FindAttribute(SALOMEDS_FileType::GetID(),A)) {
+    A = new  SALOMEDS_FileType(); 
+    L.AddAttribute(A);
+  }
+  
+  (Handle(TDataStd_Comment)::DownCast(A))->Set (S); 
+  return A;
+}
+
+
+//=======================================================================
+//function : constructor
+//purpose  : 
+//=======================================================================
+SALOMEDS_FileType::SALOMEDS_FileType()
+{}
+
+//=======================================================================
+//function : ID
+//purpose  : 
+//=======================================================================
+
+const Standard_GUID& SALOMEDS_FileType::ID () const { return GetID(); }
+
+
+//=======================================================================
+//function : NewEmpty
+//purpose  : 
+//=======================================================================
+
+Handle(TDF_Attribute) SALOMEDS_FileType::NewEmpty () const
+{  
+  return new SALOMEDS_FileType(); 
+}
+
+//=======================================================================
+//function : Restore
+//purpose  : 
+//=======================================================================
+
+void SALOMEDS_FileType::Restore(const Handle(TDF_Attribute)& with) 
+{
+  TCollection_ExtendedString s = Handle(TDataStd_Comment)::DownCast (with)->Get ();
+  TDataStd_Comment::Set(s);
+  return;
+}
+
+//=======================================================================
+//function : Paste
+//purpose  : 
+//=======================================================================
+
+void SALOMEDS_FileType::Paste (const Handle(TDF_Attribute)& into,
+                          const Handle(TDF_RelocationTable)& RT) const
+{
+  Handle(TDataStd_Comment)::DownCast (into)->Set (Get());
+}
+
diff --git a/src/SALOMEDS/SALOMEDS_FileType.hxx b/src/SALOMEDS/SALOMEDS_FileType.hxx
new file mode 100644 (file)
index 0000000..d912aaa
--- /dev/null
@@ -0,0 +1,108 @@
+// File generated by CPPExt (Transient)
+//
+//                     Copyright (C) 1991,1995 by
+//  
+//                      MATRA DATAVISION, FRANCE
+//  
+// This software is furnished in accordance with the terms and conditions
+// of the contract and with the inclusion of the above copyright notice.
+// This software or any other copy thereof may not be provided or otherwise
+// be made available to any other person. No title to an ownership of the
+// software is hereby transferred.
+//  
+// At the termination of the contract, the software and all copies of this
+// software must be deleted.
+//
+#ifndef _SALOMEDS_FileType_HeaderFile
+#define _SALOMEDS_FileType_HeaderFile
+
+#ifndef _Standard_HeaderFile
+#include <Standard.hxx>
+#endif
+#ifndef _Handle_SALOMEDS_FileType_HeaderFile
+#include <Handle_SALOMEDS_FileType.hxx>
+#endif
+
+#ifndef _TDataStd_Comment_HeaderFile
+#include <TDataStd_Comment.hxx>
+#endif
+#ifndef _Handle_TDF_Attribute_HeaderFile
+#include <Handle_TDF_Attribute.hxx>
+#endif
+#ifndef _Handle_TDF_RelocationTable_HeaderFile
+#include <Handle_TDF_RelocationTable.hxx>
+#endif
+class Standard_GUID;
+class TDF_Label;
+class TCollection_ExtendedString;
+class TDF_Attribute;
+class TDF_RelocationTable;
+
+
+class SALOMEDS_FileType : public TDataStd_Comment {
+
+public:
+
+    void* operator new(size_t,void* anAddress) 
+      {
+        return anAddress;
+      }
+    void* operator new(size_t size) 
+      { 
+        return Standard::Allocate(size); 
+      }
+    void  operator delete(void *anAddress) 
+      { 
+        if (anAddress) Standard::Free((Standard_Address&)anAddress); 
+      }
+ // Methods PUBLIC
+ // 
+Standard_EXPORT static const Standard_GUID& GetID() ;
+Standard_EXPORT static  Handle_SALOMEDS_FileType Set(const TDF_Label& label,const TCollection_ExtendedString& Name) ;
+Standard_EXPORT SALOMEDS_FileType();
+Standard_EXPORT  const Standard_GUID& ID() const;
+Standard_EXPORT   void Restore(const Handle(TDF_Attribute)& with) ;
+Standard_EXPORT   Handle_TDF_Attribute NewEmpty() const;
+Standard_EXPORT   void Paste(const Handle(TDF_Attribute)& into,const Handle(TDF_RelocationTable)& RT) const;
+Standard_EXPORT ~SALOMEDS_FileType();
+
+
+
+
+ // Type management
+ //
+ Standard_EXPORT friend Handle_Standard_Type& SALOMEDS_FileType_Type_();
+ Standard_EXPORT const Handle(Standard_Type)& DynamicType() const;
+ Standard_EXPORT Standard_Boolean             IsKind(const Handle(Standard_Type)&) const;
+
+protected:
+
+ // Methods PROTECTED
+ // 
+
+
+ // Fields PROTECTED
+ //
+
+
+private: 
+
+ // Methods PRIVATE
+ // 
+
+
+ // Fields PRIVATE
+ //
+
+
+};
+
+
+
+
+
+// other Inline functions and methods (like "C++: function call" methods)
+//
+
+
+#endif
diff --git a/src/SALOMEDS/SALOMEDS_FileType.ixx b/src/SALOMEDS/SALOMEDS_FileType.ixx
new file mode 100644 (file)
index 0000000..505e39d
--- /dev/null
@@ -0,0 +1,73 @@
+// File generated by CPPExt (Transient)
+//                     Copyright (C) 1991,1995 by
+//  
+//                      MATRA DATAVISION, FRANCE
+//  
+// This software is furnished in accordance with the terms and conditions
+// of the contract and with the inclusion of the above copyright notice.
+// This software or any other copy thereof may not be provided or otherwise
+// be made available to any other person. No title to an ownership of the
+// software is hereby transferred.
+//  
+// At the termination of the contract, the software and all copies of this
+// software must be deleted.
+//
+#include <SALOMEDS_FileType.jxx>
+
+#ifndef _Standard_TypeMismatch_HeaderFile
+#include <Standard_TypeMismatch.hxx>
+#endif
+
+SALOMEDS_FileType::~SALOMEDS_FileType() {}
+
+
+Standard_EXPORT Handle_Standard_Type& SALOMEDS_FileType_Type_()
+{
+
+    static Handle_Standard_Type aType1 = STANDARD_TYPE(TDataStd_Comment);
+  if ( aType1.IsNull()) aType1 = STANDARD_TYPE(TDataStd_Comment);
+  static Handle_Standard_Type aType2 = STANDARD_TYPE(TDF_Attribute);
+  if ( aType2.IsNull()) aType2 = STANDARD_TYPE(TDF_Attribute);
+  static Handle_Standard_Type aType3 = STANDARD_TYPE(MMgt_TShared);
+  if ( aType3.IsNull()) aType3 = STANDARD_TYPE(MMgt_TShared);
+  static Handle_Standard_Type aType4 = STANDARD_TYPE(Standard_Transient);
+  if ( aType4.IsNull()) aType4 = STANDARD_TYPE(Standard_Transient);
+
+  static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,aType4,NULL};
+  static Handle_Standard_Type _aType = new Standard_Type("SALOMEDS_FileType",
+                                                        sizeof(SALOMEDS_FileType),
+                                                        1,
+                                                        (Standard_Address)_Ancestors,
+                                                        (Standard_Address)NULL);
+
+  return _aType;
+}
+
+
+// DownCast method
+//   allow safe downcasting
+//
+const Handle(SALOMEDS_FileType) Handle(SALOMEDS_FileType)::DownCast(const Handle(Standard_Transient)& AnObject) 
+{
+  Handle(SALOMEDS_FileType) _anOtherObject;
+
+  if (!AnObject.IsNull()) {
+     if (AnObject->IsKind(STANDARD_TYPE(SALOMEDS_FileType))) {
+       _anOtherObject = Handle(SALOMEDS_FileType)((Handle(SALOMEDS_FileType)&)AnObject);
+     }
+  }
+
+  return _anOtherObject ;
+}
+const Handle(Standard_Type)& SALOMEDS_FileType::DynamicType() const 
+{ 
+  return STANDARD_TYPE(SALOMEDS_FileType) ; 
+}
+Standard_Boolean SALOMEDS_FileType::IsKind(const Handle(Standard_Type)& AType) const 
+{ 
+  return (STANDARD_TYPE(SALOMEDS_FileType) == AType || TDataStd_Comment::IsKind(AType)); 
+}
+Handle_SALOMEDS_FileType::~Handle_SALOMEDS_FileType() {}
+
diff --git a/src/SALOMEDS/SALOMEDS_FileType.jxx b/src/SALOMEDS/SALOMEDS_FileType.jxx
new file mode 100644 (file)
index 0000000..0d838e4
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef _Standard_GUID_HeaderFile
+#include <Standard_GUID.hxx>
+#endif
+#ifndef _TDF_Label_HeaderFile
+#include <TDF_Label.hxx>
+#endif
+#ifndef _TCollection_ExtendedString_HeaderFile
+#include <TCollection_ExtendedString.hxx>
+#endif
+#ifndef _TDF_Attribute_HeaderFile
+#include <TDF_Attribute.hxx>
+#endif
+#ifndef _TDF_RelocationTable_HeaderFile
+#include <TDF_RelocationTable.hxx>
+#endif
+#ifndef _SALOMEDS_FileType_HeaderFile
+#include <SALOMEDS_FileType.hxx>
+#endif
index f9c00984eded0c70bf0307679b2198716a5a5cd2..e10791ded1314e1f0f4f2fceab03a046425796b9 100644 (file)
@@ -44,6 +44,8 @@ using namespace std;
 #include "SALOMEDS_AttributePersistentRef_i.hxx"
 #include "SALOMEDS_AttributeIOR_i.hxx"
 #include "SALOMEDS_AttributeComment_i.hxx"
+#include "SALOMEDS_AttributeExternalFileDef_i.hxx"
+#include "SALOMEDS_AttributeFileType_i.hxx"
 #include "SALOMEDS_AttributeName_i.hxx"
 #include "SALOMEDS_AttributeSequenceOfInteger_i.hxx"
 #include "SALOMEDS_AttributeSequenceOfReal_i.hxx"
@@ -84,6 +86,8 @@ SALOMEDS_SObject_i::ReturnGUIDForAttribute(const char* aTypeOfAttribute)
    else if (strcmp(aTypeOfAttribute, "AttributeSequenceOfInteger") == 0 )  return SALOMEDS_SequenceOfIntegerAttribute::GetID();
    else if (strcmp(aTypeOfAttribute, "AttributeName") == 0 )               return TDataStd_Name::GetID();
    else if (strcmp(aTypeOfAttribute, "AttributeComment") == 0 )            return TDataStd_Comment::GetID();
+   else if (strcmp(aTypeOfAttribute, "AttributeExternalFileDef") == 0 )    return SALOMEDS_ExternalFileDef::GetID();
+   else if (strcmp(aTypeOfAttribute, "AttributeFileType") == 0 )           return SALOMEDS_FileType::GetID();
    else if (strcmp(aTypeOfAttribute, "AttributeIOR") == 0 )                return SALOMEDS_IORAttribute::GetID();
    else if (strcmp(aTypeOfAttribute, "AttributePersistentRef") == 0 )      return SALOMEDS_PersRefAttribute::GetID();
    else if (strcmp(aTypeOfAttribute, "AttributeDrawable") == 0 )           return SALOMEDS_DrawableAttribute::GetID();
@@ -121,6 +125,8 @@ char* SALOMEDS_SObject_i::AttributeIDToType(Standard_GUID ID)
 {
   if      (ID == TDataStd_Name::GetID())                        return "AttributeName";
   else if (ID == TDataStd_Comment::GetID())                     return "AttributeComment";
+  else if (ID == SALOMEDS_ExternalFileDef::GetID())             return "AttributeExternalFileDef";
+  else if (ID == SALOMEDS_FileType::GetID())                    return "AttributeFileType";
   else if (ID == SALOMEDS_IORAttribute::GetID())                return "AttributeIOR"; 
   else if (ID == SALOMEDS_PersRefAttribute::GetID())            return "AttributePersistentRef";
   else if (ID == TDataStd_Real::GetID())                        return "AttributeReal";
@@ -283,6 +289,16 @@ CORBA::Boolean SALOMEDS_SObject_i::FindAttribute (SALOMEDS::GenericAttribute_out
       anAttribute = Attr->AttributeComment::_this();
       return Standard_True;
     }
+    else if (strcmp(aTypeOfAttribute, "AttributeExternalFileDef") == 0 ) {
+      SALOMEDS_AttributeExternalFileDef_i* Attr = new SALOMEDS_AttributeExternalFileDef_i(Handle(SALOMEDS_ExternalFileDef)::DownCast(anAttr), _orb);
+      anAttribute = Attr->AttributeExternalFileDef::_this();
+      return Standard_True;
+    }
+    else if (strcmp(aTypeOfAttribute, "AttributeFileType") == 0 ) {
+      SALOMEDS_AttributeFileType_i* Attr = new SALOMEDS_AttributeFileType_i(Handle(SALOMEDS_FileType)::DownCast(anAttr), _orb);
+      anAttribute = Attr->AttributeFileType::_this();
+      return Standard_True;
+    }
     else if (strcmp(aTypeOfAttribute, "AttributeIOR") == 0 ) {
       SALOMEDS_AttributeIOR_i* Attr = new SALOMEDS_AttributeIOR_i(Handle(SALOMEDS_IORAttribute)::DownCast(anAttr), _orb);
       anAttribute = Attr->AttributeIOR::_this();
@@ -416,6 +432,14 @@ SALOMEDS::ListOfAttributes* SALOMEDS_SObject_i::GetAllAttributes()
         SALOMEDS_AttributeComment_i* Attr= new SALOMEDS_AttributeComment_i(Handle(TDataStd_Comment)::DownCast(anAttr), _orb);
         anAttribute = Attr->AttributeComment::_this();
       } 
+      else if (ReturnGUIDForAttribute("AttributeExternalFileDef") == anAttr->ID()) {
+        SALOMEDS_AttributeExternalFileDef_i* Attr= new SALOMEDS_AttributeExternalFileDef_i(Handle(SALOMEDS_ExternalFileDef)::DownCast(anAttr), _orb);
+        anAttribute = Attr->AttributeExternalFileDef::_this();
+      } 
+      else if (ReturnGUIDForAttribute("AttributeFileType") == anAttr->ID()) {
+        SALOMEDS_AttributeFileType_i* Attr= new SALOMEDS_AttributeFileType_i(Handle(SALOMEDS_FileType)::DownCast(anAttr), _orb);
+        anAttribute = Attr->AttributeFileType::_this();
+      } 
       else if (ReturnGUIDForAttribute("AttributeIOR") == anAttr->ID()) {
         SALOMEDS_AttributeIOR_i* Attr= new SALOMEDS_AttributeIOR_i(Handle(SALOMEDS_IORAttribute)::DownCast(anAttr), _orb);
         anAttribute = Attr->AttributeIOR::_this();
index 238dd2450a4b23314595a8de31c1ba9e2f82f953..11be220654bbb55fb295c09ec34430591caa1f76 100644 (file)
 //  Module : SALOME
 //  $Header$
 
-using namespace std;
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS)
 #include "SALOMEDS_StudyManager_i.hxx"
 #include "utilities.h"
-# include "Utils_SINGLETON.hxx"
+#include "Utils_SINGLETON.hxx"
 #include "SALOME_NamingService.hxx"
-//#define CHECKTIME
+
 #ifdef CHECKTIME
 #include <Utils_Timer.hxx>
 #endif
+using namespace std;
 
 // extern "C"
 // { // for ccmalloc memory debug
@@ -47,126 +47,142 @@ using namespace std;
 //////////////////////////////////////////////////////////////////////////
 int main(int argc, char** argv)
 {
-//   ccmalloc_static_initialization();
+  //   ccmalloc_static_initialization();
 
   MESSAGE("SALOMEDS_Server - main");
-  try {
-    // Initialise the ORB.
-    CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "omniORB3");
-    omniORB::MaxMessageSize(100 * 1024 * 1024);
-    // Obtain a reference to the root POA.
-    //
-    long TIMESleep = 250000000;
-    int NumberOfTries = 40;
-    int a;
-    timespec ts_req;
-    ts_req.tv_nsec=TIMESleep;
-    ts_req.tv_sec=0;
-    timespec ts_rem;
-    ts_rem.tv_nsec=0;
-    ts_rem.tv_sec=0;
-    CosNaming::NamingContext_var inc;
-    PortableServer::POA_var poa;
-    CORBA::Object_var theObj;
-    CORBA::Object_var obj;
-    CORBA::Object_var object;
-    SALOME_Logger::Logger_var log;
-    int SALOMEDS=0;
-    const char * Env = getenv("USE_LOGGER");
-    int EnvL =0;
-    if ((Env!=NULL) && (strlen(Env)))
-      EnvL=1;
-    CosNaming::Name name;
-    name.length(1);
-    name[0].id=CORBA::string_dup("Logger");    
-    PortableServer::POAManager_var pman; 
-    for (int i = 1; i<=NumberOfTries; i++){
-      if (i!=1) 
-       a=nanosleep(&ts_req,&ts_rem);
-      try{ 
-        obj = orb->resolve_initial_references("RootPOA");
-       if(!CORBA::is_nil(obj))
-         poa = PortableServer::POA::_narrow(obj);
-       if(!CORBA::is_nil(poa))
-         pman = poa->the_POAManager();
-       if(!CORBA::is_nil(orb)) 
-         theObj = orb->resolve_initial_references("NameService"); 
-       if (!CORBA::is_nil(theObj)){
-         inc = CosNaming::NamingContext::_narrow(theObj);
-         if(!CORBA::is_nil(inc)) {
-           MESSAGE( "SalomeDS Server: Naming Service was found" )
-           if(EnvL==1){
-             CORBA::ORB_var orb1 = CORBA::ORB_init(argc,argv) ;
-             SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance() ;
-             NS.init_orb( orb1 ) ;
-             for(int j=1; j<=NumberOfTries; j++){
-               if (j!=1) 
-                 a=nanosleep(&ts_req, &ts_rem);
-               try{
-                 object = inc->resolve(name);}
-                catch(CosNaming::NamingContext::NotFound){ MESSAGE( "SalomeDS Server: Logger Server wasn't found" ) }
-               catch(...){ MESSAGE( "SalomeDS Server: Unknown exception" ) }
-               if (!CORBA::is_nil(object))
-                 log = SALOME_Logger::Logger::_narrow(object);
-               if (!CORBA::is_nil(log)){
-                 MESSAGE( "SalomeDS Server: Logger Server was found" )
-                 log->ping();
-                 SALOMEDS=1;
-                 break;
-               }
-             }}
-         }}
-       
-      }
-      catch( const SALOME_Exception &ex )
+  try 
+    {
+      // Initialise the ORB.
+      CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "omniORB3");
+      omniORB::MaxMessageSize(100 * 1024 * 1024);
+      // Obtain a reference to the root POA.
+      //
+      long TIMESleep = 250000000;
+      int NumberOfTries = 40;
+      int a;
+      timespec ts_req;
+      ts_req.tv_nsec=TIMESleep;
+      ts_req.tv_sec=0;
+      timespec ts_rem;
+      ts_rem.tv_nsec=0;
+      ts_rem.tv_sec=0;
+      CosNaming::NamingContext_var inc;
+      PortableServer::POA_var poa;
+      CORBA::Object_var theObj;
+      CORBA::Object_var obj;
+      CORBA::Object_var object;
+      int SALOMEDS=0;
+      const char * Env = getenv("USE_LOGGER");
+      int EnvL =0;
+      if ((Env!=NULL) && (strlen(Env)))
+       EnvL=1;
+      CosNaming::Name name;
+      name.length(1);
+      name[0].id=CORBA::string_dup("Logger");    
+      PortableServer::POAManager_var pman; 
+      for (int i = 1; i<=NumberOfTries; i++)
        {
-         MESSAGE( "Communication Error : " << ex.what() )
-           return EXIT_FAILURE ;
+         if (i!=1) 
+           a=nanosleep(&ts_req,&ts_rem);
+         try
+           { 
+             obj = orb->resolve_initial_references("RootPOA");
+             if(!CORBA::is_nil(obj))
+               poa = PortableServer::POA::_narrow(obj);
+             if(!CORBA::is_nil(poa))
+               pman = poa->the_POAManager();
+             if(!CORBA::is_nil(orb)) 
+               theObj = orb->resolve_initial_references("NameService"); 
+             if (!CORBA::is_nil(theObj)){
+               inc = CosNaming::NamingContext::_narrow(theObj);
+               if(!CORBA::is_nil(inc))
+                 {
+                   MESSAGE( "SalomeDS Server: Naming Service was found" );
+                   if(EnvL==1)
+                     {
+                       CORBA::ORB_var orb1 = CORBA::ORB_init(argc,argv) ;
+                       SALOME_NamingService &NS = *SINGLETON_<SALOME_NamingService>::Instance() ;
+                       NS.init_orb( orb1 ) ;
+                       for(int j=1; j<=NumberOfTries; j++)
+                         {
+                           if (j!=1) 
+                             a=nanosleep(&ts_req, &ts_rem);
+                           try
+                             {
+                               object = inc->resolve(name);
+                             }
+                           catch(CosNaming::NamingContext::NotFound)
+                             { 
+                               MESSAGE( "SalomeDS Server: Logger Server wasn't found" ); }
+
+                           catch(...)
+                             {
+                               MESSAGE( "SalomeDS Server: Unknown exception" );
+                             }
+                           if (!CORBA::is_nil(object))
+                             {
+                               MESSAGE( "SalomeDS Server: Logger Server was found" );
+                               SALOMEDS=1;
+                               break;
+                             }
+                         }
+                     }
+                 }
+             }
+       
+           }
+         catch( const SALOME_Exception &ex )
+           {
+             MESSAGE( "Communication Error : " << ex.what() );
+             return EXIT_FAILURE ;
+           }
+         if ((SALOMEDS==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
+           break;
        }
-      if ((SALOMEDS==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
-       break;
-         }
-    //    
     
-    // We allocate the objects on the heap.  Since these are reference
-    // counted objects, they will be deleted by the POA when they are no
-    // longer needed.    
-    SALOMEDS_StudyManager_i * myStudyManager_i = new  SALOMEDS_StudyManager_i(orb);
+      // We allocate the objects on the heap.  Since these are reference
+      // counted objects, they will be deleted by the POA when they are no
+      // longer needed.    
+      SALOMEDS_StudyManager_i * myStudyManager_i = new  SALOMEDS_StudyManager_i(orb);
  
-    // Activate the objects.  This tells the POA that the objects are
-    // ready to accept requests.
-    PortableServer::ObjectId_var myStudyManager_iid = poa->activate_object(myStudyManager_i);
-    myStudyManager_i->register_name("/myStudyManager");
+      // Activate the objects.  This tells the POA that the objects are
+      // ready to accept requests.
+      PortableServer::ObjectId_var myStudyManager_iid = poa->activate_object(myStudyManager_i);
+      myStudyManager_i->register_name("/myStudyManager");
        
-    // Obtain a POAManager, and tell the POA to start accepting
-    // requests on its objects.
-    pman = poa->the_POAManager();
-    pman->activate();
+      // Obtain a POAManager, and tell the POA to start accepting
+      // requests on its objects.
+      pman = poa->the_POAManager();
+      pman->activate();
 
 #ifdef CHECKTIME
-    Utils_Timer timer;
-    timer.Start();
-    timer.Stop();
-    MESSAGE("SALOME_Registry_Server.cxx - orb->run()");
-    timer.ShowAbsolute();
+      Utils_Timer timer;
+      timer.Start();
+      timer.Stop();
+      MESSAGE("SALOME_Registry_Server.cxx - orb->run()");
+      timer.ShowAbsolute();
 #endif
-    orb->run();
-    orb->destroy();
-  }
-  catch(CORBA::SystemException&) {
-    MESSAGE( "Caught CORBA::SystemException." )
-  }
-  catch(CORBA::Exception&) {
-    MESSAGE( "Caught CORBA::Exception." )
-  }
-  catch(omniORB::fatalException& fe) {
-    MESSAGE( "Caught omniORB::fatalException:" )
-    MESSAGE( "  file: " << fe.file() )
-    MESSAGE( "  line: " << fe.line() )
-    MESSAGE( "  mesg: " << fe.errmsg() )
-  }
-  catch(...) {
-    MESSAGE( "Caught unknown exception." )
-  }
+      orb->run();
+      orb->destroy();
+    }
+  catch(CORBA::SystemException&)
+    {
+      MESSAGE( "Caught CORBA::SystemException." );
+    }
+  catch(CORBA::Exception&)
+    {
+      MESSAGE( "Caught CORBA::Exception." );
+    }
+  catch(omniORB::fatalException& fe)
+    {
+      MESSAGE( "Caught omniORB::fatalException:" );
+      MESSAGE( "  file: " << fe.file() );
+      MESSAGE( "  line: " << fe.line() );
+      MESSAGE( "  mesg: " << fe.errmsg() );
+    }
+  catch(...) 
+    {
+      MESSAGE( "Caught unknown exception." );
+    }
   return 0;
 }
index 93eaa48bc39ba59c30d43c35be25ac43f126ef90..d3cb87809a69c2f03bbb04b00a4583976ee5f3c9 100644 (file)
@@ -28,7 +28,8 @@
 
 using namespace std;
 #include "utilities.h"
-#include "SALOMEDS_StudyBuilder_i.hxx"
+#include "SALOMEDS_Study_i.hxx"
+//#include "SALOMEDS_StudyBuilder_i.hxx"
 #include "SALOMEDS_SObject_i.hxx"
 #include "SALOMEDS_SComponent_i.hxx"
 
@@ -50,6 +51,8 @@ using namespace std;
 #include "SALOMEDS_AttributePersistentRef_i.hxx"
 #include "SALOMEDS_AttributeIOR_i.hxx"
 #include "SALOMEDS_AttributeComment_i.hxx"
+#include "SALOMEDS_AttributeExternalFileDef_i.hxx"
+#include "SALOMEDS_AttributeFileType_i.hxx"
 #include "SALOMEDS_AttributeName_i.hxx"
 #include "SALOMEDS_AttributeSequenceOfInteger_i.hxx"
 #include "SALOMEDS_AttributeSequenceOfReal_i.hxx"
@@ -109,6 +112,7 @@ SALOMEDS_StudyBuilder_i::~SALOMEDS_StudyBuilder_i()
 SALOMEDS::SComponent_ptr 
 SALOMEDS_StudyBuilder_i::NewComponent(const char* DataType)
 {
+  CheckLocked();
   //Always create component under main label.
   TDF_Label L  = _doc->Main();
 
@@ -142,6 +146,7 @@ SALOMEDS_StudyBuilder_i::NewComponent(const char* DataType)
 void SALOMEDS_StudyBuilder_i::DefineComponentInstance(SALOMEDS::SComponent_ptr aComponent,
                                                 CORBA::Object_ptr IOR)
 {
+  CheckLocked();
   //Find label
   TDF_Label Lab;
   ASSERT(!CORBA::is_nil(aComponent));
@@ -163,6 +168,7 @@ void SALOMEDS_StudyBuilder_i::DefineComponentInstance(SALOMEDS::SComponent_ptr a
 void 
 SALOMEDS_StudyBuilder_i::RemoveComponent(SALOMEDS::SComponent_ptr aComponent)
 {
+  CheckLocked();
   ASSERT(!CORBA::is_nil(aComponent));
   RemoveObject(aComponent);
 }
@@ -175,6 +181,7 @@ SALOMEDS_StudyBuilder_i::RemoveComponent(SALOMEDS::SComponent_ptr aComponent)
 SALOMEDS::SObject_ptr 
 SALOMEDS_StudyBuilder_i::NewObject(SALOMEDS::SObject_ptr theFatherObject)
 {
+  CheckLocked();
   TCollection_AsciiString anEntry;
  
   //Find label of father
@@ -211,6 +218,7 @@ SALOMEDS::SObject_ptr
 SALOMEDS_StudyBuilder_i::NewObjectToTag(SALOMEDS::SObject_ptr theFatherObject,
                                        CORBA::Long atag)
 {
+  CheckLocked();
   //Find label of father
   TDF_Label Lab;
 
@@ -235,6 +243,7 @@ SALOMEDS_StudyBuilder_i::NewObjectToTag(SALOMEDS::SObject_ptr theFatherObject,
 //============================================================================
 void SALOMEDS_StudyBuilder_i::RemoveObject(SALOMEDS::SObject_ptr anObject)
 {
+  CheckLocked();
   if(!CORBA::is_nil(_callbackOnRemove)) _callbackOnRemove->OnRemoveSObject(anObject);
 
   TDF_Label Lab;
@@ -248,6 +257,10 @@ void SALOMEDS_StudyBuilder_i::RemoveObject(SALOMEDS::SObject_ptr anObject)
       aTarget->Remove(Lab);
   }
 
+  Handle(SALOMEDS_IORAttribute) anAttr; // postponed removing of CORBA objects
+  if (Lab.FindAttribute(SALOMEDS_IORAttribute::GetID(), anAttr))
+    SALOMEDS_Study_i::GetStudy(_doc->Main(), _orb)->AddPostponed(strdup(TCollection_AsciiString(anAttr->Get()).ToCString()));
+
   Lab.ForgetAllAttributes();
 }
 
@@ -258,6 +271,7 @@ void SALOMEDS_StudyBuilder_i::RemoveObject(SALOMEDS::SObject_ptr anObject)
 //============================================================================
 void SALOMEDS_StudyBuilder_i::RemoveObjectWithChildren(SALOMEDS::SObject_ptr anObject)
 {
+  CheckLocked();
   if(!CORBA::is_nil(_callbackOnRemove)) _callbackOnRemove->OnRemoveSObject(anObject);
 
   TDF_Label Lab;
@@ -270,6 +284,9 @@ void SALOMEDS_StudyBuilder_i::RemoveObjectWithChildren(SALOMEDS::SObject_ptr anO
     if (aReference->Get().FindAttribute(SALOMEDS_TargetAttribute::GetID(),aTarget))
       aTarget->Remove(Lab);
   }
+  Handle(SALOMEDS_IORAttribute) anAttr; // postponed removing of CORBA objects
+  if (Lab.FindAttribute(SALOMEDS_IORAttribute::GetID(), anAttr))
+    SALOMEDS_Study_i::GetStudy(_doc->Main(), _orb)->AddPostponed(strdup(TCollection_AsciiString(anAttr->Get()).ToCString()));
 
   TDF_ChildIterator it(Lab);
   for(;it.More();it.Next()) {
@@ -279,6 +296,9 @@ void SALOMEDS_StudyBuilder_i::RemoveObjectWithChildren(SALOMEDS::SObject_ptr anO
       if (aReference->Get().FindAttribute(SALOMEDS_TargetAttribute::GetID(),aTarget))
        aTarget->Remove(aLabel);
     }
+    Handle(SALOMEDS_IORAttribute) anAttr; // postponed removing of CORBA objects
+    if (aLabel.FindAttribute(SALOMEDS_IORAttribute::GetID(), anAttr))
+      SALOMEDS_Study_i::GetStudy(_doc->Main(), _orb)->AddPostponed(strdup(TCollection_AsciiString(anAttr->Get()).ToCString()));
   }
 
   Lab.ForgetAllAttributes(Standard_True);
@@ -544,6 +564,7 @@ SALOMEDS::GenericAttribute_ptr SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SA
   if (strcmp(aTypeOfAttribute, "AttributeReal") == 0 ) {
     Handle(TDataStd_Real) anAttr;
     if (!Lab.FindAttribute(TDataStd_Real::GetID(), anAttr)) {
+      CheckLocked();
       anAttr = new TDataStd_Real;
       Lab.AddAttribute(anAttr); 
     }
@@ -554,6 +575,7 @@ SALOMEDS::GenericAttribute_ptr SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SA
   else if (strcmp(aTypeOfAttribute, "AttributeInteger") == 0 ) {
     Handle(TDataStd_Integer) anAttr;
     if (!Lab.FindAttribute(TDataStd_Integer::GetID(), anAttr)) {
+      CheckLocked();
       anAttr = new TDataStd_Integer;
       Lab.AddAttribute(anAttr); 
     }
@@ -564,6 +586,7 @@ SALOMEDS::GenericAttribute_ptr SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SA
   else if (strcmp(aTypeOfAttribute, "AttributeSequenceOfReal") == 0 ) {
     Handle(SALOMEDS_SequenceOfRealAttribute) anAttr;
     if (!Lab.FindAttribute(SALOMEDS_SequenceOfRealAttribute::GetID(), anAttr)) {
+      CheckLocked();
       anAttr = new SALOMEDS_SequenceOfRealAttribute;
       Lab.AddAttribute(anAttr); 
     }
@@ -574,6 +597,7 @@ SALOMEDS::GenericAttribute_ptr SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SA
   else if (strcmp(aTypeOfAttribute, "AttributeSequenceOfInteger") == 0 ) {
     Handle(SALOMEDS_SequenceOfIntegerAttribute) anAttr;
     if (!Lab.FindAttribute(SALOMEDS_SequenceOfIntegerAttribute::GetID(), anAttr)) {
+      CheckLocked();
       anAttr = new SALOMEDS_SequenceOfIntegerAttribute;
       Lab.AddAttribute(anAttr); 
     }
@@ -584,6 +608,7 @@ SALOMEDS::GenericAttribute_ptr SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SA
   else if (strcmp(aTypeOfAttribute, "AttributeName") == 0 ) {
     Handle(TDataStd_Name) anAttr;
     if (!Lab.FindAttribute(TDataStd_Name::GetID(), anAttr)) {
+      CheckLocked();
       anAttr = new TDataStd_Name;
       Lab.AddAttribute(anAttr); 
     }
@@ -594,6 +619,7 @@ SALOMEDS::GenericAttribute_ptr SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SA
   else if (strcmp(aTypeOfAttribute, "AttributeComment") == 0 ) {
     Handle(TDataStd_Comment) anAttr;
     if (!Lab.FindAttribute(TDataStd_Comment::GetID(), anAttr)) {
+      CheckLocked();
       anAttr = new TDataStd_Comment;
       Lab.AddAttribute(anAttr); 
     }
@@ -601,9 +627,30 @@ SALOMEDS::GenericAttribute_ptr SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SA
     SALOMEDS::AttributeComment_var aCA = aCommentAttr->AttributeComment::_this();
     return  aCA._retn();
   }
+  else if (strcmp(aTypeOfAttribute, "AttributeExternalFileDef") == 0 ) {
+    Handle(SALOMEDS_ExternalFileDef) anAttr;
+    if (!Lab.FindAttribute(SALOMEDS_ExternalFileDef::GetID(), anAttr)) {
+      anAttr = new SALOMEDS_ExternalFileDef;
+      Lab.AddAttribute(anAttr); 
+    }
+    SALOMEDS_AttributeExternalFileDef_i* anExternalFileDefAttr = new SALOMEDS_AttributeExternalFileDef_i(anAttr, _orb);
+    SALOMEDS::AttributeExternalFileDef_var aCA = anExternalFileDefAttr->AttributeExternalFileDef::_this();
+    return  aCA._retn();
+  }
+  else if (strcmp(aTypeOfAttribute, "AttributeFileType") == 0 ) {
+    Handle(SALOMEDS_FileType) anAttr;
+    if (!Lab.FindAttribute(SALOMEDS_FileType::GetID(), anAttr)) {
+      anAttr = new SALOMEDS_FileType;
+      Lab.AddAttribute(anAttr); 
+    }
+    SALOMEDS_AttributeFileType_i* anFileTypeAttr = new SALOMEDS_AttributeFileType_i(anAttr, _orb);
+    SALOMEDS::AttributeFileType_var aCA = anFileTypeAttr->AttributeFileType::_this();
+    return  aCA._retn();
+  }
   else if (strcmp(aTypeOfAttribute, "AttributeIOR") == 0 ) {
     Handle(SALOMEDS_IORAttribute) anAttr;
     if (!Lab.FindAttribute(SALOMEDS_IORAttribute::GetID(), anAttr)) {
+      CheckLocked();
       anAttr = new SALOMEDS_IORAttribute;
       Lab.AddAttribute(anAttr); 
     }
@@ -664,6 +711,7 @@ SALOMEDS::GenericAttribute_ptr SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SA
   else if (strcmp(aTypeOfAttribute, "AttributeTextColor") == 0 ) {
     Handle(SALOMEDS_TextColorAttribute) anAttr;
     if (!Lab.FindAttribute(SALOMEDS_TextColorAttribute::GetID(), anAttr)) {
+      CheckLocked();
       anAttr = new SALOMEDS_TextColorAttribute;
       Lab.AddAttribute(anAttr); 
     }
@@ -674,6 +722,7 @@ SALOMEDS::GenericAttribute_ptr SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SA
   else if (strcmp(aTypeOfAttribute, "AttributeTextHighlightColor") == 0 ) {
     Handle(SALOMEDS_TextHighlightColorAttribute) anAttr;
     if (!Lab.FindAttribute(SALOMEDS_TextHighlightColorAttribute::GetID(), anAttr)) {
+      CheckLocked();
       anAttr = new SALOMEDS_TextHighlightColorAttribute;
       Lab.AddAttribute(anAttr); 
     }
@@ -684,6 +733,7 @@ SALOMEDS::GenericAttribute_ptr SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SA
   else if (strcmp(aTypeOfAttribute, "AttributePixMap") == 0 ) {
     Handle(SALOMEDS_PixMapAttribute) anAttr;
     if (!Lab.FindAttribute(SALOMEDS_PixMapAttribute::GetID(), anAttr)) {
+      CheckLocked();
       anAttr = new SALOMEDS_PixMapAttribute;
       Lab.AddAttribute(anAttr); 
     }
@@ -702,16 +752,20 @@ SALOMEDS::GenericAttribute_ptr SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SA
       delete(aGUIDString);
     }
     Handle(TDataStd_TreeNode) anAttr;
-    if (!Lab.FindAttribute(aTreeNodeGUID, anAttr))
+    if (!Lab.FindAttribute(aTreeNodeGUID, anAttr)) {
+      CheckLocked();
       anAttr = TDataStd_TreeNode::Set(Lab, aTreeNodeGUID);
+    }
     SALOMEDS_AttributeTreeNode_i* aTreeNodeAttr = new SALOMEDS_AttributeTreeNode_i(anAttr, _orb);
     SALOMEDS::AttributeTreeNode_var aTNA = aTreeNodeAttr->AttributeTreeNode::_this();
     return  aTNA._retn();
   }
   else if (strncmp(aTypeOfAttribute, "AttributeUserID",15) == 0 ) {
     Handle(TDataStd_UAttribute) anAttr;
-    if (!Lab.FindAttribute(SALOMEDS_AttributeUserID_i::DefaultID(), anAttr))
+    if (!Lab.FindAttribute(SALOMEDS_AttributeUserID_i::DefaultID(), anAttr)) {
+      CheckLocked();
       anAttr = TDataStd_UAttribute::Set(Lab, SALOMEDS_AttributeUserID_i::DefaultID());
+    }
     SALOMEDS_AttributeUserID_i* aUAttr = new SALOMEDS_AttributeUserID_i(anAttr, _orb);
     SALOMEDS::AttributeUserID_var aUA = aUAttr->AttributeUserID::_this();
     return  aUA._retn();
@@ -719,6 +773,7 @@ SALOMEDS::GenericAttribute_ptr SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SA
   else if (strcmp(aTypeOfAttribute, "AttributeLocalID") == 0 ) {
     Handle(SALOMEDS_LocalIDAttribute) anAttr;
     if (!Lab.FindAttribute(SALOMEDS_LocalIDAttribute::GetID(), anAttr)) {
+      CheckLocked();
       anAttr = new SALOMEDS_LocalIDAttribute;
       Lab.AddAttribute(anAttr); 
     }
@@ -739,6 +794,7 @@ SALOMEDS::GenericAttribute_ptr SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SA
   else if (strcmp(aTypeOfAttribute, "AttributeTableOfInteger") == 0 ) {
     Handle(SALOMEDS_TableOfIntegerAttribute) anAttr;
     if (!Lab.FindAttribute(SALOMEDS_TableOfIntegerAttribute::GetID(), anAttr)) {
+      CheckLocked();
       anAttr = new SALOMEDS_TableOfIntegerAttribute;
       Lab.AddAttribute(anAttr); 
     }
@@ -749,6 +805,7 @@ SALOMEDS::GenericAttribute_ptr SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SA
   else if (strcmp(aTypeOfAttribute, "AttributeTableOfReal") == 0 ) {
     Handle(SALOMEDS_TableOfRealAttribute) anAttr;
     if (!Lab.FindAttribute(SALOMEDS_TableOfRealAttribute::GetID(), anAttr)) {
+      CheckLocked();
       anAttr = new SALOMEDS_TableOfRealAttribute;
       Lab.AddAttribute(anAttr); 
     }
@@ -759,6 +816,7 @@ SALOMEDS::GenericAttribute_ptr SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SA
   else if (strcmp(aTypeOfAttribute, "AttributeTableOfString") == 0 ) {
     Handle(SALOMEDS_TableOfStringAttribute) anAttr;
     if (!Lab.FindAttribute(SALOMEDS_TableOfStringAttribute::GetID(), anAttr)) {
+      CheckLocked();
       anAttr = new SALOMEDS_TableOfStringAttribute;
       Lab.AddAttribute(anAttr); 
     }
@@ -769,9 +827,12 @@ SALOMEDS::GenericAttribute_ptr SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SA
   else if (strcmp(aTypeOfAttribute, "AttributeStudyProperties") == 0 ) {
     Handle(SALOMEDS_StudyPropertiesAttribute) anAttr;
     if (!Lab.FindAttribute(SALOMEDS_StudyPropertiesAttribute::GetID(), anAttr)) {
-      anAttr = new SALOMEDS_StudyPropertiesAttribute;
-      Lab.AddAttribute(anAttr); 
-      anAttr->SetModified(0);
+      CheckLocked();
+      if (!Lab.FindAttribute(SALOMEDS_StudyPropertiesAttribute::GetID(), anAttr)) {
+       anAttr = new SALOMEDS_StudyPropertiesAttribute;
+       Lab.AddAttribute(anAttr); 
+       anAttr->SetModified(0);
+      }
     }
     SALOMEDS_AttributeStudyProperties_i* aStPropAttr = new SALOMEDS_AttributeStudyProperties_i(anAttr, _orb);
     SALOMEDS::AttributeStudyProperties_var aSPA = aStPropAttr->AttributeStudyProperties::_this();
@@ -780,6 +841,7 @@ SALOMEDS::GenericAttribute_ptr SALOMEDS_StudyBuilder_i::FindOrCreateAttribute(SA
   else if (strcmp(aTypeOfAttribute, "AttributePythonObject") == 0 ) {
     Handle(SALOMEDS_PythonObjectAttribute) anAttr;
     if (!Lab.FindAttribute(SALOMEDS_PythonObjectAttribute::GetID(), anAttr)) {
+      CheckLocked();
       anAttr = new SALOMEDS_PythonObjectAttribute;
       Lab.AddAttribute(anAttr); 
     }
@@ -836,6 +898,16 @@ CORBA::Boolean SALOMEDS_StudyBuilder_i::FindAttribute(SALOMEDS::SObject_ptr anOb
       anAttribute = Attr->AttributeComment::_this();
       return Standard_True;
     }
+    else if (strcmp(aTypeOfAttribute, "AttributeExternalFileDef") == 0 ) {
+      SALOMEDS_AttributeExternalFileDef_i* Attr= new SALOMEDS_AttributeExternalFileDef_i(Handle(SALOMEDS_ExternalFileDef)::DownCast(anAttr), _orb);
+      anAttribute = Attr->AttributeExternalFileDef::_this();
+      return Standard_True;
+    }
+    else if (strcmp(aTypeOfAttribute, "AttributeFileType") == 0 ) {
+      SALOMEDS_AttributeFileType_i* Attr= new SALOMEDS_AttributeFileType_i(Handle(SALOMEDS_FileType)::DownCast(anAttr), _orb);
+      anAttribute = Attr->AttributeFileType::_this();
+      return Standard_True;
+    }
     else if (strcmp(aTypeOfAttribute, "AttributeIOR") == 0 ) {
       SALOMEDS_AttributeIOR_i* Attr= new SALOMEDS_AttributeIOR_i(Handle(SALOMEDS_IORAttribute)::DownCast(anAttr), _orb);
       anAttribute = Attr->AttributeIOR::_this();
@@ -936,12 +1008,21 @@ CORBA::Boolean SALOMEDS_StudyBuilder_i::FindAttribute(SALOMEDS::SObject_ptr anOb
 //============================================================================
 
 void SALOMEDS_StudyBuilder_i::RemoveAttribute(SALOMEDS::SObject_ptr anObject, 
-                                                                     const char* aTypeOfAttribute)
+                                             const char* aTypeOfAttribute)
 {
+  CheckLocked();
   TDF_Label Lab;
   ASSERT(!CORBA::is_nil(anObject));
   CORBA::String_var anobid = anObject->GetID();
   TDF_Tool::Label(_doc->GetData(),strdup(anobid),Lab);
+  
+  if (strcmp(aTypeOfAttribute, "AttributeIOR") == 0) { // postponed removing of CORBA objects
+    Handle(SALOMEDS_IORAttribute) anAttr;
+    if (Lab.FindAttribute(SALOMEDS_IORAttribute::GetID(), anAttr))
+      SALOMEDS_Study_i::GetStudy(_doc->Main(), _orb)->AddPostponed(strdup(TCollection_AsciiString(anAttr->Get()).ToCString()));
+    else return;
+  }
+
   Lab.ForgetAttribute (SALOMEDS_SObject_i::ReturnGUIDForAttribute(aTypeOfAttribute));
 }
 
@@ -954,6 +1035,7 @@ void
 SALOMEDS_StudyBuilder_i::Addreference(SALOMEDS::SObject_ptr me, 
                                      SALOMEDS::SObject_ptr theReferencedObject)
 {
+  CheckLocked();
   TDF_Label Lab;
   ASSERT(!CORBA::is_nil(me));
   CORBA::String_var meid = me->GetID();
@@ -977,6 +1059,7 @@ SALOMEDS_StudyBuilder_i::Addreference(SALOMEDS::SObject_ptr me,
 //============================================================================
 void SALOMEDS_StudyBuilder_i::AddDirectory(const char* thePath) 
 {
+  CheckLocked();
   if(thePath == NULL || strlen(thePath) == 0) throw SALOMEDS::Study::StudyInvalidDirectory();
 
   TCollection_AsciiString aPath(CORBA::string_dup(thePath)), aContext(""), aFatherPath;
@@ -1043,6 +1126,7 @@ void SALOMEDS_StudyBuilder_i::AddDirectory(const char* thePath)
 //============================================================================
 void SALOMEDS_StudyBuilder_i::SetGUID(SALOMEDS::SObject_ptr anObject, const char* theGUID)
 {
+  CheckLocked();
   TDF_Label aLabel;
   ASSERT(!CORBA::is_nil(anObject));
   CORBA::String_var anEntry = anObject->GetID();
@@ -1100,6 +1184,8 @@ void SALOMEDS_StudyBuilder_i::CommitCommand() throw (SALOMEDS::StudyBuilder::Loc
     AbortCommand();
     throw SALOMEDS::StudyBuilder::LockProtection();
   } else {
+    SALOMEDS_Study_i::GetStudy(_doc->Main(), _orb)->RemovePostponed(_doc->GetUndoLimit());
+
     int aModif = anAttr->GetModified();
     if (aModif < 0) aModif = 1000; // if user make undo and then - new transaction "modify" will never be zero
     anAttr->SetModified(aModif+1);
@@ -1124,6 +1210,8 @@ CORBA::Boolean SALOMEDS_StudyBuilder_i::HasOpenCommand()
 //============================================================================
 void SALOMEDS_StudyBuilder_i::AbortCommand()
 {
+  SALOMEDS_Study_i::GetStudy(_doc->Main(), _orb)->UndoPostponed(0);
+  
   _doc->AbortCommand();
 }
 
@@ -1143,6 +1231,7 @@ void SALOMEDS_StudyBuilder_i::Undo() throw (SALOMEDS::StudyBuilder::LockProtecti
     INFOS("Locked document modification !!!");
     throw SALOMEDS::StudyBuilder::LockProtection();
   } else {
+    SALOMEDS_Study_i::GetStudy(_doc->Main(), _orb)->UndoPostponed(1);
     _doc->Undo();
     anAttr->SetModified(anAttr->GetModified()-1);
   }
@@ -1166,6 +1255,7 @@ void SALOMEDS_StudyBuilder_i::Redo() throw (SALOMEDS::StudyBuilder::LockProtecti
     throw SALOMEDS::StudyBuilder::LockProtection();
   } else {
     _doc->Redo();
+    SALOMEDS_Study_i::GetStudy(_doc->Main(), _orb)->UndoPostponed(-1);
     anAttr->SetModified(anAttr->GetModified()+1);
   }
 }
@@ -1190,7 +1280,6 @@ CORBA::Boolean  SALOMEDS_StudyBuilder_i::GetAvailableRedos()
   return _doc->GetAvailableRedos();
 }
 
-
 //============================================================================
 /*! Function : UndoLimit
  *  Purpose  : 
@@ -1208,6 +1297,7 @@ CORBA::Long  SALOMEDS_StudyBuilder_i::UndoLimit()
 //============================================================================
 void  SALOMEDS_StudyBuilder_i::UndoLimit(CORBA::Long n)
 {
+  CheckLocked();
   _doc->SetUndoLimit (n);
 }
 
@@ -1234,3 +1324,13 @@ SALOMEDS::Callback_ptr SALOMEDS_StudyBuilder_i::SetOnRemoveSObject(SALOMEDS::Cal
   _callbackOnRemove = SALOMEDS::Callback::_duplicate(theCallback);
   return aRet;
 }
+
+void SALOMEDS_StudyBuilder_i::CheckLocked() throw (SALOMEDS::StudyBuilder::LockProtection) {
+  if (_doc->HasOpenCommand()) return;
+  Handle(SALOMEDS_StudyPropertiesAttribute) anAttr;
+  if (!_doc->Main().FindAttribute(SALOMEDS_StudyPropertiesAttribute::GetID(), anAttr)) {
+    anAttr = new SALOMEDS_StudyPropertiesAttribute;
+    _doc->Main().AddAttribute(anAttr);
+  }
+  if (anAttr->IsLocked()) throw SALOMEDS::StudyBuilder::LockProtection();
+}
index 14313fac61f9aab509b7ab0b2f947f26a10e4a8a..f282e4e97ec140382c8978579c520b5f8edd98d6 100644 (file)
@@ -138,6 +138,8 @@ public:
   virtual CORBA::Long UndoLimit();
   virtual void UndoLimit(CORBA::Long);
 
+  void CheckLocked() throw (SALOMEDS::StudyBuilder::LockProtection);
+
   virtual SALOMEDS::Callback_ptr SetOnAddSObject(SALOMEDS::Callback_ptr theCallback);
   virtual SALOMEDS::Callback_ptr SetOnRemoveSObject(SALOMEDS::Callback_ptr theCallback);
 };
index 4d12d2379154387ca9d96bfcc4fb28102f85a030..ba14acbf02c176f2c122267262f05f4187b42299 100644 (file)
@@ -28,6 +28,7 @@
 
 using namespace std;
 #include "utilities.h"
+#include "SALOME_LifeCycleCORBA.hxx"
 #include "SALOMEDS_StudyManager_i.hxx"
 #include "SALOMEDS_Study_i.hxx"
 #include "SALOMEDS_SComponent_i.hxx"
@@ -75,8 +76,12 @@ using namespace std;
 
 #include <strstream>
 
-#define USE_CASE_LABEL_ID            "0:2"
+#include <SALOME_GenericObj_i.hh>
 
+#define USE_CASE_LABEL_ID             "0:2"
+#define AUTO_SAVE_GUID                "128268A3-71C9-4036-89B1-F81BD6A4FCF2"
+#define AUTO_SAVE_TAG                 "0:8"
+#define AUTO_SAVE_TIME_OUT_IN_SECONDS 1200
 //===========================================================================
 //Function : LoadAttributes
 //===========================================================================
@@ -583,35 +588,15 @@ SALOMEDS::Study_ptr  SALOMEDS_StudyManager_i::Open(const char* aUrl)
   _IDcounter++;
   Study->StudyId( _IDcounter );
 
-  // Register study in the naming service
-  // Path to acces the study
-  if(!_name_service->Change_Directory("/Study")) 
-      MESSAGE( "Unable to access the study directory" )
-  else
-    {
-      char* aPath = CORBA::string_dup(aUrl);
-      char *aName = NULL;
-      char *adr = strtok(aPath, "/");
-      while (adr)
-       {
-         aName = adr;
-         adr = strtok(NULL, "/");
-       }
-      adr = aName;
-      aName = strtok(adr, ".");
-      SCRUTE(aName);
-      _name_service->Register(Study, CORBA::string_dup(aName));
-      CORBA::string_free(aPath);
-    }
+  // Assign the value of the URL in the study object
+  Study->URL (aUrl);
+  SCRUTE(aUrl);
 
   // Assign the value of the IOR in the study->root
   CORBA::String_var IORStudy = _orb->object_to_string(Study);
   SALOMEDS_IORAttribute::Set(Doc->Main().Root(),
                             TCollection_ExtendedString(CORBA::string_dup(IORStudy)),_orb);
 
-  // Assign the value of the URL in the study object
-  Study->URL (aUrl);
-  SCRUTE(aUrl);
   SALOMEDS_PersRefAttribute::Set(Doc->Main(),strdup(aUrl)); 
 
   if (!hdf_file->ExistInternalObject("STUDY_STRUCTURE")) {
@@ -640,6 +625,12 @@ SALOMEDS::Study_ptr  SALOMEDS_StudyManager_i::Open(const char* aUrl)
   
   hdf_file->CloseOnDisk();
 
+  // Register study in the naming service
+  // Path to acces the study
+  if(!_name_service->Change_Directory("/Study")) MESSAGE( "Unable to access the study directory" )
+  else _name_service->Register(Study, CORBA::string_dup(Study->Name()));
+
+
   if (isASCII) {
     SALOMEDS::ListOfFileNames_var aFilesToRemove = new SALOMEDS::ListOfFileNames;
     aFilesToRemove->length(1);
@@ -663,7 +654,9 @@ SALOMEDS::Study_ptr  SALOMEDS_StudyManager_i::Open(const char* aUrl)
 void  SALOMEDS_StudyManager_i::Close(SALOMEDS::Study_ptr aStudy)
 {
   if(aStudy->_is_nil()) return;
-    
+  
+  aStudy->RemovePostponed(-1);
+  
   // Destroy study name in the naming service
   if(_name_service->Change_Directory("/Study")) 
     _name_service->Destroy_Name(aStudy->Name());
@@ -705,18 +698,12 @@ void SALOMEDS_StudyManager_i::SaveASCII(SALOMEDS::Study_ptr aStudy, CORBA::Boole
 //============================================================================
 void SALOMEDS_StudyManager_i::SaveAs(const char* aUrl, SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile)
 {
-  // Save the URL of the Study => to be used with the function "Save"
-  aStudy->URL(aUrl);
-  
   _SaveAs(aUrl,aStudy,theMultiFile, false);
 
 }
 
 void SALOMEDS_StudyManager_i::SaveAsASCII(const char* aUrl, SALOMEDS::Study_ptr aStudy, CORBA::Boolean theMultiFile)
 {
-  // Save the URL of the Study => to be used with the function "Save"
-  aStudy->URL(aUrl);
-  
   _SaveAs(aUrl,aStudy,theMultiFile, true);
 }
 
@@ -1300,11 +1287,61 @@ void SALOMEDS_StudyManager_i::_SaveAs(const char* aUrl,
 
   SALOMEDS::StudyBuilder_var SB= aStudy->NewBuilder();
 
-  aStudy->URL(aUrl);
-
   ASSERT(!CORBA::is_nil(aStudy));
   try
     {
+      // mpv 15.12.2003: for saving components we have to load all data from all modules
+
+      SALOMEDS::SComponentIterator_var itcomponent1 = aStudy->NewComponentIterator();
+      for (; itcomponent1->More(); itcomponent1->Next())
+       {
+         SALOMEDS::SComponent_var sco = itcomponent1->Value();
+         // if there is an associated Engine call its method for saving
+         CORBA::String_var IOREngine;
+         try {
+           
+           if (!sco->ComponentIOR(IOREngine)) {
+             SALOMEDS::GenericAttribute_var aGeneric;
+             SALOMEDS::AttributeName_var aName;
+             if(sco->FindAttribute(aGeneric, "AttributeName"))
+               aName = SALOMEDS::AttributeName::_narrow(aGeneric);
+
+             if (!aName->_is_nil()) {
+               
+               CORBA::String_var aCompType = aName->Value();
+
+               
+               CORBA::String_var aFactoryType;
+               if (strcmp(aCompType, "SUPERV") == 0) aFactoryType = "SuperVisionContainer";
+               else aFactoryType = "FactoryServer";
+               
+               Engines::Component_var aComp =
+                 SALOME_LifeCycleCORBA(_name_service).FindOrLoad_Component(aFactoryType, aCompType);
+               
+               if (aComp->_is_nil()) {
+                 Engines::Component_var aComp =
+                   SALOME_LifeCycleCORBA(_name_service).FindOrLoad_Component("FactoryServerPy", aCompType);
+               }
+               
+               if (!aComp->_is_nil()) {
+                 SALOMEDS::Driver_var aDriver = SALOMEDS::Driver::_narrow(aComp);
+                 if (!CORBA::is_nil(aDriver)) {
+                   SB->LoadWith(sco, aDriver);
+                 }
+               }
+             }
+           }
+         } catch(...) {
+           MESSAGE("Can not restore information to resave it");
+           return;
+         }
+       }
+
+
+
+      CORBA::String_var anOldName = aStudy->Name();
+      aStudy->URL(aUrl);
+
       // To change for Save 
       // Do not have to do a new file but just a Open??? Rewrite all informations after erasing evrything??
       hdf_file = new HDFfile((char *)aUrl);
@@ -1318,6 +1355,10 @@ void SALOMEDS_StudyManager_i::_SaveAs(const char* aUrl,
       hdf_group_datacomponent->CreateOnDisk();
 
       SALOMEDS::SComponentIterator_var itcomponent = aStudy->NewComponentIterator();
+      
+      //SRN: Added 17 Nov, 2003
+      SALOMEDS::SObject_var anAutoSaveSO = aStudy->FindObjectID(AUTO_SAVE_TAG);
+      //SRN: End
 
       for (; itcomponent->More(); itcomponent->Next())
        {
@@ -1329,7 +1370,42 @@ void SALOMEDS_StudyManager_i::_SaveAs(const char* aUrl,
 
          CORBA::String_var componentDataType = sco->ComponentDataType();
          MESSAGE ( "Look for  an engine for data type :"<< componentDataType);
-         // if there is an associated Engine call its method for saving
+
+         //SRN: Added 17 Nov 2003: If there is a specified attribute, the component peforms a special save       
+         if(!CORBA::is_nil(anAutoSaveSO) && SB->IsGUID(sco, AUTO_SAVE_GUID)) {     
+       
+           SALOMEDS::GenericAttribute_var aGeneric;
+           SALOMEDS::AttributeTableOfString_var aTable;
+           if(anAutoSaveSO->FindAttribute(aGeneric, "AttributeTableOfString")) {
+             aTable = SALOMEDS::AttributeTableOfString::_narrow(aGeneric);
+             Standard_Integer nbRows = aTable->GetNbRows(), k, aTimeOut = 0;
+              if(nbRows > 0 && aTable->GetNbColumns() > 1) {   
+
+               SALOMEDS::StringSeq_var aRow;
+               for(k=1; k<=nbRows; k++) {
+                 aRow = aTable->GetRow(k);
+                 if (strcmp(aRow[0], componentDataType) == 0) {
+                   CORBA::String_var anEntry = CORBA::string_dup(aRow[1]);
+                   SALOMEDS::SObject_var aCompSpecificSO = aStudy->FindObjectID(anEntry);
+                   if(!CORBA::is_nil(aCompSpecificSO)) {
+                     SALOMEDS::AttributeInteger_var anInteger;
+                     if(aCompSpecificSO->FindAttribute(aGeneric, "AttributeInteger")) {
+                       anInteger = SALOMEDS::AttributeInteger::_narrow(aGeneric);
+                       anInteger->SetValue(-1);
+                       while(anInteger->Value() < 0) { sleep(2); if(++aTimeOut > AUTO_SAVE_TIME_OUT_IN_SECONDS) break; }
+                     }  // if(aCompSpecificSO->FindAttribute(anInteger, "AttributeInteger"))
+                   }  // if(!CORBA::is_nil(aCompSpecificSO)) 
+                 }  // if (strcmp(aRow[0], componentDataType) == 0)
+               }  // for
+
+             }  // if(nbRows > 0 && aTable->GetNbColumns() > 1)
+
+           }  // if(anAutoSaveSO->FindAttribute(aTable, "AttributeTableOfString")
+
+         }  // if(SB->IsGUID(AUTO_SAVE_GUID)
+
+         //SRN: End
+
          CORBA::String_var IOREngine;
          if (sco->ComponentIOR(IOREngine))
            {
@@ -1344,6 +1420,7 @@ void SALOMEDS_StudyManager_i::_SaveAs(const char* aUrl,
                  MESSAGE("Engine :"<<Engine->ComponentDataType());
 
                  SALOMEDS::TMPFile_var aStream;
+
                   if (theASCII) aStream = Engine->SaveASCII(sco,SALOMEDS_Tool::GetDirFromPath(aUrl),theMultiFile);
                  else aStream = Engine->Save(sco,SALOMEDS_Tool::GetDirFromPath(aUrl),theMultiFile);
 
@@ -1452,6 +1529,11 @@ void SALOMEDS_StudyManager_i::_SaveAs(const char* aUrl,
 
       hdf_group_study_structure->CloseOnDisk();
       hdf_file->CloseOnDisk();
+
+      _name_service->Change_Directory("/Study");
+      _name_service->Destroy_Name(anOldName);
+      _name_service->Register(aStudy, aStudy->Name());
+
       aStudy->IsSaved(true);
       hdf_group_study_structure =0; // will be deleted by hdf_file destructor
       delete hdf_file; // recursively deletes all hdf objects...
@@ -1546,7 +1628,8 @@ CORBA::Boolean SALOMEDS_StudyManager_i::CanCopy(SALOMEDS::SObject_ptr theObject)
   CORBA::Object_var obj = _orb->string_to_object(IOREngine);
   SALOMEDS::Driver_var Engine = SALOMEDS::Driver::_narrow(obj) ;
   if (CORBA::is_nil(Engine)) return false;
-  return Engine->CanCopy(theObject);
+  Standard_Boolean a = Engine->CanCopy(theObject);
+  return a;
 }
 
 //============================================================================
index c282ab096f431937c5ce1fade24b8f2ef130ca52..ed98968e84807c471e040e5c042d386e987495fd 100644 (file)
@@ -39,6 +39,8 @@ using namespace std;
 #include <TDocStd_Owner.hxx>
 #include <CDM_Document.hxx>
 #include <CDM_Application.hxx>
+#include <TDF_ChildIDIterator.hxx>
+#include <SALOME_GenericObj_i.hh>
 #include "SALOMEDS_LocalIDAttribute.hxx"
 #include "SALOMEDS_PersRefAttribute.hxx"
 #include "SALOMEDS_UseCaseIterator_i.hxx"
@@ -65,6 +67,8 @@ SALOMEDS_Study_i::SALOMEDS_Study_i(const Handle(TDocStd_Document) doc,
   _URL = NULL;
   _StudyId = -1;
   _autoFill = true;
+  myNbPostponed.Append(0);
+  myNbUndos = 0;
 }
   
 //============================================================================
@@ -766,9 +770,20 @@ char* SALOMEDS_Study_i::URL()
 //============================================================================
 void SALOMEDS_Study_i::URL(const char* url)
 {
+  if (_URL) delete [] _URL;
   _URL = new char[strlen(url) +1];
   strcpy(_URL,url);
   SCRUTE(_URL);
+
+  char *aName = _URL;
+  char *adr = strtok(aName, "/");
+  while (adr)
+    {
+      aName = adr;
+      adr = strtok(NULL, "/");
+    }
+  strcpy(_URL,url);
+  Name(aName);
 }
 
 
@@ -863,22 +878,25 @@ void SALOMEDS_Study_i::UpdateIORLabelMap(const char* anIOR,const char* anEntry)
   myIORLabels.Bind(TCollection_ExtendedString(IOR), aLabel);
 }
 
-void SALOMEDS_Study_i::IORUpdated(const Handle(SALOMEDS_IORAttribute) theAttribute, CORBA::ORB_ptr orb) {
-  // get accorded study first
+SALOMEDS::Study_ptr SALOMEDS_Study_i::GetStudy(const TDF_Label theLabel, CORBA::ORB_ptr orb) {
   Handle(SALOMEDS_IORAttribute) Att;
-  if (theAttribute->Label().Root().FindAttribute(SALOMEDS_IORAttribute::GetID(),Att)){
-    TCollection_AsciiString ch(Att->Get());
-    char* IOR = CORBA::string_dup(ch.ToCString());
+  if (theLabel.Root().FindAttribute(SALOMEDS_IORAttribute::GetID(),Att)){
+    char* IOR = CORBA::string_dup(TCollection_AsciiString(Att->Get()).ToCString());
     CORBA::Object_var obj = orb->string_to_object(IOR);
     SALOMEDS::Study_ptr aStudy = SALOMEDS::Study::_narrow(obj) ;
     ASSERT(!CORBA::is_nil(aStudy));
-    TCollection_AsciiString aString;
-    TDF_Tool::Entry(theAttribute->Label(),aString);
-    aStudy->UpdateIORLabelMap(TCollection_AsciiString(theAttribute->Get()).ToCString(), aString.ToCString());
+    return SALOMEDS::Study::_duplicate(aStudy);
   } else {
-    INFOS("IORUpdated: Problem to get study");
-    return;
+    INFOS("GetStudy: Problem to get study");
   }
+  return SALOMEDS::Study::_nil();
+}
+
+void SALOMEDS_Study_i::IORUpdated(const Handle(SALOMEDS_IORAttribute) theAttribute, CORBA::ORB_ptr orb) {
+  TCollection_AsciiString aString;
+  TDF_Tool::Entry(theAttribute->Label(), aString);
+  GetStudy(theAttribute->Label(), orb)->UpdateIORLabelMap(TCollection_AsciiString(theAttribute->Get()).ToCString(),
+                                                         aString.ToCString());
 }
 
 SALOMEDS::Study::ListOfSObject* SALOMEDS_Study_i::FindDependances(SALOMEDS::SObject_ptr anObject) {
@@ -964,10 +982,12 @@ void SALOMEDS_Study_i::Close()
       // we have found the associated engine to write the data 
       MESSAGE ( "We have found an engine for data type :"<< sco->ComponentDataType());
       CORBA::Object_var obj = _orb->string_to_object(IOREngine);
-      SALOMEDS::Driver_var anEngine = SALOMEDS::Driver::_narrow(obj) ;
-             
-      if (!anEngine->_is_nil())  
-       anEngine->Close(sco);
+      if (!CORBA::is_nil(obj)) {
+       SALOMEDS::Driver_var anEngine = SALOMEDS::Driver::_narrow(obj) ;
+       
+       if (!anEngine->_is_nil())  
+         anEngine->Close(sco);
+      }
     }
   }
 
@@ -980,3 +1000,115 @@ void SALOMEDS_Study_i::Close()
   if(!anApp.IsNull()) anApp->Close(_doc);
   _doc.Nullify();
 }
+
+//============================================================================
+/*! Function : AddPostponed
+ *  Purpose  : 
+ */
+ //============================================================================
+void SALOMEDS_Study_i::AddPostponed(const char* theIOR) {
+  if (!NewBuilder()->HasOpenCommand()) return;
+  try {
+    CORBA::Object_var obj = _orb->string_to_object(theIOR);
+    if (!CORBA::is_nil(obj)) {
+      SALOME::GenericObj_var aGeneric = SALOME::GenericObj::_narrow(obj) ;
+      if (!CORBA::is_nil(aGeneric)) {
+       TCollection_AsciiString anIOR(strdup(theIOR));
+       anIOR.Prepend("d");
+       myPostponedIORs.Append(anIOR); // add prefix: deleted
+       myNbPostponed.SetValue(myNbPostponed.Length(), myNbPostponed.Last() + 1);
+      }
+    }
+  } catch(...) {}
+}
+
+void SALOMEDS_Study_i::AddCreatedPostponed(const char* theIOR) {
+  if (!NewBuilder()->HasOpenCommand()) return;
+  try {
+    CORBA::Object_var obj = _orb->string_to_object(theIOR);
+    if (!CORBA::is_nil(obj)) {
+      SALOME::GenericObj_var aGeneric = SALOME::GenericObj::_narrow(obj) ;
+      if (!CORBA::is_nil(aGeneric)) {
+       TCollection_AsciiString anIOR(strdup(theIOR));
+       anIOR.Prepend("c");
+       myPostponedIORs.Append(anIOR); // add prefix: created
+       myNbPostponed.SetValue(myNbPostponed.Length(), myNbPostponed.Last() + 1);
+      }
+    }
+  } catch(...) {}
+}
+
+//============================================================================
+/*! Function : RemovePostponed
+ *  Purpose  : 
+ */
+//============================================================================
+void SALOMEDS_Study_i::RemovePostponed(const CORBA::Long theUndoLimit) {
+  int anIndex;
+  int anOld;
+
+  int aUndoLimit = theUndoLimit;
+  if (theUndoLimit < 0) aUndoLimit = 0;
+
+  if (myNbUndos > 0) { // remove undone
+    anOld = 0;
+    for(anIndex = 1; anIndex < myNbPostponed.Length() - myNbUndos; anIndex++)
+      anOld += myNbPostponed(anIndex);
+    int aNew = myPostponedIORs.Length() - myNbPostponed.Last();
+
+    for(anIndex = anOld + 1; anIndex <= aNew; anIndex++) {
+      TCollection_AsciiString anIOR = myPostponedIORs(anIndex);
+      if (anIOR.Value(1) == 'c') {
+       CORBA::Object_var obj = _orb->string_to_object(strdup(anIOR.Split(1).ToCString()));
+       SALOME::GenericObj_var aGeneric = SALOME::GenericObj::_narrow(obj);
+       if (!CORBA::is_nil(aGeneric)) aGeneric->Destroy();
+      }
+    }
+    if (anOld < aNew) myPostponedIORs.Remove(anOld + 1, aNew);
+    if (myNbPostponed.Length() > 0) myNbPostponed.Remove(myNbPostponed.Length() - myNbUndos, myNbPostponed.Length() - 1);
+
+    myNbUndos = 0;
+  }
+
+  if (myNbPostponed.Length() > aUndoLimit) { // remove objects, that can not be undone
+    anOld = 0;
+    for(anIndex = myNbPostponed.Length() - aUndoLimit; anIndex >= 1; anIndex--)
+      anOld += myNbPostponed(anIndex);
+    for(anIndex = 1; anIndex <= anOld; anIndex++) {
+      TCollection_AsciiString anIOR = myPostponedIORs(anIndex);
+      if (anIOR.Value(1) == 'd') {
+       CORBA::Object_var obj = _orb->string_to_object(strdup(anIOR.Split(1).ToCString()));
+       SALOME::GenericObj_var aGeneric = SALOME::GenericObj::_narrow(obj);
+       if (!CORBA::is_nil(aGeneric)) aGeneric->Destroy();
+      }
+    }
+    if (anOld > 0) myPostponedIORs.Remove(1, anOld);
+    myNbPostponed.Remove(1, myNbPostponed.Length() - aUndoLimit);
+  }
+
+  if (theUndoLimit == -1) { // remove all IORs from the study on the study close
+    TDF_ChildIDIterator anIter(_doc->GetData()->Root(), SALOMEDS_IORAttribute::GetID(), Standard_True);
+    for(; anIter.More(); anIter.Next()) {
+      Handle(SALOMEDS_IORAttribute) anAttr = Handle(SALOMEDS_IORAttribute)::DownCast(anIter.Value());
+      CORBA::String_var anIOR = strdup(TCollection_AsciiString(anAttr->Get()).ToCString());
+      try {
+       CORBA::Object_var obj = _orb->string_to_object(anIOR);
+       SALOME::GenericObj_var aGeneric = SALOME::GenericObj::_narrow(obj);
+       if (!CORBA::is_nil(aGeneric)) aGeneric->Destroy();
+      } catch (...) {}
+    }
+  } else myNbPostponed.Append(0);
+}
+
+//============================================================================
+/*! Function : UndoPostponed
+ *  Purpose  : 
+ */
+//============================================================================
+void SALOMEDS_Study_i::UndoPostponed(const CORBA::Long theWay) {
+  myNbUndos += theWay;
+  // remove current postponed
+  if (myNbPostponed.Last() > 0)
+    myPostponedIORs.Remove(myPostponedIORs.Length() - myNbPostponed.Last() + 1, myPostponedIORs.Length());
+  myNbPostponed(myNbPostponed.Length()) = 0;
+}
index fa5cffabaf3e427eb06574f7ff7a549d8d55a87c..be93b95f99a698c325fb9ba3895415447b071466 100644 (file)
@@ -42,6 +42,8 @@
 #include <TDF_Data.hxx>
 #include <TDF_Label.hxx>
 #include <stdio.h>
+#include <TColStd_SequenceOfInteger.hxx>
+#include <TColStd_SequenceOfAsciiString.hxx>
 
 //SALOMEDS headers
 #include "SALOMEDS_SComponentIterator_i.hxx"
@@ -70,6 +72,12 @@ private:
   CORBA::Short             _StudyId;
 
   SALOMEDS_DataMapStringLabel myIORLabels;
+
+  // data structures for postponed destroying of CORBA object functionality
+  TColStd_SequenceOfAsciiString myPostponedIORs; // ordered set of IORs
+  TColStd_SequenceOfInteger myNbPostponed; // number of IOR in the each transaction
+  int myNbUndos; // number of current Undos, made by user
+
   TDF_Label                _current;
   bool                     _autoFill;  
 
@@ -257,6 +265,8 @@ public:
   virtual CORBA::Short StudyId();
   virtual void  StudyId(CORBA::Short id);
 
+  static SALOMEDS::Study_ptr GetStudy(const TDF_Label theLabel, CORBA::ORB_ptr orb);
+
   static void IORUpdated(const Handle(SALOMEDS_IORAttribute) theAttribute, CORBA::ORB_ptr orb);
 
   virtual void UpdateIORLabelMap(const char* anIOR, const char* aLabel);
@@ -277,5 +287,15 @@ public:
   virtual void Close();
 
   void EnableUseCaseAutoFilling(CORBA::Boolean isEnabled) { _autoFill = isEnabled; }
+
+  // postponed destroying of CORBA object functionality
+  virtual void AddPostponed(const char* theIOR);
+
+  virtual void AddCreatedPostponed(const char* theIOR);
+
+  virtual void RemovePostponed(const CORBA::Long theUndoLimit); // removes postponed IORs of old transaction
+                                                        // if theUndoLimit==0, removes all
+  virtual void UndoPostponed(const CORBA::Long theWay); // theWay = 1: resurrect objects,
+                                                // theWay = -1: get back to the list of postponed
 };
 #endif
index 7eb9b5545d549059e0fad11cf9e502f6e5c12b24..a5134a76f19690450ff36fc9f1e04a89717f88ea 100644 (file)
@@ -231,11 +231,11 @@ void SALOMEDS_TableOfIntegerAttribute::Restore(const Handle(TDF_Attribute)& with
   myNbColumns = aTable->myNbColumns;
   myTitle = aTable->myTitle;
   
-  for(anIndex = 1; anIndex <= aTable->GetNbRows();anIndex++) {
-    SetRowTitle(anIndex,aTable->GetRowTitle(anIndex));
-  }
+  for(anIndex = 1; anIndex <= aTable->GetNbRows();anIndex++)
+    myRows->Append(aTable->GetRowTitle(anIndex));
+
   for(anIndex = 1; anIndex <= aTable->GetNbColumns(); anIndex++) 
-    SetColumnTitle(anIndex, aTable->GetColumnTitle(anIndex));
+    myCols->Append(aTable->GetColumnTitle(anIndex));
 }
 
 Handle(TDF_Attribute) SALOMEDS_TableOfIntegerAttribute::NewEmpty() const
@@ -258,11 +258,10 @@ void SALOMEDS_TableOfIntegerAttribute::Paste(const Handle(TDF_Attribute)& into,
   aTable->myNbRows = myNbRows;
   aTable->myNbColumns = myNbColumns;
 
-  for(anIndex = 1; anIndex <= GetNbRows();anIndex++) {
-    aTable->SetRowTitle(anIndex,GetRowTitle(anIndex));
-  }
+  for(anIndex = 1; anIndex <= GetNbRows();anIndex++)
+    aTable->myRows->Append(GetRowTitle(anIndex));
   for(anIndex = 1; anIndex <= GetNbColumns(); anIndex++) 
-    aTable->SetColumnTitle(anIndex, GetColumnTitle(anIndex));
+    aTable->myCols->Append(GetColumnTitle(anIndex));
 }
 
 
index 4d6ae31c1c9aff560d106ab4f4550703c00b2030..d12b58bb2f84c239632f75f7812b58ead84995cb 100644 (file)
@@ -232,11 +232,11 @@ void SALOMEDS_TableOfRealAttribute::Restore(const Handle(TDF_Attribute)& with)
   myNbColumns = aTable->myNbColumns;
   myTitle = aTable->myTitle;
   
-  for(anIndex = 1; anIndex <= aTable->GetNbRows();anIndex++) {
-    SetRowTitle(anIndex,aTable->GetRowTitle(anIndex));
-  }
+  for(anIndex = 1; anIndex <= aTable->GetNbRows();anIndex++)
+    myRows->Append(aTable->GetRowTitle(anIndex));
+
   for(anIndex = 1; anIndex <= aTable->GetNbColumns(); anIndex++) 
-    SetColumnTitle(anIndex, aTable->GetColumnTitle(anIndex));
+    myCols->Append(aTable->GetColumnTitle(anIndex));
 }
 
 Handle(TDF_Attribute) SALOMEDS_TableOfRealAttribute::NewEmpty() const
@@ -259,11 +259,10 @@ void SALOMEDS_TableOfRealAttribute::Paste(const Handle(TDF_Attribute)& into,
   aTable->myNbRows = myNbRows;
   aTable->myNbColumns = myNbColumns;
 
-  for(anIndex = 1; anIndex <= GetNbRows();anIndex++) {
-    aTable->SetRowTitle(anIndex,GetRowTitle(anIndex));
-  }
+  for(anIndex = 1; anIndex <= GetNbRows();anIndex++)
+    aTable->myRows->Append(GetRowTitle(anIndex));
   for(anIndex = 1; anIndex <= GetNbColumns(); anIndex++) 
-    aTable->SetColumnTitle(anIndex, GetColumnTitle(anIndex));
+    aTable->myCols->Append(GetColumnTitle(anIndex));
 }
 
 
index 486cee1927df79580701cd39c8ea510cc0b5f931..737f1f752fde4b23930e765f300b65ef56a371a0 100644 (file)
@@ -231,11 +231,11 @@ void SALOMEDS_TableOfStringAttribute::Restore(const Handle(TDF_Attribute)& with)
   myNbColumns = aTable->myNbColumns;
   myTitle = aTable->myTitle;
   
-  for(anIndex = 1; anIndex <= aTable->GetNbRows();anIndex++) {
-    SetRowTitle(anIndex,aTable->GetRowTitle(anIndex));
-  }
+  for(anIndex = 1; anIndex <= aTable->GetNbRows();anIndex++)
+    myRows->Append(aTable->GetRowTitle(anIndex));
+
   for(anIndex = 1; anIndex <= aTable->GetNbColumns(); anIndex++) 
-    SetColumnTitle(anIndex, aTable->GetColumnTitle(anIndex));
+    myCols->Append(aTable->GetColumnTitle(anIndex));
 }
 
 Handle(TDF_Attribute) SALOMEDS_TableOfStringAttribute::NewEmpty() const
@@ -258,11 +258,10 @@ void SALOMEDS_TableOfStringAttribute::Paste(const Handle(TDF_Attribute)& into,
   aTable->myNbRows = myNbRows;
   aTable->myNbColumns = myNbColumns;
 
-  for(anIndex = 1; anIndex <= GetNbRows();anIndex++) {
-    aTable->SetRowTitle(anIndex,GetRowTitle(anIndex));
-  }
+  for(anIndex = 1; anIndex <= GetNbRows();anIndex++)
+    aTable->myRows->Append(GetRowTitle(anIndex));
   for(anIndex = 1; anIndex <= GetNbColumns(); anIndex++) 
-    aTable->SetColumnTitle(anIndex, GetColumnTitle(anIndex));
+    aTable->myCols->Append(GetColumnTitle(anIndex));
 }
 
 
index 0634892d90cc7b4a3079308090ee6cd077a3e09a..e20546601cf47dc23bbe639b126244d89fe31990 100644 (file)
@@ -20,17 +20,17 @@ msgstr ""
 #---------------
 
 msgid "INF_VERSION"
-msgstr "Version 1.2c"
+msgstr "Version 1.3.0"
 
 msgid "INF_COPYRIGHT"
-msgstr "Copyright (C) 2003, CEA/DEN, EDF R&D"
+msgstr "  "
 
 msgid "INF_LICENSE"
-msgstr "All rights reserved"
+msgstr "  "
 
 #: SALOMEGUI_AboutDlg.cxx:42
 msgid "ABOUT_TLT"
-msgstr "About SALOME Professional"
+msgstr "About SALOME"
 
 #: QAD_Config.cxx:84
 msgid "MEN_APPNAME"
@@ -38,8 +38,8 @@ msgstr "salome"
 
 #: QAD_Application.cxx:133
 msgid "QAD_Application::APP_DEFAULTTITLE"
-msgstr "SALOME Professional 1.2c"
+msgstr "SALOME 1.3.0"
 
 #: QAD_Desktop.cxx:424
 msgid "QAD_Desktop::DESK_DEFAULTTITLE"
-msgstr "SALOME Professional 1.2c"
\ No newline at end of file
+msgstr "SALOME 1.3.0"
index 0c513016ac4a32a89aecb57e788521e038e0aa6b..08d0682d339d979951d6a93f12968f1fde08f402 100644 (file)
@@ -25,7 +25,7 @@
 #  Module : SALOME
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
@@ -43,7 +43,6 @@ EXPORT_HEADERS = \
                   QAD_FileDlg.h \
                   QAD_FileValidator.h \
                  QAD_Help.h \
-                 QAD_HelpWindow.h \
                  QAD_PyInterp.h \
                  QAD_LeftFrame.h \
                  QAD_ListMenuIdAction.h \
@@ -99,7 +98,7 @@ EXPORT_HEADERS = \
                   SALOMEGUI_SetValueDlg.h \
                   SALOMEGUI_SetupCurveDlg.h \
                   SALOMEGUI_CloseDlg.h
-                  
+
 
 # .po files to transform in .qm
 PO_FILES = \
@@ -124,7 +123,6 @@ LIB_SRC =     \
                   QAD_FileDlg.cxx \
                   QAD_FileValidator.cxx \
                  QAD_Help.cxx \
-                 QAD_HelpWindow.cxx \
                  PyInterp_base.cxx \
                  QAD_PyInterp.cxx \
                  QAD_PyInterp_mono.cxx \
@@ -176,7 +174,7 @@ LIB_SRC =     \
                  SALOME_DataMapIteratorOfDataMapOfIOMapOfInteger_0.cxx \
                  SALOMEGUI_TrihedronSizeDlg.cxx \
                  SALOMEGUI_ExternalBrowserDlg.cxx \
-                 SALOMEGUI_LoadStudiesDlg.cxx \
+                 SALOMEGUI_LoadStudiesDlg.cxx \
                   SALOMEGUI_TableDlg.cxx \
                   SALOMEGUI_NameDlg.cxx \
                   SALOMEGUI_SetValueDlg.cxx \
@@ -191,7 +189,6 @@ LIB_MOC = \
                  QAD_Desktop.h \
                   QAD_DirListDlg.h \
                   QAD_FileDlg.h \
-                 QAD_HelpWindow.h \
                  QAD_ListView.h \
                  QAD_ObjectBrowser.h \
                  QAD_Operation.h \
index 2faadca512aca7289cf257cfdcd6835863d2fc76..f9d03e760673cebd5b6486735449b8543b28a1f8 100644 (file)
@@ -103,8 +103,14 @@ void init_python()
    */
 
   PyInterp_base::salome_shared_modules_module =PyImport_ImportModule("salome_shared_modules");
+  if(PyInterp_base::salome_shared_modules_module == NULL){
+      MESSAGE("init_python: problem with salome_shared_modules import");
+      PyErr_Print();
+      PyErr_Clear();
+      salomeReleaseLock();
+      return;
+  }
   SCRUTE(PyInterp_base::salome_shared_modules_module->ob_refcnt);
-
   salomeReleaseLock();
 }
 
@@ -135,9 +141,17 @@ int compile_command(const char *command,PyObject *context)
   if (v == NULL)
     {
       /*
-       * Error encountered. It could be SyntaxError
+       * Error encountered. It should be SyntaxError
+       * so we don't write out traceback
        */
-      PyErr_Print();
+      PyObject *exception,*value,*tb;
+      PyErr_Fetch(&exception, &value, &tb);
+      PyErr_NormalizeException(&exception, &value, &tb);
+      PyErr_Display(exception, value, NULL);
+      Py_XDECREF(exception);
+      Py_XDECREF(value);
+      Py_XDECREF(tb);
+
       return -1;
     }
   else if (v == Py_None)
@@ -213,8 +227,8 @@ void PyInterp_base::initialize()
   if(m == NULL)
     {
       MESSAGE("Problem...");
-      ASSERT(0);
       PyErr_Print();
+      ASSERT(0);
       salomeReleaseLock(); 
       return;
     }   
index 935f2c4e7751e8259280bbe2d07360fc70db32c8..439362886164eb87beb35a7239e62b78b4c572a6 100644 (file)
@@ -396,7 +396,7 @@ const QString& QAD_Application::getStudyExtension() const
 */
 bool QAD_Application::isStudyOpened( const QString& studyName )
 {
-  QString Name = QAD_Tools::getFileNameFromPath( studyName, false );
+  QString Name = QAD_Tools::getFileNameFromPath( studyName, true );
   return (( getStudyByName( studyName ) != NULL ) || (getStudyByName( Name ) != NULL )); 
 }
 
@@ -464,7 +464,7 @@ void QAD_Application::helpAbout()
 void QAD_Application::helpSearch()
 {
   /* just calls QAD_Desktop::helpSearch() but can have own implementation */
-  getDesktop()->helpSearch();
+//  getDesktop()->helpSearch();
 }
 
 /*!
@@ -473,7 +473,7 @@ void QAD_Application::helpSearch()
 void QAD_Application::helpContents()
 {
   /* just calls QAD_Desktop::helpContents() but can have own implementation */
-  getDesktop()->helpContents();
+//  getDesktop()->helpContents();
 }
 
 /*!
@@ -801,7 +801,7 @@ QAD_Study* QAD_Application::newStudy()
     while ( exist ) {
       exist = false;
       for (unsigned int ind = 0; ind < List->length();ind++) {
-       QString NameS = QAD_Tools::getFileNameFromPath( QString( List[ind] ), false );
+       QString NameS = QAD_Tools::getFileNameFromPath( QString( List[ind] ), true );
        if ( NameS.compare( StudyName ) == 0 ) {
          StudyName = getDesktop()->getNewStudyName();
          exist = true;
@@ -914,8 +914,9 @@ QAD_Study* QAD_Application::openStudy( const QString& fileName )
       /* open StudyDS */
       SALOMEDS::Study_var aStudy = myStudyMgr->Open((char*) name.latin1());
 
+      //MPV: name of the study is set in the study manager now
       //NRI DEBUG : 11/02/2002
-      aStudy->Name( QAD_Tools::getFileNameFromPath(name,false) );
+      //aStudy->Name( QAD_Tools::getFileNameFromPath(name,true) );
 
       /* create QAD study */            
       openStudy = new QAD_Study( this, aStudy, fileName );
index 3703c9d4c7ac496b65e01e3c6f61cee3dc443a0c..2c911191725392f94702531c3de640564910a1d3 100644 (file)
@@ -53,7 +53,7 @@ using namespace std;
 #include "QAD_ObjectBrowser.h"
 #include "QAD_Resource.h"
 #include "QAD_FileDlg.h"
-#include "QAD_HelpWindow.h"
+//NRI #include "QAD_HelpWindow.h"
 #include "QAD_DirListDlg.h"
 #include "QAD_WaitCursor.h"
 #include "SALOMEGUI_OpenWith.h"
@@ -66,6 +66,7 @@ using namespace std;
 #include "SALOME_ListIteratorOfListIO.hxx"
 #include "SALOMEGUI_AboutDlg.h"
 #include "SALOMEGUI_ViewChoiceDlg.h"
+#include "SALOMEGUI_SetValueDlg.h"
 #include "utilities.h"
 
 #include "SALOMEGUI_CloseDlg.h"
@@ -103,6 +104,8 @@ using namespace std;
 #include <OSD_Function.hxx>
 #include <TCollection_AsciiString.hxx>
 
+static const char* SEPARATOR    = ":";
+
 extern "C"
 {
 # include <string.h>
@@ -111,6 +114,18 @@ extern "C"
 QAD_ResourceMgr* QAD_Desktop::resourceMgr = 0;
 QPalette*       QAD_Desktop::palette = 0;
 
+static QString createString( int theItemId, int thePosId ) 
+{
+  QString aRetString = QString("item-id=");
+  QString aString;
+  QString aItemId = aString.setNum(theItemId);
+  QString aPosId = aString.setNum(thePosId);
+  aRetString = aRetString + '"'; aRetString = aRetString + aItemId; aRetString = aRetString + '"'; 
+  aRetString = aRetString + " pos-id="; aRetString = aRetString + '"';
+  aRetString = aRetString + aPosId; 
+  aRetString = aRetString + '"'; aRetString = aRetString + ">";
+  return aRetString;
+}
 
 /*!
     Creates the resource manager [ static ]
@@ -177,7 +192,7 @@ myStatusBar(0),
 myActiveApp(0),
 myActiveStudy(0),
 myCntUntitled(0),
-myHelpWindow(0),
+//NRImyHelpWindow(0),
 myDefaultTitle( tr("DESK_DEFAULTTITLE") ),
 myQueryClose( true )
 {
@@ -267,14 +282,27 @@ myQueryClose( true )
     /* find component icon */
     QString iconfile = strdup(list_composants[ind].moduleicone) ;
     QString modulename = strdup(list_composants[ind].modulename) ;
+    QString moduleusername = strdup(list_composants[ind].moduleusername) ;
+
+    //    MESSAGE ( " MODULE = " << modulename )
+    //    MESSAGE ( " MODULE icon = " << iconfile )
+    //    MESSAGE ( " MODULE username = " << moduleusername )
+
+    if ( mapComponentName.contains( moduleusername ) ) {
+      QMessageBox::warning( this, tr("WRN_WARNING"), QString( moduleusername + " is already associated with " + mapComponentName[moduleusername] + ".\nPlease, change the component username of " + modulename) , tr ("BUT_OK") );
+      continue;
+    }
+    mapComponentName.insert( moduleusername, modulename );
+      
     resDir = resMgr->findFile(iconfile,modulename) ;
     if (resDir)
       {
+       MESSAGE ( "resDir" << resDir )
        //resDir = QAD_Tools::addSlash(resDir) ;
        //QPixmap Icone(resDir+iconfile) ;
        QPixmap Icone( QAD_Tools::addSlash( resDir ) + iconfile );
        QToolButton * toolb = 
-         new QToolButton( QIconSet( Icone ), modulename, QString::null, this, 
+         new QToolButton( QIconSet( Icone ), moduleusername, QString::null, this, 
                           SLOT( onButtonActiveComponent () ),tbComponent );
        toolb->setToggleButton( true );
        myComponentButton.append(toolb);
@@ -287,7 +315,7 @@ myQueryClose( true )
       }
 
     if ( !QString(list_composants[ind].modulename).isEmpty() )
-      myCombo->insertItem( strdup(list_composants[ind].modulename) );
+      myCombo->insertItem( strdup(list_composants[ind].moduleusername) );
 
   }
 
@@ -332,8 +360,8 @@ QAD_Desktop::~QAD_Desktop ()
   myToolBarAction.clear();
   myApps.clear();
   delete resourceMgr;
-  if (myHelpWindow)
-    myHelpWindow->close();
+//NRI   if (myHelpWindow)
+//     myHelpWindow->close();
   resourceMgr = 0;
   QAD_Application::desktop = 0;
 }
@@ -713,6 +741,8 @@ void QAD_Desktop::createActions()
     QAD_ASSERT(connect( myQAG, SIGNAL(selected(QActionP * )), this, SLOT(onDefaultViewer(QActionP *) )));
     //VRV: T2.5 - add default viewer
 
+    myPrefPopup.insertSeparator();
+
     QActionP* viewerTrihedronAction = new QActionP( "", tr("MEN_DESK_PREF_VIEWER_TRIHEDRON"), 0, this );
     QAD_ASSERT(connect( viewerTrihedronAction, SIGNAL(activated()), this, SLOT(onViewerTrihedron() )));
     viewerTrihedronAction->addTo( &myPrefPopup );
@@ -741,6 +771,12 @@ void QAD_Desktop::createActions()
     ASCIISaveAction->addTo( &myPrefPopup );
     myStdActions.insert( PrefASCIISave, ASCIISaveAction );
 
+    /* Undo level */
+    QActionP* UndoLevelAction = new QActionP( "", tr("MEN_DESK_PREF_UNDO_LEVEL"), 0, this );
+    QAD_ASSERT(connect( UndoLevelAction, SIGNAL(activated()), this, SLOT(onUndoLevel() )));
+    UndoLevelAction->addTo( &myPrefPopup );
+    myStdActions.insert( PrefUndoLevelId, UndoLevelAction );
+
     myPrefPopup.insertSeparator();
     
     /* External Browser */
@@ -796,7 +832,7 @@ void QAD_Desktop::createActions()
     QActionP* objectBrowserCHRONO_SORTAction = new QActionP( "", tr("MEN_DESK_PREF_OBJECTBROWSER_CHRONO_SORT"), 0, this, 0, true );
     QAD_ASSERT(connect( objectBrowserCHRONO_SORTAction, SIGNAL(activated()), this, SLOT(onObjectBrowser() )));
     objectBrowserCHRONO_SORTAction->setToggleAction(true);
-    QString showSORT = QAD_CONFIG->getSetting("ObjectBrowser:CHRONO_SORT");
+    QString showSORT = QAD_CONFIG->getSetting("ObjectBrowser:ChronologicalSort");
     
     if ( showSORT.compare( aTrueQString ) == 0 )
       objectBrowserCHRONO_SORTAction->setOn(true) ;
@@ -806,6 +842,34 @@ void QAD_Desktop::createActions()
     objectBrowserCHRONO_SORTAction->addTo( &myObjBrowserPopup );
     myStdActions.insert( PrefObjectBrowserCHRONO_SORTId, objectBrowserCHRONO_SORTAction ) ;
     
+    /* Show or don't Show UseCase browser */
+    QActionP* objectBrowserShowUseCaseAction = new QActionP( "", tr("MEN_DESK_PREF_OBJECTBROWSER_SHOW_USECASE"), 0, this, 0, true );
+    QAD_ASSERT(connect( objectBrowserShowUseCaseAction, SIGNAL(activated()), this, SLOT(onObjectBrowser() )));
+    objectBrowserShowUseCaseAction->setToggleAction(true);
+    QString showUseCase = QAD_CONFIG->getSetting("ObjectBrowser:ShowUseCaseBrowser");
+    
+    if ( showUseCase.compare( aTrueQString ) == 0 )
+      objectBrowserShowUseCaseAction->setOn(true) ;
+    else
+      objectBrowserShowUseCaseAction->setOn(false) ;
+    
+    objectBrowserShowUseCaseAction->addTo( &myObjBrowserPopup );
+    myStdActions.insert( PrefObjectBrowserShowUseCaseId, objectBrowserShowUseCaseAction ) ;
+
+    /* Resize or don't resize columns automatically */
+    QActionP* objectBrowserNoAutoSizeAction = new QActionP( "", tr("MEN_DESK_PREF_OBJECTBROWSER_NO_AUTOSIZE"), 0, this, 0, true );
+    QAD_ASSERT(connect( objectBrowserNoAutoSizeAction, SIGNAL(activated()), this, SLOT(onObjectBrowser() )));
+    objectBrowserNoAutoSizeAction->setToggleAction(true);
+    QString noAutoSize = QAD_CONFIG->getSetting("ObjectBrowser:NoAutoSizeColumns");
+    
+    if ( noAutoSize.compare( aTrueQString ) == 0 )
+      objectBrowserNoAutoSizeAction->setOn(true) ;
+    else
+      objectBrowserNoAutoSizeAction->setOn(false) ;
+    
+    objectBrowserNoAutoSizeAction->addTo( &myObjBrowserPopup );
+    myStdActions.insert( PrefObjectBrowserNoAutoSizeColumnsId, objectBrowserNoAutoSizeAction ) ;
+
     myPrefPopup.insertSeparator();
 
     QActionP* dirAction = new QActionP( "", tr("MEN_DESK_PREF_DIRICTORIES"), ALT+Key_D, this );
@@ -880,12 +944,14 @@ void QAD_Desktop::createActions()
     id = myHelpPopup.insertSeparator();
                                                   
     /* GUI contents */
-    QActionP* helpContentsActionGUI = new QActionP( "", tr("MEN_DESK_HELP_GUICONTENTS"), 0, this );
-    helpContentsActionGUI->setStatusTip ( tr("PRP_DESK_HELP_GUICONTENTS") );
-    QAD_ASSERT(connect( helpContentsActionGUI, SIGNAL(activated()),
-                       this, SLOT( onHelpContentsGUI() )));
-    helpContentsActionGUI->addTo( &myHelpPopup );
-    myStdActions.insert( HelpContentsId , helpContentsActionGUI );
+    // NRI : Temporary commented
+
+//     QActionP* helpContentsActionGUI = new QActionP( "", tr("MEN_DESK_HELP_GUICONTENTS"), 0, this );
+//     helpContentsActionGUI->setStatusTip ( tr("PRP_DESK_HELP_GUICONTENTS") );
+//     QAD_ASSERT(connect( helpContentsActionGUI, SIGNAL(activated()),
+//                     this, SLOT( onHelpContentsGUI() )));
+//     helpContentsActionGUI->addTo( &myHelpPopup );
+//     myStdActions.insert( HelpContentsId , helpContentsActionGUI );
 
     /* TUI contents */
     QActionP* helpContentsActionTUI = new QActionP( "", tr("MEN_DESK_HELP_TUICONTENTS"), 0, this );
@@ -1152,6 +1218,18 @@ QAD_Study* QAD_Desktop::findStudy( SALOMEDS::Study_ptr theStudy )
   return 0;
 }
 
+/*!
+  Gets value of max undo level for SALOMEDS::Study's from preferences
+*/
+int QAD_Desktop::getUndoLevel()
+{
+  static int MAX_UNDO = 10;
+  int anUndoLevel = MAX_UNDO;
+  QString aLevel = QAD_CONFIG->getSetting("Desktop:UndoLevel");
+  if(!aLevel.isEmpty()) anUndoLevel = aLevel.toInt();
+  return anUndoLevel;
+}
+
 /*!
     Returns current active application
 */
@@ -1188,18 +1266,66 @@ Engines::Component_var QAD_Desktop::getEngine(const char *containerName,
   return eng._retn();
 }
 
-/*!
-  gets application Help Window (and creates if necessary)
-*/
-QAD_HelpWindow* QAD_Desktop::getHelpWindow()
+QString QAD_Desktop::getComponentName(const char *componentUserName)
 {
-  if (!myHelpWindow) {
-    myHelpWindow = new QAD_HelpWindow();  
-    connect(myHelpWindow, SIGNAL(helpWindowClosed()), this, SLOT(onHelpWindowClosed()));
-  }
-  return myHelpWindow;
+  if ( mapComponentName.contains(componentUserName) )
+    return mapComponentName[ componentUserName ] ;
+  else
+    return "";
 }
 
+QString QAD_Desktop::getComponentUserName(const char *componentName)
+{
+  QMap<QString,QString>::Iterator it;
+  for( it = mapComponentName.begin(); it != mapComponentName.end(); ++it )
+    if (it.data() == componentName )
+      return it.key();
+  return "";
+}
+
+// /*!
+//   gets application Help Window (and creates if necessary)
+// */
+// QAD_HelpWindow* QAD_Desktop::getHelpWindow()
+// {
+//   if (!myHelpWindow) {
+//     myHelpWindow = new QAD_HelpWindow();  
+    
+//     QMap<QString,QString>::Iterator it;
+//     for( it = mapComponentName.begin(); it != mapComponentName.end(); ++it ) {
+//       QCString dir;
+//       QString root;
+      
+//       // look for index.html and set homeDir
+//       // 1. $(MODULE_ROOT_DIR)/doc/index.html
+//       // 2. $(MODULE_ROOT_DIR)/doc/html/index.html
+//       // 3. $(MODULE_ROOT_DIR)/doc/html/html/index.html
+
+//       if (dir = getenv( QString( it.data() + "_ROOT_DIR")) ) {
+//     root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + QAD_Tools::addSlash("share")  + QAD_Tools::addSlash("salome")  + "doc" );
+//     if ( QFileInfo( root + "index.html" ).exists() ) {
+//       helpContext( root + "index.html", "" );
+//     }
+//     else {
+//       root = QAD_Tools::addSlash( root + "html" );
+//       if ( QFileInfo( root + "index.html" ).exists() ) {
+//         helpContext( root + "index.html", "" );
+//       }
+//       else {
+//         root = QAD_Tools::addSlash( root + "html" );
+//         if ( QFileInfo( root + "index.html" ).exists() ) {
+//           helpContext( root + "index.html", "" );
+//         }
+//       }
+//     }
+//       }
+//     }
+    
+//     connect(myHelpWindow, SIGNAL(helpWindowClosed()), this, SLOT(onHelpWindowClosed()));
+//   }
+//   return myHelpWindow;
+// }
+
 /*!
     Called when desktop is closing
 */
@@ -1371,8 +1497,8 @@ void QAD_Desktop::onLoadStudy()
          //don't ask user to remove study permanently
          if (app->getStudyByName ( name ) != NULL)
            onCloseStudy ( app->getStudyByName ( name ), false );
-         else if (app->getStudyByName ( QAD_Tools::getFileNameFromPath( name, false )) != NULL)
-           onCloseStudy ( app->getStudyByName ( QAD_Tools::getFileNameFromPath( name, false )), false );
+         else if (app->getStudyByName ( QAD_Tools::getFileNameFromPath( name, true )) != NULL)
+           onCloseStudy ( app->getStudyByName ( QAD_Tools::getFileNameFromPath( name, true )), false );
        }
       appFound = true;
       
@@ -1460,8 +1586,7 @@ void QAD_Desktop::onOpenStudy()
     SALOMEDS::ListOfOpenStudies_var List = myStudyMgr->GetOpenStudies();
     for (unsigned int ind = 0; ind < List->length();ind++) {
       QString NameExistingStudy(List[ind]);
-      QString NameOpeningStudy = QAD_Tools::getFileNameFromPath( name, false );
-     
+      QString NameOpeningStudy = QAD_Tools::getFileNameFromPath( name, true );
       if ( NameExistingStudy.compare( NameOpeningStudy ) == 0 ) {
        if ( QAD_MessageBox::warn2 ( this, tr("WRN_WARNING"),
                                     tr("QUE_DOC_ALREADYEXIST").arg( name ),
@@ -1506,8 +1631,8 @@ void QAD_Desktop::onOpenStudy()
                //don't ask user to remove study permanently
                if (app->getStudyByName ( name ) != NULL)
                  onCloseStudy ( app->getStudyByName ( name ), false );
-               else if (app->getStudyByName ( QAD_Tools::getFileNameFromPath( name, false )) != NULL)
-                 onCloseStudy ( app->getStudyByName ( QAD_Tools::getFileNameFromPath( name, false )), false );
+               else if (app->getStudyByName ( QAD_Tools::getFileNameFromPath( name, true )) != NULL)
+                 onCloseStudy ( app->getStudyByName ( QAD_Tools::getFileNameFromPath( name, true )), false );
            }
            appFound = true;
 
@@ -1520,7 +1645,7 @@ void QAD_Desktop::onOpenStudy()
                                      tr("BUT_OK") );
            } else if (myActiveComp != "") {
              QApplication::setOverrideCursor( Qt::waitCursor );
-             loadComponentData(myActiveComp);
+             loadComponentData(mapComponentName[myActiveComp]);
              openStudy->updateObjBrowser(true);
              QApplication::restoreOverrideCursor();
            }
@@ -1541,14 +1666,14 @@ void QAD_Desktop::onOpenStudy()
 bool QAD_Desktop::loadComponentData( const QString& compName )
 {
   // Open component's data in active study if any
-  MESSAGE("loadComponentData(): Opening component data")
+  MESSAGE("loadComponentData(): Opening " << compName << " component data ")
   if (!myActiveStudy) {
     MESSAGE("loadComponentData(): No active study exists")
     return false;
   }
 
   Engines::Component_var comp ;
-  if ( compName.compare("Supervision") == 0 ) {
+  if ( compName.compare("SUPERV") == 0 ) {
     comp = getEngine( "SuperVisionContainer", compName) ;
   }
   else {
@@ -1561,7 +1686,7 @@ bool QAD_Desktop::loadComponentData( const QString& compName )
   }
 
   SALOMEDS::Study_var aStudy = myActiveStudy->getStudyDocument();
-  SALOMEDS::SComponent_var SCO = SALOMEDS::SComponent::_narrow(aStudy->FindObject(compName));
+  SALOMEDS::SComponent_var SCO = SALOMEDS::SComponent::_narrow(aStudy->FindObject( getComponentUserName(compName) ));
           
   if (!SCO->_is_nil()) {
     if (!CORBA::is_nil(comp)) {
@@ -1569,10 +1694,10 @@ bool QAD_Desktop::loadComponentData( const QString& compName )
       if (!CORBA::is_nil(driver)) {
        SALOMEDS::StudyBuilder_var  B = aStudy->NewBuilder();
        if (!CORBA::is_nil(B)) {
-         QAD_Operation* op = new QAD_Operation( myActiveStudy );
-         op->start();
+//       QAD_Operation* op = new QAD_Operation( myActiveStudy );
+//       op->start();
          B->LoadWith(SCO,driver);
-         op->finish();
+//       op->finish();
        } else {
          return false;
        }
@@ -1783,13 +1908,13 @@ void QAD_Desktop::onCascade()
       it.current()->resize((int)(0.8*w), (int)(0.8*h));
 }
 
-/*!
-  called when help window closed
-*/
-void QAD_Desktop::onHelpWindowClosed()
-{
-  myHelpWindow = 0;
-}
+// /*!
+//   called when help window closed
+// */
+// void QAD_Desktop::onHelpWindowClosed()
+// {
+//   myHelpWindow = 0;
+// }
 
 /*!
     Called when 'view status bar' option
@@ -1964,8 +2089,8 @@ void QAD_Desktop::onNewWindow3d()
 class RunBrowser: public QThread {
 public:
   
-  RunBrowser(QString theApp, QString theParams, QString theHelpFile): 
-    myApp(theApp), myParams(theParams), myHelpFile(theHelpFile), myStatus(0) {};
+  RunBrowser(QString theApp, QString theParams, QString theHelpFile, QString theContext=NULL): 
+    myApp(theApp), myParams(theParams), myHelpFile("file:" + theHelpFile + theContext), myStatus(0) {};
  
   virtual void run()
   {
@@ -2007,52 +2132,29 @@ private:
     Called on 'help\contents'
 */
 void QAD_Desktop::onHelpContents()
-{
+{  if (myActiveComp == "")
+    myActiveComp = getComponentUserName( "KERNEL" ); //NRI "Salome";
 
-  // look for main.html and set homeDir
-  // 1. $(SALOME_ROOT_DIR)/doc/main.html
-  // 2. $(SALOME_ROOT_DIR)/doc/html/main.html
-  // 3. $(SALOME_ROOT_DIR)/doc/html/html/main.html
-  // 4. /usr/local/doc/html/main.html
-  
   QCString dir;
   QString root;
   QString homeDir;
-  
-  if ( (dir = getenv("SALOME_ROOT_DIR")) ) {
-    root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + "doc" );
-    if ( QFileInfo( root + "main.html" ).exists() ) {
+  if (dir = getenv( getComponentName( myActiveComp ) + "_ROOT_DIR")) {
+    root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + QAD_Tools::addSlash("share")  + QAD_Tools::addSlash("salome")  + QAD_Tools::addSlash("doc") + "html" );
+    if ( QFileInfo( root + "index.html" ).exists() ) {
       homeDir = root;
-    }
-    else {
-      root = QAD_Tools::addSlash( root + "html" );
-      if ( QFileInfo( root + "main.html" ).exists() ) {
-       homeDir = root;
-      }
-      else {
-       root = QAD_Tools::addSlash( root + "html" );
-       if ( QFileInfo( root + "main.html" ).exists() ) {
-         homeDir = root;
-       }
-      }
-    }
-  }
-  if ( root.isEmpty() ) {
-    if ( QFileInfo( "/usr/local/doc/html/main.html" ).exists() ) {
-      homeDir = "/usr/local/doc/html/";
+    } else {
+      QMessageBox::warning( this, tr("WRN_WARNING"), 
+                           QString( "%1index.html doesn't exist." ).arg(root), tr ("BUT_OK") );
+      return;
     }
   }
-  if ( root.isEmpty() ) 
-    root = "./doc/";
-  
-  QString helpFile = QFileInfo( homeDir + "main.html" ).absFilePath(); 
-  
+
+  QString helpFile = QFileInfo( homeDir + "index.html" ).absFilePath();   
   QString anApp = QAD_CONFIG->getSetting("ExternalBrowser:Application");
   QString aParams = QAD_CONFIG->getSetting("ExternalBrowser:Parameters");
    
   RunBrowser* rs = new RunBrowser(anApp, aParams, helpFile);
   rs->start();
-    
 }
 
 /*!
@@ -2060,38 +2162,31 @@ void QAD_Desktop::onHelpContents()
 */
 void QAD_Desktop::onHelpContentsGUI()
 {
-
-  // look for main.html and set homeDir
-  // 1. $(SALOME_ROOT_DIR)/doc/guihtml/guihtml/salomedoc.html
-  // 2. /usr/local/doc/guihtml/salomedoc.html
+//   QCString dir;
+//   QString root;
+//   QString homeDir;
   
-  QCString dir;
-  QString root;
-  QString homeDir;
-  
-  if ( (dir = getenv("SALOME_ROOT_DIR")) ) {
-    root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + "doc" );
-    root = QAD_Tools::addSlash( root + "guihtml" );
-    root = QAD_Tools::addSlash( root + "guihtml" );
-    if ( QFileInfo( root + "salomedoc.html" ).exists() ) {
-      homeDir = root;
-    }
-  }
-  if ( root.isEmpty() ) {
-    if ( QFileInfo( "/usr/local/doc/guihtml/salomedoc.html" ).exists() ) {
-      homeDir = "/usr/local/doc/guihtml/";
-    }
-  }
-  if ( root.isEmpty() ) 
-    root = "./doc/";
-  
-  QString helpFile = QFileInfo( homeDir + "salomedoc.html" ).absFilePath(); 
-  
-  QString anApp = QAD_CONFIG->getSetting("ExternalBrowser:Application");
-  QString aParams = QAD_CONFIG->getSetting("ExternalBrowser:Parameters");
+//   if ( (dir = getenv("KERNEL_ROOT_DIR")) ) {
+//     root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + "doc" );
+//     root = QAD_Tools::addSlash( root + "guihtml" );
+//     root = QAD_Tools::addSlash( root + "guihtml" );
+//     if ( QFileInfo( root + "salomedoc.html" ).exists() ) {
+//       homeDir = root;
+//     }
+//   }
+//   if ( root.isEmpty() ) {
+//     if ( QFileInfo( "/usr/local/doc/guihtml/salomedoc.html" ).exists() ) {
+//       homeDir = "/usr/local/doc/guihtml/";
+//     }
+//   }
+//   if ( root.isEmpty() ) 
+//     root = "./doc/";
+//   QString helpFile = QFileInfo( homeDir + "salomedoc.html" ).absFilePath(); 
+//   QString anApp = QAD_CONFIG->getSetting("ExternalBrowser:Application");
+//   QString aParams = QAD_CONFIG->getSetting("ExternalBrowser:Parameters");
    
-  RunBrowser* rs = new RunBrowser(anApp, aParams, helpFile);
-  rs->start();
+//   RunBrowser* rs = new RunBrowser(anApp, aParams, helpFile);
+//   rs->start();
     
 }
 
@@ -2100,31 +2195,23 @@ void QAD_Desktop::onHelpContentsGUI()
 */
 void QAD_Desktop::onHelpContentsTUI()
 {
+  if (myActiveComp == "")
+    myActiveComp = getComponentUserName( "KERNEL" ); //NRI "Salome";
 
-  // look for main.html and set homeDir
-  // 1. $(SALOME_ROOT_DIR)/doc/html/html/index.html
-  // 2. /usr/local/doc/html/index.html
-  
   QCString dir;
   QString root;
   QString homeDir;
-  
-  if ( (dir = getenv("SALOME_ROOT_DIR")) ) {
-    root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + "doc" );
-    root = QAD_Tools::addSlash( root + "html" );
-    root = QAD_Tools::addSlash( root + "html" );
+  if (dir = getenv( getComponentName( myActiveComp ) + "_ROOT_DIR")) {
+    root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + QAD_Tools::addSlash("share")  + QAD_Tools::addSlash("salome")  + QAD_Tools::addSlash("doc") + "html" );
     if ( QFileInfo( root + "index.html" ).exists() ) {
       homeDir = root;
+    } else {
+      QMessageBox::warning( this, tr("WRN_WARNING"), 
+                           QString( "%1index.html doesn't exist." ).arg(root), tr ("BUT_OK") );
+      return;
     }
   }
-  if ( root.isEmpty() ) {
-    if ( QFileInfo( "/usr/local/doc/html/index.html" ).exists() ) {
-      homeDir = "/usr/local/doc/html/";
-    }
-  }
-  if ( root.isEmpty() ) 
-    root = "./doc/";
-  
+
   QString helpFile = QFileInfo( homeDir + "index.html" ).absFilePath(); 
   
   QString anApp = QAD_CONFIG->getSetting("ExternalBrowser:Application");
@@ -2132,19 +2219,18 @@ void QAD_Desktop::onHelpContentsTUI()
    
   RunBrowser* rs = new RunBrowser(anApp, aParams, helpFile);
   rs->start();
-    
 }
 
-/*!
-    Called on 'help\search'
-*/
-void QAD_Desktop::onHelpSearch()
-{
-  if (myActiveApp)
-    myActiveApp->helpSearch();
-  else
-    helpSearch();
-}
+// /*!
+//     Called on 'help\search'
+// */
+// void QAD_Desktop::onHelpSearch()
+// {
+//   if (myActiveApp)
+//     myActiveApp->helpSearch();
+//   else
+//     helpSearch();
+// }
 
 /*!
     Called on 'help\about'
@@ -2381,7 +2467,7 @@ void QAD_Desktop::onOpenWith()
     if (SCO->FindAttribute(anAttr, "AttributeName")) {
       aName = SALOMEDS::AttributeName::_narrow(anAttr);
       name = aName->Value();
-      SALOME_ModuleCatalog::Acomponent_var Comp = myCatalogue->GetComponent( name );
+      SALOME_ModuleCatalog::Acomponent_var Comp = myCatalogue->GetComponent( mapComponentName[name] );
       if ( !Comp->_is_nil() ) {
        
        SALOME_ModuleCatalog::ListOfComponents_var list_type_composants =
@@ -2433,6 +2519,7 @@ void QAD_Desktop::onOpenWith()
 }
 
 typedef bool OneDim1(QAD_Desktop*);
+typedef bool OneDim2(QAD_Desktop*, char*);
 
 /*!
   Called to define settings of component.
@@ -2441,10 +2528,18 @@ void QAD_Desktop::setSettings()
 {
   if (!myActiveComp.isEmpty()) {
     OSD_Function osdF = mySharedLibrary.DlSymb("SetSettings");
-    if ( osdF != NULL ) {
-      OneDim1 (*f1) = (bool (*) (QAD_Desktop*)) osdF;
-      (*f1)(this);
-    }
+    if ( osdF != NULL )
+      if (_islibso)
+       {
+         OneDim1 (*f1) = (bool (*) (QAD_Desktop*)) osdF;
+         (*f1)(this);
+       }
+      else
+       {
+         QString Component =mapComponentName[myActiveComp];
+         OneDim2 (*f1) = (bool (*) (QAD_Desktop*, char*)) osdF;
+         (*f1)(this, (char*)Component.latin1());
+       }
   }
 }
 
@@ -2459,7 +2554,7 @@ bool QAD_Desktop::loadComponent(QString Component)
   QAD_ResourceMgr* resMgr = QAD_Desktop::createResourceManager();
   if ( resMgr ) {
     QString msg;
-    if (!resMgr->loadResources( Component + "GUI", msg ))
+    if (!resMgr->loadResources( Component, msg ))
       {
        //NRI   QCString errMsg;
        //      errMsg.sprintf( "Do not load all resources for module %sGUI.\n" ,
@@ -2473,14 +2568,14 @@ bool QAD_Desktop::loadComponent(QString Component)
   /* Parse xml file */
   myXmlHandler = new QAD_XmlHandler();
   myXmlHandler->setMainWindow(this);
-  if (!myXmlHandler->setComponent(resMgr->resources(Component + "GUI"))) return false;
+  if (!myXmlHandler->setComponent(resMgr->resources( Component ))) return false;
 
-  QString language = resMgr->language( Component + "GUI" );
+  QString language = resMgr->language( Component );
 
   QString ComponentXml = Component + "_" + language + ".xml";
   //ComponentXml = resMgr->resources(Component + "GUI") ;
   //ComponentXml = QAD_Tools::addSlash(ComponentXml) ;
-  ComponentXml = QAD_Tools::addSlash( resMgr->findFile( ComponentXml, Component + "GUI" ) ) + ComponentXml;
+  ComponentXml = QAD_Tools::addSlash( resMgr->findFile( ComponentXml, Component ) ) + ComponentXml;
   QFile file( ComponentXml );
 
   if ( !file.exists() || !file.open( IO_ReadOnly ) )  {
@@ -2497,6 +2592,14 @@ bool QAD_Desktop::loadComponent(QString Component)
   QXmlSimpleReader reader;
   reader.setContentHandler( myXmlHandler );
   reader.setErrorHandler( myXmlHandler );
+
+  bool IsMaxActStudy = myActiveStudy->getActiveStudyFrame()->isMaximized();
+  if (IsMaxActStudy) {
+    QString aSourceData = source.data();
+    aSourceData = changeXmlInputSourceData( aSourceData, Component );
+    source.setData(aSourceData);
+  }
+
   bool ok = reader.parse( source );
   file.close();
   if ( !ok ) {
@@ -2518,44 +2621,67 @@ bool QAD_Desktop::loadComponent(QString Component)
     nbToolbars = myActiveMenus->getToolBarList().count();
   /* Open Shared Library */
   mySharedLibrary = OSD_SharedLibrary();
+  _islibso = false;
 
   QString ComponentLib;
-  QCString dir;
+  QCString libs;
   QFileInfo fileInfo ;
-  bool found = false;
-  if ( dir = getenv("SALOME_SITE_DIR")) {
-    dir = QAD_Tools::addSlash(dir) ;
-    dir = dir + "lib" ;
-    dir = QAD_Tools::addSlash(dir) ;
+  QString fileString ;
+  QString dir;
+
+  if ( libs = getenv("LD_LIBRARY_PATH")) {
+    //    MESSAGE ( " LD_LIBRARY_PATH : " << libs );
+    QStringList dirList = QStringList::split( SEPARATOR, libs, false ); // skip empty entries
+    for ( int i = dirList.count()-1; i >= 0; i-- ) {
+      dir = dirList[ i ];
 #ifdef WNT
-    dir = dir + "lib" + Component.latin1() + "GUI.dll" ;
+      fileString = QAD_Tools::addSlash( dir ) + "lib" + Component + "GUI.dll" ;
 #else
-    dir = dir + "lib" + Component.latin1() + "GUI.so" ;
+      fileString = QAD_Tools::addSlash( dir ) + "lib" + Component + "GUI.so" ;
 #endif
-    MESSAGE ( " GUI library = " << dir )
-    fileInfo.setFile(dir) ;
-    if (fileInfo.exists()) {
-      ComponentLib = fileInfo.fileName() ;
-      found = true;
+    
+      fileInfo.setFile(fileString) ;
+      if (fileInfo.exists()) {
+       //      MESSAGE ( " GUI library = " << fileString );
+       ComponentLib = fileInfo.fileName() ;
+       _islibso = true;
+       break;
+      }
     }
   }
-  
-  if ( (dir = getenv("SALOME_ROOT_DIR")) && !found ) {
-    dir = QAD_Tools::addSlash(dir) ;
-    dir = dir + "lib" ;
-    dir = QAD_Tools::addSlash(dir) ;
+
+  if (!_islibso) // component GUI could be in PyQt, use generic library
+    {
+      MESSAGE("GUI library not found, trying generic library for PyQt GUI");
+      bool found = false;
+      if (dir = getenv("KERNEL_ROOT_DIR"))
+       {
+         dir = QAD_Tools::addSlash(dir) ;
+         dir = dir + "lib" ;
+         dir = QAD_Tools::addSlash(dir) ;
+         dir = dir + "salome" ;
+         dir = QAD_Tools::addSlash(dir) ;
 #ifdef WNT
-    dir = dir + "lib" + Component.latin1() + "GUI.dll" ;
+         dir = dir + "libSalomePyQtcmodule.dll" ;
 #else
-    dir = dir + "lib" + Component.latin1() + "GUI.so" ;
+         dir = dir + "libSalomePyQtcmodule.so" ;
 #endif
-    MESSAGE ( " GUI library = " << dir )
-    fileInfo.setFile(dir) ;
-    if (fileInfo.exists()) {
-      ComponentLib = fileInfo.fileName() ;
-      found = true;
+         MESSAGE ( " GUI library = " << dir );
+         fileInfo.setFile(dir) ;
+         if (fileInfo.exists())
+           {
+             ComponentLib = fileInfo.fileName() ;
+             found = true;
+           }
+       }
+      if ( !found )
+       {
+         QMessageBox::critical( this,
+                                tr("ERR_ERROR"),
+                                tr("ERR_LIBGUI" ).arg(Component) );
+         return false;
+       }
     }
-  }
 
   mySharedLibrary.SetName(TCollection_AsciiString((char*)ComponentLib.latin1()).ToCString());
   ok = mySharedLibrary.DlOpen(OSD_RTLD_LAZY);
@@ -2569,10 +2695,19 @@ bool QAD_Desktop::loadComponent(QString Component)
 
   /* SETTINGS */
   OSD_Function osdF = mySharedLibrary.DlSymb("SetSettings");
-  if ( osdF != NULL ) {
-    OneDim1 (*f1) = (bool (*) (QAD_Desktop*)) osdF;
-    (*f1)(this);
-  }
+  if ( osdF != NULL )
+    if (_islibso)
+      {
+       OneDim1 (*f1) = (bool (*) (QAD_Desktop*)) osdF;
+       (*f1)(this);
+      }
+    else
+      {
+       OneDim2 (*f1) = (bool (*) (QAD_Desktop*, char*)) osdF;
+       (*f1)(this, (char*)Component.latin1());
+      }
+
+  
 
   /* COMPONENT INTERFACE */
   SALOME_ModuleCatalog::Acomponent_ptr aComponent =
@@ -2584,7 +2719,7 @@ bool QAD_Desktop::loadComponent(QString Component)
   }
 
   myActiveStudy->setMessage(QString("Component : ") +
-                           aComponent->componentname() + " created " );
+                           aComponent->componentusername() + " created " );
   myActiveStudy->setMessage(QString("Type : ") +
                            QString::number(aComponent->component_type()));
   myActiveStudy->setMessage(QString("Constraint : ") +
@@ -2634,6 +2769,119 @@ bool QAD_Desktop::loadComponent(QString Component)
   return true;
 }
 
+QString QAD_Desktop::changeXmlInputSourceData(QString theData, QString theComponent) 
+{
+  if ( theComponent=="Supervision" ) {
+    //Supervision main menu item
+    int aItemId = 300;
+    int aPosId = 3;
+    QString aStrOld = createString( aItemId, aPosId );
+    QString aStrNew = createString( aItemId, aPosId+1 );
+    theData = theData.replace( QRegExp(aStrOld), aStrNew );
+  }
+  
+  if ( theComponent == "Visu" ) {
+    //Visualization main menu item
+    int aItemId = 401;
+    int aPosId = 3;
+    QString aStrOld = createString( aItemId, aPosId );
+    QString aStrNew = createString( aItemId, aPosId+1 );
+    theData = theData.replace( QRegExp(aStrOld), aStrNew );
+
+    //Selection main menu item
+    aItemId = 41;
+    aPosId = 4;
+    aStrOld = createString( aItemId, aPosId );
+    aStrNew = createString( aItemId, aPosId+1 );
+    theData = theData.replace( QRegExp(aStrOld), aStrNew );
+        
+    //Representation main menu item
+    aItemId = 42;
+    aPosId = 5;
+    aStrOld = createString( aItemId, aPosId );
+    aStrNew = createString( aItemId, aPosId+1 );
+    theData = theData.replace( QRegExp(aStrOld), aStrNew );
+  }
+
+  if ( theComponent == "SMESH" ) {
+    //Hypotheses main menu item
+    int aItemId = 50;
+    int aPosId = 3;
+    QString aStrOld = createString( aItemId, aPosId );
+    QString aStrNew = createString( aItemId, aPosId+1 );
+    theData = theData.replace( QRegExp(aStrOld), aStrNew );
+
+    //Mesh main menu item
+    aItemId = 70;
+    aPosId = 4;
+    aStrOld = createString( aItemId, aPosId );
+    aStrNew = createString( aItemId, aPosId+1 );
+    theData = theData.replace( QRegExp(aStrOld), aStrNew );
+
+    //Controls main menu item
+    aItemId = 60;
+    aPosId = 5;
+    aStrOld = createString( aItemId, aPosId );
+    aStrNew = createString( aItemId, aPosId+1 );
+    theData = theData.replace( QRegExp(aStrOld), aStrNew );
+
+    //Modification main menu item
+    aItemId = 40;
+    aPosId = 6;
+    aStrOld = createString( aItemId, aPosId );
+    aStrNew = createString( aItemId, aPosId+1 );
+    theData = theData.replace( QRegExp(aStrOld), aStrNew );
+
+    //Numbering main menu item
+    aItemId = 80;
+    aPosId = 7;
+    aStrOld = createString( aItemId, aPosId );
+    aStrNew = createString( aItemId, aPosId+1 );
+    theData = theData.replace( QRegExp(aStrOld), aStrNew );
+  }
+  
+  if ( theComponent == "Geometry" ) {
+    //New Entity main menu item
+    int aItemId = 70;
+    int aPosId = 3;
+    QString aStrOld = createString( aItemId, aPosId );
+    QString aStrNew = createString( aItemId, aPosId+1 );
+    theData = theData.replace( QRegExp(aStrOld), aStrNew );
+
+    //Operations main menu item
+    aItemId = 40;
+    aPosId = 4;
+    aStrOld = createString( aItemId, aPosId );
+    aStrNew = createString( aItemId, aPosId+1 );
+    theData = theData.replace( QRegExp(aStrOld), aStrNew );
+
+    //Repair main menu item
+    aItemId = 50;
+    aPosId = 5;
+    aStrOld = createString( aItemId, aPosId );
+    aStrNew = createString( aItemId, aPosId+1 );
+    theData = theData.replace( QRegExp(aStrOld), aStrNew );
+
+    //Measures main menu item
+    aItemId = 60;
+    aPosId = 6;
+    aStrOld = createString( aItemId, aPosId );
+    aStrNew = createString( aItemId, aPosId+1 );
+    theData = theData.replace( QRegExp(aStrOld), aStrNew );
+  }
+
+  if ( theComponent == "Med" ) {
+    //MED main menu item
+    int aItemId = 90;
+    int aPosId = 3;
+    QString aStrOld = createString( aItemId, aPosId );
+    QString aStrNew = createString( aItemId, aPosId+1 );
+    theData = theData.replace( QRegExp(aStrOld), aStrNew );
+  }
+  
+  return theData;
+}
+
 typedef bool OneDim(int, QAD_Desktop*);
 typedef void (*PTR_FACTORY_FUNCTION)( CORBA::ORB_var &orb, QWidget *parent, const char *name ) ;
 
@@ -2671,27 +2919,11 @@ void QAD_Desktop::onDispatchTools(int id)
   bool libToolsGUI = true;
   if( QAD_XmlHandler::_bibmap[ id ].isEmpty() ) 
   { 
-
-    if ( dir = getenv("SALOME_SITE_DIR"))  {
+    if ( (dir = getenv("KERNEL_ROOT_DIR")) && !found ) {
       dir = QAD_Tools::addSlash(dir) ;
       dir = dir + "lib" ;
       dir = QAD_Tools::addSlash(dir) ;
-#ifdef WNT
-      dir = dir + "libToolsGUI.dll" ;
-#else
-      dir = dir + "libToolsGUI.so" ;
-#endif
-      MESSAGE ( " GUI library = " << dir );
-      fileInfo.setFile(dir) ;
-      if (fileInfo.exists()) {
-       ToolsLib = fileInfo.fileName() ;
-       found = true;
-      }
-    }
-    
-    if ( (dir = getenv("SALOME_ROOT_DIR")) && !found ) {
-      dir = QAD_Tools::addSlash(dir) ;
-      dir = dir + "lib" ;
+      dir = dir + "salome" ;
       dir = QAD_Tools::addSlash(dir) ;
 #ifdef WNT
       dir = dir + "libToolsGUI.dll" ;
@@ -2709,22 +2941,11 @@ void QAD_Desktop::onDispatchTools(int id)
   else {
     libToolsGUI = false;
     SCRUTE( QAD_XmlHandler::_bibmap[ id ] ) ;
-    if ( dir = getenv("SALOME_SITE_DIR"))  {
+    if ( (dir = getenv("KERNEL_ROOT_DIR")) && !found ) {
       dir = QAD_Tools::addSlash(dir) ;
       dir = dir + "lib" ;
       dir = QAD_Tools::addSlash(dir) ;
-      dir = dir + QAD_XmlHandler::_bibmap[ id ].latin1() ;
-      MESSAGE ( " GUI library = " << dir );
-      fileInfo.setFile(dir) ;
-      if (fileInfo.exists()) {
-       ToolsLib = fileInfo.fileName() ;
-       found = true;
-      }
-    }
-    
-    if ( (dir = getenv("SALOME_ROOT_DIR")) && !found ) {
-      dir = QAD_Tools::addSlash(dir) ;
-      dir = dir + "lib" ;
+      dir = dir + "salome" ;
       dir = QAD_Tools::addSlash(dir) ;
       dir = dir + QAD_XmlHandler::_bibmap[ id ].latin1() ;
       MESSAGE ( " GUI library = " << dir );
@@ -2794,7 +3015,8 @@ void QAD_Desktop::onComboActiveComponent( const QString & component, bool isLoad
       if (!myXmlHandler->myIdList.IsEmpty()) clearMenus();
       if ( myCombo->currentText() != component )
        myCombo->setCurrentText( component );
-      if (component.compare(QString("Salome"))!= 0) {
+      //NRI if (component.compare(QString("Salome"))!= 0) {
+      if (component.compare( getComponentUserName( "KERNEL" ) )!= 0) {
 //     QApplication::setOverrideCursor( Qt::waitCursor );
        myActiveComp = component;
 
@@ -2808,7 +3030,7 @@ void QAD_Desktop::onComboActiveComponent( const QString & component, bool isLoad
        }
 
        myActiveStudy->Selection( component );
-       if ( !loadComponent(component) ) {
+       if ( !loadComponent(mapComponentName[component]) ) {
          myCombo->setCurrentItem (0);
          for ( QToolButton* aButton=myComponentButton.first(); aButton; aButton=myComponentButton.next() ) {
            aButton->setOn(false);
@@ -2829,7 +3051,7 @@ void QAD_Desktop::onComboActiveComponent( const QString & component, bool isLoad
        }
 
        // Open new component's data in active study if any
-       if(isLoadData) loadComponentData(component);
+       if(isLoadData) loadComponentData(mapComponentName[component]);
 
        oldSel->Clear();
        myActiveStudy->updateObjBrowser(true);
@@ -2838,7 +3060,8 @@ void QAD_Desktop::onComboActiveComponent( const QString & component, bool isLoad
 
       } else {  // component == "Salome"
        myActiveComp = "";
-       myActiveStudy->Selection( "Salome" );
+       //NRI   myActiveStudy->Selection( "Salome" );
+       myActiveStudy->Selection( getComponentUserName( "KERNEL" ) );
        SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() );
        Sel->ClearIObjects();
        for ( QToolButton* aButton=myComponentButton.first(); aButton; aButton=myComponentButton.next() ) {
@@ -2885,6 +3108,7 @@ void QAD_Desktop::onComboActiveComponent( const QString & component, bool isLoad
 /*!
  */
 void QAD_Desktop::activateComponent(const QString& theName, bool isLoadData){
+  
   int nbItem = myCombo->count();
   int Index = 0;
 
@@ -3177,10 +3401,30 @@ void QAD_Desktop::onObjectBrowser()
   bool showCHRONO_SORT ;
   if ( myStdActions.at( PrefObjectBrowserCHRONO_SORTId )->isOn() ) {
     showCHRONO_SORT = true;
-    QAD_CONFIG->addSetting( "ObjectBrowser:CHRONO_SORT", "true");
+    QAD_CONFIG->addSetting( "ObjectBrowser:ChronologicalSort", "true");
   } else {
     showCHRONO_SORT = false;
-    QAD_CONFIG->addSetting( "ObjectBrowser:CHRONO_SORT", "false");
+    QAD_CONFIG->addSetting( "ObjectBrowser:ChronologicalSort", "false");
+  }
+
+  /* To show or not to show UseCase browser */
+  bool showUseCase;
+  if ( myStdActions.at( PrefObjectBrowserShowUseCaseId )->isOn() ) {
+    showUseCase = true;
+    QAD_CONFIG->addSetting( "ObjectBrowser:ShowUseCaseBrowser", "true");
+  } else {
+    showUseCase = false;
+    QAD_CONFIG->addSetting( "ObjectBrowser:ShowUseCaseBrowser", "false");
+  }
+
+  /* Resize or don't resize columns automatically */
+  bool autoSize;
+  if ( myStdActions.at( PrefObjectBrowserNoAutoSizeColumnsId )->isOn() ) {
+    autoSize = false;
+    QAD_CONFIG->addSetting( "ObjectBrowser:NoAutoSizeColumns", "true");
+  } else {
+    autoSize = true;
+    QAD_CONFIG->addSetting( "ObjectBrowser:NoAutoSizeColumns", "false");
   }
 
   if ( myActiveApp ) {
@@ -3193,6 +3437,8 @@ void QAD_Desktop::onObjectBrowser()
        sf->getLeftFrame()->getObjectBrowser()->setShowValueColumn( showValue );
        sf->getLeftFrame()->getObjectBrowser()->setEnableChronoSort( showCHRONO_SORT );
 //     sf->getLeftFrame()->getObjectBrowser()->setShowIAPP( showIAPP ); // this is done by below updateObjBrowser() call
+       sf->getLeftFrame()->getObjectBrowser()->showUseCaseBrowser( showUseCase );
+       sf->getLeftFrame()->getObjectBrowser()->autoSizeColumns( autoSize );
       }
       study->updateObjBrowser(true);
     }
@@ -3219,7 +3465,7 @@ void QAD_Desktop::onViewerTrihedron()
       for ( QAD_Study* study = studies.first(); study; study = studies.next() )  {
        int nbSf = study->getStudyFramesCount();
        for ( int i = 0; i < nbSf; i++ ) {
-         study->getStudyFrame(i)->getRightFrame()->getViewFrame()->SetTrihedronSize((int)dim);
+         study->getStudyFrame(i)->getRightFrame()->getViewFrame()->onAdjustTrihedron();
        }
       }
     }
@@ -3468,28 +3714,58 @@ void QAD_Desktop::helpAbout()
   delete About;
 }
 
-/* Help Search */
-void QAD_Desktop::helpSearch()
-{
-}
-
-/* Help Contents */
-void QAD_Desktop::helpContents()
-{
-  getHelpWindow()->contents();
-  getHelpWindow()->show();
-  getHelpWindow()->raise();
-  getHelpWindow()->setActiveWindow();
-}
+// /* Help Search */
+// void QAD_Desktop::helpSearch()
+// {
+// }
+
+// /* Help Contents */
+// void QAD_Desktop::helpContents()
+// {
+//   if (myActiveComp == "")
+//     myActiveComp = getComponentUserName( "KERNEL" ); //NRI "Salome";
+
+//   QCString dir;
+//   QString root;
+//   if (dir = getenv( getComponentName( myActiveComp ) + "_ROOT_DIR")) {
+//     root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + QAD_Tools::addSlash("share")  + QAD_Tools::addSlash("salome")  + "doc" );
+//     if ( QFileInfo( root + "index.html" ).exists() ) {
+//       helpContext( root + "index.html", "" );
+//     }
+//     else {
+//       root = QAD_Tools::addSlash( root + "html" );
+//       if ( QFileInfo( root + "index.html" ).exists() ) {
+//     helpContext( root + "index.html", "" );
+//       }
+//       else {
+//     root = QAD_Tools::addSlash( root + "html" );
+//     if ( QFileInfo( root + "index.html" ).exists() ) {
+//       helpContext( root + "index.html", "" );
+//     }
+//       }
+//     }
+//   }
+  
+// //   //NRI getHelpWindow()->contents();
+// //   getHelpWindow()->show();
+// //   getHelpWindow()->raise();
+// //   getHelpWindow()->setActiveWindow();
+// }
 
 /* Help Context */
-void QAD_Desktop::helpContext(const QString& source, const QString& context)
-{
-  getHelpWindow()->context(source, context);
-  getHelpWindow()->show();
-  getHelpWindow()->raise();
-  getHelpWindow()->setActiveWindow();
-}
+//void QAD_Desktop::helpContext(const QString& source, const QString& context)
+//{
+//  //getHelpWindow()->context(source, context);   //implemented in QAD_HelpWindow::context( const QString& _source, const QString& _context)
+//  //getHelpWindow()->show();                     //from QMainWindow class
+//  //getHelpWindow()->raise();                    //from QMainWindow class
+//  //getHelpWindow()->setActiveWindow();          //from QMainWindow class
+
+//  QString anApp = QAD_CONFIG->getSetting("ExternalBrowser:Application");
+//  QString aParams = QAD_CONFIG->getSetting("ExternalBrowser:Parameters");
+   
+//  RunBrowser* rs = new RunBrowser(anApp, aParams, source, context);
+//  rs->start();
+//}
 
 /* Preferences/MultiFile Save */
 void QAD_Desktop::onMultiFileSave()
@@ -3509,6 +3785,39 @@ void QAD_Desktop::onASCIISave()
     QAD_CONFIG->addSetting( "Desktop:ASCIISave", "false");
 }
 
+/* Preferences / Undo Level */
+void QAD_Desktop::onUndoLevel()
+{
+  static int MAX_UNDO_LEVEL = 1000;
+  bool isAccepted = false;
+  static QString aLabel = QString("Level value (%1 ... %2) : ").
+    arg(1).arg(MAX_UNDO_LEVEL);
+  int anUndoLevel = 
+    SALOMEGUI_SetValueDlg::getInteger("Undo Level",aLabel,
+                                     1,MAX_UNDO_LEVEL,getUndoLevel(),
+                                     &isAccepted);
+  if(!isAccepted) return;
+  QAD_CONFIG->addSetting("Desktop:UndoLevel", anUndoLevel);
+  if(!myActiveApp) return;
+  QList<QAD_Study>& studies = myActiveApp->getStudies();
+  int aWasWarning = 0;
+  for(QAD_Study* study = studies.first(); study; study = studies.next()){
+    SALOMEDS::Study_var aStudyDoc = study->getStudyDocument();
+    SALOMEDS::StudyBuilder_var aStudyBuilder = aStudyDoc->NewBuilder();
+    if (!aStudyDoc->GetProperties()->IsLocked()) {
+      aStudyBuilder->UndoLimit(anUndoLevel);
+    } else  {
+      if (!aWasWarning) {
+       QAD_MessageBox::warn1 ((QWidget*)QAD_Application::getDesktop(),
+                              QObject::tr("WRN_WARNING"), 
+                              QObject::tr("WRN_STUDY_LOCKED"),
+                              QObject::tr("BUT_OK"));
+       aWasWarning = 1;
+      }
+    }
+  }
+}
+
 /*********************************************************************
 ** Class: AppSelectionDlg
 ** Descr: Dialog for the selection of the application when several
index 4223b4fa3f826e08b8007fad0979fead3c8b5a2d..56f8a79072ea4c9ed7a1cf66b606ee0c06853ce7 100644 (file)
@@ -34,7 +34,7 @@
 #include "QAD_Application.h"
 #include "QAD_OperatorMenus.h"
 #include "QAD_Menus.h"
-#include "QAD_HelpWindow.h"
+//NRI#include "QAD_HelpWindow.h"
 #include "QAD_Action.h"
 
 #include "SALOME_NamingService.hxx"
@@ -69,7 +69,7 @@ class QAD_EXPORT QAD_Desktop : public QMainWindow
   Q_OBJECT
 
 protected:
-  enum ComponentType {GEOM, MESH, SOLVER, DATA, VISU, OTHER} ;
+  //NRI - unused - :  enum ComponentType {GEOM, MESH, SOLVER, DATA, VISU, OTHER} ;
 
   enum {  FileNewId = 0, FileOpenId, FileLoadId, FileCloseId, FileSaveId, FileSaveAsId, FilePropsId, FileExitId,
          ViewStatusBarId,
@@ -79,8 +79,9 @@ protected:
          DefaultViewerOCCId, DefaultViewerVTKId, DefaultGraphSupervisorId, DefaultPlot2dId,
          //VRV: T2.5 - add default viewer
          PrefViewerTrihedronId, PrefConsoleFontId, PrefObjectBrowserEntryId, 
-         PrefObjectBrowserIAPPId, PrefObjectBrowserValueId, PrefObjectBrowserCHRONO_SORTId, 
-         PrefDirsId, PrefMultiFileSave, PrefASCIISave, PrefExternalBrowserId, PrefSaveId,
+         PrefObjectBrowserIAPPId, PrefObjectBrowserValueId, PrefObjectBrowserCHRONO_SORTId,PrefObjectBrowserShowUseCaseId, 
+         PrefObjectBrowserNoAutoSizeColumnsId,  
+         PrefDirsId, PrefMultiFileSave, PrefASCIISave, PrefUndoLevelId, PrefExternalBrowserId, PrefSaveId,
          //NRI : SAL2214
          WindowNew3dId, ViewOCCId, ViewVTKId, ViewPlot2dId,
          //NRI : SAL2214
@@ -144,14 +145,15 @@ public:
     QWorkspaceP*      getMainFrame() const;
     QString          getNewStudyName();
     QAD_Study*        findStudy( SALOMEDS::Study_ptr theStudy );
-
+    static int        getUndoLevel();
     /* help actions */
     virtual void      helpAbout();    
-    virtual void      helpSearch();
+/*    virtual void      helpSearch();
     virtual void      helpContents();
     virtual void      helpContext(const QString& path, const QString& dir = QString::null);
-
+*/
     bool             loadComponent(QString);
+    QString           changeXmlInputSourceData(QString theData, QString theComponent);
     void             activateComponent(const QString& theName, bool isLoadData = true);
     void              createStudy();
 
@@ -168,7 +170,10 @@ public:
     Engines::Component_var getEngine(const char *containerName,
                                     const char *componentName);
 
-    QAD_HelpWindow*   getHelpWindow();
+    QString getComponentName(const char *componentUserName);
+    QString getComponentUserName(const char *componentName);
+    
+    //NRI    QAD_HelpWindow*   getHelpWindow();
 
     void             onMouseMove(QMouseEvent*);
     bool             onMousePress(QMouseEvent*);
@@ -233,6 +238,7 @@ protected slots:
     void             onObjectBrowser();
     void              onMultiFileSave();
     void              onASCIISave();
+    void              onUndoLevel();
     void             onExternalBrowser();      
 
     void             onActivateApp(QAD_Application* app);
@@ -241,7 +247,7 @@ protected slots:
     void             onHelpContents();
     void             onHelpContentsGUI();
     void             onHelpContentsTUI();
-    void             onHelpSearch();
+/*    void           onHelpSearch(); */
     void             onHelpAbout();
 
     void             onNewWindow3d();
@@ -257,7 +263,7 @@ protected slots:
     void             onComboActiveComponent( const QString & , bool isLoadData);
     void              onCascade(); 
 
-    void              onHelpWindowClosed();
+/* NRI   void              onHelpWindowClosed(); */
 
 protected:
     QMenuBar*        myMainMenu;           /* the main menu bar */
@@ -305,10 +311,12 @@ protected:
     QList<QAD_Menus>   myMenusList;
     QAD_Menus*        myActiveMenus;
 
-    QAD_HelpWindow*    myHelpWindow;
+    //NRI QAD_HelpWindow*    myHelpWindow;
 
     QList<QToolButton> myComponentButton;
 
+    QMap<QString,QString> mapComponentName;
+
 private:
     static QAD_ResourceMgr*                resourceMgr;
     static QPalette*                       palette;
@@ -322,6 +330,7 @@ private:
     SALOME_LifeCycleCORBA *                myEnginesLifeCycle;
     QComboBox *                                    myCombo;
     bool                                    myQueryClose;
+    bool                                    _islibso;
 };
 
 /********************************************************************
index 2d626eb9650659b1ceb477666fb38ab3cf5885dc..df22e1e21f1eda951c4ee42715ee4df62ce90c15 100644 (file)
@@ -227,10 +227,11 @@ void QAD_FileDlg::addExtension()
 //  if ( mySelectedFile.isEmpty() )//VSR- 06/12/02
   if ( mySelectedFile.stripWhiteSpace().isEmpty() )//VSR+ 06/12/02
     return;
-  
+
 //  if ( QAD_Tools::getFileExtensionFromPath( mySelectedFile ).isEmpty() ) //VSR- 06/12/02
-  if ( QAD_Tools::getFileExtensionFromPath( mySelectedFile ).isEmpty() && !mySelectedFile.contains(".") ) //VSR+ 06/12/02
-  {
+//ota :   16/12/03  if ( QAD_Tools::getFileExtensionFromPath( mySelectedFile ).isEmpty() ) //VSR+ 06/12/02
+//  {
+
 #if QT_VERSION < 0x030000
     QRegExp r( QString::fromLatin1("([a-zA-Z0-9.*? +;#]*)$") );
     int len, index = r.match( selectedFilter(), 0, &len );
@@ -247,11 +248,28 @@ void QAD_FileDlg::addExtension()
 //      QString wildcard = selectedFilter().mid( index + 1, r.matchedLength()-2 ); //VSR- 06/12/02
       QString wildcard = selectedFilter().mid( index + 1, r.matchedLength()-2 ).stripWhiteSpace(); //VSR+ 06/12/02
 #endif
-      index = wildcard.findRev( '.' );    
-      if ( index >= 0 ) 
-        mySelectedFile += wildcard.mid( index );
+      if ( mySelectedFile[mySelectedFile.length() - 1] == '.')
+       //if the file name ends with the point remove it
+       mySelectedFile.truncate(mySelectedFile.length() - 1);
+      QString anExt = "." + QAD_Tools::getFileExtensionFromPath( mySelectedFile ).stripWhiteSpace();
+      // From the filters list make a pattern to validate a file extension
+      // Due to transformations from the filter list (*.txt *.*xx *.c++ QAD*.* ) we 
+      // will have the pattern (\.txt|\..*xx|\.c\+\+|\..*) (as we validate extension only we remove
+      // stay extension mask only in the pattern
+      QString aPattern(wildcard);
+      QRegExp anExtRExp("("+aPattern.replace(QRegExp("(^| )[0-9a-zA-Z*_?]*\\."), " \\.").
+                       stripWhiteSpace().replace(QRegExp("\\s+"), "|").
+                       replace(QRegExp("[*]"),".*").replace(QRegExp("[+]"),"\\+") + ")");
+      
+      if ( anExtRExp.match(anExt) == -1 ) //if a selected file extension does not match to filter's list
+       { //remove a point if it is at the word end
+         if (anExt[ anExt.length() - 1 ] == '.')  anExt.truncate( anExt.length() - 1 );
+         index = wildcard.findRev( '.' );    
+         if ( index >= 0 ) 
+           mySelectedFile += wildcard.mid( index ); //add the extension
+       }
     }
-  }
+  //  }
 }
 
 /*!
index 5237e75ececd44bb18604c4f65be9fc3311cb422..d715bf5df5ea07b0e3d1155fa34c16e6a9c71332 100644 (file)
@@ -109,6 +109,7 @@ QAD_HelpWindow::QAD_HelpWindow()
   setDockEnabled( TornOff, FALSE );
   setDockMenuEnabled( false );
 
+  /*
   // look for index.html and set homeDir
   // 1. $(SALOME_ROOT_DIR)/doc/index.html
   // 2. $(SALOME_ROOT_DIR)/doc/html/index.html
@@ -117,8 +118,8 @@ QAD_HelpWindow::QAD_HelpWindow()
 
   QCString dir;
   QString root;
-  if ( (dir = getenv("SALOME_ROOT_DIR")) ) {
-    root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + "doc" );
+  if ( (dir = getenv("KERNEL_ROOT_DIR")) ) {
+    root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + QAD_Tools::addSlash("share")  + QAD_Tools::addSlash("salome")  + "doc" );
     if ( QFileInfo( root + "index.html" ).exists() ) {
       homeDir = root;
     }
@@ -144,6 +145,7 @@ QAD_HelpWindow::QAD_HelpWindow()
     root = "./doc/";
 
   browser->setSource( QFileInfo( homeDir + "index.html" ).absFilePath() );
+  */
   browser->setFocus();
 
   QSize dSize = QApplication::desktop()->size();
index 9d992471aa17fe2ca39a4d3be01764fe0572a41e..d72f4c9d3a6413a8a31e94e5f81036d2c9ea8f6a 100644 (file)
@@ -36,6 +36,7 @@ using namespace std;
 #include "QAD_Settings.h"
 #include "QAD_Tools.h"
 #include "QAD_RightFrame.h"
+#include "QAD_LeftFrame.h"
 #include "SALOME_Selection.h"
 #include "SALOME_InteractiveObject.hxx"
 #include "SALOME_ListIteratorOfListIO.hxx"
@@ -72,6 +73,19 @@ using namespace std;
 #define UC_CLEAR_ID        1000014
 #define UC_SET_CURRENT_ID  1000016
 
+/*!
+  Small button which updates Object Browser's contents
+*/
+Btn::Btn ( QWidget * parent, const char * name ) : QToolButton( parent, name ) 
+{
+  connect( this, SIGNAL(clicked()), this, SLOT(onClicked()) );
+}
+void Btn::onClicked()
+{
+  QAD_ObjectBrowser* OB = QAD_Application::getDesktop()->getActiveApp()->getActiveStudy()->getActiveStudyFrame()->getLeftFrame()->getObjectBrowser();
+  OB->Update();
+}
+
 /*!
   Gets selected top-level items (i.e. not including sub-items) [ static ]
 */
@@ -157,12 +171,14 @@ void QAD_ObjectBrowser::setupListView()
   QAD_ResourceMgr* resMgr = QAD_Desktop::createResourceManager();
 
   this->setTabPosition( QTabWidget::Bottom );
-
+  
   /* Reading setting : Columns for Value, OCAF Doc entry, object IOR, OCAF Doc ref entry and Chrono sorting */
   QString AddColumn       = QAD_CONFIG->getSetting( "ObjectBrowser:AddColumn"   );
   QString ValueColumn     = QAD_CONFIG->getSetting( "ObjectBrowser:ValueColumn" );
-  QString ShowCHRONO_SORT = QAD_CONFIG->getSetting( "ObjectBrowser:CHRONO_SORT" );
-
+  QString ShowCHRONO_SORT = QAD_CONFIG->getSetting( "ObjectBrowser:ChronologicalSort" );
+  QString showUseCase = QAD_CONFIG->getSetting("ObjectBrowser:ShowUseCaseBrowser");
+  QString noAutoSizeColumns = QAD_CONFIG->getSetting( "ObjectBrowser:NoAutoSizeColumns" );
   /* create and setup Object Browser ================================= */
   myListView = new QListView( this, "Object Browser");
   myListView->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) );
@@ -176,7 +192,7 @@ void QAD_ObjectBrowser::setupListView()
   myListView->addColumn( tr( "OBJECT_BROWSER_IOR" ) );      /* Adding Object IOR column         */
   myListView->addColumn( tr( "OBJECT_BROWSER_REFENTRY" ) ); /* Adding OCAF Doc ref entry column */
   myListView->header()->setMovingEnabled( false );
-
   /* Properties */
   myListView->header()->setClickEnabled( TRUE );          /* Enable clicking on the header                    */
   myListView->setShowSortIndicator( TRUE ) ;              /* Add user arrows to indicate the sort order : LPN */
@@ -185,6 +201,7 @@ void QAD_ObjectBrowser::setupListView()
   myListView->setVScrollBarMode( QScrollView::AlwaysOn ); /* Set scrollbars always visible                    */
   myListView->setHScrollBarMode( QScrollView::AlwaysOn ); /* ...                                              */
 
+  myListView->setCornerWidget( new Btn( this ) );
   /* Connect section */
   //VRV: porting on Qt 3.0.5
 #if QT_VERSION < 0x030005
@@ -202,12 +219,12 @@ void QAD_ObjectBrowser::setupListView()
           this,       SLOT( onExpanded( QListViewItem* ) ) );
   connect( myListView, SIGNAL( collapsed( QListViewItem* ) ),
           this,       SLOT( onCollapsed( QListViewItem* ) ) );
-
+    
   /* create and setup UseCase Browser ================================ */
-  QWidget* vBox = new QWidget( this );
-  QVBoxLayout* vBoxLayout = new QVBoxLayout( vBox );
+  myVBox = new QWidget( this );
+  QVBoxLayout* vBoxLayout = new QVBoxLayout( myVBox );
   
-  myUseCaseView = new QListView( vBox, "UseCase Browser");
+  myUseCaseView = new QListView( myVBox, "UseCase Browser");
   myUseCaseView->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) );
   myUseCaseView->setMinimumSize( 1, 1 );
   myUseCaseView->setPalette( QAD_Application::getPalette( true ) );
@@ -228,23 +245,25 @@ void QAD_ObjectBrowser::setupListView()
   myUseCaseView->setSorting( -1 ) ;
   vBoxLayout->addWidget( myUseCaseView ); 
 
-  myNewBtn = new QToolButton( vBox );
+  myUseCaseView->setCornerWidget( new Btn( this ) );
+
+  myNewBtn = new QToolButton( myVBox );
   myNewBtn->setIconSet( resMgr->loadPixmap( "QAD", tr("ICON_UC_NEW") ) );
   myNewBtn->setAutoRaise( true );
   QToolTip::add( myNewBtn, tr( "UC_NEW_ID" ), QAD_Application::getDesktop()->toolTipGroup(), tr( "UC_NEW_TIP" ) );
-  myAddBtn = new QToolButton( vBox );
+  myAddBtn = new QToolButton( myVBox );
   myAddBtn->setIconSet( resMgr->loadPixmap( "QAD", tr("ICON_UC_ADD") ) );
   myAddBtn->setAutoRaise( true );
   QToolTip::add( myAddBtn, tr( "UC_APPEND_ID" ), QAD_Application::getDesktop()->toolTipGroup(), tr( "UC_APPEND_TIP" ) );
-  myDelBtn = new QToolButton( vBox );
+  myDelBtn = new QToolButton( myVBox );
   myDelBtn->setIconSet( resMgr->loadPixmap( "QAD", tr("ICON_UC_REMOVE") ) );
   myDelBtn->setAutoRaise( true );
   QToolTip::add( myDelBtn, tr( "UC_REMOVE_ID" ), QAD_Application::getDesktop()->toolTipGroup(), tr( "UC_REMOVE_TIP" ) );
-  myClearBtn = new QToolButton( vBox );
+  myClearBtn = new QToolButton( myVBox );
   myClearBtn->setIconSet( resMgr->loadPixmap( "QAD", tr("ICON_UC_CLEAR") ) );
   myClearBtn->setAutoRaise( true );
   QToolTip::add( myClearBtn, tr( "UC_CLEAR_ID" ), QAD_Application::getDesktop()->toolTipGroup(), tr( "UC_CLEAR_TIP" ) );
-  myCurrentBtn = new QToolButton( vBox );
+  myCurrentBtn = new QToolButton( myVBox );
   myCurrentBtn->setIconSet( resMgr->loadPixmap( "QAD", tr("ICON_UC_SET_CURRENT") ) );
   myCurrentBtn->setAutoRaise( true );
   QToolTip::add( myCurrentBtn, tr( "UC_SET_CURRENT_ID" ), QAD_Application::getDesktop()->toolTipGroup(), tr( "UC_SET_CURRENT_TIP" ) );
@@ -289,12 +308,21 @@ void QAD_ObjectBrowser::setupListView()
 
   /* add Object Browser and UseCase Browser as pages ================= */
   this->addTab( myListView,    tr( "TLT_OBJECT_BROWSER" ) );
-  this->addTab( vBox, tr( "TLT_USECASE_BROWSER" ) );
-
+  this->addTab( myVBox, tr( "TLT_USECASE_BROWSER" ) );
+  
+  if ( showUseCase != "true")
+    this->removePage(myVBox);
   setShowInfoColumns( AddColumn == "true" );
   setShowValueColumn( ValueColumn == "true" );
   setEnableChronoSort( ShowCHRONO_SORT == "true" );
   
+  if ( noAutoSizeColumns == "true" ) 
+    {
+      for (int i = 0; i < myListView->header()->count(); i++ )
+       myListView->setColumnWidthMode(i, QListView::Manual);
+    }
+
   resize( QSize( 100, 400 ) );
 }
 
@@ -306,11 +334,12 @@ bool QAD_ObjectBrowser::eventFilter( QObject* o, QEvent* e )
 {
   QAD_Desktop* Desktop     = (QAD_Desktop*) QAD_Application::getDesktop();
   QAD_Study* myActiveStudy = Desktop->getActiveStudy();
   if ( myStudy->_is_nil() )
     return QTabWidget::eventFilter( o, e );
 
   SALOMEDS::UseCaseBuilder_var UCBuilder = myStudy->GetUseCaseBuilder();
-  if ( o == myUseCaseView->viewport() ) {
+  if (o == myUseCaseView->viewport()) {
     if ( e->type() == QEvent::MouseButtonPress ) {
       // Test if clicked on selection and start drag if necessary
       QMouseEvent* me = ( QMouseEvent* )e;
@@ -712,6 +741,10 @@ void QAD_ObjectBrowser::Update( SALOMEDS::SObject_ptr SO,
 */
 void QAD_ObjectBrowser::Update()
 {
+  int xc = myListView->contentsX();
+  int yc = myListView->contentsY();
+  myListView->viewport()->setUpdatesEnabled( false );
   myListView->clear();
   myListViewMap.clear();
 
@@ -823,8 +856,8 @@ void QAD_ObjectBrowser::Update()
          if ( resMgr ) {
            MESSAGE ( " Component " << aName->Value() )
              MESSAGE ( " Icon " << aPixmap->GetPixMap() )
-           if(resMgr->loadResources( QString(aName->Value()) + "GUI", msg )) {
-             QPixmap icon ( resMgr->loadPixmap( QString(aName->Value()) + "GUI",
+           if(resMgr->loadResources( QAD_Application::getDesktop()->getComponentName(QString(aName->Value())), msg )) {
+             QPixmap icon ( resMgr->loadPixmap( QAD_Application::getDesktop()->getComponentName(QString(aName->Value())),
                                                 tr(aPixmap->GetPixMap()) /*tr( "ICON_OBJBROWSER_" + theComponent )*/ ));
              Item->setPixmap( 0, icon );
            }
@@ -842,9 +875,14 @@ void QAD_ObjectBrowser::Update()
        Update (SC, Item);
     }
   }
+  myListView->setContentsPos(xc,yc);
+
+  myListView->viewport()->setUpdatesEnabled( true );
+  myListView->viewport()->repaint( false );
   /* Updating UseCase Browser ============================================= */
-  UpdateUseCaseBrowser();
-}
+  if ( this->count() > 1 ) 
+    UpdateUseCaseBrowser(); 
+} 
 
 /*!
   Removes item with all childs from the map - used to optimize UseCase browser update
@@ -871,7 +909,7 @@ void removeFromMap( ItemMap& theMap, QAD_ObjectBrowserItem* item )
 */
 void QAD_ObjectBrowser::UpdateUseCaseBrowser() {
 //  myUseCaseView->clear(); myUseCaseMap.clear();
-  if ( myStudy->_is_nil() ) {
+  if ( myStudy->_is_nil() || this->count()<2 ) {
     return;
   }
   myUseCaseView->blockSignals( true );
@@ -931,7 +969,7 @@ void QAD_ObjectBrowser::UpdateUseCaseBrowser() {
 */
 void QAD_ObjectBrowser::UpdateUCItem( SALOMEDS::SObject_var UCObject, QAD_ObjectBrowserItem* UCItem )
 {
-  if ( myStudy->_is_nil() || !UCItem )
+  if ( myStudy->_is_nil() || !UCItem ) 
     return;
 
   /* Creating SObjects item */
@@ -1049,8 +1087,8 @@ void QAD_ObjectBrowser::UpdateUCItem( SALOMEDS::SObject_var UCObject, QAD_Object
            QAD_ResourceMgr* resMgr = QAD_Desktop::getResourceManager();
            if ( resMgr ) {
              QString msg;
-             if( resMgr->loadResources( QString( aFatherName->Value() ) + "GUI", msg ) ) {
-               QPixmap icon ( resMgr->loadPixmap( QString( aFatherName->Value() ) + "GUI",
+             if( resMgr->loadResources( QAD_Application::getDesktop()->getComponentName(QString( aFatherName->Value() )), msg ) ) {
+               QPixmap icon ( resMgr->loadPixmap( QAD_Application::getDesktop()->getComponentName(QString( aFatherName->Value() )),
                                                   tr( aPixmap->GetPixMap() ) /*tr( "ICON_OBJBROWSER_" + theComponent )*/ ) );
                UCSubItem->setPixmap( 0, icon );
              }
@@ -1098,7 +1136,7 @@ void QAD_ObjectBrowser::UpdateUCItem( SALOMEDS::SObject_var UCObject, QAD_Object
 void QAD_ObjectBrowser::unHighlightAll()
 {
   myListView->clearSelection();
-  myUseCaseView->clearSelection();
+  myUseCaseView->clearSelection();  
 }
 
 /*!
@@ -1278,6 +1316,9 @@ void QAD_ObjectBrowser::showUseCasePopupMenu(QListViewItem* theItem)
 */
 void QAD_ObjectBrowser::onSelectedItem()
 {
+  if (currentPage()==myListView)
+    myUseCaseView->clearSelection();
+
   QListView* whoIs;
   if ( sender()->inherits("QListView") )
     whoIs = (QListView*)sender();
@@ -1484,6 +1525,7 @@ void QAD_ObjectBrowser::setShowIAPP( bool show )
 void QAD_ObjectBrowser::setShowInfoColumns( bool show )
 {
   bool shown = myListView->header()->isResizeEnabled( 2 );
+  
   if ( show != shown ) {
     if ( show ) {
       myListView->header()->setResizeEnabled( true, 2 );
@@ -1519,6 +1561,7 @@ void QAD_ObjectBrowser::setShowInfoColumns( bool show )
 void QAD_ObjectBrowser::setShowValueColumn( bool show )
 {
   bool shown = myListView->header()->isResizeEnabled( 1 );
+  
   if ( show != shown ) {
     if ( show ) {
       myListView->header()->setResizeEnabled( true, 1 );
@@ -1804,3 +1847,43 @@ void QAD_ObjectBrowser::onUseCaseBtn()
   if ( sender() == myCurrentBtn )
     onUseCasePopupMenu( UC_SET_CURRENT_ID );
 }
+
+/* 
+   Show/remove UseCase Browser 
+*/
+
+void QAD_ObjectBrowser::showUseCaseBrowser ( bool show )
+{
+  bool shown = (this->count() > 1);
+  
+  if (show != shown)
+    {
+      if (show)
+       {
+         this->addTab( myVBox, tr( "TLT_USECASE_BROWSER" ) );
+         UpdateUseCaseBrowser();
+         unHighlightAll();
+       }
+      else
+       this->removePage(myVBox);
+    }
+}
+
+/*!
+  Switch between auto resizing of columns and manual mode
+*/
+void QAD_ObjectBrowser::autoSizeColumns( bool autosize )
+{
+  if (autosize)
+    {
+      for (int i = 0; i < myListView->header()->count(); i++ )
+       if (myListView->header()->isResizeEnabled(i))
+         myListView->setColumnWidthMode(i, QListView::Maximum);
+      
+    }
+  else
+    {
+      for (int i = 0; i < myListView->header()->count(); i++ )
+       myListView->setColumnWidthMode(i, QListView::Manual); 
+    }
+}
index a03afac0af8bc4268c1bf993d8aed2ea0cd39920..ef5f940997a2ec25b85f0df095f0c5d4f5cfd66d 100644 (file)
@@ -89,6 +89,8 @@ public:
     void                   setShowInfoColumns( bool show );
     void                   setShowValueColumn( bool show );
     void                   setEnableChronoSort( bool enable );
+    void                   showUseCaseBrowser ( bool show );
+    void                   autoSizeColumns ( bool autosize );
 
 protected:
     void                  Update( SALOMEDS::SObject_ptr SO,
@@ -132,6 +134,7 @@ private:
     ItemMap                myListViewMap;
     ItemMap                myUseCaseMap;
     QListView*            myListView;
+    QWidget*               myVBox;
     QListView*            myUseCaseView;
     QPopupMenu*                   myPopupMenu;
     SALOMEDS::Study_ptr    myStudy;
@@ -143,4 +146,14 @@ private:
     QToolButton*           myClearBtn;
 };
 
+
+class Btn : public QToolButton
+{
+  Q_OBJECT
+public:
+  Btn ( QWidget * parent, const char * name = 0 );
+public slots:
+  void onClicked();
+};
+
 #endif
index 00faaa1b1b13b5073723a1af5e8990dd17160c7d..5f04d820f6e5f352c15db968f9a4a8a0684f2594 100644 (file)
@@ -93,8 +93,8 @@ void QAD_PyInterp::initContext()
   if(m == NULL)
     {
       MESSAGE("problem...");
-      ASSERT(0);
       PyErr_Print();
+      ASSERT(0);
       salomeReleaseLock(); 
       return;
     }  
@@ -105,21 +105,31 @@ void QAD_PyInterp::initContext()
     {
       PyDict_SetItemString(_g, "__builtins__", builtinmodule); // assign singleton __builtin__ module
     }
+// Debut modif CCAR
   /*
-   * Call salome_shared_modules to import salome shared modules that must not be initialized twice
-   * so import_shared_modules makes only a copy of the modules in _tstate->interp->modules
-   * (sys.modules)
+   * Import special module to change the import mechanism
    */
-  m= PyObject_CallMethod(salome_shared_modules_module,
-                        "import_shared_modules","O",
-                        _tstate->interp->modules);
-  if (m == NULL)
-    {
-      /*
-       * Problem  , print it
-       */
-      MESSAGE("problem...");
-      ASSERT(0);
+  m =PyImport_ImportModule("import_hook");
+  if(m == NULL){
+      MESSAGE("initContext: problem with import_hook import");
       PyErr_Print();
-    }
+      PyErr_Clear();
+      ASSERT(0);
+  }
+  /*
+   * Call init_shared_modules to initialize the shared import mechanism for modules 
+   * that must not be imported twice
+   */
+  if(m != NULL){
+      m= PyObject_CallMethod(m,
+                        "init_shared_modules","O",salome_shared_modules_module);
+      if (m == NULL){
+          MESSAGE("initContext: problem with init_shared_modules call");
+          PyErr_Print();
+          PyErr_Clear();
+          ASSERT(0);
+      }
+  }
+// Fin   modif CCAR
+
 }
index 4dbfcd003381222a7c2cf6ec9564701f710378c9..d116c7b33a1108d75134342ad2dac403f3e6fa3f 100644 (file)
@@ -240,11 +240,10 @@ QString QAD_ResourceMgr::resources( const char* prefix ) const
   Collects list of directories, separated by ';' where resources for module 'prefix'
   can be situated
   The order is following : 
+  - <prefix>_ROOT_DIR/share/salome/resources directory
   - CSF_<prefix>Resources env.var directory ( or directory list )
-  - CSF_ResourcesDefaults env.var directory ( or directory list )
   - ${HOME}/.salome/resources directory
-  - ${SALOME_SITE_DIR}/share/salome/resources directory
-  - ${SALOME_ROOT_DIR}/share/salome/resources directory
+  - KERNEL_ROOT_DIR/share/salome/resources directory
 */
 QString QAD_ResourceMgr::collectDirs( const QString& prefix ) const
 {
@@ -253,6 +252,24 @@ QString QAD_ResourceMgr::collectDirs( const QString& prefix ) const
   QString dir;
   char* cenv;
   
+  if ( !prefix.isEmpty() ) {
+    envVar = prefix.latin1() + QCString( "_ROOT_DIR" );
+    cenv = getenv( ( const char* ) envVar );
+    if ( cenv ) {
+      dir.sprintf( "%s", cenv );
+      if ( !dir.isEmpty() ) {
+       dir = QAD_Tools::addSlash(dir) ;
+       dir = dir + "share" ;
+       dir = QAD_Tools::addSlash(dir) ;
+       dir = dir + "salome" ;
+       dir = QAD_Tools::addSlash(dir) ;
+       dir = dir + "resources" ;
+       dir = QAD_Tools::addSlash(dir) ;
+       dirList.append( dirList.isEmpty() ? dir : ( QString( SEPARATOR ) + dir ) );
+      }
+    }
+  }
+
   // Try CSF_<prefix>Resources env.var directory ( or directory list )
   if ( !prefix.isEmpty() ) {
     envVar = QCString( "CSF_" ) + prefix.latin1() + QCString( "Resources" );
@@ -263,13 +280,6 @@ QString QAD_ResourceMgr::collectDirs( const QString& prefix ) const
        dirList.append( dirList.isEmpty() ? dir : ( QString( SEPARATOR ) + dir ) );
     }
   }
-  // Try CSF_ResourcesDefaults env.var directory ( or directory list )
-  cenv = getenv( "CSF_ResourcesDefaults" );
-  if ( cenv ) {
-    dir.sprintf( "%s", cenv );
-    if ( !dir.isEmpty() )
-      dirList.append( dirList.isEmpty() ? dir : ( QString( SEPARATOR ) + dir ) );
-  }
   // Try ${HOME}/.salome/resources directory
   cenv = getenv( "HOME" );
   if ( cenv ) {
@@ -283,23 +293,9 @@ QString QAD_ResourceMgr::collectDirs( const QString& prefix ) const
       dirList.append( dirList.isEmpty() ? dir : ( QString( SEPARATOR ) + dir ) );
     }
   }
-  // Try ${SALOME_SITE_DIR}/share/salome/resources directory
-  cenv = getenv( "SALOME_SITE_DIR" );
-  if ( cenv ) {
-    dir.sprintf( "%s", cenv );
-    if ( !dir.isEmpty() ) {
-      dir = QAD_Tools::addSlash(dir) ;
-      dir = dir + "share" ;
-      dir = QAD_Tools::addSlash(dir) ;
-      dir = dir + "salome" ;
-      dir = QAD_Tools::addSlash(dir) ;
-      dir = dir + "resources" ;
-      dir = QAD_Tools::addSlash(dir) ;
-      dirList.append( dirList.isEmpty() ? dir : ( QString( SEPARATOR ) + dir ) );
-    }
-  }
-  // Try ${SALOME_ROOT_DIR}/share/salome/resources directory
-  cenv = getenv( "SALOME_ROOT_DIR" );
+
+  // Try ${KERNEL_ROOT_DIR}/share/salome/resources directory
+  cenv = getenv( "KERNEL_ROOT_DIR" );
   if ( cenv ) {
     dir.sprintf( "%s", cenv );
     if ( !dir.isEmpty() ) {
index 477473451a64c0a5527f2c6318e017901d62aa83..806a1503cf4a380319d3f93778e02d00c450a320 100644 (file)
@@ -69,29 +69,12 @@ QAD_RightFrame::QAD_RightFrame(QWidget *parent, const char *name,
   QCString dir;
   QFileInfo fileInfo ;
   bool found = false;
-  if (myViewType == VIEW_OCC) {
-    if ( dir = getenv("SALOME_SITE_DIR")) {
+  if (myViewType == VIEW_OCC) {    
+    if ( (dir = getenv("KERNEL_ROOT_DIR")) && !found ) {
       dir = QAD_Tools::addSlash(dir) ;
       dir = dir + "lib" ;
       dir = QAD_Tools::addSlash(dir) ;
-#ifdef WNT
-      dir = dir + "libOCCViewer.dll" ;
-#else
-      dir = dir + "libOCCViewer.so" ;
-#endif
-      MESSAGE ( " GUI library = " << dir )
-      fileInfo.setFile(dir) ;
-      if (fileInfo.exists()) {
-       ComponentLib = fileInfo.fileName();
-       found = true;
-       MESSAGE (" Found ")
-      } else
-       MESSAGE (" Not found ")
-    }
-    
-    if ( (dir = getenv("SALOME_ROOT_DIR")) && !found ) {
-      dir = QAD_Tools::addSlash(dir) ;
-      dir = dir + "lib" ;
+      dir = dir + "salome" ;
       dir = QAD_Tools::addSlash(dir) ;
 #ifdef WNT
       dir = dir + "libOCCViewer.dll" ;
@@ -108,29 +91,11 @@ QAD_RightFrame::QAD_RightFrame(QWidget *parent, const char *name,
        MESSAGE (" Not found ")
     }
   } else if (myViewType == VIEW_VTK) {
-    
-    if ( dir = getenv("SALOME_SITE_DIR")) {
+    if ( (dir = getenv("KERNEL_ROOT_DIR")) && !found ) {
       dir = QAD_Tools::addSlash(dir) ;
       dir = dir + "lib" ;
       dir = QAD_Tools::addSlash(dir) ;
-#ifdef WNT
-      dir = dir + "libVTKViewer.dll" ;
-#else
-      dir = dir + "libVTKViewer.so" ;
-#endif
-      MESSAGE ( " GUI library = " << dir );
-      fileInfo.setFile(dir) ;
-      if (fileInfo.exists()) {
-       ComponentLib = fileInfo.fileName();
-       found = true;
-       MESSAGE (" Found ");
-      } else
-       MESSAGE (" Not found ");
-    }
-        
-    if ( (dir = getenv("SALOME_ROOT_DIR")) && !found ) {
-      dir = QAD_Tools::addSlash(dir) ;
-      dir = dir + "lib" ;
+      dir = dir + "salome" ;
       dir = QAD_Tools::addSlash(dir) ;
 #ifdef WNT
       dir = dir + "libVTKViewer.dll" ;
@@ -147,28 +112,11 @@ QAD_RightFrame::QAD_RightFrame(QWidget *parent, const char *name,
        MESSAGE (" Not found ");
     }
   } else if (myViewType == VIEW_GRAPHSUPERV) {
-    if ( dir = getenv("SALOME_SITE_DIR")){
+    if ( (dir = getenv("KERNEL_ROOT_DIR")) && !found ) {
       dir = QAD_Tools::addSlash(dir) ;
       dir = dir + "lib" ;
       dir = QAD_Tools::addSlash(dir) ;
-#ifdef WNT
-      dir = dir + "libSUPERVGraph.dll" ;
-#else
-      dir = dir + "libSUPERVGraph.so" ;
-#endif
-      MESSAGE ( " GUI library = " << dir )
-      fileInfo.setFile(dir) ;
-      if (fileInfo.exists()) {
-       ComponentLib = fileInfo.fileName() ;
-       found = true;
-       MESSAGE (" Found ")
-      } else
-       MESSAGE (" Not found ")
-    }
-    
-    if ( (dir = getenv("SALOME_ROOT_DIR")) && !found ) {
-      dir = QAD_Tools::addSlash(dir) ;
-      dir = dir + "lib" ;
+      dir = dir + "salome" ;
       dir = QAD_Tools::addSlash(dir) ;
 #ifdef WNT
       dir = dir + "libSUPERVGraph.dll" ;
@@ -185,28 +133,11 @@ QAD_RightFrame::QAD_RightFrame(QWidget *parent, const char *name,
        MESSAGE (" Not found ")
     }
   } else if (myViewType == VIEW_PLOT2D) {
-    if ( dir = getenv("SALOME_SITE_DIR")){
+    if ( (dir = getenv("KERNEL_ROOT_DIR")) && !found ) {
       dir = QAD_Tools::addSlash(dir) ;
       dir = dir + "lib" ;
       dir = QAD_Tools::addSlash(dir) ;
-#ifdef WNT
-      dir = dir + "libPlot2d.dll" ;
-#else
-      dir = dir + "libPlot2d.so" ;
-#endif
-      MESSAGE ( " GUI library = " << dir )
-      fileInfo.setFile(dir) ;
-      if (fileInfo.exists()) {
-       ComponentLib = fileInfo.fileName() ;
-       found = true;
-       MESSAGE (" Found ")
-      } else
-       MESSAGE (" Not found ")
-    }
-    
-    if ( (dir = getenv("SALOME_ROOT_DIR")) && !found ) {
-      dir = QAD_Tools::addSlash(dir) ;
-      dir = dir + "lib" ;
+      dir = dir + "salome" ;
       dir = QAD_Tools::addSlash(dir) ;
 #ifdef WNT
       dir = dir + "libPlot2d.dll" ;
index 10d381eaa1e460d92934a74d7ea500df169a2f3e..1be9aef0e0b111f80415207363ee22c0fd2162c1 100644 (file)
@@ -60,7 +60,6 @@ using namespace std;
 // QT Include
 #include <qapplication.h>
 
-#define MAX_UNDO 10
 /*!
     Constructor
 */
@@ -75,7 +74,7 @@ myPath( path )
 {
     myStudy = aStudy;
 
-    myTitle = QAD_Tools::getFileNameFromPath( path, false );
+    myTitle = QAD_Tools::getFileNameFromPath( path, true );
 
     myIsActive = false;
     myIsSaved = false;
@@ -94,7 +93,8 @@ myPath( path )
     SCRUTE(_interp);
 
     /* create default selection */
-    Selection( "Salome" );
+    //NRI    Selection( "Salome" );
+    Selection( QAD_Application::getDesktop()->getComponentUserName( "KERNEL" ) );
 
     /* create study frame */
     myResult = true;
@@ -103,7 +103,12 @@ myPath( path )
     /* set default Undo/Redo limit */
     QAD_ASSERT_DEBUG_ONLY( !myStudy->_is_nil() );
     SALOMEDS::StudyBuilder_var SB = myStudy->NewBuilder();
-    SB->UndoLimit( MAX_UNDO );
+
+    int aLocked = myStudy->GetProperties()->IsLocked();
+    if (aLocked) myStudy->GetProperties()->SetLocked(false);
+    SB->UndoLimit(QAD_Desktop::getUndoLevel());
+    if (aLocked) myStudy->GetProperties()->SetLocked(true);
+
 }
 
 /*!
@@ -168,7 +173,10 @@ void QAD_Study::removeStudyFrame( QAD_StudyFrame* sf )
       SALOMEDS::SObject_var fatherSF = myStudy->FindObjectID(sf->entry());
       if (!fatherSF->_is_nil()) {
        SALOMEDS::StudyBuilder_var aStudyBuilder = myStudy->NewBuilder();
+       int aLocked = myStudy->GetProperties()->IsLocked();
+       if (aLocked) myStudy->GetProperties()->SetLocked(false);
        aStudyBuilder->RemoveObject(fatherSF);
+       if (aLocked) myStudy->GetProperties()->SetLocked(true);
       }
       
       updateObjBrowser( true );
@@ -273,7 +281,7 @@ void QAD_Study::setTitle( const QString& path )
 {
   myPath = path;
 
-  QString title = QAD_Tools::getFileNameFromPath( path, false );
+  QString title = QAD_Tools::getFileNameFromPath( path, true );
   QAD_ASSERT_DEBUG_ONLY ( !title.isNull() );
 
   for ( QAD_StudyFrame* sf = myStudyFrames.first(); sf ; sf = myStudyFrames.next() )
@@ -379,6 +387,7 @@ void QAD_Study::onStudyDeactivated()
 */
 void QAD_Study::close()
 {
+  emit closed();
   if ( !myStudy->_is_nil() )
     abortAllOperations();
     /* clear each study frame */
index 2d650058df1716fbe4b6fe429a55fc3d14d7d232..94fe80305634dd4b7513279b867caf9ab4741d6a 100644 (file)
@@ -154,6 +154,7 @@ public:
 signals:
   void           docClosing( QAD_Study* );
   void           docOperationTerminated( bool );
+  void            closed();
 
 public slots:
   void           onStudyFrameActivated( QAD_StudyFrame* );
index 194aaa516395eaf45a21bf3533dd05e2473a0ce8..29bde65b10062d15e3721e005fca7be8d592ff96 100644 (file)
@@ -124,7 +124,6 @@ void QAD_StudyFrame::setVisible( bool visible )
 */
 void QAD_StudyFrame::closeEvent(QCloseEvent* e)
 {
-  emit sfBeforeStudyFrameClosing(this); 
   emit sfStudyFrameClosing(this); 
 }
 
index b16822dacd646419604f6489e70ba66ab9d4ccd0..e8b393b441a938b7d036f4d611301433ab224f99 100644 (file)
@@ -87,7 +87,6 @@ class QAD_EXPORT QAD_StudyFrame: public QMainWindow
  signals:
   void                sfStudyFrameActivated( QAD_StudyFrame* );
   void                sfStudyFrameClosing( QAD_StudyFrame*);
-  void                sfBeforeStudyFrameClosing( QAD_StudyFrame*);
 
  public slots:
   void               onStudyFrameActivated ( QWidget* );
index 0b9ab52d31802f8aca52b3ad3ed208e920bfbd07..e2e85bf5363a20a3b6e2c67fe80b9f96d33a46ab 100644 (file)
@@ -276,7 +276,7 @@ TCollection_AsciiString QAD_Tools::toAsciiString( const QString& qString)
 QFont QAD_Tools::stringToFont( const QString& fontDescription )
 {
   QFont font;
-  if ( !font.fromString( fontDescription ) )
+  if ( fontDescription.stripWhiteSpace().isEmpty() || !font.fromString( fontDescription ) )
     font = QFont( "Courier", 11 );
   return font;
 }
index 04a78ddcd7cfe72c397525fab74561180e68b820..b894bb703e1819a88b631ffa27e52da86eea74b5 100644 (file)
@@ -58,8 +58,8 @@ public:
   virtual QColor         backgroundColor() const = 0;
 
   virtual void           SetSelectionMode( int mode ) = 0;
-
-  virtual void           SetTrihedronSize( int dim ) = 0;
+  
+  virtual void           onAdjustTrihedron() = 0; 
 
   /*  popup management */
   virtual void           setPopupServer( QAD_Application* ) = 0;
index a2afaf3b501886efef1d7ac63a5bc7f6fa37a77d..e845d78e42aa0bc7980fd1e0c3e7f8c0af4b560b 100644 (file)
@@ -259,6 +259,12 @@ msgstr "Interface Applicative"
 msgid "MEN_DESK_PREF_OBJECTBROWSER_CHRONO_SORT"
 msgstr "Chronological sort of objects" 
 
+msgid "MEN_DESK_PREF_OBJECTBROWSER_SHOW_USECASE"
+msgstr "Show UseCase Browser" 
+
+msgid "MEN_DESK_PREF_OBJECTBROWSER_NO_AUTOSIZE"
+msgstr "No autosize columns" 
+
 
 msgid "QAD_Desktop::MEN_DESK_SELECTION_MODE"
 msgstr "Selection Mode"
@@ -516,6 +522,10 @@ msgstr "An exception has been caught. Click <OK> to continue."
 msgid "ERR_ONLY_PLOT2D_VIEWER"
 msgstr "This function is available only in Plot2d viewer"
 
+#: QAD_Desktop.cxx:2339
+msgid "ERR_LIBGUI"
+msgstr "lib%1.so has not been found. Check LD_LIBRARY_PATH environment variable"
+
 #---------------
 # QUESTION
 #---------------
@@ -763,6 +773,9 @@ msgstr "ASCII Save"
 msgid "TOT_APP_EDIT_COPY"
 msgstr "Copy"
 
+msgid "MEN_DESK_PREF_UNDO_LEVEL"
+msgstr "Undo Level"
+
 msgid "MEN_APP_EDIT_COPY"
 msgstr "&Copy"
 
index 0d2bf1a0f6b7a77f36984167bbf382419750d966..dec15cf79a1f19a1c486af4ae862d27e23d475b7 100644 (file)
@@ -129,7 +129,7 @@ msgstr "Open With..."
 
 #: QAD_Application.cxx:331
 msgid "QAD_Application::MEN_ABOUT"
-msgstr "A propos de SALOME Professional"
+msgstr "A propos de SALOME "
 
 #: QAD_Desktop.cxx:407
 msgid "QAD_Desktop::MEN_DESK_EDIT"
@@ -398,18 +398,6 @@ msgstr "S
 # TOOL TIP
 #---------------
 
-#: QAD_HelpWindow.cxx:57
-msgid "QAD_HelpWindow::TOT_HELPWINDOW_BACKWARD"
-msgstr "Avant"
-
-#: QAD_HelpWindow.cxx:60
-msgid "QAD_HelpWindow::TOT_HELPWINDOW_FORWARD"
-msgstr "Apres"
-
-#: QAD_HelpWindow.cxx:63
-msgid "QAD_HelpWindow::TOT_HELPWINDOW_HOME"
-msgstr "Home"
-
 #: QAD_Application.cxx:173
 msgid "QAD_Application::TOT_APP_EDIT_REDO"
 msgstr "Répéter l'opération"
@@ -470,6 +458,11 @@ msgstr "L'
 msgid "ERR_ERROR"
 msgstr "Erreur"
 
+
+#: QAD_Desktop.cxx:2339
+msgid "ERR_LIBGUI"
+msgstr "La lib%1.so n'a pas Ã©té trouvée. Verifier la variable d'environnement LD_LIBRARY_PATH"
+
 #---------------
 # QUESTION
 #---------------
@@ -522,7 +515,7 @@ msgstr "Cr
 
 #: QAD_Application.cxx:133
 msgid "QAD_Application::APP_DEFAULTTITLE"
-msgstr "SALOME Professional"
+msgstr "SALOME"
 
 
 #: QAD_Desktop.cxx:431
@@ -531,7 +524,7 @@ msgstr "
 
 #: QAD_Desktop.cxx:424
 msgid "QAD_Desktop::DESK_DEFAULTTITLE"
-msgstr "SALOME Professional"
+msgstr "SALOME"
 
 #: QAD_Desktop.cxx:920
 msgid "QAD_Desktop::DESK_FILES"
index 17b7f88ecd8f1c563b92e4b8fa69d5960bad3a1a..fa67befd6afadcd7ddd016de3ca538067d6cfec5 100644 (file)
@@ -458,37 +458,18 @@ void SALOMEGUI_Application::onDisplay(int id)
     QCString dir;
     QFileInfo fileInfo ;
     bool found = false;
-    if ( getenv("SALOME_SITE_DIR") ) {
+    if ( getenv( QAD_Application::getDesktop()->getComponentName(parentComp) + "_ROOT_DIR")  ) {
       dir.fill('\0');
-      dir.sprintf("%s",getenv("SALOME_SITE_DIR"));
+      dir.sprintf("%s", getenv( QAD_Application::getDesktop()->getComponentName(parentComp) + "_ROOT_DIR"));
       dir = QAD_Tools::addSlash(dir) ;
       dir = dir + "lib" ;
       dir = QAD_Tools::addSlash(dir) ;
-#ifdef WNT
-      dir = dir + "lib" + parentComp.latin1() + "GUI.dll" ;
-#else
-      dir = dir + "lib" + parentComp.latin1() + "GUI.so" ;
-#endif
-      MESSAGE ( " GUI library = " << dir )
-      fileInfo.setFile(dir) ;
-      if (fileInfo.exists()) {
-       ComponentLib = fileInfo.fileName();
-       found = true;
-       MESSAGE ( " found " )
-      } else {
-       MESSAGE ( " Not found " )
-      }
-    }
-    if ( !found && getenv("SALOME_ROOT_DIR")  ) {
-      dir.fill('\0');
-      dir.sprintf("%s", getenv("SALOME_ROOT_DIR"));
-      dir = QAD_Tools::addSlash(dir) ;
-      dir = dir + "lib" ;
+      dir = dir + "salome" ;
       dir = QAD_Tools::addSlash(dir) ;
 #ifdef WNT
-      dir = dir + "lib" + parentComp.latin1() + "GUI.dll" ;
+      dir = dir + "lib" + QAD_Application::getDesktop()->getComponentName(parentComp).latin1() + "GUI.dll" ;
 #else
-      dir = dir + "lib" + parentComp.latin1() + "GUI.so" ;
+      dir = dir + "lib" + QAD_Application::getDesktop()->getComponentName(parentComp).latin1() + "GUI.so" ;
 #endif
       MESSAGE ( " GUI library = " << dir )
       fileInfo.setFile(dir) ;
@@ -634,7 +615,7 @@ void SALOMEGUI_Application::onDisplay(int id)
     viewFrame->Repaint();
 
   if (isForeignGUIUsed)
-    foreignGUI.DlClose();
+    ;//foreignGUI.DlClose(); // VSR: Fix crash on Display objects from non-parent components
   myActiveStudy->updateObjBrowser(true);
 }
 
index 2573f3ff9cbcfaf5b38bf0b90c1001e4bdc289c3..3a8eb70f2a7d4b56bdf131b74881b79d158d4fe4 100644 (file)
@@ -119,6 +119,21 @@ void SALOMEGUI_SetValueDlg::setLabel( const QString& label )
   myLabel->setText( label );
 }
 
+void SALOMEGUI_SetValueDlg::accept()
+{
+  const QValidator* v = myLineEdit->validator();
+  if ( v ) {
+    if ( v->inherits( "QIntValidator" ) ) {
+      bool b;
+      int val = myLineEdit->text().toInt( &b );
+      const QIntValidator* iv = dynamic_cast<const QIntValidator*>(v);
+      if ( !b || val < iv->bottom() || val > iv->top())
+       return;
+    }
+  }
+  QDialog::accept();
+}
+
 /*!
   Gets string value
 */
@@ -167,6 +182,32 @@ int SALOMEGUI_SetValueDlg::getInteger( const QString& caption,
   return v;
 }
 
+/*!
+  Gets integer value
+*/
+int SALOMEGUI_SetValueDlg::getInteger( const QString& caption, 
+                                      const QString& label, 
+                                      int            bottom,
+                                      int            top,
+                                      const int      oldValue,
+                                      bool*          ok, 
+                                      QWidget*       parent )
+{
+  int v = 0;
+  SALOMEGUI_SetValueDlg* dlg = new SALOMEGUI_SetValueDlg( parent );
+  dlg->setCaption( caption );
+  dlg->setLabel( label );
+  dlg->setValidator( new QIntValidator( bottom, top, dlg ) );
+  dlg->setValue( QString::number( oldValue ) );
+  int result = dlg->exec();
+  if ( result == QDialog::Accepted ) 
+    v = dlg->value().toInt();
+  if ( ok ) 
+    *ok = result == QDialog::Accepted;
+  delete dlg;
+  return v;
+}
+
 /*!
   Gets double value
 */
index bcd845838f641beb8a84a5f386a9171add464cad..3b5bd02b989fdf9262cdc66759d947f189635586 100644 (file)
@@ -36,11 +36,20 @@ public:
                              const int      oldValue = 0,
                              bool*          ok = 0, 
                              QWidget*       parent = 0 );
+  static int      getInteger( const QString& caption, 
+                             const QString& label, 
+                             int            bottom,
+                             int            top,
+                             const int      oldValue = 0,
+                             bool*          ok = 0, 
+                             QWidget*       parent = 0 );
   static double   getDouble ( const QString& caption, 
                              const QString& label, 
                              const double   oldValue = 0.0,
                              bool*          ok = 0, 
                              QWidget*       parent = 0 );
+public slots:
+  void accept();
 
 private:
   SALOMEGUI_SetValueDlg( QWidget* parent = 0 );
index e5df0ffbecb1e95595cb8d8922ca575f694027c1..7103d349a1c6adf0411515b557e821c5301a45a8 100644 (file)
@@ -121,6 +121,21 @@ const char *SALOMEGUI_Swig::getActiveStudyName()
   return _name.latin1();
 }
 
+/*!
+  Returns the name of component.
+*/
+const char* SALOMEGUI_Swig::getComponentName( const char* ComponentUserName )
+{
+  return QAD_Application::getDesktop()->getComponentName( ComponentUserName );
+}
+/*!
+  Returns the user name of component.
+*/
+const char* SALOMEGUI_Swig::getComponentUserName( const char* ComponentName )
+{
+  return QAD_Application::getDesktop()->getComponentUserName( ComponentName );
+}
+
 /*!
   Returns the number of selected objects.
 */
index 5c0875d66d2980b2b213c82a015f503da4ba19ed..0af5330a197e01a326078d4902d740e071661aa3 100644 (file)
@@ -68,6 +68,14 @@ public:
 
 /* check */
   bool IsInCurrentView(const char *Entry);
+
+/* component name */
+  const char* getComponentName( const char* ComponentUserName );
+  const char* getComponentUserName( const char* ComponentName );
+
+protected:
+  int _studyId;
+  QString _name;
 };
 
 
index bf7794169ed93233d28fcbe7398e6a36bf678f5b..d5c5a5007d75ea05a0da6c33922f9807ebc34a3a 100644 (file)
@@ -79,4 +79,7 @@ class SALOMEGUI_Swig
 /* check */
   bool IsInCurrentView(const char *Entry);
 
+/* component name */
+  const char* getComponentName( const char* ComponentUserName );
+  const char* getComponentUserName( const char* ComponentName );
 };
index 02e1c0bca7411c485278f7fb6581fb731b554248..311b6075fe9ac8a5243e94995d8d056ba09951cd 100644 (file)
@@ -67,7 +67,7 @@ msgstr "Appropriate view must be created to display selected object(s)"
 
 #: SALOMEGUI_TrihedronSizeDlg.cxx:77
 msgid "SALOMEGUI_TrihedronSizeDlg::MEN_TRIHEDRON_SIZE"
-msgstr "Size :"
+msgstr "Size (% of bounding box) :"
 
 #: SALOMEGUI_TrihedronSizeDlg.cxx:36
 msgid "SALOMEGUI_TrihedronSizeDlg::MEN_TRIHEDRON"
@@ -697,7 +697,7 @@ msgid "SALOMEGUI_ActivateComponentDlg::ActivateComponent_DESCRIPTION"
 msgstr "You need to create, open or load study before."
 
 msgid "SALOMEGUI_HELP_TITLE"
-msgstr "SALOME Professional Help"
+msgstr "SALOME Help"
 
 msgid "TOT_PLOT2D_FITDATA"
 msgstr "Fit range"
index e7cabbe45998f933c2d8948a00834e5c5e093094..6ffd9526218a695b22a7cac14bcfa17ebbaa638d 100644 (file)
@@ -66,13 +66,13 @@ msgstr "La vue appropri
 #---------------
 
 msgid "INF_VERSION"
-msgstr "Version 1.0"
+msgstr ""
 
 msgid "INF_COPYRIGHT"
-msgstr "Copyright (C) 2002"
+msgstr ""
 
 msgid "INF_LICENSE"
-msgstr "All rights reserved"
+msgstr ""
 
 
 #---------------
@@ -81,7 +81,7 @@ msgstr "All rights reserved"
 
 #: SALOMEGUI_TrihedronSizeDlg.cxx:77
 msgid "SALOMEGUI_TrihedronSizeDlg::MEN_TRIHEDRON_SIZE"
-msgstr "Size :"
+msgstr "Size (% of bounding box) :"
 
 #: SALOMEGUI_TrihedronSizeDlg.cxx:36
 msgid "SALOMEGUI_TrihedronSizeDlg::MEN_TRIHEDRON"
diff --git a/src/SALOMELocalTrace/Makefile.in b/src/SALOMELocalTrace/Makefile.in
new file mode 100644 (file)
index 0000000..6e3674a
--- /dev/null
@@ -0,0 +1,49 @@
+#  SALOMELocalTrace : log on local machine
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Paul RASCLE (EDF)
+#  Module : SALOME
+#  $Header$
+
+top_srcdir=@top_srcdir@
+top_builddir=../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl
+
+
+@COMMENCE@
+
+# header files  
+EXPORT_HEADERS= SALOME_Log.hxx
+
+EXPORT_PYSCRIPTS = 
+
+# Libraries targets
+
+LIB = libSALOMELocalTrace.la 
+LIB_SRC = SALOME_Log.cxx
+
+LDFLAGS+= 
+
+@CONCLUDE@
diff --git a/src/SALOMELocalTrace/SALOME_Log.cxx b/src/SALOMELocalTrace/SALOME_Log.cxx
new file mode 100644 (file)
index 0000000..476d987
--- /dev/null
@@ -0,0 +1,57 @@
+//  SALOME_LocalTrace : log on local machine
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOME_Log.hxx
+//  Author : Vasily Rusyaev, Paul RASCLE, EDF
+//  Module : KERNEL
+//  $Header$
+
+#include <string>
+#include <iostream>
+
+using namespace std;
+
+#include "SALOME_Log.hxx"
+
+SALOME_Log::SALOME_Log()
+{
+}
+
+SALOME_Log::~SALOME_Log()
+{
+}
+
+SALOME_Log& SALOME_Log::Instance()
+{
+  static SALOME_Log instance;
+  return instance;
+}
+
+void SALOME_Log::putMessage(std::ostream& msg)
+{
+  cout << std::flush;
+  cerr <<str() << std::flush;
+  rdbuf()->freeze(false);
+  seekp(0);
+}
+
diff --git a/src/SALOMELocalTrace/SALOME_Log.hxx b/src/SALOMELocalTrace/SALOME_Log.hxx
new file mode 100644 (file)
index 0000000..043d1e1
--- /dev/null
@@ -0,0 +1,85 @@
+//  SALOME Utils : general SALOME's definitions and tools
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOME_Log.hxx
+//  Author : Vasily Rusyaev (OCN), Paul RASCLE (EDF)
+//  Module : KERNEL
+//  $Header$
+
+#ifndef _SALOME_LOG_HXX_
+#define _SALOME_LOG_HXX_
+
+//these declarations for files don't using OCC includes (for example HDF)
+# ifdef WNT
+
+#  ifndef Standard_EXPORT
+#   define Standard_EXPORT __declspec( dllexport )
+// For global variables :
+#   define Standard_EXPORTEXTERN __declspec( dllexport ) extern
+#   define Standard_EXPORTEXTERNC extern "C" __declspec( dllexport )
+#  endif  /* Standard_EXPORT */
+
+#  ifndef Standard_IMPORT
+#   define Standard_IMPORT __declspec( dllimport ) extern
+#   define Standard_IMPORTC extern "C" __declspec( dllimport )
+#  endif  /* Standard_IMPORT */
+
+# else  /* WNT */
+
+#  ifndef Standard_EXPORT
+#   define Standard_EXPORT
+// For global variables :
+#   define Standard_EXPORTEXTERN extern
+#   define Standard_EXPORTEXTERNC extern "C"
+#  endif  /* Standard_EXPORT */
+
+#  ifndef Standard_IMPORT
+#   define Standard_IMPORT extern
+#   define Standard_IMPORTC extern "C"
+#  endif  /* Standard_IMPORT */
+
+# endif  /* WNT */
+
+
+using namespace std;
+
+#include <iostream>
+#include <strstream>
+
+
+class SALOME_Log : public ostrstream
+{
+public:
+  virtual ~SALOME_Log();
+  static Standard_EXPORT SALOME_Log& Instance();
+  Standard_EXPORT void putMessage(std::ostream& msg);
+
+protected:
+  //disable creation of instances: force use static SALOME_Log& Instance()
+  SALOME_Log();
+};
+
+
+#define SLog SALOME_Log::Instance()
+
+#endif
diff --git a/src/SALOMELogger/Makefile.in b/src/SALOMELogger/Makefile.in
new file mode 100644 (file)
index 0000000..2a9f4f5
--- /dev/null
@@ -0,0 +1,50 @@
+#  SALOMELogger : CORBA distributed log
+#
+#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+# 
+#  This library is free software; you can redistribute it and/or 
+#  modify it under the terms of the GNU Lesser General Public 
+#  License as published by the Free Software Foundation; either 
+#  version 2.1 of the License. 
+# 
+#  This library is distributed in the hope that it will be useful, 
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+#  Lesser General Public License for more details. 
+# 
+#  You should have received a copy of the GNU Lesser General Public 
+#  License along with this library; if not, write to the Free Software 
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+# 
+#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+#
+#
+#
+#  File   : Makefile.in
+#  Author : Paul RASCLE (EDF)
+#  Module : SALOME
+#  $Header$
+
+top_srcdir=@top_srcdir@
+top_builddir=../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@:@top_srcdir@/idl
+
+
+@COMMENCE@
+
+# header files  
+EXPORT_HEADERS= 
+
+EXPORT_PYSCRIPTS = 
+
+# Libraries targets
+
+LIB = libSALOMELoggerClient.la 
+LIB_SRC = SALOME_LoggerClient.cxx
+LIB_CLIENT_IDL = Logger.idl 
+
+LDFLAGS+= 
+
+@CONCLUDE@
diff --git a/src/SALOMELogger/SALOME_LoggerClient.cxx b/src/SALOMELogger/SALOME_LoggerClient.cxx
new file mode 100644 (file)
index 0000000..70f7650
--- /dev/null
@@ -0,0 +1,154 @@
+//  SALOME_LoggerClient : CORBA distributed log
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : SALOME_Loggerclient.hxx
+//  Author : Vasily Rusyaev, Paul RASCLE, EDF
+//  Module : KERNEL
+//  $Header$
+
+#include <string>
+#include <iostream>
+
+using namespace std;
+
+#include "SALOME_Log.hxx"
+
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(Logger)
+
+// class SALOME_LoggerClient : public SALOME_Log
+// {
+// protected:
+//   SALOME_Logger::Logger_var m_pInterfaceLogger; // object reference on Logger server
+// };
+
+SALOME_Logger::Logger_ptr m_pInterfaceLogger; // object reference on Logger server
+
+SALOME_Log::SALOME_Log()
+{
+  cout << "SALOME_LoggerClient: constructor" << endl;
+  //get reference on object reference from NS
+  //and initialize m_pInterfaceLogger 
+
+  int argc = 1;
+  char* argv[1] = {"application"};
+  try
+    {
+      //NB. You can't use SALOME_NamingService class because it uses MESSAGE macro
+      //Otherwise, you will get segmentation fault.   
+
+      //Initialize the ORB
+      CORBA::ORB_var orb = CORBA::ORB_init(argc,argv);
+      long TIMESleep = 250000000;
+      int NumberOfTries = 40;
+      int a;
+      timespec ts_req;
+      ts_req.tv_nsec=TIMESleep;
+      ts_req.tv_sec=0;
+      timespec ts_rem;
+      ts_rem.tv_nsec=0;
+      ts_rem.tv_sec=0;
+      CosNaming::NamingContext_var inc;
+      CORBA::Object_var theObj;
+      CORBA::Object_var obj;
+      CosNaming::Name name;
+      name.length(1);
+      name[0].id = CORBA::string_dup("Logger");
+      for (int i = 1; i<=NumberOfTries; i++)
+       {
+         if (i!=1) 
+           a=nanosleep(&ts_req,&ts_rem);
+         try
+           { 
+             if(!CORBA::is_nil(orb)) 
+               theObj = orb->resolve_initial_references("NameService");
+             if (!CORBA::is_nil(theObj))
+               inc = CosNaming::NamingContext::_narrow(theObj);
+           }  
+         catch( CORBA::COMM_FAILURE& )
+           {
+             cout<<"SALOME_LoggerClient: CORBA::COMM_FAILURE: Unable to contact the Naming Service"<<endl;
+           }
+          catch(...)
+           {
+             cout<<"SALOME_LoggerClient: Unknown exception dealing with Naming Service"<<endl;
+           }
+         
+         if(!CORBA::is_nil(inc))
+           {
+             obj = inc->resolve(name);
+             m_pInterfaceLogger = SALOME_Logger::Logger::_narrow(obj);
+             if (!CORBA::is_nil(m_pInterfaceLogger))
+               cout<<"SALOME_LoggerClient: Logger Server was found"<<endl;
+             break;
+           }
+       }          
+    }
+  catch (const CosNaming::NamingContext::NotFound&)
+    {
+      //       cout << "Caught exception: Naming Service can't found Logger";
+    }
+  catch (CORBA::COMM_FAILURE&)
+    {
+      //       cout << "Caught CORBA::SystemException CommFailure.";
+    }
+  catch (CORBA::SystemException&)
+    {
+      //       cout << "Caught CORBA::SystemException.";
+    }
+  catch (CORBA::Exception&)
+    {
+      //       cout << "Caught CORBA::Exception.";
+    }
+  catch (...)
+    {
+      //       cout << "Caught unknown exception.";
+    }
+  //cerr << "-----SALOME_Trace::SALOME_Trace----"<<endl;
+}
+
+SALOME_Log::~SALOME_Log()
+{
+}
+
+SALOME_Log& SALOME_Log::Instance()
+{
+  static SALOME_Log instance;
+  return instance;
+}
+
+void SALOME_Log::putMessage(std::ostream& msg)
+{
+  //write resulting string into Logger CORBA server
+
+  char* adt = str();
+  CORBA::String_var LogMsg = CORBA::string_dup(adt);
+  rdbuf()->freeze(false);
+  seekp(0);
+
+  if (CORBA::is_nil(m_pInterfaceLogger))
+    cout << LogMsg << std::flush;
+  else
+    m_pInterfaceLogger-> putMessage (LogMsg) ;
+ }
+
index 4803f6e936e6f0858c5477d99f0bc2583b58dacc..f99d2e4ed6ab488c201eea7a1a32b897e6873960 100644 (file)
@@ -27,7 +27,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
index 56f7d5c63d03144d4833d6a6c718211b40888900..146f123c169d55654325374b127fe897421355f6 100644 (file)
@@ -8,7 +8,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
@@ -40,7 +40,7 @@ LIB = libSalomePyQtcmodule.la
 
 MOC_SRC = sipSalomePyQtProxySalomePyQt_moc.cxx
 
-LIB_SRC += SalomePyQt.cxx $(SIP_SRC) $(MOC_SRC) 
+LIB_SRC += SalomePyQt.cxx SALOME_PYQT_GUI.cxx $(SIP_SRC) $(MOC_SRC) 
 
 #LIB_MOC += sipSalomePyQtProxySalomePyQt.h
 
diff --git a/src/SALOME_PYQT/SALOME_PYQT_GUI.cxx b/src/SALOME_PYQT/SALOME_PYQT_GUI.cxx
new file mode 100644 (file)
index 0000000..6d6e6b9
--- /dev/null
@@ -0,0 +1,367 @@
+using namespace std;
+//=============================================================================
+// File      : SALOME_PYQT_GUI.cxx
+// Created   : mer jun  4 17:17:20 UTC 2003
+// Author    : Paul RASCLE, EDF 
+// Project   : SALOME
+// Copyright : EDF 2003
+// $Header$
+//=============================================================================
+
+#include "SALOME_PYQT_GUI.hxx"
+
+#include "QAD_Desktop.h"
+
+#include "QAD_MessageBox.h"
+#include "SALOME_Selection.h"
+#include "SALOME_InteractiveObject.hxx"
+#include "SALOMEGUI_QtCatchCorbaException.hxx"
+#include "utilities.h"
+#include "PyInterp_PyQt.h"
+//#include <cStringIO.h>
+
+#include <sipSalomePyQtDeclSalomePyQt.h>
+#include <sipqtQWorkspace.h>
+#include <sipqtQPopupMenu.h>
+
+#include <map>
+#include <string>
+
+static PyInterp_PyQt *interp = NULL;
+static map<int,PyInterp_PyQt*> mapInterp;
+static PyObject *module;
+static string _moduleName;
+
+//=============================================================================
+/*!
+ *  Calls module.setWorkSpace with PyQt QWorkspace object to use with
+ *  interpreter.
+ */
+//=============================================================================
+
+static void setWorkSpace()
+{
+  MESSAGE("setWorkSpace");
+  PyObject *res,*pyws;
+
+  interp->enter();
+  pyws=sipMapCppToSelf( QAD_Application::getDesktop()->getMainFrame(),
+                       sipClass_QWorkspace);
+  res=PyObject_CallMethod(module,"setWorkSpace","O",pyws);
+  SCRUTE(pyws->ob_refcnt);
+  Py_DECREF(pyws);
+  if (res == NULL)
+    {
+      PyErr_Print();
+      interp->quit();
+      return ;
+    }
+  Py_DECREF(res);
+  interp->quit();
+  return ;
+}
+
+//=============================================================================
+/*!
+ *  Initialises python interpreter (only one per study), imports python module
+ *  from given module name, sets static reference to module,
+ *  sets module workspace.
+ */
+//=============================================================================
+
+static void initInterp(int StudyID)
+{
+  MESSAGE("initInterp");
+  if (mapInterp.find(StudyID) != mapInterp.end())
+    {
+      MESSAGE ( " StudyID is found " << StudyID );
+      interp = mapInterp[StudyID];
+      return;
+    }
+  else 
+    {
+      MESSAGE ( " StudyID is not found " << StudyID );
+      interp=new PyInterp_PyQt();
+      mapInterp[StudyID] = interp;
+    }
+
+  interp->enter();
+
+  module=PyImport_ImportModule((char*)_moduleName.c_str());
+  if(module == NULL)
+    {
+      INFOS ( " Problem... " );
+      PyErr_Print();
+      interp->quit();
+      return;
+    }
+  // PyQt import is OK
+  interp->quit();
+  setWorkSpace();
+}
+
+//=============================================================================
+/*!
+ *  Calls python module.OnGUIEvent(theCommandID)
+ */
+//=============================================================================
+
+bool SALOME_PYQT_GUI::OnGUIEvent (int theCommandID,
+                                 QAD_Desktop* parent)
+{
+  MESSAGE("SALOME_PYQT_GUI::OnGUIEvent");
+  PyObject *res;
+  
+  interp->enter();
+  res=PyObject_CallMethod(module,"OnGUIEvent","i",theCommandID);
+  if (res == NULL)
+    {
+      PyErr_Print();
+      interp->quit();
+      return false;
+    }
+  Py_DECREF(res);
+  interp->quit();
+  return true;
+}
+
+//=============================================================================
+/*!
+ *  no call to python module.OnKeyPress()
+ */
+//=============================================================================
+
+bool SALOME_PYQT_GUI::OnKeyPress (QKeyEvent* pe,
+                                 QAD_Desktop* parent,
+                                 QAD_StudyFrame* studyFrame)
+{
+  MESSAGE("SALOME_PYQT_GUI::OnKeyPress");
+  return true;
+}
+
+//=============================================================================
+/*!
+ *  no call to python module.OnMousePress()
+ */
+//=============================================================================
+
+bool SALOME_PYQT_GUI::OnMousePress (QMouseEvent* pe ,
+                                   QAD_Desktop* parent, 
+                                   QAD_StudyFrame* studyFrame)
+{
+  MESSAGE("SALOME_PYQT_GUI::OnMousePress");
+  return false;
+}
+
+//=============================================================================
+/*!
+ *  no call to python module.OnMouseMove()
+ */
+//=============================================================================
+
+bool SALOME_PYQT_GUI::OnMouseMove (QMouseEvent* pe ,
+                                  QAD_Desktop* parent, 
+                                  QAD_StudyFrame* studyFrame)
+{
+  // La ligne suivante est commentée sinon multiple traces ...
+  // MESSAGE("SALOME_PYQT_GUI::OnMouseMouve");
+  return true;
+}
+
+//=============================================================================
+/*!
+ *  Calls initInterp to initialise python interpreter (only one per study) and
+ *  to import python module. Calls module.setSettings() 
+ */
+//=============================================================================
+
+bool SALOME_PYQT_GUI::SetSettings (QAD_Desktop* parent, char* moduleName)
+{
+  MESSAGE("SALOME_PYQT_GUI::SetSettings");
+  PyObject *res;
+  int StudyID = QAD_Application::getDesktop()->getActiveStudy()->getStudyId();
+  SCRUTE ( StudyID );
+  _moduleName = moduleName + string("GUI");
+  SCRUTE(_moduleName);
+  initInterp(StudyID);
+  
+  interp->enter();
+  res=PyObject_CallMethod(module,"setSettings","");
+  if (res == NULL)
+    {
+      PyErr_Print();
+      interp->quit();
+      return false;
+    }
+  Py_DECREF(res);
+  interp->quit();
+  return true;
+}
+
+//=============================================================================
+/*!
+ * Calls module.customPopup with popup menu to custom, and string values of 
+ * context, parent and selected object (strings defined by DefinePopup, which
+ * is called before).
+ */
+//=============================================================================
+
+bool SALOME_PYQT_GUI::CustomPopup ( QAD_Desktop* parent,
+                                   QPopupMenu* popup,
+                                   const QString & theContext,
+                                   const QString & theParent,
+                                   const QString & theObject )
+{
+  MESSAGE("SALOME_PYQT_GUI::CustomPopup");
+
+  MESSAGE ( " theContext : " << theContext.latin1() );
+  MESSAGE ( " theParent : " << theParent.latin1() );
+  MESSAGE ( " theObject : " << theObject.latin1() );
+
+  PyObject *res,*pypop;
+  interp->enter();
+  pypop=sipMapCppToSelf( popup,
+                       sipClass_QPopupMenu);
+
+  res=PyObject_CallMethod(module,"customPopup","Osss",pypop,
+                         theContext.latin1(), theObject.latin1(), theParent.latin1());
+  Py_DECREF(pypop);
+  if (res == NULL)
+    {
+      PyErr_Print();
+      interp->quit();
+      return false;
+    }
+
+  Py_DECREF(res);
+  interp->quit();
+
+
+  return true;
+}
+
+
+//=============================================================================
+/*!
+ * Calls module.definePopup to modify the strings that define context parent
+ * and selected object. Called before CustomPopup.
+ */
+//=============================================================================
+
+void SALOME_PYQT_GUI::DefinePopup( QString & theContext,
+                                  QString & theParent,
+                                  QString & theObject )
+{
+  MESSAGE("SALOME_PYQT_GUI::DefinePopup");
+  theContext = "";
+  theObject = "";
+  theParent = "";
+  
+  PyObject *res;
+  interp->enter();
+  res=PyObject_CallMethod(module,"definePopup","sss",
+                         theContext.latin1(), theObject.latin1(), theParent.latin1());
+  if (res == NULL)
+    {
+      PyErr_Print();
+      interp->quit();
+      return ;
+    }
+  char *co, *ob, *pa;
+  int parseOk = PyArg_ParseTuple(res, "sss", &co, &ob, &pa);
+
+  MESSAGE ("parseOk " << parseOk);
+  MESSAGE (" --- " << co << " " << ob << " " << pa);
+
+  theContext = co;
+  theObject = ob;
+  theParent = pa;
+  Py_DECREF(res);
+  interp->quit();
+
+  MESSAGE ( " theContext : " << theContext.latin1() );
+  MESSAGE ( " theParent : " << theParent.latin1() );
+  MESSAGE ( " theObject : " << theObject.latin1() );
+
+}
+
+//=============================================================================
+/*!
+ * Initialize new interpreter (if not exists) with new study ID.
+ * Calls module.activeStudyChanged with new study ID. Called twice.
+ */
+//=============================================================================
+
+void SALOME_PYQT_GUI::ActiveStudyChanged( QAD_Desktop* parent )
+{
+  MESSAGE("SALOME_PYQT_GUI::ActiveStudyChanged");
+  PyObject *res;
+  
+  int StudyID = parent->getActiveApp()->getActiveStudy()->getStudyId();
+  initInterp(StudyID);
+  
+  interp->enter();
+  res=PyObject_CallMethod(module,"activeStudyChanged","i", StudyID );
+  if (res == NULL)
+    {
+      PyErr_Print();
+      interp->quit();
+      return ;
+    }
+  Py_DECREF(res);
+  interp->quit();
+  return;
+}
+
+
+//=============================================================================
+/*!
+ *  
+ */
+//=============================================================================
+
+
+extern "C"
+{
+  bool OnGUIEvent(int theCommandID, QAD_Desktop* parent)
+  {
+    return SALOME_PYQT_GUI::OnGUIEvent(theCommandID, parent);
+  }
+  
+  bool OnKeyPress(QKeyEvent* pe, QAD_Desktop* parent, QAD_StudyFrame* studyFrame)
+  {
+    return SALOME_PYQT_GUI::OnKeyPress(pe, parent, studyFrame);
+  }
+  
+  bool OnMousePress(QMouseEvent* pe, QAD_Desktop* parent, QAD_StudyFrame* studyFrame)
+  {
+    return SALOME_PYQT_GUI::OnMousePress(pe, parent, studyFrame);
+  }
+  
+  bool OnMouseMove(QMouseEvent* pe, QAD_Desktop* parent, QAD_StudyFrame* studyFrame)
+  {
+    return SALOME_PYQT_GUI::OnMouseMove(pe, parent, studyFrame);
+  }
+  
+  bool SetSettings(QAD_Desktop* parent, char* moduleName)
+  {
+    return SALOME_PYQT_GUI::SetSettings(parent, moduleName);
+  }
+  
+  bool customPopup(QAD_Desktop* parent, QPopupMenu* popup, const QString & theContext,
+                  const QString & theParent, const QString & theObject)
+  {
+    return SALOME_PYQT_GUI::CustomPopup( parent, popup, theContext, theParent, theObject );
+  }
+  
+  void definePopup(QString & theContext, QString & theParent, QString & theObject)
+  {
+    SALOME_PYQT_GUI::DefinePopup(theContext, theParent, theObject);
+  }
+  
+  void activeStudyChanged ( QAD_Desktop* parent )
+  {
+    SALOME_PYQT_GUI::ActiveStudyChanged(parent);
+  }
+}
+
diff --git a/src/SALOME_PYQT/SALOME_PYQT_GUI.hxx b/src/SALOME_PYQT/SALOME_PYQT_GUI.hxx
new file mode 100644 (file)
index 0000000..fe0f6ff
--- /dev/null
@@ -0,0 +1,43 @@
+//=============================================================================
+// File      : SALOME_PYQT_GUI.hxx
+// Created   : mer jun  4 17:17:20 UTC 2003
+// Author    : Paul RASCLE, EDF 
+// Project   : SALOME
+// Copyright : EDF 2003
+// $Header$
+//=============================================================================
+
+#ifndef _SALOME_PYQT_GUI_HXX_
+#define _SALOME_PYQT_GUI_HXX_
+
+#include "QAD_Desktop.h"
+
+class SALOME_PYQT_GUI: public QObject
+{
+  Q_OBJECT
+    
+private:
+  
+public:
+  
+  static bool OnGUIEvent   (int theCommandID, QAD_Desktop* parent);
+  static bool OnMousePress (QMouseEvent* pe, QAD_Desktop* parent,
+                           QAD_StudyFrame* studyFrame);
+  static bool OnMouseMove  (QMouseEvent* pe, QAD_Desktop* parent,
+                           QAD_StudyFrame* studyFrame);
+  static bool OnKeyPress   (QKeyEvent* pe, QAD_Desktop* parent,
+                           QAD_StudyFrame* studyFrame);
+  static bool SetSettings  (QAD_Desktop* parent, char* moduleName);
+  static bool CustomPopup  (QAD_Desktop* parent, QPopupMenu* popup,
+                           const QString & theContext,
+                           const QString & theParent,
+                           const QString & theObject);
+  static void DefinePopup  (QString & theContext, QString & theParent,
+                           QString & theObject) ;
+  static void ActiveStudyChanged (QAD_Desktop* parent);
+  
+protected:
+  
+};
+
+#endif
index 9f7c1afa25a550a8e2719b0349d988011f079e44..11d2fe9ce73e3329537ca214d3ffce506d829d45 100644 (file)
@@ -107,3 +107,7 @@ QString SalomePyQt::getExistingDirectory(QWidget*       parent,
 {
   return QAD_FileDlg::getExistingDirectory(parent, initial, caption);
 }
+
+void SalomePyQt::helpContext(const QString& source, const QString& context) {
+  //QAD_Application::getDesktop()->helpContext(source, context);
+}
index c79a1d97ef4e1eedb713e8295fbaaeb0ed75322d..b3f5101a6c12244d03cd9f6f4a84e41d743b6a4d 100644 (file)
@@ -44,6 +44,7 @@ public:
   static QString getExistingDirectory(QWidget*       parent,
                                       const QString& initial,
                                       const QString& caption);
+  static void helpContext(const QString& source, const QString& context);
 };
 
 #endif
index 51ab6d7728525a78459f49086fbb662acdedc953..3f593d0af71defd34a3848bb77dbf15036c4c57e 100644 (file)
@@ -45,4 +45,5 @@ public:
 
   static QString getFileName(QWidget*, const QString&, const QStringList&, const QString&, bool);
   static QString getExistingDirectory(QWidget*, const QString&, const QString&);
+  static void helpContext(const QString&, const QString&);
 };
index 3b2432bc999135d86779bcbf6e540ff18b592393..ddd2ccfbda8f6924945ec084c46b6c58d62d5f9d 100644 (file)
@@ -25,7 +25,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
@@ -38,7 +38,9 @@ LIB = libSALOME_Swigcmodule.la
 LIB_SRC = 
 
 SWIG_DEF = libSALOME_Swig.i
-EXPORT_PYSCRIPTS = libSALOME_Swig.py Help.py PyInterp.py salome.py examplevtk1.py supervisionexample.py supervisiongeomexample.py salome_shared_modules.py batchmode_salome.py test_table.py test_big_table.py test_many_objects.py salome_test.py
+EXPORT_PYSCRIPTS = libSALOME_Swig.py Help.py PyInterp.py salome.py examplevtk1.py supervisionexample.py supervisiongeomexample.py salome_shared_modules.py batchmode_salome.py test_table.py test_big_table.py test_many_objects.py import_hook.py salome_test.py
+
+EXPORT_SHAREDPYSCRIPTS=kernel_shared_modules.py
 
 LIB_CLIENT_IDL = SALOMEDS.idl \
                 SALOME_Exception.idl
index 5ad16f16553922614625fef2e530fe78bd4ba7ed..463aff9be6c2d591178304af84c9e6fe76226c04 100644 (file)
@@ -188,7 +188,7 @@ def FindFileInDataDir(filename):
             file = dir + "/" + filename
             if os.path.exists(file):
                 return file;
-    datadir = os.getenv("SALOME_ROOT_DIR") + "/data/"
+    datadir = os.getenv("KERNEL_ROOT_DIR") + "/examples/"
     file = datadir + filename
     if os.path.exists(file):
         return file;
diff --git a/src/SALOME_SWIG/import_hook.py b/src/SALOME_SWIG/import_hook.py
new file mode 100644 (file)
index 0000000..b67812f
--- /dev/null
@@ -0,0 +1,106 @@
+"""
+This module replaces the standard import mechanism with one
+that filters some imports that can't be done more than once.
+
+This is related to the multi study feature that is implemented
+by using the Python multi interpreter feature.
+Some modules register objects or classes by calling modules
+implemented in C. These operations can't be done multiple times.
+So it's very important to control these imports.
+
+Examples:
+  - PyQt : import qt calls a C module to register classes
+  - OmniORB : import *_idl calls a C module to register CORBA interfaces
+
+Usage:
+  - First import the module : import import_hook. This module will
+    replace the original importer mechanism
+
+  - Next register the module names or pattern names to filter out::
+     import_hook.register_name("a")
+     import_hook.register_pattern(pattern)
+
+    where pattern is a function with one parameter, the module name
+    to be imported, that returns true or false depending if this module is
+    to be filtered or not.
+
+  - Then it's done
+
+IMPORTANT : Every subinterpretor has its own import_hook module. import_hook is not shared among subinterpretors.
+The mechanism only works if shared_imported and pattern are shared between all subinterpretors.
+This is done by calling init_shared_modules().
+  
+"""
+import sys, imp, __builtin__
+
+# Keep in shared_imported a copy of dictionnary modules
+# that need to be imported only once in multi-study context
+shared_imported={}
+
+# patterns contains functions that returns 1 or 0 depending if 
+# the module name (argument) must be filtered out or not
+# These functions are added by calling register_pattern
+patterns=[]
+
+original_import=__builtin__.__import__
+
+def register_name(name):
+    if shared_imported.has_key(name):return
+    shared_imported[name]=None
+
+def register_pattern(pattern):
+    patterns.append(pattern)
+
+def is_shared(name):
+    if shared_imported.has_key(name):return 1
+    for pattern in patterns:
+        if pattern(name) : return 1
+    return 0
+
+def get_shared_imported(name):
+    return shared_imported.get(name)
+def set_shared_imported(name,module):
+    shared_imported[name]=module
+    #print "Module %s shared registered" % name
+
+def get_shared_imported_with_copy(name):
+    module_dict= shared_imported.get(name)
+    m=imp.new_module(name)
+    m.__dict__.update(module_dict)
+    return m
+def set_shared_imported_with_copy(name,module):
+    shared_imported[name]=module.__dict__.copy()
+    #print "Module %s shared registered" % name
+
+def import_hook(name, globals=None, locals=None, fromlist=None):
+    module=get_shared_imported(name)
+    if module:
+       sys.modules[name]=module
+       return module
+
+    module= original_import(name, globals, locals, fromlist)
+
+    if is_shared(name):
+       set_shared_imported(name,module)
+    return module
+
+original_reload=__builtin__.reload
+
+def reload_hook(module):
+    if is_shared(module.__name__):
+       return module
+    return original_reload(module)
+
+__builtin__.__import__=import_hook
+# Reload is not replaced 
+#__builtin__.reload=reload_hook
+
+def init_shared_modules(shared_module):
+    global shared_imported, patterns
+    shared_imported=shared_module.shared_imported
+    patterns=       shared_module.patterns
+    shared_imported["salome_shared_modules"]=shared_module
+    import salome_shared_modules
+    for m in salome_shared_modules.list_modules:
+        m.init_shared_modules()
+
diff --git a/src/SALOME_SWIG/kernel_shared_modules.py b/src/SALOME_SWIG/kernel_shared_modules.py
new file mode 100644 (file)
index 0000000..1ba9d8b
--- /dev/null
@@ -0,0 +1,76 @@
+"""
+
+"""
+import glob,os,sys
+
+import import_hook
+from import_hook import register_name
+from import_hook import register_pattern
+
+register_name("qt")
+register_pattern(lambda(x):x.endswith("_idl"))
+
+register_name("omniORB")
+register_name("CosNaming")
+
+register_name("Engines")
+register_name("SALOME")
+register_name("SALOMEDS")
+register_name("SALOME_ModuleCatalog")
+
+# BE CAREFUL
+# Engines, SALOME, SALOMEDS must be imported in that order because :
+# Engines imports SALOME_Component_idl
+# SALOME imports SALOME_Session_idl and SALOME_Exception_idl which imports SALOME_Component_idl
+# and SALOMEDS imports SALOMEDS_idl and SALOMEDS_Attributes_idl which imports SALOME_Exception_idl
+# If SALOME is imported before Engines, that module would not be completely imported
+import Engines
+import SALOME
+import SALOMEDS
+
+import SALOME_ModuleCatalog
+from SALOME_utilities import MESSAGE
+#
+# We search all Python CORBA (omniorb) modules.
+# A Python CORBA module has 2 associated Python packages 
+# These packages are named : <module_name> and <module_name>__POA
+#
+# Get the SALOMEPATH if set or else use KERNEL_ROOT_DIR that should be set.
+salome_path=os.environ.get("SALOMEPATH",os.getenv("KERNEL_ROOT_DIR"))
+
+# Register all CORBA modules in the path and python modules in shared_modules
+path=salome_path.split(":")
+#
+for rep in path:
+   rep_salome=os.path.join(rep,"lib","python"+sys.version[:3],"site-packages","salome")
+   # Find all the *__POA packages in the path
+   for elem in glob.glob(os.path.join(rep_salome,"*__POA")):
+      if os.path.isdir(elem):
+         # Found a directory (Python package) named *__POA 
+         module__POA=os.path.basename(elem)
+         module=module__POA[:-5]
+         MESSAGE( "Register CORBA module: " + module + ". Directory: " + os.path.abspath(elem)[:-5] )
+         register_name(module)
+
+   # Now we import modules found in shared_modules directory
+   for elem in glob.glob(os.path.join(rep_salome,"shared_modules","*.py")):
+       module=os.path.basename(elem)[:-3]
+       MESSAGE( "Register Python module: " + module + ". Location: " + os.path.abspath(elem) )
+       register_name(module)
+
+def init_shared_modules():
+   """
+      This function initializes shared modules that need to be
+   """
+   # EDF-CCAR:
+   # Problem with omniORB : omniORB creates a C Python module named  _omnipy
+   # this module has sub-modules : omni_func, ...
+   # _omnipy is quite a package but import with Python sub-interpreters does not seem to work
+   # To make it work we need to add those sub-modules in sys.modules
+   import sys
+   import _omnipy
+   sys.modules["_omnipy.omni_func"]=_omnipy.omni_func
+   sys.modules["_omnipy.poa_func"]=_omnipy.poa_func
+   sys.modules["_omnipy.poamanager_func"]=_omnipy.poamanager_func
+   sys.modules["_omnipy.orb_func"]=_omnipy.orb_func
+
index ad7b34700ee485ed361b826c2350a0908ceb95ca..92a99f11f2b1e3e4de6d6634c8092a2e45753c3d 100644 (file)
@@ -79,7 +79,7 @@ def ImportComponentGUI(ComponentName):
     libName = "lib" + ComponentName + "_Swig"
     command = "from " + libName + " import *"
     exec ( command )
-    constructor = ComponentName + "GUI_Swig()"
+    constructor = ComponentName + "_Swig()"
     command = "gui = " + constructor
     exec ( command )
     return gui
index 062f1d4506bad0124c2b337fd99bbd16391f2875..b90bb3df1516fb7e8281af0997ef8164d26d2def 100644 (file)
 from SALOME_utilities import *
 
 """
-"""
-MESSAGE( "Module salome_shared_modules" )
-
-modules={}
-try:
-  # We try to import PyQt module. If present we import it
-  # as a "shared" module
-  import qt
-  modules["qt"]=qt.__dict__
-except:
-  pass
-
-# We keep in modules a copy of dictionnary modules
-# that need to be imported only once in multi-study context
-
-# Specific case : omniORB
-import omniORB
-modules["omniORB"]=omniORB.__dict__.copy()
-import omniORB.CORBA
-modules["omniORB.CORBA"]=omniORB.CORBA.__dict__.copy()
-modules["CORBA"]=modules["omniORB.CORBA"]
-import CosNaming
-modules["CosNaming"]=CosNaming.__dict__.copy()
-# end omniORB
-
-#
-# We search all Python CORBA (omniorb) modules.
-# A Python CORBA module has 2 associated Python packages 
-# These packages are named : <module_name> and <module_name>__POA
-#
-
-# 
-# SALOMEDS must be imported first, at least before any CORBA module
-# that references it.
-# It seems that import order of related CORBA modules is important
-# Perhaps, it's not sufficient so you should complete the list ???
-#
-import SALOMEDS
-import Engines
+This module with help of import_hook and *_shared_modules
+filters imports when using the embedded Python interpretor.
+
+Some imports can't be done more than once.
+This is related to the multi study feature that is implemented
+by using the Python multi interpreter feature.
+Some modules register objects or classes by calling modules
+implemented in C. These operations can't be done multiple times.
+So it's very important to control these imports.
+
+Examples:
+  - PyQt : import qt calls a C module to register classes
+  - OmniORB : import *_idl calls a C module to register CORBA interfaces
+
+Usage:
+  - First : the module salome_shared_modules is imported by main Python interpretor.
+    It will keep a dictionnary and a list that are shared among all
+    the subinterpretors and imports import_hook module that replaces
+    the standard import mechanism par one that prevents more than one import
+    for some modules identified by name (call register_name) or by a 
+    validator (call register_pattern).
+
+  Calls to register_name and register_pattern are done in modules named *_shared_modules
+  that could be found in the path SALOMEPATH
 
+"""
 import glob,os,sys
 
-repertoire=os.path.dirname(__file__)
-path=[repertoire,]
-
-SALOME_ROOT_DIR = os.getenv("SALOME_ROOT_DIR")
-if SALOME_ROOT_DIR != None:
-       path.append(os.path.join(SALOME_ROOT_DIR,"lib","python"+sys.version[:3],"site-packages","salome"))
+import import_hook
+# shared_imported, patterns, register_name, register_pattern
+# will be shared by all Python sub interpretors
+from import_hook import shared_imported
+from import_hook import patterns
+from import_hook import register_name
+from import_hook import register_pattern
 
-SALOME_SITE_DIR = os.getenv("SALOME_SITE_DIR")
-if SALOME_SITE_DIR != None:
-        SALOME_SITE_NAME = os.getenv("SALOME_SITE_NAME")
-        if SALOME_SITE_NAME != None:
-               path.append(os.path.join(SALOME_SITE_DIR,"lib","python"+sys.version[:3],"site-packages",SALOME_SITE_NAME))
+register_name("salome_shared_modules")
 
-#path=[repertoire,
-#      os.path.join(repertoire,"..","lib","python"+sys.version[:3],"site-packages","salome"),
-#      os.path.join(SALOME_ROOT_DIR,"lib","python"+sys.version[:3],"site-packages","salome"),
-#      os.path.join(SALOME_SITE_DIR,"lib","python"+sys.version[:3],"site-packages","salome"),
-#     ]
+# Get the SALOMEPATH if set or else use KERNEL_ROOT_DIR that should be set.
+salome_path=os.environ.get("SALOMEPATH",os.getenv("KERNEL_ROOT_DIR"))
 
-MESSAGE( str(path) )
+list_modules=[]
 
+# Import all *_shared_modules in the path and store them in list_modules
+path=salome_path.split(":")
 for rep in path:
-   # Add rep directory in the Python path to be able to import modules 
-   sys.path[:0]=[rep]
-   listdir=glob.glob(os.path.join(rep,"*__POA"))
-   for elem in listdir:
-      if os.path.isdir(elem):
-         # Found a directory (Python package) named *__POA 
-         module__POA=os.path.basename(elem)
-         module=module__POA[:-5]
-         MESSAGE( "Import CORBA module: " + module + ".\n Directory: " + os.path.abspath(elem)[:-5] )
-         mod=__import__(module)
-         # force the reload of CORBA module to resolve all the include relations between modules
-         # specific of omniORBpy implementation (1.5)
-         reload(mod)
-         modules[module]=mod.__dict__.copy()
-   # Now we import modules found in shared_modules directory
-   r=os.path.join(rep,"shared_modules")
-   MESSAGE( r )
-   if os.path.isdir(r):
-      sys.path[:0]=[r]
-      listfich=glob.glob(os.path.join(r,"*.py"))
-      MESSAGE( str(listfich) )
-      for m in listfich:
-         module=os.path.basename(m)[:-3]
-         MESSAGE( "Import module: " + module + ".\n Location: " + os.path.abspath(m) )
-         mod=__import__(module)
-         modules[module]=mod.__dict__.copy()
-      # Don't keep r directory in the path to not pollute it
-      del sys.path[0]
-
-   # Don't keep rep directory in the path to not pollute it
-   del sys.path[0]
-
-# End of CORBA modules import
+    # Import all *_shared_modules in rep
+    for f in glob.glob(os.path.join(rep,"lib","python"+sys.version[:3],"site-packages","salome","shared_modules","*_shared_modules.py")):
+        try:
+           m=__import__(os.path.splitext(os.path.basename(f))[0])
+           list_modules.append(m)
+        except:
+           pass
 
-def import_shared_modules(sysmodules):
-   """
-      This function "imports" shared modules contained in modules dictionnary
-      in sysmodules.
-      All these modules are only copied and not completely imported (not executed)
-   """
-   # EDF-CCAR: 
-   # Problem with omniORB : omniORB creates a C Python module named  _omnipy
-   # this module has sub-modules : omni_func, ...
-   # _omnipy is quite a package but import with Python sub-interpreters does not seem to work 
-   # To make it work we need to add those sub-modules in sysmodules
-   import _omnipy
-   sysmodules["_omnipy.omni_func"]=_omnipy.omni_func
-   sysmodules["_omnipy.poa_func"]=_omnipy.poa_func
-   sysmodules["_omnipy.poamanager_func"]=_omnipy.poa_func
-   sysmodules["_omnipy.orb_func"]=_omnipy.orb_func
-
-   import imp
-
-   # All modules in the modules dictionnary are only copied, not completely imported 
-   for nom_module,module_dict in modules.items():
-      if sysmodules.has_key(nom_module):continue
-      m=imp.new_module(nom_module)
-      m.__dict__.update(module_dict)
-      sysmodules[nom_module]=m
+# 
+# If shared modules have been imported before installing import mechanism
+# we add them to shared_imported
+#
+for name,module in sys.modules.items():
+    if import_hook.is_shared(name) and shared_imported.get(name) is None:
+       #print "Module shared added to shared_imported: ",name
+       shared_imported[name]=module
 
index 6b056326db2dd2aa6bad3be33a159f829e556ebf..31b7f308f475f09679164ac33cc48f63d99b9dca 100644 (file)
@@ -15,10 +15,22 @@ from salome import sg
 import SALOMEDS
 import os
 
+import SALOME_ModuleCatalog
+
+print "======================================================================"
+print "           Get Catalog "
+print "======================================================================"
+obj = salome.naming_service.Resolve('Kernel/ModulCatalog')
+catalog = obj._narrow(SALOME_ModuleCatalog.ModuleCatalog)
+
 print "======================================================================"
 print "           Create Study "
 print "======================================================================"
 
+comp = catalog.GetComponent("GEOM")
+if comp is None:
+       raise RuntimeError,"Component GEOM not found in Module Catalog."
+
 import geompy
 
 print "================================="
@@ -47,10 +59,18 @@ print
 print "=============  Test SMESH  ============================="
 print
 
+comp = catalog.GetComponent("SMESH")
+if comp is None:
+       raise RuntimeError,"Component SMESH not found in Module Catalog."
+
+comp = catalog.GetComponent("MED")
+if comp is None:
+       raise RuntimeError,"Component MED not found in Module Catalog."
+
 import SMESH
 import smeshpy
 
-geom = salome.lcc.FindOrLoadComponent("FactoryServer", "Geometry")
+geom = salome.lcc.FindOrLoadComponent("FactoryServer", "GEOM")
 myBuilder = salome.myStudy.NewBuilder()
 
 smeshgui = salome.ImportComponentGUI("SMESH")
@@ -231,18 +251,22 @@ print
 print "=============  Test  Supervisor  ============================="
 print
 
+comp = catalog.GetComponent("SUPERV")
+if comp is None:
+       raise RuntimeError,"Component SUPERV not found in Module Catalog."
+
 from SuperV import *
 import SALOMEDS
 myStudy = salome.myStudy
 myBuilder = myStudy.NewBuilder()
 
-SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","Supervision")
+SuperVision = lcc.FindOrLoadComponent("SuperVisionContainer","SUPERV")
 father = myStudy.FindComponent("SUPERV")
 if father is None:
         father = myBuilder.NewComponent("SUPERV")
         A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName");
         FName = A1._narrow(SALOMEDS.AttributeName)
-        FName.SetValue("Supervision")
+        FName.SetValue( salome.sg.getComponentUserName("SUPERV") )
        A2 = myBuilder.FindOrCreateAttribute(father, "AttributePixMap");
        aPixmap = A2._narrow(SALOMEDS.AttributePixMap);
        aPixmap.SetPixMap( "ICON_OBJBROWSER_Supervision" );
@@ -277,10 +301,10 @@ def addStudy(ior):
     anIOR.SetValue(dataflow.getIOR())
 
 import os
-dir= os.getenv("SALOME_ROOT_DIR")
+dir= os.getenv("SUPERV_ROOT_DIR")
 if dir == None:
-       raise RuntimeError, "SALOME_ROOT_DIR is not defined"
-xmlfile = dir +"/data/GraphEssai.xml"
+       raise RuntimeError, "SUPERV_ROOT_DIR is not defined"
+xmlfile = dir +"/examples/GraphGeomEssai.xml"
 print "Load dataflow from the file : "
 print xmlfile
 print
@@ -292,18 +316,6 @@ print "myGraph.IsValid() = ", myGraph.IsValid()
 
 # Get Nodes
 myGraph.PrintNodes()
-Add,Sub,Mul,Div = myGraph.Nodes()
-
-# Load Datas
-Addx = Add.Input("x",3.)
-Addy = Add.Input("y",4.5)
-Subx = Sub.Input("x",1.5)
-
-# Get Output Port
-Addz = Add.Port('z')
-Subz = Sub.Port('z')
-Mulz = Mul.Port('z')
-Divz = Div.Port('z')
 
 # This DataFlow is "executable" : all pending Ports are defined with Datas
 print myGraph.IsExecutable()
@@ -324,14 +336,6 @@ print "myGraph.IsDone() = ",myGraph.IsDone()
 # Wait for Completion (but it is already done after event loop ...)
 print "Done : ",myGraph.DoneW()
 
-# Get result
-print "Result : ",Divz.ToString()
-
-# Intermediate results :
-print "Intermediate Result Add\z : ",Addz.ToString()
-print "Intermediate Result Sub\z : ",Subz.ToString()
-print "Intermediate Result Mul\z : ",Mulz.ToString()
-
 print " "
 #print "Type : print myGraph.IsDone()"
 #print "       If execution is finished ==> 1 (true)"
@@ -339,30 +343,11 @@ res=myGraph.IsDone()
 if res != 1:
        raise RuntimeError, "myGraph.Run() is not done"
 
-print " "
-print "Type : print Divz.ToString()"
-print "       You will get the result"
-Divz.ToString()
-
 print " "
 print "Type : myGraph.PrintPorts()"
 print "       to see input and output values of the graph"
 myGraph.PrintPorts()
 
-print " "
-print "Type : Add.PrintPorts()"
-Add.PrintPorts()
-
-print "Type : Sub.PrintPorts()"
-Sub.PrintPorts()
-
-print "Type : Mul.PrintPorts()"
-Mul.PrintPorts()
-
-print "Type : Div.PrintPorts()"
-print "       to see input and output values of nodes"
-Div.PrintPorts()
-
 # Export will create newsupervisionexample.xml and the corresponding .py file
 tmpdir=os.getenv("TmpDir")
 if tmpdir is None:
@@ -385,30 +370,88 @@ for node in nodes:
        names.append(node.Name())
 print names
 
-print "Load FactorialComponent component, create dataflow using its services and run execution"
-myPy = Graph('myPy')
-
-eval = myPy.Node('FactorialComponent','FactorialComponent','eval')
-eval.SetContainer('FactoryServerPy')
-
-myPy.IsValid()
-
-myPy.PrintPorts()
-
-myPy.Run( 3 )
-
-myPy.DoneW()
-
-myPy.State()
-
-myPy.PrintPorts()
-
+# Graph creation 
+GraphInLines = Graph( 'GraphInLines' )
+GraphInLines.SetName( 'GraphInLines' )
+GraphInLines.SetAuthor( '' )
+GraphInLines.SetComment( '' )
+GraphInLines.Coords( 0 , 0 )
+
+# Creation of InLine Nodes
+PyAdd = []
+PyAdd.append( 'def Add(a,b) :  ' )
+PyAdd.append( '    return a+b  ' )
+PyAdd.append( '' )
+Add = GraphInLines.INode( 'Add' , PyAdd )
+Add.InPort( 'a' , 'long' )
+Add.InPort( 'b' , 'long' )
+Add.OutPort( 'f' , 'long' )
+Add.SetName( 'Add' )
+Add.SetAuthor( '' )
+Add.SetComment( 'Python function' )
+Add.Coords( 351 , 77 )
+PySub = []
+PySub.append( 'def Sub(a,b) : ' )
+PySub.append( '    return a-b ' )
+PySub.append( '' )
+Sub = GraphInLines.INode( 'Sub' , PySub )
+Sub.InPort( 'a' , 'long' )
+Sub.InPort( 'b' , 'long' )
+Sub.OutPort( 'f' , 'long' )
+Sub.SetName( 'Sub' )
+Sub.SetAuthor( '' )
+Sub.SetComment( 'Python function' )
+Sub.Coords( 86 , 333 )
+PyMul = []
+PyMul.append( 'def Mul(a,b) : ' )
+PyMul.append( '    return a*b ' )
+Mul = GraphInLines.INode( 'Mul' , PyMul )
+Mul.InPort( 'a' , 'long' )
+Mul.InPort( 'b' , 'long' )
+Mul.OutPort( 'Result' , 'long' )
+Mul.SetName( 'Mul' )
+Mul.SetAuthor( '' )
+Mul.SetComment( 'Python function' )
+Mul.Coords( 616 , 247 )
+
+# Creation of intermediate Output variables and of Control Links
+Addf = Add.Port( 'f' )
+Mula = GraphInLines.Link( Addf , Mul.Port( 'a' ) )
+Mula.AddCoord( 1 , 570 , 356 )
+Mula.AddCoord( 2 , 570 , 186 )
+Subf = Sub.Port( 'f' )
+Mulb = GraphInLines.Link( Subf , Mul.Port( 'b' ) )
+Mulb.AddCoord( 1 , 282 , 376 )
+Mulb.AddCoord( 2 , 282 , 442 )
+Addb = GraphInLines.Link( Subf , Add.Port( 'b' ) )
+Addb.AddCoord( 1 , 283 , 209 )
+Addb.AddCoord( 2 , 283 , 374 )
+Addb.AddCoord( 3 , 283 , 442 )
+
+# Creation of Input datas
+Adda = Add.Input( 'a' , 1)
+Suba = Sub.Input( 'a' , 3)
+Subb = Sub.Input( 'b' , 4)
+
+# Creation of Output variables
+MulResult = Mul.Port( 'Result' )
+
+GraphInLines.Run()
+
+GraphInLines.DoneW()
+
+GraphInLines.PrintPorts()
 
 sg.updateObjBrowser(1);
 
 print
 print "=============  Test  VISU  and MED ============================="
 print
+
+comp = catalog.GetComponent("VISU")
+if comp is None:
+       raise RuntimeError,"Component VISU not found in Module Catalog."
+
 import sys
 import SALOMEDS
 import SALOME
@@ -418,16 +461,23 @@ import VISU
 import visu_gui
 
 medFile = "pointe.med"
-medFile = os.getenv('SALOME_ROOT_DIR') + '/data/' + medFile
+medFile = os.getenv('KERNEL_ROOT_DIR') + '/examples/' + medFile
 print "Load ", medFile
 
 studyCurrent = salome.myStudyName
 
-med_comp = salome.lcc.FindOrLoadComponent("FactoryServer", "Med")
-myVisu = salome.lcc.FindOrLoadComponent("FactoryServer", "Visu")
+med_comp = salome.lcc.FindOrLoadComponent("FactoryServer", "MED")
+myVisu = salome.lcc.FindOrLoadComponent("FactoryServer", "VISU")
 
 try:
     if os.access(medFile, os.R_OK) :
+       if not os.access(medFile, os.W_OK) :
+              import random
+              medFileNew = "/tmp/" + str(random.randint(0,1000000)) + "_" + medfile
+              print " -- Copy " + medFile + " to " + medFileNew
+              os.system("cp "+ medFile + " " + medFileNew)
+              medFile = medFileNew
+
        if os.access(medFile, os.W_OK) :
            med_comp.readStructFileWithFieldType(medFile,studyCurrent)
            med_obj = visu_gui.visu.getMedObjectFromStudy()
index d8f6325cc7eff6500839901a996508d59fe39728..3edb511e4e4516883d038cda6d42df6053903dee 100644 (file)
@@ -1,31 +1,6 @@
-#  SALOME SUPERVGraph : build Supervisor viewer into desktop
-#
-#  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-#  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-# 
-#  This library is free software; you can redistribute it and/or 
-#  modify it under the terms of the GNU Lesser General Public 
-#  License as published by the Free Software Foundation; either 
-#  version 2.1 of the License. 
-# 
-#  This library is distributed in the hope that it will be useful, 
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-#  Lesser General Public License for more details. 
-# 
-#  You should have received a copy of the GNU Lesser General Public 
-#  License along with this library; if not, write to the Free Software 
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-# 
-#  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
-#
-#
-#
-#  File   : Makefile.in
-#  Module : SALOME
-
+# source path
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
index 2fa21f44754e60685880a87e2a3039f49708d805..01fa60ce26cbf4ab7f2cccd8a2c5fcde6d1c84e8 100644 (file)
@@ -254,9 +254,9 @@ void SUPERVGraph_ViewFrame::SetSelectionMode( int mode )
   MESSAGE ( "SUPERVGraph_ViewFrame::SetSelectionMode" )
 }
 
-void SUPERVGraph_ViewFrame::SetTrihedronSize( int dim )
+void SUPERVGraph_ViewFrame::onAdjustTrihedron(  )
 {
-  MESSAGE ( "SUPERVGraph_ViewFrame::SetTrihedronSize" )  
+  MESSAGE ( "SUPERVGraph_ViewFrame::onAdjustTrihedron" )  
 }
 
 void SUPERVGraph_ViewFrame::rename( const Handle(SALOME_InteractiveObject)& IObject, 
index 49c297a7a907406a7ee70ff1743d9c6346027d3e..8c62cc436096492c2dcfc4ef079f19af9620b1b1 100644 (file)
@@ -64,7 +64,7 @@ class QAD_EXPORT SUPERVGraph_ViewFrame : public QAD_ViewFrame {
   
   void                           SetSelectionMode( int mode );
 
-  void                           SetTrihedronSize( int dim );
+  void                           onAdjustTrihedron( );
   
   /*  popup management */
   void                           setPopupServer( QAD_Application* );
index f92f5031d3660779501d97dd24e966aafc74b240..36ba65ddefbc20d6d1a9c185bf2f56d881192498 100644 (file)
@@ -28,7 +28,7 @@
 
 # source path
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
@@ -51,7 +51,7 @@ BIN_CLIENT_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl SALOME_Component.idl SALOM
 
 CPPFLAGS+=$(QT_MT_INCLUDES) $(OCC_INCLUDES) $(PYTHON_INCLUDES)
 CXXFLAGS+=$(OCC_CXXFLAGS)
-LDFLAGS+=$(QT_MT_LIBS)  -lSalomeNS -lSalomeGUI -lSalomeObject -lSalomeLifeCycleCORBA -lqsplitterP -lOpUtil -lSalomeLoggerServer -lPlot2d
+LDFLAGS+=$(QT_MT_LIBS)  -lSalomeNS -lSalomeGUI -lSalomeObject -lSalomeLifeCycleCORBA -lqsplitterP -lOpUtil -lPlot2d -lSalomeVTKFilter -lSALOMELocalTrace
 
 
 @CONCLUDE@
index 68c6689278d822c0c9d1fe23bbd476618e60aa94..2b00367c27fd2e68b62b9e2b4aed275d87a00817 100644 (file)
 //  Module : SALOME
 //  $Header$
 
-# include "Utils_ORB_INIT.hxx"
-# include "Utils_SINGLETON.hxx"
-# include "SALOME_NamingService.hxx"
+#include "Utils_ORB_INIT.hxx"
+#include "Utils_SINGLETON.hxx"
+#include "SALOME_NamingService.hxx"
 #include <iostream>
 #include <unistd.h>
 using namespace std;
 
-// #include <qapplication.h>
-// #include "Qtappl_example.hxx"
-
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOME_Session)
 
@@ -60,114 +57,117 @@ int main(int argc, char **argv)
 
   try
     {
-    ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
-    ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting()) ;
-    CORBA::ORB_var &orb = init( argc , argv ) ;
+      ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
+      ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting()) ;
+      CORBA::ORB_var &orb = init( argc , argv ) ;
 
-    //
-    long TIMESleep = 250000000;
-       int NumberOfTries = 40;
-       int a;
-       timespec ts_req;
-       ts_req.tv_nsec=TIMESleep;
-       ts_req.tv_sec=0;
-       timespec ts_rem;
-       ts_rem.tv_nsec=0;
-       ts_rem.tv_sec=0;
-       CosNaming::NamingContext_var inc;
-       PortableServer::POA_var poa;
-       CORBA::Object_var theObj;
-       CORBA::Object_var obj;
-       CORBA::Object_var object;
-       SALOME_Logger::Logger_var log;
-       SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
-       int SESSION=0;
-       const char * Env = getenv("USE_LOGGER"); 
-        int EnvL =0;
-       if ((Env!=NULL) && (strlen(Env)))
-         EnvL=1;
-       CosNaming::Name name;
-       name.length(1);
-       name[0].id=CORBA::string_dup("Logger");    
-       PortableServer::POAManager_var pman; 
-       for (int i = 1; i<=NumberOfTries; i++){
-         if (i!=1) 
-           a=nanosleep(&ts_req,&ts_rem);
-         try
+      //
+      long TIMESleep = 250000000;
+      int NumberOfTries = 40;
+      int a;
+      timespec ts_req;
+      ts_req.tv_nsec=TIMESleep;
+      ts_req.tv_sec=0;
+      timespec ts_rem;
+      ts_rem.tv_nsec=0;
+      ts_rem.tv_sec=0;
+      CosNaming::NamingContext_var inc;
+      PortableServer::POA_var poa;
+      CORBA::Object_var theObj;
+      CORBA::Object_var obj;
+      CORBA::Object_var object;
+      SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
+      int SESSION=0;
+      const char * Env = getenv("USE_LOGGER"); 
+      int EnvL =0;
+      if ((Env!=NULL) && (strlen(Env)))
+       EnvL=1;
+      CosNaming::Name name;
+      name.length(1);
+      name[0].id=CORBA::string_dup("Logger");    
+      PortableServer::POAManager_var pman; 
+      for (int i = 1; i<=NumberOfTries; i++){
+       if (i!=1) 
+         a=nanosleep(&ts_req,&ts_rem);
+       try
+         { 
            obj = orb->resolve_initial_references("RootPOA");
             if(!CORBA::is_nil(obj))
-           poa = PortableServer::POA::_narrow(obj);
+             poa = PortableServer::POA::_narrow(obj);
             if(!CORBA::is_nil(poa))
-           pman = poa->the_POAManager();
-             if(!CORBA::is_nil(orb)) 
-           theObj = orb->resolve_initial_references("NameService");
+             pman = poa->the_POAManager();
+           if(!CORBA::is_nil(orb)) 
+             theObj = orb->resolve_initial_references("NameService");
            if (!CORBA::is_nil(theObj))
              inc = CosNaming::NamingContext::_narrow(theObj);
-           }
-         catch( CORBA::COMM_FAILURE& )
-           {
-             MESSAGE( "Session Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service" )
-               }
-         if(!CORBA::is_nil(inc)) {
-           MESSAGE( "Session Server: Naming Service was found" )
-             if(EnvL==1){
-               for(int j=1; j<=NumberOfTries; j++){
-                 if (j!=1) 
-                   a=nanosleep(&ts_req, &ts_rem);
-                 try{
-                   object = inc->resolve(name);
-                 }
-                 catch(CosNaming::NamingContext::NotFound){ MESSAGE( "Session Server: Logger Server wasn't found" ) }
-                 catch(...){ MESSAGE( "Session Server: Unknown exception" ) }
-                 if (!CORBA::is_nil(object))
-                   log = SALOME_Logger::Logger::_narrow(object);
-                 if (!CORBA::is_nil(log)){
-                   MESSAGE( "Session Server: Loger Server was found" )
-                     log->ping();
-                    SESSION=1;
-                   break;
-                 }
-               }}
          }
-         if ((SESSION==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
-            break;
+       catch( CORBA::COMM_FAILURE& )
+         {
+           MESSAGE( "Session Server: CORBA::COMM_FAILURE: Unable to contact the Naming Service" );
+         }
+       if(!CORBA::is_nil(inc))
+         {
+           MESSAGE( "Session Server: Naming Service was found" );
+           if(EnvL==1)
+             {
+               for(int j=1; j<=NumberOfTries; j++)
+                 {
+                   if (j!=1) 
+                     a=nanosleep(&ts_req, &ts_rem);
+                   try
+                     {
+                       object = inc->resolve(name);
+                     }
+                   catch(CosNaming::NamingContext::NotFound)
+                     { MESSAGE( "Session Server: Logger Server wasn't found" );
+                     }
+                   catch(...)
+                     {
+                       MESSAGE( "Session Server: Unknown exception" ); 
+                     }
+                   if (!CORBA::is_nil(object))
+                     {
+                       MESSAGE( "Session Server: Loger Server was found" );
+                       SESSION=1;
+                       break;
+                     }
+                 }
              }
-    //
+         }
+       if ((SESSION==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
+         break;
+      }
    
-    // servant
-
-    SALOME_Session_i * mySALOME_Session = new SALOME_Session_i(argc, argv, orb, poa) ;
-    PortableServer::ObjectId_var mySALOME_Sessionid = poa->activate_object(mySALOME_Session) ;
-    MESSAGE("poa->activate_object(mySALOME_Session)")
+      // servant
+      SALOME_Session_i * mySALOME_Session = new SALOME_Session_i(argc, argv, orb, poa) ;
+      PortableServer::ObjectId_var mySALOME_Sessionid = poa->activate_object(mySALOME_Session) ;
+      MESSAGE("poa->activate_object(mySALOME_Session)")
 
-    obj = mySALOME_Session->_this() ;
-    CORBA::String_var sior(orb->object_to_string(obj)) ;
-    // MESSAGE("sior(orb->object-to-string(obj))")
-    // cerr << "'" << (char*) sior << "'" << endl ;
+       obj = mySALOME_Session->_this() ;
+      CORBA::String_var sior(orb->object_to_string(obj)) ;
 
-    mySALOME_Session->NSregister();
+      mySALOME_Session->NSregister();
 
-    mySALOME_Session->_remove_ref() ;
-    //MESSAGE("mySALOME_Session->_remove_ref()")
+      mySALOME_Session->_remove_ref() ;
 
-    //DECOMMENT PortableServer::POAManager_var pman = poa->the_POAManager() ;
-    pman->activate() ;
-    MESSAGE("pman->activate()")
+      //DECOMMENT PortableServer::POAManager_var pman = poa->the_POAManager() ;
+      pman->activate() ;
+      MESSAGE("pman->activate()")
 
-    orb->run() ;
-    orb->destroy() ;
+       orb->run() ;
+      orb->destroy() ;
     }
-    catch (CORBA::SystemException&)
+  catch (CORBA::SystemException&)
     {
-      INFOS("Caught CORBA::SystemException.")
+      INFOS("Caught CORBA::SystemException.");
     }
-    catch (CORBA::Exception&)
+  catch (CORBA::Exception&)
     {
-      INFOS("Caught CORBA::Exception.")
+      INFOS("Caught CORBA::Exception.");
     }
-    catch (...)
+  catch (...)
     {
-      INFOS("Caught unknown exception.")
+      INFOS("Caught unknown exception.");
     }
   return 0 ;
 }
index 414c850e9364c4e1353d39405fb5449a5a90fa99..fb2d92a94031fed84a862a671fa5b83461df285d 100644 (file)
@@ -59,12 +59,18 @@ SALOME_Session_i::SALOME_Session_i(int argc, char ** argv, CORBA::ORB_ptr orb, P
   _poa = PortableServer::POA::_duplicate(poa) ;
   MESSAGE("constructor end");
 }
-  
-Engines::Component_ptr SALOME_Session_i::GetVisuGen(){
-  typedef Engines::Component_ptr VisuGen(CORBA::ORB_ptr, PortableServer::POA_ptr,
-                                        SALOME_NamingService*, QMutex*);
+
+//=============================================================================
+/*! GetVisuComponent
+ *  returns Visu component
+ */ 
+//=============================================================================
+
+Engines::Component_ptr SALOME_Session_i::GetVisuComponent() {
   MESSAGE("SALOME_Session_i::GetVisuGen");
-  OSD_SharedLibrary  visuSharedLibrary("libVisuEngine.so");
+  typedef Engines::Component_ptr VisuGen(CORBA::ORB_ptr,PortableServer::POA_ptr,
+                                        SALOME_NamingService*,QMutex*);
+  OSD_SharedLibrary  visuSharedLibrary("libVISUEngine.so");
   if(visuSharedLibrary.DlOpen(OSD_RTLD_LAZY))
     if(OSD_Function osdFun = visuSharedLibrary.DlSymb("GetVisuGen"))
       return ((VisuGen (*)) osdFun)(_orb,_poa,_NS,&_GUIMutex);
@@ -166,6 +172,7 @@ void SALOME_Session_i::StopSession()
 SALOME::StatSession SALOME_Session_i::GetStatSession()
 {
   // update Session state
+  //qApp->lock(); // rollback bug 
   _GUIMutex.lock();    
   _isGUI = _IAPPThread->running();
   _runningStudies = 0;
@@ -176,6 +183,7 @@ SALOME::StatSession SALOME_Session_i::GetStatSession()
     qApp->unlock();
   }
   _GUIMutex.unlock();
+  //qApp->unlock();
   // getting stat info
   SALOME::StatSession_var myStats = new SALOME::StatSession ;
   if (_runningStudies)
index 9ae94852728cda78388525d33253e3decb4812a7..0d52f118eb04ff5a452fed0ce0943b08e6a6465b 100644 (file)
@@ -32,6 +32,7 @@
 #include <qthread.h> 
 
 #include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOME_Component)
 #include CORBA_SERVER_HEADER(SALOME_Session)
 class SALOME_NamingService;
 class SALOME_Session_QThread;
@@ -45,7 +46,9 @@ public:
 
   //! Launch Graphical User Interface
   void GetInterface();
-  Engines::Component_ptr GetVisuGen();
+
+  //! Return VISU component
+  Engines::Component_ptr GetVisuComponent();
 
   //! Stop the Session (must be idle): kill servant & server
   void StopSession();
index 12cc0042606cb9dead259c74a6caf0bec2e277af..a3d0a4fdcedd42df54962a0567c1ebd21fa4d055 100644 (file)
@@ -5,7 +5,7 @@
 
 # source path
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl:$(top_srcdir)/idl
 
@@ -29,9 +29,7 @@ BIN_CLIENT_IDL =
 
 CPPFLAGS+=$(OCC_INCLUDES) $(HDF5_INCLUDES)
 CXXFLAGS+=$(OCC_CXXFLAGS)
-LDFLAGS+= -lOpUtil -lSalomeLoggerServer $(CAS_LDPATH) -lTKernel
-# -L/opt/ccmalloc/lib -lccmalloc -ldl
-# -L/opt/efence/lib -lefence
+LDFLAGS+= -lOpUtil $(CAS_LDPATH) -lTKernel
 
 @CONCLUDE@
 
index 1df235d252eed00edba6259c9b92f613b4fc1f7d..03a9868616a7cce1ac8bec39c861edc387baa91f 100644 (file)
@@ -27,7 +27,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
index ddaa15f726f68ded30ac44998ea387afccc11629..5c774aa8e58845af76da12b9978305152a9a5f8b 100644 (file)
@@ -23,6 +23,7 @@
 //
 //  File   : ToolsGUI_CatalogGeneratorDlg.cxx
 //  Author : Nicolas REJNERI
+//  Modified : Marc TAJCHMAN
 //  Module : SALOME
 //  $Header$
 
@@ -33,6 +34,7 @@ using namespace std;
 #include "QAD_Desktop.h"
 #include "QAD_FileDlg.h"
 #include "QAD_MessageBox.h"
+#include "QAD_Tools.h"
 #include <stdlib.h>
 #include <qlabel.h>
 #include <qlineedit.h>
@@ -107,16 +109,18 @@ ToolsGUI_CatalogGeneratorDlg::ToolsGUI_CatalogGeneratorDlg( QWidget* parent, con
   supplGrpLayout->setSpacing( SPACING_SIZE );
   supplGrpLayout->setMargin( MARGIN_SIZE  );
 
+  QSize myMinimumSize(int(MIN_EDIT_SIZE*0.3), 0);
+
   myAuthorEdit = new QLineEdit( supplGrp , "myAuthorEdit" );
   myAuthorEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
-  myAuthorEdit->setMinimumSize( MIN_EDIT_SIZE*0.3, 0 );
+  myAuthorEdit->setMinimumSize( myMinimumSize );
 
   OSD_Process aProcess;
   myAuthorEdit->setText(aProcess.UserName().ToCString());
 
   myVersionEdit = new QLineEdit(supplGrp , "myVersion" );
   myVersionEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
-  myVersionEdit->setMinimumSize( MIN_EDIT_SIZE*0.3, 0 );
+  myVersionEdit->setMinimumSize( myMinimumSize );
   QStringList aList = QStringList::split(QRegExp("\\s+"),tr( "INF_VERSION" ));
   myVersionEdit->setText(aList.last());
   QDoubleValidator *validator = new QDoubleValidator(myVersionEdit);
@@ -130,16 +134,20 @@ ToolsGUI_CatalogGeneratorDlg::ToolsGUI_CatalogGeneratorDlg( QWidget* parent, con
 
   myCompName = new QLineEdit(supplGrp , "myCompName");
   myCompName->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
-  myCompName->setMinimumSize( MIN_EDIT_SIZE*0.3, 0 );
+  myCompName->setMinimumSize( myMinimumSize );
+
+  myCompUserName = new QLineEdit(supplGrp , "myCompUserName");
+  myCompUserName->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  myCompUserName->setMinimumSize( MIN_EDIT_SIZE*0.3, 0 );
 
   myCompType = new QLineEdit(supplGrp , "myCompType");
   myCompType->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
-  myCompType->setMinimumSize( MIN_EDIT_SIZE*0.3, 0 );
+  myCompType->setMinimumSize( myMinimumSize );
   myCompType->setText("OTHER");
 
   myCompMultiStd = new QLineEdit(supplGrp , "myCompMultiStd");
   myCompMultiStd->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
-  myCompMultiStd->setMinimumSize( MIN_EDIT_SIZE*0.3, 0 );
+  myCompMultiStd->setMinimumSize( myMinimumSize );
   myCompMultiStd->setText("1");
   QIntValidator *ivalidator = new QIntValidator(myVersionEdit);
   myCompMultiStd->setValidator(ivalidator);
@@ -148,12 +156,14 @@ ToolsGUI_CatalogGeneratorDlg::ToolsGUI_CatalogGeneratorDlg( QWidget* parent, con
   supplGrpLayout->addWidget( myAuthorEdit, 0, 1 );
   supplGrpLayout->addWidget( new QLabel( tr( "TOOLS_COMP_NAME" ), supplGrp ), 0, 2);
   supplGrpLayout->addWidget(myCompName,0,3);
-  supplGrpLayout->addWidget( new QLabel( tr( "TOOLS_COMP_TYPE" ), supplGrp ), 0, 4);
-  supplGrpLayout->addWidget(myCompType,0,5);
+  supplGrpLayout->addWidget( new QLabel( tr( "TOOLS_COMP_USERNAME" ), supplGrp ), 0, 4);
+  supplGrpLayout->addWidget(myCompUserName,0,5);
   supplGrpLayout->addWidget( new QLabel( tr( "TOOLS_VERSION" ), supplGrp ), 1, 0);
   supplGrpLayout->addWidget( myVersionEdit, 1, 1);
   supplGrpLayout->addWidget( new QLabel( tr( "TOOLS_COMP_MULTISTD" ), supplGrp ), 1, 2);
   supplGrpLayout->addWidget(myCompMultiStd,1,3);
+  supplGrpLayout->addWidget( new QLabel( tr( "TOOLS_COMP_TYPE" ), supplGrp ), 1, 4);
+  supplGrpLayout->addWidget(myCompType,1,5);
   supplGrpLayout->addWidget( new QLabel( tr( "TOOLS_PNG_FILE" ), supplGrp ), 2, 0);
   supplGrpLayout->addMultiCellWidget( myPngEdit, 2,2,1,4 );
   supplGrpLayout->addWidget( myBrowsePngBtn, 2, 5 );
@@ -251,6 +261,15 @@ QString ToolsGUI_CatalogGeneratorDlg::getCompName()
   return myCompName->text().stripWhiteSpace();
 }
 
+//=================================================================================
+// function : getCompUserName()
+// purpose  : gets username of the component
+//=================================================================================
+QString ToolsGUI_CatalogGeneratorDlg::getCompUserName()
+{
+  return myCompUserName->text().stripWhiteSpace();
+}
+
 //=================================================================================
 // function : getCompType()
 // purpose  : gets type of the component
@@ -268,6 +287,36 @@ QString ToolsGUI_CatalogGeneratorDlg::getCompType()
   return myCompType->text().stripWhiteSpace();
 }
 
+//=================================================================================
+// function : getIdlPath()
+// purpose  : gets IDL path of modules
+//=================================================================================
+QString ToolsGUI_CatalogGeneratorDlg::getIdlPath()
+{
+  SALOME_ModuleCatalog::ModuleCatalog_var aCatalog = 
+    SALOME_ModuleCatalog::ModuleCatalog::_narrow( QAD_Application::getDesktop()->getCatalogue());
+
+  SALOME_ModuleCatalog::ListOfIAPP_Affich_var list_composants =
+    aCatalog->GetComponentIconeList();
+
+  QString IDLpath = "";
+
+  for (unsigned int ind = 0; ind < list_composants->length();ind++) {
+    QString modulename = strdup(list_composants[ind].modulename) ;
+    
+    QCString dir;
+    if (dir = getenv( modulename + "_ROOT_DIR")) {
+      IDLpath = IDLpath + "-I" + QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + 
+                                                     QAD_Tools::addSlash("idl") + 
+                                                     QAD_Tools::addSlash("salome")) + " ";
+    }
+  }
+
+  //  MESSAGE ( " IDLpath = " << IDLpath);
+
+  return IDLpath;
+}
+
 //=================================================================================
 // function : onBrowseBtnClicked()
 // purpose  : <...> (Browse) buttons slot
@@ -326,12 +375,14 @@ void ToolsGUI_CatalogGeneratorDlg::updateButtonState()
 //=================================================================================
 void ToolsGUI_CatalogGeneratorDlg::onApply()
 {
+  QString IDLpath = getIdlPath();
   QString XmlFile = getXmlFile();
   QString IdlFile = getIdlFile();
   QString Author  = getAuthor();
   QString Version = getVersion();
   QString PngFile = getPngFile();
   QString CompName = getCompName(); //gets component name 
+  QString CompUserName = getCompUserName(); //gets component username 
   QString CompType = getCompType(); //gets component type
   QString CompMultiStd = getCompMultiStd();
 
@@ -343,7 +394,16 @@ void ToolsGUI_CatalogGeneratorDlg::onApply()
                              tr ("TOOLS_BUT_OK") );
     }
     else {
-      QString command = QString( getenv( "SALOME_ROOT_DIR" ) ) + "/bin/runIDLparser -Wbcatalog=" + XmlFile;
+      QString command = "";
+      if ( getenv("KERNEL_ROOT_DIR")  )
+       command = QString( getenv( "KERNEL_ROOT_DIR" ) ) + "/bin/salome/runIDLparser " + IDLpath + " -Wbcatalog=" + XmlFile;
+      else {
+       QAD_MessageBox::error1( this, 
+                               tr("TOOLS_ERR_ERROR"), 
+                               tr("KERNEL_ROOT_DIR variable is not defined"), 
+                               tr("TOOLS_BUT_OK") );
+      }
+
       if (!Author.isEmpty()) command += ",author=" + Author; 
       if (!Version.isEmpty()) command += ",version=" + Version;
       if (!PngFile.isEmpty()) {
@@ -352,6 +412,7 @@ void ToolsGUI_CatalogGeneratorDlg::onApply()
        command += QString(",icon=") + QString(aFile.ToCString());
       }
       if (!CompName.isEmpty()) command += ",name=" + CompName;
+      if (!CompUserName.isEmpty()) command += ",username=" + CompUserName;
       if (!CompType.isEmpty()) command += ",type=" + CompType;
       if (!CompMultiStd.isEmpty()) command += ",multistudy=" + CompMultiStd;
       command += " " + IdlFile;
index d0e593458e2c1fbf06db0a9ce0264e4f2db443bc..9d474ac67fe1d2ecb15fe586a1be9fc3a72ffb6c 100644 (file)
@@ -46,12 +46,14 @@ public:
     ToolsGUI_CatalogGeneratorDlg( QWidget* parent = 0, const char* name = 0 );
     ~ToolsGUI_CatalogGeneratorDlg();
 
+    QString getIdlPath();
     QString getIdlFile();
     QString getXmlFile();
     QString getPngFile();
     QString getAuthor();
     QString getVersion();
     QString getCompName();
+    QString getCompUserName();
     QString getCompType();
     QString getCompMultiStd();
 
@@ -67,6 +69,7 @@ private:
     QLineEdit*     myVersionEdit;
     QLineEdit*     myAuthorEdit;
     QLineEdit*     myCompName;
+    QLineEdit*     myCompUserName;
     QLineEdit*     myCompType;
     QLineEdit*     myCompMultiStd;
     QPushButton*   myBrowseIdlBtn;
index 7859d5e12689a1e5ce52afca95f94429b2929321..09ad7be8906316694a2c2a074bbc4d56c904a601 100644 (file)
@@ -76,6 +76,9 @@ msgstr "Version : "
 msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_COMP_NAME"
 msgstr "Name : "
 
+msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_COMP_USERNAME"
+msgstr "UserName : "
+
 msgid "ToolsGUI_CatalogGeneratorDlg::TOOLS_COMP_TYPE"
 msgstr "Type : "
 
index c6ec6b8c0a878f73f0913e2fa08aab945f38192c..8ee409d994cf8305a6dc254d3b9181a064bfbe48 100644 (file)
@@ -27,7 +27,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
@@ -45,7 +45,7 @@ LIB_CLIENT_IDL = SALOME_Component.idl SALOME_TestComponent.idl
 BIN = TestContainer TestLogger
 BIN_SRC = 
 
-LDFLAGS+= -lSalomeNotification -lSalomeNS -lSalomeContainer -lRegistry -lOpUtil -lSalomeLoggerServer
+LDFLAGS+= -lSalomeNotification -lSalomeNS -lSalomeContainer -lRegistry -lOpUtil -lSALOMELocalTrace
 
 
 @CONCLUDE@
index 12e9dae83b89e6a6cd6f74006f80b25da074882b..d1f1c35bb430b6df0e797f0be58204b03a527ecd 100644 (file)
@@ -26,7 +26,6 @@
 //  Module : SALOME
 //  $Header$
 
-using namespace std;
 #include "utilities.h"
 #include <iostream>
 #include <unistd.h>
@@ -36,10 +35,12 @@ using namespace std;
 
 #include "SALOME_NamingService.hxx"
 #include "OpUtil.hxx"
-# include "Utils_ORB_INIT.hxx"
-# include "Utils_SINGLETON.hxx"
-# include "Utils_SALOME_Exception.hxx"
-# include "Utils_CommException.hxx"
+#include "Utils_ORB_INIT.hxx"
+#include "Utils_SINGLETON.hxx"
+#include "Utils_SALOME_Exception.hxx"
+#include "Utils_CommException.hxx"
+using namespace std;
+
 int main (int argc, char * argv[])
 {
 
@@ -55,74 +56,84 @@ int main (int argc, char * argv[])
 
       // Obtain a reference to the root POA
       //
-     long TIMESleep = 250000000;
-     int NumberOfTries = 40;
-     int a;
-     timespec ts_req;
-     ts_req.tv_nsec=TIMESleep;
-     ts_req.tv_sec=0;
-     timespec ts_rem;
-     ts_rem.tv_nsec=0;
-     ts_rem.tv_sec=0;
-     CosNaming::NamingContext_var inc;
-     PortableServer::POA_var poa;
-     CORBA::Object_var theObj;
-     CORBA::Object_var obj;
-     CORBA::Object_var object;
-     SALOME_Logger::Logger_var log;
-     SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
-     int TEST_CONTAINER=0;
-     const char * Env = getenv("USE_LOGGER"); 
+      long TIMESleep = 250000000;
+      int NumberOfTries = 40;
+      int a;
+      timespec ts_req;
+      ts_req.tv_nsec=TIMESleep;
+      ts_req.tv_sec=0;
+      timespec ts_rem;
+      ts_rem.tv_nsec=0;
+      ts_rem.tv_sec=0;
+      CosNaming::NamingContext_var inc;
+      PortableServer::POA_var poa;
+      CORBA::Object_var theObj;
+      CORBA::Object_var obj;
+      CORBA::Object_var object;
+      SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
+      int TEST_CONTAINER=0;
+      const char * Env = getenv("USE_LOGGER"); 
       int EnvL =0;
       if ((Env!=NULL) && (strlen(Env)))
        EnvL=1;
       CosNaming::Name name;
       name.length(1);
       name[0].id=CORBA::string_dup("Logger");    
-     PortableServer::POAManager_var manager; 
-     for (int i = 1; i<=NumberOfTries; i++){
-       if (i!=1) 
-        a=nanosleep(&ts_req,&ts_rem);
-       try{ 
-        obj = orb->resolve_initial_references("RootPOA");
-        if(!CORBA::is_nil(obj))
-          poa = PortableServer::POA::_narrow(obj);
-        if(!CORBA::is_nil(poa))
-          manager = poa->the_POAManager();
-        if(!CORBA::is_nil(orb)) 
-          theObj = orb->resolve_initial_references("NameService");
-        if (!CORBA::is_nil(theObj))
-          inc = CosNaming::NamingContext::_narrow(theObj);
-       }
-       catch( CORBA::COMM_FAILURE& )
-        {
-          MESSAGE( "Test Container: CORBA::COMM_FAILURE: Unable to contact the Naming Service" )
-            }
-       if(!CORBA::is_nil(inc)) {
-        MESSAGE( "Test Container: Naming Service was found" )
-          if(EnvL==1){
-            for(int j=1; j<=NumberOfTries; j++){
-              if (j!=1) 
-                a=nanosleep(&ts_req, &ts_rem);
-              try{
-                object = inc->resolve(name);
-              }
-              catch(CosNaming::NamingContext::NotFound){ MESSAGE( "Test Container: Logger Server wasn't found" ) }
-              catch(...){ MESSAGE( "Test Container: Unknown exception" ) }
-              if (!CORBA::is_nil(object))
-                log = SALOME_Logger::Logger::_narrow(object);
-              if (!CORBA::is_nil(log)){
-                MESSAGE( "Test Container: Loger Server was found" )
-                  log->ping();
-                TEST_CONTAINER=1;
-                break;
+      PortableServer::POAManager_var manager; 
+      for (int i = 1; i<=NumberOfTries; i++)
+       {
+         if (i!=1) 
+           a=nanosleep(&ts_req,&ts_rem);
+         try
+           { 
+             obj = orb->resolve_initial_references("RootPOA");
+             if(!CORBA::is_nil(obj))
+               poa = PortableServer::POA::_narrow(obj);
+             if(!CORBA::is_nil(poa))
+               manager = poa->the_POAManager();
+             if(!CORBA::is_nil(orb)) 
+               theObj = orb->resolve_initial_references("NameService");
+             if (!CORBA::is_nil(theObj))
+               inc = CosNaming::NamingContext::_narrow(theObj);
+           }
+         catch( CORBA::COMM_FAILURE& )
+           {
+             MESSAGE( "Test Container: CORBA::COMM_FAILURE: Unable to contact the Naming Service" )
+               }
+         if(!CORBA::is_nil(inc))
+           {
+             MESSAGE( "Test Container: Naming Service was found" )
+               if(EnvL==1)
+                 {
+                   for(int j=1; j<=NumberOfTries; j++)
+                     {
+                       if (j!=1) 
+                         a=nanosleep(&ts_req, &ts_rem);
+                       try
+                         {
+                           object = inc->resolve(name);
+                         }
+                       catch(CosNaming::NamingContext::NotFound)
+                         {
+                           MESSAGE( "Test Container: Logger Server wasn't found" );
+                         }
+                       catch(...)
+                         {
+                           MESSAGE( "Test Container: Unknown exception" );
+                         }
+                       if (!CORBA::is_nil(object))
+                         {
+                           MESSAGE( "Test Container: Loger Server was found" );
+                           TEST_CONTAINER=1;
+                           break;
+                         }
+                     }
                  }
-               }}
-         }
+           }
          if ((TEST_CONTAINER==1)||((EnvL==0)&&(!CORBA::is_nil(inc))))
             break;
-             }
-      //
+       }
+
       // Use Name Service to find container
       SALOME_NamingService _NS(orb) ;
       string containerName = "/Containers/" ;
@@ -138,7 +149,7 @@ int main (int argc, char * argv[])
        {
          INFOS("----------------------------------------------------" << iter);   
           string dirn = getenv("SALOME_ROOT_DIR");
-          dirn += "/lib/libSalomeTestComponentEngine.so";
+          dirn += "/lib/salome/libSalomeTestComponentEngine.so";
           obj = iGenFact->load_impl("SalomeTestComponent",dirn.c_str());
          m1 = Engines::TestComponent::_narrow(obj);
          INFOS("recup m1");
index 0ccfe041ffd03286f3d94677478b5caf083ca68c..86ebc70efd27ab429b48388e04df32a8c1eb2d4e 100644 (file)
@@ -27,7 +27,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
@@ -57,7 +57,7 @@ LIB_SRC = OpUtil.cxx Utils_Timer.cxx duplicate.cxx \
        Utils_Identity.cxx Utils_ORB_INIT.cxx \
        Utils_DESTRUCTEUR_GENERIQUE.cxx
 
-LDFLAGS+= -lSalomeLoggerServer
+LDFLAGS+= 
 
 @CONCLUDE@
 
index b86dbd587cb8fcf3150305eb88125645580bc8f6..bf18aaf700c2698c17d313f21631b72058ec9600 100644 (file)
@@ -24,20 +24,20 @@ def REPERE():
 def BEGIN_OF(msg):
     if __debug__:
         REPERE(); MYTRACE();
-        GLogger.putMessage("Begin of : "+ msg + "\n")
+        GLogger.putMessage("Begin of : "+ str(msg) + "\n")
         REPERE();
 
 
 def END_OF(msg):
     if __debug__:
         REPERE(); MYTRACE();
-        GLogger.putMessage("Normale end of : "+ msg + "\n")
+        GLogger.putMessage("Normale end of : "+ str(msg) + "\n")
         REPERE();
 
 def MESSAGE(msg):
     if __debug__:
         MYTRACE()
-        GLogger.putMessage(msg + "\n")
+        GLogger.putMessage(str(msg) + "\n")
 
 def SCRUTE(var_name, var_value):
     MYTRACE();
index 07b70adfe0a4cf2c4209e3a135041895c5099fbf..50737af05e9757d8f224dcc4b9c89b75befef29e 100644 (file)
@@ -66,6 +66,7 @@ public :
        ATEXIT_( void )
        {
                ASSERT (Destructeurs==0);
+               MESSAGE("Construction ATEXIT"); // message necessaire pour utiliser logger dans Nettoyage (cf.BUG KERNEL4561)
                Destructeurs = new list<DESTRUCTEUR_GENERIQUE_*> ; // Destructeurs alloué dynamiquement (cf. ci-dessous) ,
                                                                   // il est utilisé puis détruit par la fonction Nettoyage
                int cr = atexit( Nettoyage );                      // exécute Nettoyage lors de exit, après la destruction des données statiques !
index 59b79a7642611c014d5471c5c2612106b6d880f5..06f4a26f4fc671a9119e2e75bfb70d035c46faf6 100644 (file)
@@ -42,7 +42,7 @@ const char* duplicate( const char *const str ) ;
 
 SALOME_Exception::SALOME_Exception( void ): exception() , _text(0)
 {
-       MESSAGE( "You must user the standard builder : SALOME_Exception::SALOME_Exception( const char *text )" ) ;
+       MESSAGE( "You must use the standard builder: SALOME_Exception::SALOME_Exception( const char *text )" ) ;
        INTERRUPTION(1) ;
 }
 
index 3d2e58cd341f1828cf99eddec26f9d7f5f0ec38d..4e06560a00cad19cb745ea2c2ea89974da4f9360 100644 (file)
@@ -107,7 +107,7 @@ template <class TYPE> TYPE *SINGLETON_<TYPE>::Instance( void )
 {
        if ( ! PtrSingleton )
        {
-               MESSAGE("SINGLETON_<TYPE>::Instance( void )") ;
+               //MESSAGE("SINGLETON_<TYPE>::Instance( void )") ;
                PtrSingleton = new SINGLETON_<TYPE> ;
                new DESTRUCTEUR_DE_<TYPE>( PtrSingleton->_Instance ) ;
        }
@@ -125,7 +125,7 @@ template <class TYPE> bool SINGLETON_<TYPE>::IsAlreadyExisting( void )
 
 template <class TYPE> SINGLETON_<TYPE>::SINGLETON_( void )
 {
-       MESSAGE("CREATION d'un SINGLETON_") ;
+       //MESSAGE("CREATION d'un SINGLETON_") ;
 }
 
 
index 52256eae84b9acca53ee92f754b1d49eef509441..015e84e58f0fd9263c47337d1e5ebad366078980 100644 (file)
 
 /* ---  Definition macros file to print informations if _DEBUG_ is defined --- */
 
-# ifndef UTILITIES_H
-# define UTILITIES_H
+#ifndef UTILITIES_H
+#define UTILITIES_H
 
-# include <stdlib.h>
-# include <iostream>
-
-
-
-//VRV: T2.4 - replacement macro for using special CORBA server
-#include "SALOME_Trace.hxx"
-//VRV: T2.4 - replacement macro for using special CORBA server
+#include <string>
+#include <iostream>
+#include "SALOME_Log.hxx"
 
 /* ---  INFOS is always defined (without _DEBUG_): to be used for warnings, with release version --- */
 
-//VRV: T2.4 - replacement of these macros for using special CORBA server
-
-#define INFOS(msg) { GLogger.putMessage(GLogger << __FILE__<< " [" << __LINE__ << "] : " << msg<< endl << ends ); }
-#define PYSCRIPT(msg) { GLogger.putMessage(GLogger<<"---PYSCRIPT--- "<<msg<<endl<<ends ); }
+#define INFOS(msg)    {SLog.putMessage(SLog<<__FILE__<<" ["<<__LINE__<<"] : "<<msg<<endl);}
+#define PYSCRIPT(msg) {SLog.putMessage(SLog<<"---PYSCRIPT--- "<<msg<<endl);}
 
-//# define HEREWEARE {cout<<flush ; cerr << __FILE__ << " [" << __LINE__ << "] : " << flush ;}
-//# define INFOS(chain) {HEREWEARE ; cerr << chain << endl ;}
-//# define PYSCRIPT(chain) {cout<<flush ; cerr << "---PYSCRIPT--- " << chain << endl ;}
+/* --- To print date and time of compilation of current source --- */
 
-//VRV: T2.4 - replacement of these macros for using special CORBA server
+#if defined ( __GNUC__ )
+#define COMPILER               "g++" 
+#elif defined ( __sun )
+#define COMPILER               "CC" 
+#elif defined ( __KCC )
+#define COMPILER               "KCC" 
+#elif defined ( __PGI )
+#define COMPILER               "pgCC" 
+#else
+#define COMPILER               "undefined" 
+#endif
 
+#ifdef INFOS_COMPILATION
+#error INFOS_COMPILATION already defined
+#endif
 
-/* --- To print date and time of compilation of current source on stdout --- */
-
-# if defined ( __GNUC__ )
-# define COMPILER              "g++" 
-# elif defined ( __sun )
-# define COMPILER              "CC" 
-# elif defined ( __KCC )
-# define COMPILER              "KCC" 
-# elif defined ( __PGI )
-# define COMPILER              "pgCC" 
-# else
-# define COMPILER              "undefined" 
-# endif
-
-# ifdef INFOS_COMPILATION
-# error INFOS_COMPILATION already defined
-# endif
-
-//VRV: T2.4 - replacement macro for using special CORBA server
 #define INFOS_COMPILATION { \
-                             GLogger.putMessage(\
-                                                GLogger << __FILE__ << " [" << __LINE__ << "] : "\
-                                                << "COMPILED with " << COMPILER \
-                                                << ", " << __DATE__ \
-                                                << " at " << __TIME__ << endl << endl <<endl<<ends); }
-/* # define INFOS_COMPILATION  {\ */
-/*                                     cerr << flush;\ */
-/*                                     cout << __FILE__ ;\ */
-/*                                     cout << " [" << __LINE__ << "] : " ;\ */
-/*                                     cout << "COMPILED with " << COMPILER ;\ */
-/*                                     cout << ", " << __DATE__ ; \ */
-/*                                     cout << " at " << __TIME__ << endl ;\ */
-/*                                     cout << "\n\n" ;\ */
-/*                                     cout << flush ;\ */
-/*                             } */
-//VRV: T2.4 - replacement macro for using special CORBA server
-
-# ifdef _DEBUG_
+                          SLog.putMessage(\
+                                          SLog<<__FILE__<<" ["<< __LINE__<<"] : "\
+                                          << "COMPILED with " << COMPILER \
+                                          << ", " << __DATE__ \
+                                          << " at " << __TIME__ <<endl); }
 
-/* --- the following MACROS are useful at debug time --- */
+#ifdef _DEBUG_
 
-//VRV: T2.4 - replacement of these macros for using special CORBA server
-
-#define MYTRACE GLogger << "- Trace " << __FILE__ << " [" << __LINE__ << "] : " 
-
-#define MESSAGE(msg) { GLogger.putMessage( MYTRACE <<msg<<endl<<ends); }
-#define SCRUTE(var) { GLogger.putMessage( MYTRACE << #var << "=" << var <<endl<<ends); }
-
-#define REPERE GLogger << "   --------------" << endl 
-#define BEGIN_OF(msg) {REPERE ; MYTRACE << "Begin of: " << msg << endl ; REPERE ; GLogger.putMessage(GLogger<<ends); } 
-#define END_OF(msg) {REPERE ; MYTRACE << "Normal end of: " << msg << endl ; REPERE ; GLogger.putMessage(GLogger<<ends); } 
-
-# define HERE {cout<<flush ; cerr << "- Trace " << __FILE__ << " [" << __LINE__ << "] : " << flush ;}
-
-//VRV: T2.4 - replacement of these macros for using special CORBA server
-
-# define INTERRUPTION(code) {HERE ; cerr << "INTERRUPTION return code= " << code << endl ; exit(code) ;}
+/* --- the following MACROS are useful at debug time --- */
 
-# ifndef ASSERT
-# define ASSERT(condition) if (!(condition)){ HERE ; cerr << "CONDITION " << #condition << " NOT VERIFIED"<< endl ; INTERRUPTION(1) ;}
-# endif /* ASSERT */
+#define MYTRACE SLog << "- Trace " << __FILE__ << " [" << __LINE__ << "] : " 
 
+#define MESSAGE(msg) {SLog.putMessage( MYTRACE <<msg<<endl<<ends); }
+#define SCRUTE(var)  {SLog.putMessage( MYTRACE << #var << "=" << var <<endl<<ends); }
 
+#define REPERE SLog << "   --------------" << endl 
+#define BEGIN_OF(msg) {REPERE;MYTRACE<<"Begin of: "     <<msg<<endl;REPERE;} 
+#define END_OF(msg)   {REPERE;MYTRACE<<"Normal end of: "<<msg<<endl;REPERE;} 
 
+#define HERE {cout<<flush ;cerr<<"- Trace "<<__FILE__<<" ["<<__LINE__<<"] : "<<flush ;}
 
+#define INTERRUPTION(code) {HERE;cerr<<"INTERRUPTION return code= "<<code<< endl;exit(code);}
 
+#ifndef ASSERT
+#define ASSERT(condition) \
+        if (!(condition)){HERE;cerr<<"CONDITION "<<#condition<<" NOT VERIFIED"<<endl;INTERRUPTION(1);}
+#endif /* ASSERT */
 
 
-# else /* ifdef _DEBUG_*/
+#else /* ifdef _DEBUG_*/
 
 #define HERE 
 #define SCRUTE(var) {}
 #define BEGIN_OF(msg) {}
 #define END_OF(msg) {}
 
-# define INTERRUPTION(code) {}
+#define INTERRUPTION(code) {}
 
-# ifndef ASSERT
-# define ASSERT(condition) {}
-# endif /* ASSERT */
+#ifndef ASSERT
+#define ASSERT(condition) {}
+#endif /* ASSERT */
 
 
-# endif /* ifdef _DEBUG_*/
+#endif /* ifdef _DEBUG_*/
 
-# endif /* ifndef UTILITIES_H */
+#endif /* ifndef UTILITIES_H */
diff --git a/src/Utils/utilities.py b/src/Utils/utilities.py
deleted file mode 100644 (file)
index 295e4cc..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#  SALOME Utils : general SALOME's definitions and tools
-#
-#  Copyright (C) 2003  CEA/DEN, EDF R&D
-#
-#
-#
-#  File   : utilities.py
-#  Module : SALOME
-
-import SALOME_Trace
-GLogger = SALOME_Trace.SALOME_Trace()
-
-def MYTRACE ():
-    if __debug__:
-        str = "- Trace "
-        GLogger.putMessage(str + "  : ")
-        
-
-def REPERE():
-    if __debug__:
-        GLogger.putMessage("   --------------  \n")
-
-
-def BEGIN_OF(msg):
-    if __debug__:
-        REPERE(); MYTRACE();
-        GLogger.putMessage("Begin of : "+ msg + "\n")
-        REPERE();
-
-
-def END_OF(msg):
-    if __debug__:
-        REPERE(); MYTRACE();
-        GLogger.putMessage("Normale end of : "+ msg + "\n")
-        REPERE();
-
-def MESSAGE(msg):
-    if __debug__:
-        MYTRACE()
-        GLogger.putMessage(msg + "\n")
-
-def SCRUTE(var_name, var_value):
-    MYTRACE();
-    GLogger.putMessage(var_name + " = " + str(var_value) + "\n")
-
-   
index 27fede9fc5bbf42cf7442d38ed51962ae3a15138..3d848bd0d2a923b5d75603b634840ce4460cf2d1 100644 (file)
@@ -25,7 +25,7 @@
 #  Module : VISU
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:@top_srcdir@/idl
 
@@ -53,4 +53,4 @@ BIN_SRC       =
 CPPFLAGS+= $(VTK_INCLUDES)
 LDFLAGS+= $(VTK_LIBS)
 
-@CONCLUDE@
\ No newline at end of file
+@CONCLUDE@
index 46736101621830e419cac2fcd59f386e8da52571..0733c58b9711ee4cb49890f8b6832c9a956f1c00 100644 (file)
@@ -27,7 +27,7 @@
 #  $Header$
 
 top_srcdir=@top_srcdir@
-top_builddir=../../..
+top_builddir=../..
 srcdir=@srcdir@
 VPATH=.:@srcdir@:$(top_builddir)/inc:$(top_builddir)/idl
 
@@ -47,7 +47,9 @@ LIB_SRC= VTKViewer.cxx \
         VTKViewer_RenderWindow.cxx \
         VTKViewer_RenderWindowInteractor.cxx \
         VTKViewer_InteractorStyleSALOME.cxx \
-        VTKViewer_VectorText.cxx
+        VTKViewer_Trihedron.cxx \
+        VTKViewer_VectorText.cxx \
+        VTKViewer_Utilities.cxx
 
 LIB_MOC = \
         VTKViewer.h \
index b0cfe0abb33102f28d92d11dc6214ce37e6c9295..329e055acb0f731bdfec14ebdcfef92737bc510b 100644 (file)
 //  Module : SALOME
 //  $Header$
 
-using namespace std;
 #include "VTKViewer_InteractorStyleSALOME.h"
 #include "VTKViewer_RenderWindow.h"
+#include "VTKViewer_Utilities.h"
+#include "VTKViewer_Trihedron.h"
 
-#include <qapplication.h>
 #include "QAD_Config.h"
 #include "QAD_Application.h"
 #include "QAD_Desktop.h"
@@ -54,31 +54,25 @@ using namespace std;
 #include <vtkImageData.h>
 #include <vtkFollower.h>
 
-
+#include <qapplication.h>
 //VRV: porting on Qt 3.0.5
 #if QT_VERSION >= 0x030005
 #include <qpainter.h>
 #endif
 //VRV: porting on Qt 3.0.5
 
-//----------------------------------------------------------------------------
-VTKViewer_InteractorStyleSALOME *VTKViewer_InteractorStyleSALOME::New() 
-{
-  // First try to create the object from the vtkObjectFactory
-  vtkObject* ret = vtkObjectFactory::CreateInstance("VTKViewer_InteractorStyleSALOME");
-  if(ret)
-    {
-      return (VTKViewer_InteractorStyleSALOME*)ret;
-    }
-  // If the factory was unable to create the object, then create it here.
-  return new VTKViewer_InteractorStyleSALOME;
-}
+using namespace std;
 
+extern int SetVisibility(vtkActorCollection* theCollection, int theParam);
+extern int GetVisibility(vtkActorCollection* theCollection);
 
 //----------------------------------------------------------------------------
+vtkStandardNewMacro(VTKViewer_InteractorStyleSALOME);
+//----------------------------------------------------------------------------
+
 VTKViewer_InteractorStyleSALOME::VTKViewer_InteractorStyleSALOME() 
 {
-  m_Triedron = 0;
+  m_Trihedron = 0;
   this->MotionFactor = 10.0;
   this->State = VTK_INTERACTOR_STYLE_CAMERA_NONE;
   this->RadianToDegree = 180.0 / vtkMath::Pi();
@@ -92,9 +86,8 @@ VTKViewer_InteractorStyleSALOME::~VTKViewer_InteractorStyleSALOME()
 }
 
 //----------------------------------------------------------------------------
-void VTKViewer_InteractorStyleSALOME::setTriedron( vtkActorCollection* triedron )
-{
-  m_Triedron = triedron;
+void VTKViewer_InteractorStyleSALOME::setTriedron(VTKViewer_Trihedron* theTrihedron){
+  m_Trihedron = theTrihedron;
 }
 
 //----------------------------------------------------------------------------
@@ -120,15 +113,8 @@ void VTKViewer_InteractorStyleSALOME::RotateXY(int dx, int dy)
   cam->Azimuth(rxf);
   cam->Elevation(ryf);
   cam->OrthogonalizeViewUp();
-  this->CurrentRenderer->ResetCameraClippingRange();
-  vtkRenderWindowInteractor *rwi = this->Interactor;
-  /* VSV Light follows camera: if (this->CurrentLight)
-    {
-      // get the first light
-      this->CurrentLight->SetPosition(cam->GetPosition());
-      this->CurrentLight->SetFocalPoint(cam->GetFocalPoint());
-      }        */
-  rwi->Render();
+  ::ResetCameraClippingRange(this->CurrentRenderer); 
+  this->Interactor->Render();
 }
 
 //----------------------------------------------------------------------------
@@ -148,98 +134,26 @@ void VTKViewer_InteractorStyleSALOME::PanXY(int x, int y, int oldX, int oldY)
 
 //----------------------------------------------------------------------------
 void VTKViewer_InteractorStyleSALOME::ControlLblSize(double aOldScale, double aNewScale) {
-  m_Triedron->InitTraversal();
-  vtkActor *ac = m_Triedron->GetNextActor();
-  bool IsConeActor = true;
-  while(!(ac==NULL)) {
-    float aMaxXRange;
-    float aMaxYRange;
-    float aMaxZRange;
-    if(ac->IsA("vtkFollower")) {
-      float aScale[3];
-      ac->GetScale(aScale);
-      
-      float aPosition[3];
-      ac->GetPosition(aPosition);
-      
-      float aPercent = (aOldScale-aNewScale)/aOldScale;
-      ac->SetScale(aScale[0]*(1-aPercent),aScale[1]*(1-aPercent),aScale[2]*(1-aPercent));
-           
-      //Set new position
-      float aLength = ac->GetLength();
-      if (aPosition[0]!=0) {
-       //x
-       aPosition[0] = aMaxXRange;
-      } else if (aPosition[1]!=0) {
-       //y
-       aPosition[1] = aMaxYRange;
-      } else if (aPosition[2]!=0) {
-       //z
-       aPosition[2] = aMaxZRange;
-      }
-      ac->SetPosition(aPosition);
-      
-      IsConeActor = true;
-    }
-    else {
-      if (IsConeActor) {
-       //coneActor is the first in the list (see m_Triedron->AddItem(...) in VTKViewer_ViewFrame::AddVector(...))
-       IsConeActor = false;
-       
-       float aPosition[3];
-       ac->GetPosition(aPosition);
-       
-       if (aPosition[0]!=0) {
-         //x
-         float* aXRange = ac->GetXRange();
-         if (aXRange[0] < aXRange[1]) aMaxXRange = aXRange[1];
-         else aMaxXRange = aXRange[0];
-       } else if (aPosition[1]!=0) {
-         //y
-         float* aYRange = ac->GetYRange();
-         if (aYRange[0] < aYRange[1]) aMaxYRange = aYRange[1];
-         else aMaxYRange = aYRange[0];
-       } else if (aPosition[2]!=0) {
-         //z
-         float* aZRange = ac->GetZRange();
-         if (aZRange[0] < aZRange[1]) aMaxZRange = aZRange[1];
-         else aMaxZRange = aZRange[0];
-       }
-      } 
-    }
-    ac = m_Triedron->GetNextActor();
-  }
+  return;
 }
 
 //----------------------------------------------------------------------------
 void VTKViewer_InteractorStyleSALOME::DollyXY(int dx, int dy)
 {
-  vtkCamera *cam;
+  if (this->CurrentRenderer == NULL) return;
+
   double dxf = this->MotionFactor * (double)(dx) / (double)(this->CurrentRenderer->GetCenter()[1]);
   double dyf = this->MotionFactor * (double)(dy) / (double)(this->CurrentRenderer->GetCenter()[1]);
 
   double zoomFactor = pow((double)1.1, dxf + dyf);
   
-  if (this->CurrentRenderer == NULL)
-    {
-      return;
-    }
-  
-  cam = this->CurrentRenderer->GetActiveCamera();
-    if (cam->GetParallelProjection())
-    {
-      double aOldScale = cam->GetParallelScale();
-      cam->SetParallelScale(cam->GetParallelScale()/zoomFactor);
-      double aNewScale = cam->GetParallelScale();
-
-      // for controlling label size
-      ControlLblSize(aOldScale,aNewScale);
-    }
-    else
-    {
-      cam->Dolly(zoomFactor);
-      this->CurrentRenderer->ResetCameraClippingRange();
-    }
+  vtkCamera *aCam = this->CurrentRenderer->GetActiveCamera();
+  if (aCam->GetParallelProjection())
+    aCam->SetParallelScale(aCam->GetParallelScale()/zoomFactor);
+  else{
+    aCam->Dolly(zoomFactor);
+    ::ResetCameraClippingRange(this->CurrentRenderer);
+  }
   
   /* VSV Light follows camera: if (this->CurrentLight)
     {      
@@ -597,6 +511,27 @@ void VTKViewer_InteractorStyleSALOME::startFitArea()
   qApp->installEventFilter(this);
 }
 
+
+void  VTKViewer_InteractorStyleSALOME::ViewFitAll() {
+  int aTriedronWasVisible = false;
+  if(m_Trihedron){
+    aTriedronWasVisible = 
+      m_Trihedron->GetVisibility() == VTKViewer_Trihedron::eOn;
+    if(aTriedronWasVisible) m_Trihedron->VisibilityOff();
+  }
+
+  if(m_Trihedron->GetVisibleActorCount(CurrentRenderer)){
+    m_Trihedron->VisibilityOff();
+    ::ResetCamera(CurrentRenderer);
+  }else{
+    m_Trihedron->SetVisibility(VTKViewer_Trihedron::eOnlyLineOn);
+    ::ResetCamera(CurrentRenderer,true);
+  }
+  if(aTriedronWasVisible) m_Trihedron->VisibilityOn();
+  else m_Trihedron->VisibilityOff();
+}
+
+
 // starts Global Panning operation (e.g. through menu command)
 void VTKViewer_InteractorStyleSALOME::startGlobalPan()
 {
@@ -612,29 +547,21 @@ void VTKViewer_InteractorStyleSALOME::startGlobalPan()
   vtkCamera *cam = this->CurrentRenderer->GetActiveCamera();
   myScale = cam->GetParallelScale();
 
+  ViewFitAll();
   // make fit all
-  Standard_Boolean TriedronWasVisible = false;
-  if ( m_Triedron ) {
-    m_Triedron->InitTraversal();
-    vtkActor *ac = m_Triedron->GetNextActor();
-    while(!(ac==NULL)) {
-      if(ac->GetVisibility()) {
-       TriedronWasVisible = true;
-       ac->VisibilityOff();
-      }
-      ac = m_Triedron->GetNextActor();
-    }
-  }
-  this->CurrentRenderer->ResetCamera();
-  this->CurrentRenderer->ResetCameraClippingRange();
-  if( m_Triedron && TriedronWasVisible ) {
-    m_Triedron->InitTraversal();
-    vtkActor *ac = m_Triedron->GetNextActor();
-    while(!(ac==NULL)) {
-      ac->VisibilityOn();
-      ac = m_Triedron->GetNextActor();
-    }
-  }
+//   int TriedronWasVisible = false;
+//   if(m_Trihedron){
+//     TriedronWasVisible = 
+//       m_Trihedron->GetVisibility() == VTKViewer_Trihedron::eOn;
+//     if(TriedronWasVisible) m_Trihedron->VisibilityOff();
+//   }
+
+//   ::ResetCamera(this->CurrentRenderer);
+  
+//   if(m_Trihedron)
+//     if(TriedronWasVisible) 
+//       m_Trihedron->VisibilityOn();
+
   //VTKViewer_RenderWindow* aRW = dynamic_cast<VTKViewer_RenderWindow*>(this->Interactor->GetRenderWindow());
   if (myGUIWindow) myGUIWindow->update();
   
@@ -657,10 +584,7 @@ void VTKViewer_InteractorStyleSALOME::fitRect(const int left,
                                        const int right, 
                                        const int bottom)
 {
-  if (this->CurrentRenderer == NULL) {
-    return;
-  }
-  vtkCamera *cam = this->CurrentRenderer->GetActiveCamera();
+  if (this->CurrentRenderer == NULL) return;
  
   // move camera
   int x = (left + right)/2;
@@ -670,17 +594,17 @@ void VTKViewer_InteractorStyleSALOME::fitRect(const int left,
   int oldY = aSize[1]/2;
   TranslateView(oldX, oldY, x, y);
 
-      
   // zoom camera
   double dxf = (double)(aSize[0]) / (double)(abs(right - left));
   double dyf = (double)(aSize[1]) / (double)(abs(bottom - top));
   double zoomFactor = (dxf + dyf)/2 ;
 
-  if (cam->GetParallelProjection()) {
-    cam->SetParallelScale(cam->GetParallelScale()/zoomFactor);
-  } else {
-    cam->Dolly(zoomFactor);
-    this->CurrentRenderer->ResetCameraClippingRange();
+  vtkCamera *aCam = this->CurrentRenderer->GetActiveCamera();
+  if(aCam->GetParallelProjection())
+    aCam->SetParallelScale(aCam->GetParallelScale()/zoomFactor);
+  else{
+    aCam->Dolly(zoomFactor);
+    ::ResetCameraClippingRange(this->CurrentRenderer);
   }
   
   //vtkRenderWindowInteractor *rwi = this->Interactor;
@@ -765,6 +689,8 @@ void VTKViewer_InteractorStyleSALOME::setCursor(const int operation)
 void VTKViewer_InteractorStyleSALOME::onStartOperation()
 {
   if (!myGUIWindow) return;
+  // VSV: LOD actor activisation
+  //  this->Interactor->GetRenderWindow()->SetDesiredUpdateRate(this->Interactor->GetDesiredUpdateRate());
   switch (State) {
     case VTK_INTERACTOR_STYLE_CAMERA_SELECT:
     case VTK_INTERACTOR_STYLE_CAMERA_FIT:
@@ -789,14 +715,16 @@ void VTKViewer_InteractorStyleSALOME::onFinishOperation()
 {
   if (!myGUIWindow) return;
 
+
   QAD_Study* aActiveStudy = QAD_Application::getDesktop()->getActiveStudy();
   SALOME_Selection* aSel    = SALOME_Selection::Selection( aActiveStudy->getSelection() );
   vtkRenderWindowInteractor *rwi = this->Interactor;
 
+  // VSV: LOD actor activisation
+  //  rwi->GetRenderWindow()->SetDesiredUpdateRate(rwi->GetStillUpdateRate());
+
   int aSelectionMode = aSel->SelectionMode();
   bool aSelActiveCompOnly = aSel->IsSelectActiveCompOnly();
-  SALOMEDS::SComponent_var aActiveComponent = SALOMEDS::SComponent::_narrow(
-     aActiveStudy->getStudyDocument()->FindObject(QAD_Application::getDesktop()->getActiveComponent()));
 
   switch (State) {
     case VTK_INTERACTOR_STYLE_CAMERA_SELECT:
@@ -829,6 +757,11 @@ void VTKViewer_InteractorStyleSALOME::onFinishOperation()
           vtkActorCollection* listactors = NULL;
           this->FindPokedRenderer(x, y);
          rwi->StartPickCallback();
+
+//       vtkPicker* aPicker = vtkPicker::SafeDownCast(rwi->GetPicker());
+//       if (aPicker)
+//         aPicker->SetTolerance(0.01);
+         
           rwi->GetPicker()->Pick(x, y, 0.0, this->CurrentRenderer);
     
           if ( rwi->GetPicker()->IsA("vtkCellPicker") ) {
@@ -1020,6 +953,10 @@ void VTKViewer_InteractorStyleSALOME::onFinishOperation()
           }
         } else {
           //processing rectangle selection
+         SALOMEDS::SComponent_var aActiveComponent = SALOMEDS::SComponent::
+           _narrow(aActiveStudy->getStudyDocument()->
+                   FindObject(QAD_Application::getDesktop()->getActiveComponent()));
+         if(aSelActiveCompOnly && aActiveComponent->_is_nil()) return;
          rwi->StartPickCallback();
 
          if (!myShiftState) {
@@ -1117,9 +1054,10 @@ void VTKViewer_InteractorStyleSALOME::onFinishOperation()
                    if(SActor->hasIO()) {
                      Handle(SALOME_InteractiveObject) IO = SActor->getIO();
                      if(IO.IsNull()) continue;
-                     if(aSelActiveCompOnly)
+                     if(aSelActiveCompOnly) {
                        if(strcmp(aActiveComponent->ComponentDataType(),IO->getComponentDataType()) != 0)
                          continue;
+                     }
                      if(vtkDataSet* aDataSet = SActor->GetMapper()->GetInput()){
                        for(int i = 0, iEnd = aDataSet->GetNumberOfCells(); i < iEnd; i++){
                          if(vtkCell* aCell = aDataSet->GetCell(i)){
@@ -1218,6 +1156,8 @@ void VTKViewer_InteractorStyleSALOME::onFinishOperation()
     }
     break;
   }
+  if (myGUIWindow) myGUIWindow->update();
+
 }
 
 // called during viewer operation when user moves mouse (!put necessary processing here!)
@@ -1382,7 +1322,7 @@ void VTKViewer_InteractorStyleSALOME::Place(const int theX, const int theY)
   // restore zoom scale
   vtkCamera *cam = this->CurrentRenderer->GetActiveCamera();
   cam->SetParallelScale(myScale);
-  this->CurrentRenderer->ResetCameraClippingRange();
+  ::ResetCameraClippingRange(this->CurrentRenderer);
 
   /* VSV Light follows camera: if (this->CurrentLight) {
     this->CurrentLight->SetPosition(cam->GetPosition());
index a8a9aa206359329d28f5ab9676bdddb99d3edb84..62438e91e2d4fd16f0af7bdcf0c7c42a57601aeb 100644 (file)
@@ -34,6 +34,7 @@
 #include <qcursor.h>
 #include "SALOME_Actor.h"
 
+class VTKViewer_Trihedron;
 
 #define VTK_INTERACTOR_STYLE_CAMERA_NONE    0
 #define VTK_INTERACTOR_STYLE_CAMERA_ROTATE  1
@@ -53,7 +54,7 @@ class VTKViewer_InteractorStyleSALOME : public QObject, public vtkInteractorStyl
   // programmers.
   static VTKViewer_InteractorStyleSALOME *New();
 
-  void setTriedron( vtkActorCollection* triedron );
+  void setTriedron(VTKViewer_Trihedron* theTrihedron);
 
   vtkTypeMacro(VTKViewer_InteractorStyleSALOME, vtkObject);
   void PrintSelf(ostream& os, vtkIndent indent);
@@ -67,6 +68,8 @@ class VTKViewer_InteractorStyleSALOME : public QObject, public vtkInteractorStyl
   void OnRightButtonDown(int ctrl, int shift, int x, int y);
   void OnRightButtonUp  (int ctrl, int shift, int x, int y);
 
+  void  ViewFitAll();
+
  protected:
   VTKViewer_InteractorStyleSALOME();
   ~VTKViewer_InteractorStyleSALOME();
@@ -132,7 +135,7 @@ protected:
   bool         myCursorState;
   bool         myShiftState;
   int ForcedState;
-  vtkActorCollection* m_Triedron;  
+  VTKViewer_Trihedron* m_Trihedron;  
 
   QWidget*     myGUIWindow;
 
index 6072e344b883f9302822b24ca45bada172a5e646..7712ec01e3c700e8543b58c8122eb4006d4e5e23 100644 (file)
@@ -45,6 +45,7 @@ using namespace std;
 #include <vtkRenderWindowInteractor.h>
 #include <vtkRendererCollection.h>
 #include <vtkXOpenGLRenderWindow.h>
+#include <vtkCamera.h>
 
 //#include <GL/gl.h>
 //#include <GL/glu.h>
@@ -64,6 +65,7 @@ VTKViewer_RenderWindow::VTKViewer_RenderWindow(QWidget *parent, const char *name
   myRW->SetDisplayId((void*)x11Display());
   myRW->SetWindowId((void*)winId());
   myRW->DoubleBufferOn();
+  setMouseTracking(true);
 }
 
 VTKViewer_RenderWindow::~VTKViewer_RenderWindow() {
@@ -76,10 +78,23 @@ void VTKViewer_RenderWindow::paintEvent(QPaintEvent* theEvent) {
 }
 
 void VTKViewer_RenderWindow::resizeEvent(QResizeEvent* theEvent) {
-  vtkRenderWindowInteractor* aRWI = myRW->GetInteractor();
-  if (aRWI != NULL)
-    aRWI->SetSize(width(), height());
-  myRW->SetSize(width(), height());
+  int aWidth = myRW->GetSize()[0], aHeight = myRW->GetSize()[1];
+  if(vtkRenderWindowInteractor* aRWI = myRW->GetInteractor())
+    aRWI->UpdateSize(width(), height());
+  if(aWidth != width() || aHeight != height()){
+    vtkRendererCollection * aRenderers = myRW->GetRenderers();
+    aRenderers->InitTraversal();
+    double aCoeff = 1.0;
+    if(vtkRenderer *aRenderer = aRenderers->GetNextItem()){
+      vtkCamera *aCamera = aRenderer->GetActiveCamera();
+      double aScale = aCamera->GetParallelScale();
+      if((aWidth - width())*(aHeight - height()) > 0)
+       aCoeff = sqrt(double(aWidth)/double(width())*double(height())/double(aHeight));
+      else
+       aCoeff = double(aWidth)/double(width());
+      aCamera->SetParallelScale(aScale*aCoeff);
+    }
+  }
 }
 
 
index 4099a3fcd19ae5e7d7031a9897ad43e519170c58..2e4ce4b961dcb5fb8b46b4256e109f7f83cc8b8d 100644 (file)
@@ -26,7 +26,6 @@
 //  Module : SALOME
 //  $Header$
 
-using namespace std;
 #include "VTKViewer_RenderWindowInteractor.h"
 #include "VTKViewer_RenderWindow.h"
 #include "VTKViewer_InteractorStyleSALOME.h"
@@ -59,10 +58,11 @@ using namespace std;
 #include <vtkRendererCollection.h>
 #include <vtkPolyDataWriter.h>
 
-
 // QT Includes
 #include <qkeycode.h>
 
+using namespace std;
+
 VTKViewer_RenderWindowInteractor* VTKViewer_RenderWindowInteractor::New() {
   vtkObject *ret = vtkObjectFactory::CreateInstance("VTKViewer_RenderWindowInteractor") ;
   if( ret ) {
@@ -168,6 +168,13 @@ void VTKViewer_RenderWindowInteractor::Initialize() {
   return ;
 }
 
+
+void VTKViewer_RenderWindowInteractor::SetInteractorStyle(vtkInteractorObserver *theInteractor){
+  myInteractorStyle = dynamic_cast<VTKViewer_InteractorStyleSALOME*>(theInteractor);
+  vtkRenderWindowInteractor::SetInteractorStyle(theInteractor);
+}
+
+
 void VTKViewer_RenderWindowInteractor::SetSelectionMode(int mode)
 {
   Cell_Actor->VisibilityOff();
@@ -759,55 +766,38 @@ bool VTKViewer_RenderWindowInteractor::highlight( const Handle(SALOME_Interactiv
                                                  bool hilight, 
                                                  bool update)
 {
-  VTKViewer_InteractorStyleSALOME* aStyle = VTKViewer_InteractorStyleSALOME::SafeDownCast(this->InteractorStyle);
-  if (!aStyle) return false;
-
-  vtkRenderer* aren;
-  for (this->RenderWindow->GetRenderers()->InitTraversal(); 
-       (aren = this->RenderWindow->GetRenderers()->GetNextItem()); ) {
-    vtkActorCollection* theActors = aren->GetActors();
-    theActors->InitTraversal();
-    vtkActor *ac = theActors->GetNextActor();
-    while(!(ac==NULL)) {
-      if ( ac->IsA("SALOME_Actor") ) {
-       SALOME_Actor* anActor = SALOME_Actor::SafeDownCast( ac );
-       if ( anActor->hasIO() ) {
-         if ( IObject->isSame( anActor->getIO() ) ) {
-           if ( anActor->GetMapper() == NULL ) {
-             return false;
-           }
-           //highlight or unhilight actors
-           if ( anActor->hasHighlight() ) {
-             anActor->highlight(hilight);
-           } else {
-             if ( anActor->GetVisibility() == 1 ) {
-               if (hilight) {
-                 vtkActor2D *actor2D;
-                 vtkProp3D *prop3D;
-                 if ( (prop3D=vtkProp3D::SafeDownCast(anActor)) != NULL ) {
-                   aStyle->HighlightProp3D(prop3D);
-                 } else if ( (actor2D=vtkActor2D::SafeDownCast(anActor)) != NULL ) {
-                   aStyle->HighlightActor2D(actor2D);
-                 }
-                 //this->InteractorStyle->HighlightProp(anActor);
-               } else {
-                 aStyle->HighlightProp3D(NULL);
-                 aStyle->HighlightActor2D(NULL);
-                 //this->InteractorStyle->HighlightProp(NULL);
-               }
+  VTKViewer_InteractorStyleSALOME* aStyle = 
+    VTKViewer_InteractorStyleSALOME::SafeDownCast(this->InteractorStyle);
+  if(!aStyle) return false;
+  vtkRendererCollection* aRenColl = this->RenderWindow->GetRenderers();
+  aRenColl->InitTraversal();
+  while(vtkRenderer* aRen = this->RenderWindow->GetRenderers()->GetNextItem()){
+      vtkActorCollection* theActors = aRen->GetActors();
+      theActors->InitTraversal();
+      while(vtkActor *anAct = theActors->GetNextActor()) {
+       if(SALOME_Actor* anActor = SALOME_Actor::SafeDownCast(anAct)){
+         if(anActor->hasIO()){
+           if(IObject->isSame(anActor->getIO())){
+             if(anActor->GetMapper() == NULL)
+               return false;
+             //highlight or unhilight actors
+             if(anActor->hasHighlight())
+               anActor->highlight(hilight);
+             else{
+               if(anActor->GetVisibility() == 1 && hilight)
+                 aStyle->HighlightProp(anActor);
+               else if(!hilight)
+                 aStyle->HighlightProp(NULL);
              }
            }
          }
        }
       }
-      ac = theActors->GetNextActor();
     }
-  }
-  if (update) {
+  if(update){
     Render();
     emit RenderWindowModified();
   }
-
   return false;
 }
 
@@ -830,36 +820,32 @@ void VTKViewer_RenderWindowInteractor::Update() {
 }
 
 
-bool VTKViewer_RenderWindowInteractor::unHighlightAll()
-{
-  vtkRenderer* aren;
-  for (this->RenderWindow->GetRenderers()->InitTraversal(); 
-       (aren = this->RenderWindow->GetRenderers()->GetNextItem()); ) {
-    vtkActorCollection* theActors = aren->GetActors();
+bool VTKViewer_RenderWindowInteractor::unHighlightAll(){
+  VTKViewer_InteractorStyleSALOME* aStyle = 
+    VTKViewer_InteractorStyleSALOME::SafeDownCast(this->InteractorStyle);
+  if(aStyle) aStyle->HighlightProp(NULL);
+  vtkRendererCollection* aRenColl = this->RenderWindow->GetRenderers();
+  aRenColl->InitTraversal();
+  while(vtkRenderer* aRen = this->RenderWindow->GetRenderers()->GetNextItem()){
+    vtkActorCollection* theActors = aRen->GetActors();
     theActors->InitTraversal();
-
-    if ( theActors->IsItemPresent(Point_Actor) != 0 ) 
-      aren->RemoveActor( Point_Actor );
-    if ( theActors->IsItemPresent( Edge_Actor ) != 0 ) 
-      aren->RemoveActor( Edge_Actor ); 
-    if ( theActors->IsItemPresent( Cell_Actor ) != 0 ) 
-      aren->RemoveActor( Cell_Actor );
-
-    vtkActor *ac = theActors->GetNextActor();
-
-    while(!(ac==NULL)) {
-      if ( ac->IsA("SALOME_Actor") ) {
-       SALOME_Actor* anActor = SALOME_Actor::SafeDownCast( ac );
-       if ( anActor->hasIO() ) {
+    if(theActors->IsItemPresent(Point_Actor)) 
+      aRen->RemoveActor(Point_Actor);
+    if(theActors->IsItemPresent(Edge_Actor)) 
+      aRen->RemoveActor(Edge_Actor); 
+    if(theActors->IsItemPresent(Cell_Actor)) 
+      aRen->RemoveActor(Cell_Actor);
+    vtkActor *anActor = theActors->GetNextActor();
+    while(vtkActor *anAct = theActors->GetNextActor()) {
+      if(SALOME_Actor* anActor = SALOME_Actor::SafeDownCast(anAct)){
+       if(anActor->hasIO()){
          //highlight or unhilight actors
-         if ( anActor->hasHighlight() )
+         if(anActor->hasHighlight())
            anActor->highlight(false);
        }
       }
-      ac = theActors->GetNextActor();
     }
   }
-
   emit RenderWindowModified() ;
   return false;
 }
index 24f7dd62262df5a0c6f15f992864eadf4e16626a..e5fa4088529c8953db29d6d2f77083117cc0e8e7 100644 (file)
 #include <TColStd_MapOfInteger.hxx>
 #include <TColStd_MapIteratorOfMapOfInteger.hxx>
 
-class VTKViewer_RenderWindow;
 class vtkPolyData;
 class vtkPolyDataMapper;
 
+class VTKViewer_RenderWindow;
+class VTKViewer_InteractorStyleSALOME;
+
 // ------------------------------------------------------------
 // :TRICKY: Fri Apr 21 22:19:27 2000 Pagey
 // The Signal/Slot mechanism used by Qt requires that QObject 
@@ -66,7 +68,7 @@ public:
 
   static VTKViewer_RenderWindowInteractor *New() ; 
 
-  vtkTypeMacro(vtkRenderWindowInteractor,vtkObject);
+  vtkTypeMacro(VTKViewer_RenderWindowInteractor,vtkRenderWindowInteractor);
 
   void PrintSelf(ostream& os, vtkIndent indent);
 
@@ -76,6 +78,11 @@ public:
   // want to have mouse interaction.
   virtual void Initialize();
 
+  virtual void SetInteractorStyle(vtkInteractorObserver *);
+  VTKViewer_InteractorStyleSALOME* GetInteractorStyleSALOME(){
+    return myInteractorStyle;
+  }
+
   // Description:
   // This will start up the X event loop and never return. If you
   // call this method it will loop processing X events until the
@@ -174,23 +181,24 @@ public:
   vtkRenderer* GetRenderer();
 
   QWidget* getGUIWindow() {return myGUIWindow;}
-  void setGUIWindow(QWidget* theWin) { myGUIWindow = theWin;}
-
+  void setGUIWindow(QWidget* theWin) {myGUIWindow = theWin;}
+  
   typedef void (*TCreateMapperFun)(vtkPolyData *theSourcePolyData, 
-                                          vtkPolyDataMapper* theMapper, 
-                                          const TColStd_MapOfInteger& theMapIndex);
+                                  vtkPolyDataMapper* theMapper, 
+                                  const TColStd_MapOfInteger& theMapIndex);
  protected:
 
   VTKViewer_RenderWindowInteractor();
   ~VTKViewer_RenderWindowInteractor();
 
+  VTKViewer_InteractorStyleSALOME* myInteractorStyle;
+
   bool highlight(const Handle(SALOME_InteractiveObject)& IObject, 
                 const TColStd_MapOfInteger& MapIndex, TCreateMapperFun theFun,
                 vtkActor *theActor, bool hilight, bool update );
-  //
+
   // Timer used during various mouse events to figure 
   // out mouse movements. 
-  //
   QTimer *mTimer ;
 
   //CAI: Display mode
@@ -202,14 +210,11 @@ public:
   vtkActor* Edge_Actor; //NB
   vtkActor* Cell_Actor;
   
-  //
   // User for switching to stereo mode.
-  //
   int PositionBeforeStereo[2];
-  //
+
   // Connect/disconnect all slots which allow events on the
   // render window to be passed to the interactor. 
-  //
   void ConnectSlots() ;
   void DisconnectSlots() ;
   void ProcessSlotConnections(bool conn) ;
@@ -227,13 +232,12 @@ public:
   void KeyPressed(QKeyEvent *event) ;
 
   private slots:
-    //
     // Not all of these slots are needed in VTK_MAJOR_VERSION=3,
     // but moc does not understand "#if VTK_MAJOR_VERSION". Hence, 
     // we have to include all of these for the time being. Once,
     // this bug in MOC is fixed, we can separate these. 
-    //
     void TimerFunc() ;
+
  signals:
   void RenderWindowModified() ;
 
@@ -243,3 +247,4 @@ public:
 
 #endif
 
diff --git a/src/VTKViewer/VTKViewer_Trihedron.cxx b/src/VTKViewer/VTKViewer_Trihedron.cxx
new file mode 100644 (file)
index 0000000..be2d188
--- /dev/null
@@ -0,0 +1,390 @@
+//  SALOME VTKViewer : 
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : VTKViewer_Trihedron.cxx
+//  Author : Alexey PETROV
+//  Module : SALOME
+//  $Header: 
+
+#include "VTKViewer_Trihedron.h"
+#include "utilities.h"
+#include "SALOME_Actor.h"
+
+// VTK Includes
+#include <vtkMath.h>
+#include <vtkMapper.h>
+#include <vtkDataSet.h>
+#include <vtkRenderer.h>
+#include <vtkFollower.h>
+#include <vtkRenderWindow.h>
+#include <vtkObjectFactory.h>
+
+#include <vtkActor.h>
+#include <vtkProperty.h>
+#include <vtkLineSource.h>
+#include <vtkConeSource.h>
+#include <vtkPolyDataMapper.h>
+
+#include "VTKViewer_VectorText.h"
+
+using namespace std;
+
+//==============================================================================
+
+class VTKViewer_UnScaledActor: public vtkFollower{
+  VTKViewer_UnScaledActor(const VTKViewer_UnScaledActor&);
+
+public:
+  vtkTypeMacro(VTKViewer_UnScaledActor,vtkFollower);
+  static VTKViewer_UnScaledActor *New();
+
+  virtual void SetSize(int theSize);
+  virtual void Render(vtkRenderer *theRenderer);
+
+protected:
+  VTKViewer_UnScaledActor();
+  int mySize;
+};
+
+vtkStandardNewMacro(VTKViewer_UnScaledActor);
+
+VTKViewer_UnScaledActor::VTKViewer_UnScaledActor(){}
+
+void VTKViewer_UnScaledActor::Render(vtkRenderer *theRenderer){
+  if(theRenderer){
+    float P[2][3] = {{-1.0, -1.0, 0.0},{+1.0, +1.0, 0.0}};
+    theRenderer->ViewToWorld(P[0][0],P[0][1],P[0][2]);
+    theRenderer->ViewToWorld(P[1][0],P[1][1],P[1][2]);
+    float aWorldDiag = sqrt((P[1][0]-P[0][0])*(P[1][0]-P[0][0])+
+                           (P[1][1]-P[0][1])*(P[1][1]-P[0][1])+
+                           (P[1][2]-P[0][2])*(P[1][2]-P[0][2]));
+    int* aSize = theRenderer->GetRenderWindow()->GetSize();
+    float aWinDiag = sqrt(float(aSize[0]*aSize[0]+aSize[1]*aSize[1]));
+    vtkDataSet* aDataSet = GetMapper()->GetInput();
+    float aLength = aDataSet->GetLength();
+    float aScale = mySize*aWorldDiag/aWinDiag/aLength*sqrt(float(aSize[0])/float(aSize[1]));
+    SetScale(aScale);
+  }
+  vtkFollower::Render(theRenderer);
+}
+
+void VTKViewer_UnScaledActor::SetSize(int theSize){
+  mySize = theSize;
+}
+
+//==============================================================================
+
+// The base class for concreate Axis
+// Its only duty is to give correct initialization and destruction
+//   of its pipe-lines
+class VTKViewer_Axis : public vtkObject{
+protected:
+  VTKViewer_Axis();
+  VTKViewer_Axis(const VTKViewer_Axis&);
+  virtual ~VTKViewer_Axis();
+ public:
+  vtkTypeMacro(VTKViewer_Axis,vtkObject);
+  
+  virtual void AddToRender(vtkRenderer* theRenderer){
+    theRenderer->AddActor(myLabelActor);
+    theRenderer->AddActor(myArrowActor);
+    theRenderer->AddActor(myLineActor);
+  }
+
+  virtual void SetVisibility(VTKViewer_Trihedron::TVisibility theVis);
+  virtual VTKViewer_Trihedron::TVisibility GetVisibility() { 
+    return myVisibility;
+  }
+
+  virtual void SetCamera(vtkCamera* theCamera){
+    myLabelActor->SetCamera(theCamera);
+  }
+
+  virtual void SetProperty(vtkProperty* theProperty){
+    myLabelActor->SetProperty(theProperty);
+    myArrowActor->SetProperty(theProperty);
+    myLineActor->SetProperty(theProperty);
+  }
+
+  virtual void SetSize(float theSize);
+
+  virtual VTKViewer_UnScaledActor* GetLabel(){
+    return myLabelActor;
+  }
+
+  virtual VTKViewer_UnScaledActor* GetArrow(){
+    return myArrowActor;
+  }
+
+protected:
+  VTKViewer_Trihedron::TVisibility myVisibility;
+  float myDir[3], myRot[3];
+
+  vtkActor *myLineActor;
+  VTKViewer_UnScaledActor *myArrowActor;
+  VTKViewer_UnScaledActor *myLabelActor;
+
+  vtkPolyDataMapper *myMapper[3];
+  vtkLineSource *myLineSource;
+  vtkConeSource *myConeSource;
+  VTKViewer_VectorText* myVectorText;
+};
+
+VTKViewer_Axis::VTKViewer_Axis(){
+  // Initialize the Line pipe-line representation
+  myLineSource = vtkLineSource::New();
+  myLineSource->SetPoint1(0.0,0.0,0.0);
+
+  myMapper[0] = vtkPolyDataMapper::New();
+  myMapper[0]->SetInput(myLineSource->GetOutput());
+
+  myLineActor = vtkActor::New();
+  myLineActor->SetMapper(myMapper[0]);
+  myLineActor->PickableOff();
+
+  // Initialize the Arrow pipe-line representation
+  myConeSource =  vtkConeSource::New();
+  myConeSource->SetResolution(2);
+  myConeSource->SetAngle(10);
+
+  myMapper[1] = vtkPolyDataMapper::New();
+  myMapper[1]->SetInput(myConeSource->GetOutput());
+  
+  myArrowActor = VTKViewer_UnScaledActor::New();
+  myArrowActor->SetMapper(myMapper[1]);
+  static int aArrowActorSize = 24;
+  myArrowActor->SetSize(aArrowActorSize);
+  myArrowActor->PickableOff();
+
+  // Initialize the Label pipe-line representation
+  myVectorText = VTKViewer_VectorText::New();
+
+  myMapper[2] = vtkPolyDataMapper::New();
+  myMapper[2]->SetInput(myVectorText->GetOutput());
+
+  myLabelActor = VTKViewer_UnScaledActor::New();
+  myLabelActor->SetMapper(myMapper[2]);
+  static int aLabelActorSize = 12;
+  myLabelActor->SetSize(aLabelActorSize);
+  myLabelActor->PickableOff();
+
+  // Initialise visibility param.
+  myVisibility = VTKViewer_Trihedron::eOn;
+}
+
+VTKViewer_Axis::~VTKViewer_Axis(){
+  // Destroy of the Label pipe-line representation
+  myLabelActor->Delete();
+
+  myMapper[2]->RemoveAllInputs();
+  myMapper[2]->Delete();
+
+  myVectorText->Delete();
+
+  // Destroy of the Arrow pipe-line representation
+  myArrowActor->Delete();
+
+  myMapper[1]->RemoveAllInputs();
+  myMapper[1]->Delete();
+
+  myConeSource->Delete();
+
+  // Destroy of the Arrow pipe-line representation
+  myLineActor->Delete();
+
+  myMapper[2]->RemoveAllInputs();
+  myMapper[2]->Delete();
+
+  myLineSource->Delete();
+}
+
+void VTKViewer_Axis::SetVisibility(VTKViewer_Trihedron::TVisibility theVis){
+  switch(theVis){
+  case VTKViewer_Trihedron::eOff:
+  case VTKViewer_Trihedron::eOn:
+    myLabelActor->SetVisibility(theVis);
+    myArrowActor->SetVisibility(theVis);
+    myLineActor->SetVisibility(theVis);
+    break;
+  case VTKViewer_Trihedron::eOnlyLineOn:
+    myLabelActor->VisibilityOff();
+    myArrowActor->VisibilityOff();
+    myLineActor->VisibilityOn();
+    break;
+  default:
+    return;
+  }
+  myVisibility = theVis;
+}
+
+void VTKViewer_Axis::SetSize(float theSize){
+  float aPosition[3] = {myDir[0]*theSize, myDir[1]*theSize, myDir[2]*theSize};
+  myLineSource->SetPoint2(aPosition);
+
+  myArrowActor->SetPosition(0.0,0.0,0.0);
+  myArrowActor->AddPosition(aPosition);
+  myArrowActor->SetOrientation(myRot);
+
+  myLabelActor->SetPosition(0.0,0.0,0.0);
+  myLabelActor->AddPosition(aPosition);
+}
+
+//==============================================================================
+class VTKViewer_XAxis : public VTKViewer_Axis{
+protected:
+  VTKViewer_XAxis();
+  VTKViewer_XAxis(const VTKViewer_XAxis&);
+public:
+  vtkTypeMacro(VTKViewer_XAxis,VTKViewer_Axis);
+  static VTKViewer_XAxis *New();
+};
+
+vtkStandardNewMacro(VTKViewer_XAxis);
+
+VTKViewer_XAxis::VTKViewer_XAxis(){ 
+  myDir[0] = 1.0; myDir[1] = 0.0; myDir[2] = 0.0;
+  myRot[0] = 0.0; myRot[1] = 0.0; myRot[2] = 0.0;
+  myVectorText->SetText("X");
+  vtkProperty* aProperty = vtkProperty::New();
+  aProperty->SetColor(1.0,0.0,0.0);
+  SetProperty(aProperty);
+  aProperty->Delete();
+}
+
+//==============================================================================
+class VTKViewer_YAxis : public VTKViewer_Axis{
+protected:
+  VTKViewer_YAxis();
+  VTKViewer_YAxis(const VTKViewer_YAxis&);
+public:
+  vtkTypeMacro(VTKViewer_YAxis,VTKViewer_Axis);
+  static VTKViewer_YAxis *New();
+};
+
+vtkStandardNewMacro(VTKViewer_YAxis);
+
+VTKViewer_YAxis::VTKViewer_YAxis(){ 
+  myDir[0] = 0.0; myDir[1] = 1.0; myDir[2] = 0.0;
+  myRot[0] = 0.0; myRot[1] = 0.0; myRot[2] = 90.;
+  myVectorText->SetText("Y");
+  vtkProperty* aProperty = vtkProperty::New();
+  aProperty->SetColor(0.0,1.0,0.0);
+  SetProperty(aProperty);
+  aProperty->Delete();
+}
+
+//==============================================================================
+class VTKViewer_ZAxis : public VTKViewer_Axis{
+protected:
+  VTKViewer_ZAxis();
+  VTKViewer_ZAxis(const VTKViewer_ZAxis&);
+public:
+  vtkTypeMacro(VTKViewer_ZAxis,VTKViewer_Axis);
+  static VTKViewer_ZAxis *New();
+};
+
+vtkStandardNewMacro(VTKViewer_ZAxis);
+
+VTKViewer_ZAxis::VTKViewer_ZAxis(){ 
+  myDir[0] = 0.0; myDir[1] = 0.0; myDir[2] = 1.0;
+  myRot[0] = 0.0; myRot[1] = -90; myRot[2] = 0.0;
+  myVectorText->SetText("Z");
+  vtkProperty* aProperty = vtkProperty::New();
+  aProperty->SetColor(0.0,0.0,1.0);
+  SetProperty(aProperty);
+  aProperty->Delete();
+}
+
+//==============================================================================
+
+vtkStandardNewMacro(VTKViewer_Trihedron);
+
+VTKViewer_Trihedron::VTKViewer_Trihedron(){
+  myPresent = vtkActorCollection::New();
+  myAxis[0] = VTKViewer_XAxis::New();
+  myAxis[1] = VTKViewer_YAxis::New();
+  myAxis[2] = VTKViewer_ZAxis::New();
+  static float aSize = 100;
+  SetSize(aSize);
+}
+
+VTKViewer_Trihedron::~VTKViewer_Trihedron(){
+  myPresent->RemoveAllItems();
+  myPresent->Delete();
+  for(int i = 0; i < 3; i++)
+    myAxis[i]->Delete();
+}
+
+void VTKViewer_Trihedron::SetSize(float theSize){
+  mySize = theSize;
+  for(int i = 0; i < 3; i++)
+    myAxis[i]->SetSize(theSize);
+}
+
+void VTKViewer_Trihedron::SetVisibility(TVisibility theVis){
+  for(int i = 0; i < 3; i++)
+    myAxis[i]->SetVisibility(theVis);
+}
+
+VTKViewer_Trihedron::TVisibility VTKViewer_Trihedron::GetVisibility(){
+  return myAxis[0]->GetVisibility();
+}
+
+void VTKViewer_Trihedron::AddToRender(vtkRenderer* theRenderer){
+  vtkCamera* aCamera = theRenderer->GetActiveCamera();
+  for(int i = 0; i < 3; i++){
+    myAxis[i]->AddToRender(theRenderer);
+    myAxis[i]->SetCamera(aCamera);
+  }
+}
+
+void VTKViewer_Trihedron::RemoveFromRender(vtkRenderer* theRenderer){
+  myPresent->InitTraversal();
+  while(vtkActor* anActor = myPresent->GetNextActor())
+    theRenderer->RemoveActor(anActor);
+}
+
+int VTKViewer_Trihedron::GetVisibleActorCount(vtkRenderer* theRenderer){
+  //TVisibility aVis = GetVisibility();
+  //SetVisibility(eOff);
+  vtkActorCollection* aCollection = theRenderer->GetActors();
+  aCollection->InitTraversal();
+  int aCount = 0;
+  while(vtkActor* prop = aCollection->GetNextActor())
+    if( prop->GetVisibility())
+      if(SALOME_Actor* anActor = SALOME_Actor::SafeDownCast(prop))
+       if(!anActor->IsInfinitive()) 
+         aCount++;
+  //int aCount = theRenderer->VisibleActorCount();
+  //SetVisibility(aVis);
+  return aCount;
+}
+
+void VTKViewer_Trihedron::Render(vtkRenderer* theRenderer){
+  for(int i = 0; i < 3; i++)
+    {
+      myAxis[i]->GetLabel()->Render(theRenderer);
+      myAxis[i]->GetArrow()->Render(theRenderer);
+    }
+}
+
diff --git a/src/VTKViewer/VTKViewer_Trihedron.h b/src/VTKViewer/VTKViewer_Trihedron.h
new file mode 100644 (file)
index 0000000..056ea15
--- /dev/null
@@ -0,0 +1,69 @@
+//  SALOME VTKViewer : 
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : VTKViewer_Trihedron.h
+//  Author : Alexey PETROV
+//  Module : SALOME
+//  $Header: 
+
+#ifndef VTKViewer_Trihedron_H
+#define VTKViewer_Trihedron_H
+
+#include <vtkObject.h>
+
+class vtkActorCollection;
+class VTKViewer_Axis;
+class vtkRenderer;
+
+class VTKViewer_Trihedron : public vtkObject{
+ protected:
+  VTKViewer_Trihedron();
+  VTKViewer_Trihedron(const VTKViewer_Trihedron&);
+  virtual ~VTKViewer_Trihedron();
+ public:
+  vtkTypeMacro(VTKViewer_Trihedron,vtkObject);
+  static VTKViewer_Trihedron *New();
+  
+  virtual void SetSize(float theSize);
+  virtual float GetSize() { return mySize;}
+
+  enum TVisibility{eOff, eOn, eOnlyLineOn};
+  virtual void SetVisibility(TVisibility theVis);
+  virtual void VisibilityOff() { SetVisibility(eOff);}
+  virtual void VisibilityOn() { SetVisibility(eOn);}
+  virtual TVisibility GetVisibility();
+
+  virtual void AddToRender(vtkRenderer* theRenderer);
+  virtual void RemoveFromRender(vtkRenderer* theRenderer);
+
+  virtual int GetVisibleActorCount(vtkRenderer* theRenderer);
+  
+  virtual void  Render(vtkRenderer *theRenderer);
+  
+protected:
+  vtkActorCollection* myPresent;
+  VTKViewer_Axis* myAxis[3];
+  float mySize;
+};
+
+#endif
diff --git a/src/VTKViewer/VTKViewer_Utilities.cxx b/src/VTKViewer/VTKViewer_Utilities.cxx
new file mode 100644 (file)
index 0000000..ce64a1e
--- /dev/null
@@ -0,0 +1,195 @@
+//  SALOME VTKViewer : 
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : VTKViewer_Utilities.cxx
+//  Author : Alexey PETROV
+//  Module : SALOME
+//  $Header: 
+
+#include "VTKViewer_Utilities.h"
+#include "utilities.h"
+#include "SALOME_Actor.h"
+
+// VTK Includes
+#include <vtkMath.h>
+#include <vtkCamera.h>
+#include <vtkRenderer.h>
+#include <vtkRenderWindow.h>
+
+using namespace std;
+
+//see vtkRenderer::ResetCamera(float bounds[6]) method
+void ResetCamera(vtkRenderer* theRenderer, int theUsingZeroFocalPoint){  
+  if(!theRenderer) return;
+  float bounds[6];
+  int aCount = ComputeVisiblePropBounds(theRenderer,bounds);
+  if(theUsingZeroFocalPoint || aCount){
+    float aLength = bounds[1]-bounds[0];
+    aLength = max((bounds[3]-bounds[2]),aLength);
+    aLength = max((bounds[5]-bounds[4]),aLength);
+    
+    double vn[3];
+    if ( theRenderer->GetActiveCamera() != NULL )
+      theRenderer->GetActiveCamera()->GetViewPlaneNormal(vn);
+    else{
+      INFOS("Trying to reset non-existant camera");
+      return;
+    }
+    
+    float center[3] = {0.0, 0.0, 0.0};
+    if(!theUsingZeroFocalPoint){
+      center[0] = (bounds[0] + bounds[1])/2.0;
+      center[1] = (bounds[2] + bounds[3])/2.0;
+      center[2] = (bounds[4] + bounds[5])/2.0;
+    }
+    theRenderer->GetActiveCamera()->SetFocalPoint(center[0],center[1],center[2]);
+    
+    float width = sqrt((bounds[1]-bounds[0])*(bounds[1]-bounds[0]) +
+                      (bounds[3]-bounds[2])*(bounds[3]-bounds[2]) +
+                      (bounds[5]-bounds[4])*(bounds[5]-bounds[4]));
+    
+    double ang = theRenderer->GetActiveCamera()->GetViewAngle();
+    float distance = 2.0*width/tan(ang*vtkMath::Pi()/360.0);
+    
+    // check view-up vector against view plane normal
+    double *vup = theRenderer->GetActiveCamera()->GetViewUp();
+    if ( fabs(vtkMath::Dot(vup,vn)) > 0.999 ){
+      MESSAGE("Resetting view-up since view plane normal is parallel");
+      theRenderer->GetActiveCamera()->SetViewUp(-vup[2], vup[0], vup[1]);
+    }
+    
+    // update the camera
+    theRenderer->GetActiveCamera()->SetPosition(center[0]+distance*vn[0],
+                                               center[1]+distance*vn[1],
+                                               center[2]+distance*vn[2]);
+    // find size of the window
+    int* winsize = theRenderer->GetSize();
+    if(winsize[0] < winsize[1]) width *= float(winsize[1])/float(winsize[0]);
+    
+    if(theUsingZeroFocalPoint) width *= sqrt(2.0);
+    
+    theRenderer->GetActiveCamera()->SetParallelScale(width/2.0);
+  }
+  //workaround on VTK
+  //theRenderer->ResetCameraClippingRange(bounds);
+  ResetCameraClippingRange(theRenderer);
+}
+
+
+// Compute the bounds of the visible props
+int ComputeVisiblePropBounds(vtkRenderer* theRenderer, float theBounds[6]){
+  vtkProp    *prop;
+  float      *bounds;
+  int        aCount=0;
+
+  theBounds[0] = theBounds[2] = theBounds[4] = VTK_LARGE_FLOAT;
+  theBounds[1] = theBounds[3] = theBounds[5] = -VTK_LARGE_FLOAT;
+  
+  // loop through all props
+  vtkActorCollection* aCollection = theRenderer->GetActors();
+  aCollection->InitTraversal();
+  while (vtkActor* prop = aCollection->GetNextActor()) {
+    // if it's invisible, or has no geometry, we can skip the rest 
+    if ( prop->GetVisibility() )
+      {
+      if(SALOME_Actor* anActor = SALOME_Actor::SafeDownCast(prop))
+       if(anActor->IsInfinitive()) continue;
+      bounds = prop->GetBounds();
+      // make sure we haven't got bogus bounds
+      if ( bounds != NULL &&
+           bounds[0] > -VTK_LARGE_FLOAT && bounds[1] < VTK_LARGE_FLOAT &&
+           bounds[2] > -VTK_LARGE_FLOAT && bounds[3] < VTK_LARGE_FLOAT &&
+           bounds[4] > -VTK_LARGE_FLOAT && bounds[5] < VTK_LARGE_FLOAT )
+        {
+        aCount++;
+
+        if (bounds[0] < theBounds[0])
+          {
+          theBounds[0] = bounds[0]; 
+          }
+        if (bounds[1] > theBounds[1])
+          {
+          theBounds[1] = bounds[1]; 
+          }
+        if (bounds[2] < theBounds[2])
+          {
+          theBounds[2] = bounds[2]; 
+          }
+        if (bounds[3] > theBounds[3])
+          {
+          theBounds[3] = bounds[3]; 
+          }
+        if (bounds[4] < theBounds[4])
+          {
+          theBounds[4] = bounds[4]; 
+          }
+        if (bounds[5] > theBounds[5])
+          {
+          theBounds[5] = bounds[5]; 
+          }
+        }//not bogus
+      }
+    }
+  return aCount;
+}
+
+
+//see vtkRenderer::ResetCameraClippingRange(float bounds[6]) method
+void ResetCameraClippingRange(vtkRenderer* theRenderer){
+  if(!theRenderer || !theRenderer->VisibleActorCount()) return;
+
+  vtkCamera* anActiveCamera = theRenderer->GetActiveCamera();
+  if( anActiveCamera == NULL ){
+    MESSAGE("Trying to reset clipping range of non-existant camera");
+    return;
+  }
+  
+  // Find the plane equation for the camera view plane
+  double vn[3];
+  anActiveCamera->GetViewPlaneNormal(vn);
+  double  position[3];
+  anActiveCamera->GetPosition(position);
+
+  float bounds[6];
+  theRenderer->ComputeVisiblePropBounds(bounds);
+
+  double center[3];
+  center[0] = (bounds[0] + bounds[1])/2.0;
+  center[1] = (bounds[2] + bounds[3])/2.0;
+  center[2] = (bounds[4] + bounds[5])/2.0;
+  
+  double width = sqrt((bounds[1]-bounds[0])*(bounds[1]-bounds[0]) +
+                    (bounds[3]-bounds[2])*(bounds[3]-bounds[2]) +
+                    (bounds[5]-bounds[4])*(bounds[5]-bounds[4]));
+
+  double distance = sqrt((position[0]-center[0])*(position[0]-center[0]) +
+                        (position[1]-center[1])*(position[1]-center[1]) +
+                        (position[2]-center[2])*(position[2]-center[2]));
+
+  float range[2] = {distance - width/2.0, distance + width/2.0};
+
+  // Do not let the range behind the camera throw off the calculation.
+  if (range[0] < 0.0) range[0] = 0.0;
+
+  anActiveCamera->SetClippingRange( range );
+}
diff --git a/src/VTKViewer/VTKViewer_Utilities.h b/src/VTKViewer/VTKViewer_Utilities.h
new file mode 100644 (file)
index 0000000..e297ce7
--- /dev/null
@@ -0,0 +1,39 @@
+//  SALOME VTKViewer : 
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : VTKViewer_Utilities.h
+//  Author : Alexey PETROV
+//  Module : SALOME
+//  $Header: 
+
+#ifndef VTKViewer_Utilities_H
+#define VTKViewer_Utilities_H
+
+class vtkRenderer;
+
+extern void ResetCamera(vtkRenderer* theRenderer, int theUsingZeroFocalPoint = false);
+extern int ComputeVisiblePropBounds(vtkRenderer* theRenderer, float theBounds[6]);
+extern void ResetCameraClippingRange(vtkRenderer* theRenderer);
+extern float EPS_BNDBOX;
+
+#endif
index b54107cd51a135e34e560f9f8579df89af503a09..8f9e8e286b1f39d0388a8f6c3a64b3c39fc8bf18 100644 (file)
 //  $Header$
 
 #include "VTKViewer_ViewFrame.h"
+#include "VTKViewer_Utilities.h"
+#include "VTKViewer_Trihedron.h"
 #include "VTKViewer_RenderWindow.h"
+#include "VTKViewer_InteractorStyleSALOME.h"
 
 #include "SALOME_Transform.h"
 #include "SALOME_TransformFilter.h"
@@ -40,8 +43,6 @@
 #include "QAD_Desktop.h"
 #include "SALOME_Selection.h"
 #include "SALOME_InteractiveObject.hxx"
-#include "VTKViewer_InteractorStyleSALOME.h"
-#include "VTKViewer_VectorText.h"
 
 #include "utilities.h"
 
 // VTK Includes
 #include <vtkActor.h>
 #include <vtkRenderer.h>
-#include <vtkPolyDataMapper.h> 
-
-#include <vtkMath.h>
-#include <vtkLine.h>
-#include <vtkConeSource.h>
-#include <vtkFollower.h>
+#include <vtkTransform.h>
 
 using namespace std;
+
 /*!
     Constructor
 */
@@ -70,186 +67,16 @@ VTKViewer_ViewFrame::VTKViewer_ViewFrame(QWidget* parent, const char* name)
 {
   m_ViewUp[0] = 0; m_ViewUp[1] = 0; m_ViewUp[2] = -1;
   m_ViewNormal[0] = 0; m_ViewNormal[1] = 0; m_ViewNormal[2] = 1;
+  m_Triedron = VTKViewer_Trihedron::New();
   m_Transform = SALOME_Transform::New();
+  //m_Renderer = VTKViewer_Renderer::New() ;
+  m_Renderer = vtkRenderer::New() ;
 
-  //  m_InitialSetupDone = false ;
+  m_Triedron->AddToRender(m_Renderer);
   InitialSetup();
-}
-
-
-vtkFollower* CreateTextActor(char *text, float aSize) {
-  VTKViewer_VectorText* aTxt = VTKViewer_VectorText::New();
-  aTxt->SetText(text);
-  vtkPolyDataMapper* textMapper = vtkPolyDataMapper::New();
-  textMapper->SetInput(aTxt->GetOutput());
-  vtkFollower* textActor = vtkFollower::New();
-  textActor->SetMapper(textMapper);
-  float aScale = 17 * aSize/100;
-  textActor->SetScale(aScale, aScale, aScale);
-  return textActor;
-}
-
-void VTKViewer_ViewFrame::AddVector(float* o,float* p,vtkRenderer* renderer, float aSize) {
-  vtkPoints* myPoints = vtkPoints::New();
-  vtkLine* myLine = vtkLine::New();
-
-  myPoints->InsertNextPoint(o);
-  myPoints->InsertNextPoint(p);
-
-  (myLine->GetPointIds())->InsertNextId(0);
-  (myLine->GetPointIds())->InsertNextId(1);
-
-  vtkActor* lineActor = vtkActor::New();
-
-  vtkCellArray* cell = vtkCellArray::New();
-
-  cell->InsertNextCell(myLine);
-
-  vtkPolyData* output = vtkPolyData::New();
-  
-  output->SetPoints(myPoints);
-  output->SetLines(cell);
-  vtkPolyDataMapper* mapper = vtkPolyDataMapper::New();
-
-  mapper->SetInput(output);
-
-  lineActor->SetMapper(mapper);
-
-  // Create CONE
-
-  vtkConeSource* acone =  vtkConeSource::New();
-
-  float dim = aSize;
-
-  acone->SetResolution(2);
-  //  acone->SetAngle(70);
-  acone->SetRadius(0.02*dim);
-  acone->SetHeight(0.08*dim);
-
-  vtkActor* coneActor = vtkActor::New();
-  vtkPolyDataMapper* coneMapper = vtkPolyDataMapper::New();
-  coneMapper->SetInput(acone->GetOutput());
-
-  coneActor->SetMapper(coneMapper);
-  float rot[3];
-  rot[0]=0; rot[1]=0; rot[2]=0;
-
-  vtkFollower* aTextActor;
-
-  coneActor->AddPosition(p);
-  if(p[0]!=0) {
-    // x
-    aTextActor = CreateTextActor("X", dim);
-  } else if(p[1]!=0) {
-    // y
-    rot[2]=90;
-    coneActor->AddOrientation(rot);
-    aTextActor = CreateTextActor("Y", dim);
-  } else if(p[2]!=0) {
-    // z
-    rot[1]=-90;
-    coneActor->AddOrientation(rot);
-    aTextActor = CreateTextActor("Z", dim);
-  }
-  aTextActor->AddPosition(p);
-  aTextActor->SetCamera(renderer->GetActiveCamera());
-
-  coneActor->GetProperty()->SetInterpolation(1);
-  coneActor->GetProperty()->SetRepresentationToSurface();
-  coneActor->GetProperty()->SetAmbient(1);
-  coneActor->GetProperty()->SetAmbientColor(1,1,1);
-  coneActor->GetProperty()->SetDiffuseColor(0.7,0.7,0.7);
-  coneActor->GetProperty()->SetSpecularColor(0.7,0.7,0.7);
-
-  lineActor->GetProperty()->SetInterpolation(1);
-  lineActor->GetProperty()->SetRepresentationToSurface();
-  lineActor->GetProperty()->SetAmbient(1);
-  lineActor->GetProperty()->SetAmbientColor(1,1,1);
-  lineActor->GetProperty()->SetDiffuseColor(0.7,0.7,0.7);
-  lineActor->GetProperty()->SetSpecularColor(0.7,0.7,0.7);
-
-  aTextActor->GetProperty()->SetAmbient(1);
-  aTextActor->GetProperty()->SetAmbientColor(1,1,1);
-  aTextActor->GetProperty()->SetDiffuseColor(0.7,0.7,0.7);
-  aTextActor->GetProperty()->SetSpecularColor(0.7,0.7,0.7);
-     
-  coneActor->PickableOff();
-  lineActor->PickableOff();
-  aTextActor->PickableOff();
-  
-  m_Triedron->AddItem(coneActor);
-  m_Triedron->AddItem(lineActor);
-  m_Triedron->AddItem(aTextActor);
-
-  renderer->AddActor(coneActor);
-  renderer->AddActor(lineActor);
-  renderer->AddActor(aTextActor);
 }  
 
-bool VTKViewer_ViewFrame::isTrihedronDisplayed() {
-  m_Triedron->InitTraversal();
-  vtkActor *ac = m_Triedron->GetNextActor();
-  while(!(ac==NULL)) {
-    if(ac->GetVisibility()) return true;
-    ac = m_Triedron->GetNextActor();
-  }
-  return false;
-}
-
-void VTKViewer_ViewFrame::SetTrihedronSize(int size)
-{
-  m_Triedron->InitTraversal();
-  vtkActor* anActor = m_Triedron->GetNextActor();
-  while(!(anActor==NULL)) {  
-    m_Renderer->RemoveActor( anActor );
-    anActor = m_Triedron->GetNextActor();
-  }
-
-  m_Triedron->RemoveAllItems();
-  AddAxis(m_Renderer);
-  m_RW->update();
-}
-
-
-void VTKViewer_ViewFrame::AddAxis(vtkRenderer* renderer) {  
-  float origine[3];
-  float X[3];
-  float Y[3];
-  float Z[3];
-  float dim;
-
-  QString Size = QAD_CONFIG->getSetting("Viewer:TrihedronSize");
-  if( Size.isEmpty() ){
-    dim = 100;
-  } else {
-    dim = Size.toFloat();
-  }
-
-  origine[0]=0;        origine[1]=0;        origine[2]=0;
-  X[0]=origine[0]+dim; X[1]=origine[0];     X[2]=origine[0];
-  Y[0]=origine[0];     Y[1]=origine[0]+dim; Y[2]=origine[0];
-  Z[0]=origine[0];     Z[1]=origine[0];     Z[2]=origine[0]+dim;
-
-  AddVector(origine,X,renderer, dim);
-  AddVector(origine,Y,renderer, dim);
-  AddVector(origine,Z,renderer, dim);
-}
-
-/*!
-  Returns widget containing 3D-Viewer
-*/
-QWidget* VTKViewer_ViewFrame::getViewWidget() 
-{
-  return m_RW;
-}
-
-
 void VTKViewer_ViewFrame::InitialSetup() {
-  m_Renderer = vtkRenderer::New() ;
-
   m_RW = new VTKViewer_RenderWindow(this, "RenderWindow");
   m_RW->getRenderWindow()->AddRenderer(m_Renderer);
 
@@ -266,11 +93,7 @@ void VTKViewer_ViewFrame::InitialSetup() {
     m_Renderer->SetBackground( BgrColorRed.toInt()/255., BgrColorGreen.toInt()/255., BgrColorBlue.toInt()/255. );
   else
     m_Renderer->SetBackground( 0, 0, 0 );
-  // CREATE AXIS
-  m_Triedron = vtkActorCollection::New();
-  AddAxis(m_Renderer);
+  
   // Create an interactor.
   m_RWInteractor = VTKViewer_RenderWindowInteractor::New();
   m_RWInteractor->setGUIWindow(m_RW);
@@ -281,7 +104,7 @@ void VTKViewer_ViewFrame::InitialSetup() {
   m_RWInteractor->SetInteractorStyle(RWS); 
 
   m_RWInteractor->Initialize();
-  RWS->setTriedron( m_Triedron );
+  RWS->setTriedron(m_Triedron);
   //SRN: additional initialization, to init CurrentRenderer of vtkInteractorStyle 
   RWS->FindPokedRenderer(0, 0);
 
@@ -290,414 +113,218 @@ void VTKViewer_ViewFrame::InitialSetup() {
 }
 
 VTKViewer_ViewFrame::~VTKViewer_ViewFrame() {
-  //
+  m_Transform->Delete() ;
   // In order to ensure that the interactor unregisters
   // this RenderWindow, we assign a NULL RenderWindow to 
   // it before deleting it.
-  //
-  m_Transform->Delete() ;
-    
   m_RWInteractor->SetRenderWindow(NULL) ;
   m_RWInteractor->Delete() ;
   
   //m_RW->Delete() ;
-
+  m_Renderer->RemoveAllProps();
   // NRI : BugID 1137:  m_Renderer->Delete() ;
+  m_Triedron->Delete();
+  MESSAGE("VTKViewer_ViewFrame::~VTKViewer_ViewFrame()");
 }
 
+/*!
+  Returns widget containing 3D-Viewer
+*/
+QWidget* VTKViewer_ViewFrame::getViewWidget(){
+  return m_RW;
+}
+
+bool VTKViewer_ViewFrame::isTrihedronDisplayed(){
+  return m_Triedron->GetVisibility() == VTKViewer_Trihedron::eOn;
+}
+
+void VTKViewer_ViewFrame::onAdjustTrihedron(){   
+  if(!isTrihedronDisplayed()) 
+    return;
+  int aVisibleNum = m_Triedron->GetVisibleActorCount(m_Renderer);
+  if(aVisibleNum){
+    // calculating diagonal of visible props of the renderer
+    float bnd[6];
+    m_Triedron->VisibilityOff();
+    ::ComputeVisiblePropBounds(m_Renderer,bnd);
+    m_Triedron->VisibilityOn();
+    float aLength = 0;
+    static bool CalcByDiag = false;
+    if(CalcByDiag){
+      aLength = sqrt((bnd[1]-bnd[0])*(bnd[1]-bnd[0])+
+                    (bnd[3]-bnd[2])*(bnd[3]-bnd[2])+
+                    (bnd[5]-bnd[4])*(bnd[5]-bnd[4]));
+    }else{
+      aLength = bnd[1]-bnd[0];
+      aLength = max((bnd[3]-bnd[2]),aLength);
+      aLength = max((bnd[5]-bnd[4]),aLength);
+    }
+   
+    static float aSizeInPercents = 105;
+    QString aSetting = QAD_CONFIG->getSetting("Viewer:TrihedronSize");
+    if(!aSetting.isEmpty()) aSizeInPercents = aSetting.toFloat();
+
+    static float EPS_SIZE = 5.0E-3;
+    float aSize = m_Triedron->GetSize();
+    float aNewSize = aLength*aSizeInPercents/100.0;
+    // if the new trihedron size have sufficient difference, then apply the value
+    if(fabs(aNewSize-aSize) > aSize*EPS_SIZE || fabs(aNewSize-aSize) > aNewSize*EPS_SIZE)
+      m_Triedron->SetSize(aNewSize);
+  }
+  m_Triedron->Render(m_Renderer);
+  ::ResetCameraClippingRange(m_Renderer);
+}
 
 /*!
   Display/hide Trihedron
 */
-void VTKViewer_ViewFrame::onViewTrihedron()
-{
-  if (isTrihedronDisplayed()) {
-    m_Triedron->InitTraversal();
-    vtkActor *ac = m_Triedron->GetNextActor();
-    while(!(ac==NULL)) {
-      ac->VisibilityOff();
-      ac = m_Triedron->GetNextActor();
-    }
+void VTKViewer_ViewFrame::onViewTrihedron(){
+  if(!m_Triedron) return;
+  if(isTrihedronDisplayed())
+    m_Triedron->VisibilityOff();
+  else{
+    m_Triedron->VisibilityOn();
   }
-  else {
-    m_Triedron->InitTraversal();
-    vtkActor *ac = m_Triedron->GetNextActor();
-    while(!(ac==NULL)) {
-      ac->VisibilityOn();
-      ac = m_Triedron->GetNextActor();
-    }
-    m_TriedronVisible = true;
-  }  
-  m_RW->update();
+  Repaint();
 }
 
 /*!
   Provides top projection of the active view
 */
-void VTKViewer_ViewFrame::onViewTop() {
+void VTKViewer_ViewFrame::onViewTop(){
   vtkCamera* camera = m_Renderer->GetActiveCamera();
-  camera->SetFocalPoint(0,0,0);
   camera->SetPosition(0,0,1);
   camera->SetViewUp(0,1,0);
-  m_Renderer->ResetCamera();  
+  camera->SetFocalPoint(0,0,0);
   onViewFitAll();
-  m_RW->update();
 }
 
 /*!
   Provides bottom projection of the active view
 */
-void VTKViewer_ViewFrame::onViewBottom()
-{
+void VTKViewer_ViewFrame::onViewBottom(){
   vtkCamera* camera = m_Renderer->GetActiveCamera();
-  camera->SetFocalPoint(0,0,0);
   camera->SetPosition(0,0,-1);
   camera->SetViewUp(0,1,0);
-  m_Renderer->ResetCamera();  
+  camera->SetFocalPoint(0,0,0);
   onViewFitAll();
-  m_RW->update();
 }
 
 /*!
   Provides left projection of the active view
 */
-void VTKViewer_ViewFrame::onViewLeft()    
-{
+void VTKViewer_ViewFrame::onViewLeft(){
   vtkCamera* camera = m_Renderer->GetActiveCamera(); 
-  camera->SetFocalPoint(0,0,0);
   camera->SetPosition(0,1,0);
   camera->SetViewUp(0,0,1);
-  m_Renderer->ResetCamera();  
+  camera->SetFocalPoint(0,0,0);
   onViewFitAll();
-  m_RW->update(); 
 }
 
 /*!
   Provides right projection of the active view
 */
-void VTKViewer_ViewFrame::onViewRight()
-{
+void VTKViewer_ViewFrame::onViewRight(){
   vtkCamera* camera = m_Renderer->GetActiveCamera();
-  camera->SetFocalPoint(0,0,0);
   camera->SetPosition(0,-1,0);
   camera->SetViewUp(0,0,1);
-  m_Renderer->ResetCamera();  
+  camera->SetFocalPoint(0,0,0);
   onViewFitAll();
-  m_RW->update();
 }
 
 /*!
   Provides back projection of the active view
 */
-void VTKViewer_ViewFrame::onViewBack()
-{
+void VTKViewer_ViewFrame::onViewBack(){
   vtkCamera* camera = m_Renderer->GetActiveCamera();
   camera->SetPosition(-1,0,0);
-  camera->SetFocalPoint(0,0,0);
   camera->SetViewUp(0,0,1);
-  m_Renderer->ResetCamera();  
+  camera->SetFocalPoint(0,0,0);
   onViewFitAll();
-  m_RW->update();
 }
 
 /*!
   Provides front projection of the active view
 */
-void VTKViewer_ViewFrame::onViewFront()
-{
+void VTKViewer_ViewFrame::onViewFront(){
   vtkCamera* camera = m_Renderer->GetActiveCamera();
   camera->SetPosition(1,0,0);
-  camera->SetFocalPoint(0,0,0);
   camera->SetViewUp(0,0,1);
-  m_Renderer->ResetCamera();  
+  camera->SetFocalPoint(0,0,0);
   onViewFitAll();
-  m_RW->update();
 }
 
 /*!
-  Reset the active view
+  Fits all objects in the active view
 */
-void VTKViewer_ViewFrame::onViewReset()    
-{
-  vtkCamera* camera = m_Renderer->GetActiveCamera();
-  camera->SetPosition(1,-1,1);
-  camera->SetFocalPoint(0,0,0);
-  camera->SetViewUp(0,0,1);
-  m_Renderer->ResetCamera();  
-  
-  double aOldScale = camera->GetParallelScale();
-  camera->SetParallelScale(500);
-  double aNewScale = camera->GetParallelScale();
-  
-  //for controlling labels scale after reset
-  float dim;
-  QString Size = QAD_CONFIG->getSetting("Viewer:TrihedronSize");
-  if( Size.isEmpty() ){
-    dim = 100;
-  } else {
-    dim = Size.toFloat();
-  }
-  float aScale = 17 * dim/100;
+void VTKViewer_ViewFrame::onViewFitAll(){
+  m_RWInteractor->GetInteractorStyleSALOME()->ViewFitAll();
+//   int aTriedronWasVisible = isTrihedronDisplayed();
+//   if(m_Triedron->GetVisibleActorCount(m_Renderer)){
+//     m_Triedron->VisibilityOff();
+//     ::ResetCamera(m_Renderer);
+//   }else{
+//     m_Triedron->SetVisibility(VTKViewer_Trihedron::eOnlyLineOn);
+//     ::ResetCamera(m_Renderer,true);
+//   }
+//   if(aTriedronWasVisible) m_Triedron->VisibilityOn();
+//   else m_Triedron->VisibilityOff();
 
-  m_Triedron->InitTraversal();
-  vtkActor *ac = m_Triedron->GetNextActor();
-  bool IsConeActor = true;
-  while(!(ac==NULL)) {
-    if(ac->IsA("vtkFollower")) {
-      ac->SetScale(aScale, aScale, aScale);
-      IsConeActor = true;
-    }
-    else {
-      if (IsConeActor) {
-       //coneActor is the first in the list (see m_Triedron->AddItem(...) in VTKViewer_ViewFrame::AddVector(...))
-       IsConeActor = false;
-      } 
-    }
-    ac = m_Triedron->GetNextActor();
-  }
+  Repaint();
+}
 
-  m_Renderer->ResetCameraClippingRange();
-  m_RW->update();
+/*!
+  Reset the active view
+*/
+void VTKViewer_ViewFrame::onViewReset(){
+  int aTriedronIsVisible = isTrihedronDisplayed();
+  m_Triedron->SetVisibility(VTKViewer_Trihedron::eOnlyLineOn);
+  ::ResetCamera(m_Renderer,true);  
+  vtkCamera* aCamera = m_Renderer->GetActiveCamera();
+  aCamera->SetPosition(1,-1,1);
+  aCamera->SetViewUp(0,0,1);
+  ::ResetCamera(m_Renderer,true);  
+  if(aTriedronIsVisible) m_Triedron->VisibilityOn();
+  else m_Triedron->VisibilityOff();
+  static float aCoeff = 3.0;
+  aCamera->SetParallelScale(aCoeff*aCamera->GetParallelScale());
+  Repaint();
 }
 
 /*!
   Rotates the active view
 */
-void VTKViewer_ViewFrame::onViewRotate()
-{
-  VTKViewer_InteractorStyleSALOME* RWS = dynamic_cast<VTKViewer_InteractorStyleSALOME*>(getRWInteractor()->GetInteractorStyle());
-  if (RWS)
-    RWS->startRotate();
+void VTKViewer_ViewFrame::onViewRotate(){
+  m_RWInteractor->GetInteractorStyleSALOME()->startRotate();
 }
 
 /*!
   Sets a new center of the active view
 */
-void VTKViewer_ViewFrame::onViewGlobalPan()
-{
-  VTKViewer_InteractorStyleSALOME* RWS = dynamic_cast<VTKViewer_InteractorStyleSALOME*>(getRWInteractor()->GetInteractorStyle());
-  if (RWS)
-    RWS->startGlobalPan();
+void VTKViewer_ViewFrame::onViewGlobalPan(){
+  if(m_Triedron->GetVisibleActorCount(m_Renderer))
+    m_RWInteractor->GetInteractorStyleSALOME()->startGlobalPan();
 }
 
 /*!
   Zooms the active view
 */
-void VTKViewer_ViewFrame::onViewZoom()
-{
-  VTKViewer_InteractorStyleSALOME* RWS = dynamic_cast<VTKViewer_InteractorStyleSALOME*>(getRWInteractor()->GetInteractorStyle());
-  if (RWS)
-    RWS->startZoom();
+void VTKViewer_ViewFrame::onViewZoom(){
+  m_RWInteractor->GetInteractorStyleSALOME()->startZoom();
 }
 
 /*!
   Moves the active view
 */
-void VTKViewer_ViewFrame::onViewPan()
-{
-  VTKViewer_InteractorStyleSALOME* RWS = dynamic_cast<VTKViewer_InteractorStyleSALOME*>(getRWInteractor()->GetInteractorStyle());
-  if (RWS)
-    RWS->startPan();
+void VTKViewer_ViewFrame::onViewPan(){
+  m_RWInteractor->GetInteractorStyleSALOME()->startPan();
 }
 
 /*!
   Fits all obejcts within a rectangular area of the active view
 */
-void VTKViewer_ViewFrame::onViewFitArea()
-{
-  VTKViewer_InteractorStyleSALOME* RWS = dynamic_cast<VTKViewer_InteractorStyleSALOME*>(getRWInteractor()->GetInteractorStyle());
-  if (RWS)
-    RWS->startFitArea();
-}
-
-/*!
-  Fits all objects in the active view
-*/
-// Reset the camera clipping range to include this entire bounding box
-static void ResetCameraClippingRange(vtkRenderer* theRenderer, float bounds[6] )
-{
-  //see vtkRenderer::ResetCameraClippingRange(float bounds[6]) method
-  double  vn[3], position[3], a, b, c, d;
-  double  range[2], dist;
-  int     i, j, k;
-  float center[3];
-  float distance;
-  float width;
-
-  vtkCamera* anActiveCamera = theRenderer->GetActiveCamera();
-  if ( anActiveCamera == NULL )
-    {
-      //vtkErrorMacro(<< "Trying to reset clipping range of non-existant camera");
-    return;
-    }
-  
-  // Find the plane equation for the camera view plane
-  anActiveCamera->GetViewPlaneNormal(vn);
-  anActiveCamera->GetPosition(position);
-//  a = -vn[0];
-//  b = -vn[1];
-//  c = -vn[2];
-//  d = -(a*position[0] + b*position[1] + c*position[2]);
-
-  // Set the max near clipping plane and the min far clipping plane
-//  range[0] = a*bounds[0] + b*bounds[2] + c*bounds[4] + d;
-//  range[1] = 1e-18;
-
-  // Find the closest / farthest bounding box vertex
-//  for ( k = 0; k < 2; k++ )
-//    {
-//    for ( j = 0; j < 2; j++ )
-//       {
-//       for ( i = 0; i < 2; i++ )
-//         {
-//         dist = a*bounds[i] + b*bounds[2+j] + c*bounds[4+k] + d;
-//         range[0] = (dist<range[0])?(dist):(range[0]);
-//         range[1] = (dist>range[1])?(dist):(range[1]);
-//         }
-//       }
-//    }
-  
-  center[0] = (bounds[0] + bounds[1])/2.0;
-  center[1] = (bounds[2] + bounds[3])/2.0;
-  center[2] = (bounds[4] + bounds[5])/2.0;
-  width = sqrt((bounds[1]-bounds[0])*(bounds[1]-bounds[0]) +
-              (bounds[3]-bounds[2])*(bounds[3]-bounds[2]) +
-              (bounds[5]-bounds[4])*(bounds[5]-bounds[4]));
-  distance = sqrt((position[0]-center[0])*(position[0]-center[0]) +
-                 (position[1]-center[1])*(position[1]-center[1]) +
-                 (position[2]-center[2])*(position[2]-center[2]));
-  range[0] = distance - width/2.0;
-  range[1] = distance + width/2.0;
-
-  // Give ourselves a little breathing room
-  range[0] = 0.99*range[0] - (range[1] - range[0])*0.5;
-  range[1] = 1.01*range[1] + (range[1] - range[0])*0.5;
-
-  // Make sure near is not bigger than far
-  range[0] = (range[0] >= range[1])?(0.01*range[1]):(range[0]);
-
-  // Make sure near is at least some fraction of far - this prevents near
-  // from being behind the camera or too close in front. How close is too
-  // close depends on the resolution of the depth buffer
-  int ZBufferDepth = 16;
-  vtkRenderWindow* aRenderWindow = theRenderer->GetRenderWindow();
-  if (aRenderWindow)
-    {
-      ZBufferDepth = aRenderWindow->GetDepthBufferSize();
-    }
-  //
-  if ( ZBufferDepth <= 16 )
-    {
-    range[0] = (range[0] < 0.01*range[1])?(0.01*range[1]):(range[0]);
-    }
-  else if ( ZBufferDepth <= 24 )
-    {
-    range[0] = (range[0] < 0.01*range[1])?(0.01*range[1]):(range[0]);
-    }
-  else
-    {
-    range[0] = (range[0] < 0.01*range[1])?(0.01*range[1]):(range[0]);
-    }
-  anActiveCamera->SetClippingRange( range );
-}
-
-static void ResetCamera(vtkRenderer* theRenderer, vtkActorCollection* theTriedron, VTKViewer_RenderWindowInteractor* theRWInteractor){  
-  //see vtkRenderer::ResetCamera(float bounds[6]) method
-  float      bounds[6];
-  if(!theRenderer) return;
-  theRenderer->ComputeVisiblePropBounds( bounds );
-
-  float center[3];
-  float distance;
-  float width;
-  double vn[3], *vup;
-  int* winsize;
-  
-  if ( theRenderer->GetActiveCamera() != NULL )
-    {
-    theRenderer->GetActiveCamera()->GetViewPlaneNormal(vn);
-    }
-  else
-    {
-    MESSAGE("Trying to reset non-existant camera");
-    return;
-    }
-
-  center[0] = (bounds[0] + bounds[1])/2.0;
-  center[1] = (bounds[2] + bounds[3])/2.0;
-  center[2] = (bounds[4] + bounds[5])/2.0;
-  width = sqrt((bounds[1]-bounds[0])*(bounds[1]-bounds[0]) +
-              (bounds[3]-bounds[2])*(bounds[3]-bounds[2]) +
-              (bounds[5]-bounds[4])*(bounds[5]-bounds[4]));
-  double ang = theRenderer->GetActiveCamera()->GetViewAngle();
-  distance = 2.0*width/tan(ang*vtkMath::Pi()/360.0);
-  
-  // find size of the window
-  winsize = theRenderer->GetSize();
-  
-  // check view-up vector against view plane normal
-  vup = theRenderer->GetActiveCamera()->GetViewUp();
-  if ( fabs(vtkMath::Dot(vup,vn)) > 0.999 )
-    {
-    MESSAGE("Resetting view-up since view plane normal is parallel");
-    theRenderer->GetActiveCamera()->SetViewUp(-vup[2], vup[0], vup[1]);
-    }
-
-  // update the camera
-  theRenderer->GetActiveCamera()->SetFocalPoint(center[0],center[1],center[2]);
-  theRenderer->GetActiveCamera()->SetPosition(center[0]+distance*vn[0],
-                                  center[1]+distance*vn[1],
-                                  center[2]+distance*vn[2]);
-  // setup default parallel scale
-  double aOldScale = theRenderer->GetActiveCamera()->GetParallelScale();
-  
-  if(winsize[0]<winsize[1] )
-    width=width*(float(winsize[1])/float(winsize[0]));
-  
-  theRenderer->GetActiveCamera()->SetParallelScale(width/2.0);
-  double aNewScale = theRenderer->GetActiveCamera()->GetParallelScale();
-  
-  // for controlling label size 
-  VTKViewer_InteractorStyleSALOME* Style = 0;
-  if (theRWInteractor->GetInteractorStyle()->IsA("VTKViewer_InteractorStyleSALOME")) {
-    Style = VTKViewer_InteractorStyleSALOME::SafeDownCast(theRWInteractor->GetInteractorStyle());
-    Style->ControlLblSize(aOldScale,aNewScale);
-  }
-  //workaround on VTK
-  //theRenderer->ResetCameraClippingRange(bounds);
-  ResetCameraClippingRange(theRenderer,bounds);
-}
-
-void VTKViewer_ViewFrame::onViewFitAll()
-{
-  Standard_Boolean TriedronWasVisible = false;
-  if (isTrihedronDisplayed()) {
-    m_Triedron->InitTraversal();
-    vtkActor *ac = m_Triedron->GetNextActor();
-    while(!(ac==NULL)) {
-      ac->VisibilityOff();
-      ac = m_Triedron->GetNextActor();
-    }
-    TriedronWasVisible = true;
-  }
-  bool hasVisibleActors = m_Renderer->VisibleActorCount() > 0;
-  if ( hasVisibleActors ) {   // if there are visible actors, not to take into account Trihedron
-    ResetCamera(m_Renderer,m_Triedron,m_RWInteractor);
-  } 
-  if(TriedronWasVisible) {
-    m_Triedron->InitTraversal();
-    vtkActor *ac = m_Triedron->GetNextActor();
-    while(!(ac==NULL)) {
-      ac->VisibilityOn();
-      ac = m_Triedron->GetNextActor();
-    }
-    if ( !hasVisibleActors ) { // if there are NO visible actors, fit view to see only Trihedron
-      ResetCamera(m_Renderer,m_Triedron,m_RWInteractor);
-    } 
-  }
-  //m_Renderer->ResetCameraClippingRange();
-  m_RW->update();
+void VTKViewer_ViewFrame::onViewFitArea(){
+  m_RWInteractor->GetInteractorStyleSALOME()->startFitArea();
 }
 
 /*!
@@ -967,9 +594,9 @@ void VTKViewer_ViewFrame::EraseAll()
 }
 
 
-void VTKViewer_ViewFrame::Repaint()
+void VTKViewer_ViewFrame::Repaint(bool theUpdateTrihedron)
 {
-  // m_RWInteractor->Render();
+  if (theUpdateTrihedron) onAdjustTrihedron();
   m_RW->update();
 }
 
@@ -979,12 +606,7 @@ void VTKViewer_ViewFrame::GetScale(double theScale[3]){
 
 void VTKViewer_ViewFrame::SetScale(double theScale[3]){
   m_Transform->SetScale(theScale[0], theScale[1], theScale[2]);
-  m_Transform->Modified();
-  vtkActorCollection* theActors = m_Renderer->GetActors();
-  theActors->InitTraversal();
-  vtkActor *anActor;
-  while(anActor = theActors->GetNextActor())
-    anActor->GetMapper()->Update();
+  m_RWInteractor->Render();
   Repaint();
 }
 
@@ -992,18 +614,12 @@ void VTKViewer_ViewFrame::AddActor( SALOME_Actor* theActor, bool update /*=false
   theActor->SetVisibility(true);
   theActor->AddToRender(m_Renderer);
   theActor->SetTransform(m_Transform);
-  if(update){
-    m_Renderer->ResetCameraClippingRange();
-    m_RWInteractor->Render();
-  }
+  if(update) Repaint();
 }
 
 void VTKViewer_ViewFrame::RemoveActor( SALOME_Actor* theActor, bool update /*=false*/ ){
   theActor->RemoveFromRender(m_Renderer);
-  if(update){
-    m_Renderer->ResetCameraClippingRange();
-    m_RWInteractor->Render();
-  }
+  if(update) Repaint();
 }
 
 
index 64467faa64a600607bf222e67111cc996a9463ab..83fc35ab1feb680b404e48efa4dded7804bfc75c 100644 (file)
@@ -37,8 +37,8 @@
 
 // VTK Includes
 class vtkRenderer;
-class vtkActorCollection;
 class vtkTransform;
+class VTKViewer_Trihedron;
 
 class QAD_EXPORT VTKViewer_ViewFrame : public QAD_ViewFrame{
   Q_OBJECT;
@@ -54,8 +54,7 @@ class QAD_EXPORT VTKViewer_ViewFrame : public QAD_ViewFrame{
   VTKViewer_RenderWindowInteractor* getRWInteractor() {return m_RWInteractor;}
 
   bool                           isTrihedronDisplayed();
-  void                           SetTrihedronSize( int dim );
-
   void                           setBackgroundColor( const QColor& );
   QColor                         backgroundColor() const;
   
@@ -89,7 +88,8 @@ class QAD_EXPORT VTKViewer_ViewFrame : public QAD_ViewFrame{
   void           Erase(const Handle(SALOME_InteractiveObject)& IObject, bool immediatly = true);
   void           DisplayAll();
   void           EraseAll();
-  void           Repaint();
+  void           Repaint(bool theUpdateTrihedron);
+  void           Repaint() { Repaint(true); }
 
   //apply existing transformation on adding SALOME_Actor
   void SetScale(double theScale[3]);
@@ -97,10 +97,6 @@ class QAD_EXPORT VTKViewer_ViewFrame : public QAD_ViewFrame{
   void AddActor(SALOME_Actor*, bool update = false);
   void RemoveActor(SALOME_Actor*, bool update = false);
 
- private:
-  void AddVector(float* o,float* p,vtkRenderer* renderer, float aSize);
-  void AddAxis(vtkRenderer* renderer);
  public slots:
   void           onViewPan(); 
   void           onViewZoom();
@@ -116,20 +112,19 @@ class QAD_EXPORT VTKViewer_ViewFrame : public QAD_ViewFrame{
   void           onViewBottom();
   void           onViewTop();
   void           onViewTrihedron(); 
+  void           onAdjustTrihedron();
  
  private:
   double                        m_ViewUp[3];
   double                        m_ViewNormal[3];
-
+  
   void                          InitialSetup();
 
   vtkRenderer*                      m_Renderer;
   VTKViewer_RenderWindow*           m_RW;
   VTKViewer_RenderWindowInteractor* m_RWInteractor;
 
-  Standard_Boolean              m_TriedronVisible;
-  vtkActorCollection*           m_Triedron;  
-
+  VTKViewer_Trihedron *m_Triedron;  
   SALOME_Transform *m_Transform;
 };
 #endif